2015-06-03 62 views

回答

1

如果調用DML PL/SQL程序內,要檢查是否有任何數據進行了更新,那麼你可以使用隱式遊標屬性%的行數。你需要在DML之後立即調用它。

update table 
set some_column = 'Some value' 
where id = p_id; 

if sql%rowcount = 0 then 
    dbms_output.put_line('No rows have been updated') 
elsif sql%rowcount = 1 then 
    dbms_output.put_line('1 row has been updated') 
else 
    dbms_output.put_line(sql%rowcount||' rows have been updated') 
end if; 
1

由於Gordon評論說所有Oracle命令都符合ACID標準,因此如果事務完成並提交,那麼您可以觸發選擇查詢來檢查更新是否完成。您可以使用ORA_ROWSCN查看更改。事情是這樣的:

SQL> select ora_rowscn from myTable 
    2 where column2 = 102 
    3/

ORA_ROWSCN 
---------- 
    33526761 

SQL> update myTable 
    2  set column1 = 1 
    3  where column2 = 102 
    4/

1 row updated. 

SQL> commit 
    2/

Commit complete. 

SQL> select ora_rowscn from myTable 
    2 where column2 = 102 
    3/

ORA_ROWSCN 
---------- 
    33435234 

SQL>