oracle 触发器执行过程中出错
CREATEORREPLACETRIGGER"SYSTEM"."S_USE_TRIGGER"afterinsertons_use_infoforeachrowbeginu...
CREATE OR REPLACE TRIGGER "SYSTEM"."S_USE_TRIGGER" after insert on s_use_info for each row
begin
update customer_info set log_op_date=sysdate where server_id=:new.server_id;
end s_use_trigger;
ALTER TRIGGER "SYSTEM"."S_USE_TRIGGER" ENABLE
错误信息:
ORA-04088: 触发器 'SYSTEM.S_USE_TRIGGER' 执行过程中出错。
随后便一直出现错误:
超出打开游标的最大数 ORA-06512: 在 "SYSTEM.S_USE_TRIGGER", line 2。
因为是与JAVA程序交互的,由JAVA中抛出的异常信息。
请帮忙分析下出现以上错误信息的可能性,以及优化后的代码。 展开
begin
update customer_info set log_op_date=sysdate where server_id=:new.server_id;
end s_use_trigger;
ALTER TRIGGER "SYSTEM"."S_USE_TRIGGER" ENABLE
错误信息:
ORA-04088: 触发器 'SYSTEM.S_USE_TRIGGER' 执行过程中出错。
随后便一直出现错误:
超出打开游标的最大数 ORA-06512: 在 "SYSTEM.S_USE_TRIGGER", line 2。
因为是与JAVA程序交互的,由JAVA中抛出的异常信息。
请帮忙分析下出现以上错误信息的可能性,以及优化后的代码。 展开
6个回答
展开全部
你这些表s_use_info,customer_info在system用户下? system是默认dba权限的用户 如果不在 强烈不建议把触发器建到system下 你需要授权 还得把表改成用户.表名
建立到用户下 after 改成 before 可以了
CREATE OR REPLACE TRIGGER "S_USE_TRIGGER" before insert on s_use_info for each row
begin
update customer_info set log_op_date=sysdate where server_id=:new.server_id;
end s_use_trigger;
ALTER TRIGGER "S_USE_TRIGGER" ENABLE
建立到用户下 after 改成 before 可以了
CREATE OR REPLACE TRIGGER "S_USE_TRIGGER" before insert on s_use_info for each row
begin
update customer_info set log_op_date=sysdate where server_id=:new.server_id;
end s_use_trigger;
ALTER TRIGGER "S_USE_TRIGGER" ENABLE
更多追问追答
追问
是的,项目是以前的程序员设计的,所有数据都使用SYSTEM操作的。
追答
改成这样
CREATE OR REPLACE TRIGGER "SYSTEM"."S_USE_TRIGGER" before insert on 用户名.s_use_info for each row
begin
update 用户名.customer_info set log_op_date=sysdate where server_id=:new.server_id;
end s_use_trigger;
ALTER TRIGGER "SYSTEM"."S_USE_TRIGGER" ENABLE
展开全部
if @ins_Cw = '总店'
begin
UPDATE 货名表 SET 存数1= isnull(存数1,0) + isnull(@ins_num,0),最后进货单价= @ins_Pr,最后进货单号=@ins_Dh where 货号 =@ins_hh
end
if @ins_Cw = '分店'
begin
UPDATE 货名表 SET 存数2= isnull(存数2,0) + isnull(@ins_num,0),最后进货单价= @ins_Pr,最后进货单号=@ins_Dh where 货号 =@ins_hh
end
FETCH NEXT FROM ins_cur INTO @ins_hh,@ins_num,@ins_Pr,@ins_Dh,@ins_Cw
END
CLOSE ins_cur
DEALLOCATE ins_cur
begin
UPDATE 货名表 SET 存数1= isnull(存数1,0) + isnull(@ins_num,0),最后进货单价= @ins_Pr,最后进货单号=@ins_Dh where 货号 =@ins_hh
end
if @ins_Cw = '分店'
begin
UPDATE 货名表 SET 存数2= isnull(存数2,0) + isnull(@ins_num,0),最后进货单价= @ins_Pr,最后进货单号=@ins_Dh where 货号 =@ins_hh
end
FETCH NEXT FROM ins_cur INTO @ins_hh,@ins_num,@ins_Pr,@ins_Dh,@ins_Cw
END
CLOSE ins_cur
DEALLOCATE ins_cur
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-12-27
展开全部
tfg879
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询