oracle update 也能失败
我发现一个update语句没有成功我很疑惑难道update也能失败!没有违反约束就更新一些可为空字段什么情况会导致更新失败?真么保证不失败这个update是在存储过程里由...
我发现一个update语句没有成功 我很疑惑 难道update也能失败! 没有违反约束 就更新一些可为空字段 什么情况会导致更新失败?真么保证不失败
这个update是在存储过程里 由程序的事务管理 结果出现了 这个存储过程是成功的 但是那个update确实没更新,里面也没有commit 我也看不到什么错误提示 展开
这个update是在存储过程里 由程序的事务管理 结果出现了 这个存储过程是成功的 但是那个update确实没更新,里面也没有commit 我也看不到什么错误提示 展开
1个回答
展开全部
oracle 的失败都有提示信息,可以详细查看提示信息或提示错误代码.
UPDATE出错排除了语法错误\更新字段类型匹配错误等粗浅错误,剩下的错误可能要从ORACLE资源上去找.
比如:回滚段(空间)错误,表对象发生变化引起的UPDATE错误,对象被锁定超时错误等等.
请详细查看错误提示和错误提示代码.
追加内容-----------
建议:
1 将该语句在"测试环境"中手动执行一遍.要考虑其过程上文对该表的操作.最好在可视化工具中执行,方便查看可能的错误提示.
2 最好将该过程拆分成多个事物,并添加异常捕捉返回代码,健全该过程.
例如:
begin
update xxx ----你过程中的UPDATE语句
set xx=xxx
where xxxx=xxx;
if SQL%NOTFOUND THEN ---提示该操作未影响对象数据
DBMS_OUTPUT.PUT_LINE('NOT FOUND!'); --或者做插入日志记录动作
end if;
exception ----异常捕捉,返回错误代码和错误提示
when others then
DBMS_OUTPUT.PUT_LINE('error code: '||SQLCODE); --或者做插入日志记录动作
DBMS_OUTPUT.PUT_LINE('error msg: '||SQLERRM);
end;
commit; ---没有异常,显式的加上提交.
------很久没有弄这个了,希望帮到你.
UPDATE出错排除了语法错误\更新字段类型匹配错误等粗浅错误,剩下的错误可能要从ORACLE资源上去找.
比如:回滚段(空间)错误,表对象发生变化引起的UPDATE错误,对象被锁定超时错误等等.
请详细查看错误提示和错误提示代码.
追加内容-----------
建议:
1 将该语句在"测试环境"中手动执行一遍.要考虑其过程上文对该表的操作.最好在可视化工具中执行,方便查看可能的错误提示.
2 最好将该过程拆分成多个事物,并添加异常捕捉返回代码,健全该过程.
例如:
begin
update xxx ----你过程中的UPDATE语句
set xx=xxx
where xxxx=xxx;
if SQL%NOTFOUND THEN ---提示该操作未影响对象数据
DBMS_OUTPUT.PUT_LINE('NOT FOUND!'); --或者做插入日志记录动作
end if;
exception ----异常捕捉,返回错误代码和错误提示
when others then
DBMS_OUTPUT.PUT_LINE('error code: '||SQLCODE); --或者做插入日志记录动作
DBMS_OUTPUT.PUT_LINE('error msg: '||SQLERRM);
end;
commit; ---没有异常,显式的加上提交.
------很久没有弄这个了,希望帮到你.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询