0
私は次のような表を持っています。MERGE文のDELETE句
Name Null Type
----------- -------- --------------
EMPLOYEEID **NOT NULL** NUMBER
NAME **NOT NULL** VARCHAR2(1000)
AGE *NOT NULL* NUMBER
SALARY NUMBER
DELETEDFLAG NUMBER(1)
以下のようにレコードを挿入、更新、削除するMERGE文を記述しました。
MERGE INTO EMPLOYEE tgt USING (
SELECT(SELECT EMPLOYEE.rowId as rid from EMPLOYEE WHERE employeeid = 70) as rid from dual) src ON (tgt.rowid = src.rid)
WHEN MATCHED THEN UPDATE SET name = 'PSS', age = 25, salary = 2589
WHERE employeeid = 70
DELETE WHERE DELETEDFLAG = 1
WHEN NOT MATCHED THEN
INSERT (employeeId, name, age, salary, deletedFlag) VALUES(70, 'TSS', 28, 15000, 0);
私はレコードを削除中に問題に直面しています。名前、名前、給与のnull値を受け取り、deleteFlagがゼロのときにレコードを削除したいとします。私はemployeeIDだけ知っています。次のようなMERGEクエリ。
MERGE INTO EMPLOYEE tgt USING (
SELECT(SELECT EMPLOYEE.rowId as rid from EMPLOYEE WHERE employeeid = 70) as rid from dual) src ON (tgt.rowid = src.rid)
WHEN MATCHED THEN UPDATE SET name = null, age = null, salary = null
WHERE employeeid = 70
DELETE WHERE DELETEDFLAG = 0
WHEN NOT MATCHED THEN
INSERT (employeeId, name, age, salary, deletedFlag) VALUES(70, null, null, null, 0);
私が直面した問題は、このシナリオではレコードを更新しようとしていることです。名前はNULL可能な列ではありませんが、nullで更新しようとしています。 SQLエラーが発生しました。
は私が期待どおりに動作しないヌル値を渡すと
をNULLに(%s)を更新することはできません。
このシナリオをどのように処理すればよいですか?更新セクションで