假设某个过程中有更新查询。如何检查数据是否更新?
答案 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;