假设过程中存在更新查询。如何检查数据是否更新?

时间:2015-06-03 11:15:18

标签: sql oracle plsql

假设某个过程中有更新查询。如何检查数据是否更新?

2 个答案:

答案 0 :(得分:1)

正如Gordon评论的所有Oracle命令都符合ACID,所以如果事务完成并提交,那么你可以触发一个select查询来检查更新是否完成。

您还可以使用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>

答案 1 :(得分:1)

如果在PL / SQL过程中调用DML并想要检查是否有任何数据已更新,则可以使用隐式游标属性%rowcount。您需要在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;