例外処理のヘルプが必要です。このUPDATEスクリプトを一度実行すると、同じスクリプトを2回以上実行すると、「1行が更新されました。コミットされました」というエラーが表示されますが、問題はありません。例外を受け取りたい。「注:テーブルはすでに更新されています」
UPDATE FBTB_TXNLOG
SET txnstageid = '-1',
LOCKED = 'N',
where xrefid = 'FJB1229000056689';
commit;
この解決策を試してください:
SET SERVEROUTPUT ON -- need for dbms_output.put_line()
declare
cnt int;
begin
-- if data exists
SELECT count(1)
INTO cnt
FROM FBTB_TXNLOG
WHERE txnstageid = '-1'
and LOCKED = 'N'
and xrefid = 'FJB1229000056689';
if (cnt > 0 )
then
-- exists: display message
dbms_output.put_line('Table is already updated');
else
-- let's edit
UPDATE FBTB_TXNLOG
SET txnstageid = '-1',
LOCKED = 'N',
where xrefid = 'FJB1229000056689';
commit;
end if;
end;
/