update TA set f1=f1+10 where f2=1;
如果没有记录不触发 exception.
如果没有记录不触发 exception.
解决方案 »
- 备份和重做日志是什么关系?
- 求助!Exp成功无报错信息,imp却报奇怪错误
- 关于使用dbca创建数据库问题
- oracle的odminer安装问题,急急急
- select * from a where (rowid,oid,name,rundate) in (('...',2,'nn',null),(null,2...))类似这样的句子应该怎么写?主要是null值得应用
- 写了个存储过程,老是编译通不过procedure
- 请大家帮我看下这SQL语句!!!
- 在现求救!!!兄弟们帮帮忙!
- 程序报oralce错误 ora-00604:递归SQL层1出现错误,回答者都有分
- 求思路,求平均到各天的时间段
- oracle的自增类型是什么?
- 日期型类型字段问题
2.有没有办法知道update了多少行?
如果你想测试,你可以单独在SQLPLUS使用update TA set f1=f1+10 where f2=1
看下十分能进行得下去。
dbms_output.put_line(sql%rowcount);
单条的exception和多条一齐exception有什么分别,你意思是如果update那条出现例如
表锁这样的错误的时候,最后的exception捕捉不到?
cnt number(5);
begin
update TA set f1=f1+10 where f2=1;
cnt :=sql%rowcount;
if cnt = 0 then
dbms_output.put_line("没有符合条件的记录!");
end if;
insert into TB VALUES(...);
DELETE FROM TC WHERE ....;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
因为会认为你更新了0行记录。
不知道这个是不是触发器的部分程序?
有个建义,可以每次事务完后,查看这个表v$transaction;看事务哪些没有提交
commit;时,如果事务不能整个提交,是否会触发exception
你查查alert,如果发生dead lock在ALERT里会有记录的
oracle对deadlock的处理:强制rollback事务,且不触发exception