Oracle SQL Mergeステートメントの結果を決定します
質問
フォローアップ この質問
この(古いリンクの類似バージョン)がSQL Server 2008で機能しますが、Oracleは私にトラブルを与えています。
MERGE INTO wdm_test
USING ( select '10000000000000000000000000000000' Guid from DUAL ) val
ON ( wdm_test.Guid = val.Guid )
WHEN MATCHED THEN UPDATE SET test_column = null
WHEN NOT MATCHED THEN
INSERT (Guid, test_column)
VALUES ('10000000000000000000000000000000', null)
OUTPUT $action;
SQL Error: ORA-00933: SQL command not properly ended
オラクルはサポートしていませんか OUTPUT $action;
?そうでない場合、代替手段はありますか?
解決
マージステートメントは結果を発しておらず、 RETURNING
句。
しかし、あなたができることはそうです 影響を受ける記録にフラグを立てます. 。何かのようなもの:
when matched update set .... merge_status = 'U'
when not matched insert ( ...., merge_status, ... ) values ( ...., 'I', .... )
これには、もちろん、マージステータスをキャプチャするための追加の列があることが必要です。これは常に望ましいとは限りません(特に、この情報が一時的に必要な場合、たとえばマージの結果を確認するために)。
残念ながら、私の知る限り、これはあなたができる最善のことです。
所属していません StackOverflow