存储过程速度慢

yjvjom 2013-04-26 01:31:09
create or replace
PROCEDURE C_CLOSE_ERROR_SO(
ccn IN VARCHAR2
,soNum IN VARCHAR2
,soLine IN VARCHAR2
) AS
BEGIN
DECLARE ROWCOUNT INT;
COMMROWCOUNT INT;
BEGIN
UPDATE SO SET CANC_DATE=TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD')
,TOT_CANC_QTY=NVL(TOT_ORD_QTY,0)-NVL(TOT_SHIP_QTY,0),TOT_COM_QTY=0
WHERE SALES_CCN=ccn AND SO=soNum AND SO_LINE=soLine;
END;
END C_CLOSE_ERROR_SO;

就这一条更新语句,速度非常慢,表SO的主键是SALES_CCN、SO、SO_LINE,如果不用存储过程就非常快,不知道是什么原因。
...全文
180 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjvjom 2013-05-24
  • 打赏
  • 举报
回复
引用 3 楼 yjytiantang 的回复:
看看入参 是否发生类型转换了~
能举个例子吗?
yjytiantang 2013-04-26
  • 打赏
  • 举报
回复
看看入参 是否发生类型转换了~
lnuwhy 2013-04-26
  • 打赏
  • 举报
回复
看看事务是否阻塞,就是其他的地方是不是也有这条数据的update,但是没有提交。 你可以在存储过程加入commit;语句提交。
陈字文 2013-04-26
  • 打赏
  • 举报
回复
慢了 ... 就去检查锁资源...

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧