2

例外処理のヘルプが必要です。このUPDATEスクリプトを一度実行すると、同じスクリプトを2回以上実行すると、「1行が更新されました。コミットされました」というエラーが表示されますが、問題はありません。例外を受け取りたい。「注:テーブルはすでに更新されています」

UPDATE FBTB_TXNLOG
SET txnstageid = '-1',
LOCKED = 'N',
where xrefid = 'FJB1229000056689';
commit;
4

1 に答える 1

0

この解決策を試してください:

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;
/
于 2012-10-16T13:50:06.513 に答える