存储过程同时Update 多张表问题
如下存储过程写法对吗?执行成功,没有报错,但是实际查询数据时发现数据并没有被更新,求解答,问题出在哪里呢?createorreplaceprocedureemp_role...
如下存储过程写法对吗?执行成功,没有报错,但是实际查询数据时发现数据并没有被更新,求解答,问题出在哪里呢?
create or replace procedure emp_role_disable Is
Begin
Update c_userxrole Set expiration_date=Sysdate+14,lm_user='autocim' ,lm_time =systimestamp Where upper(userid) In (Select emp_data.emp_no From emp_data Where trans_date Is Not Null);
Update c_usr_user Set is_enable=0,is_quit=1 ,LM_USER='CIM',disable_date=Sysdate Where is_enable=1 And is_quit=0 And upper(userid) Not In (Select emp_data.emp_no From emp_data);
end emp_role_disable;
说明,两个sql 拉出来直接在plsql上执行是Ok的
存储过程执行后,数据没有变化;然后我定义了一个job,周期执行这个存储过程。job执行成功,数据也更新了。。问题:存储过程不能手动执行吗?就是按F8执行,一定要其它触发执行? 展开
create or replace procedure emp_role_disable Is
Begin
Update c_userxrole Set expiration_date=Sysdate+14,lm_user='autocim' ,lm_time =systimestamp Where upper(userid) In (Select emp_data.emp_no From emp_data Where trans_date Is Not Null);
Update c_usr_user Set is_enable=0,is_quit=1 ,LM_USER='CIM',disable_date=Sysdate Where is_enable=1 And is_quit=0 And upper(userid) Not In (Select emp_data.emp_no From emp_data);
end emp_role_disable;
说明,两个sql 拉出来直接在plsql上执行是Ok的
存储过程执行后,数据没有变化;然后我定义了一个job,周期执行这个存储过程。job执行成功,数据也更新了。。问题:存储过程不能手动执行吗?就是按F8执行,一定要其它触发执行? 展开
3个回答
展开全部
F8只是创建或者修改了这个存储过程的内容,跟执行存储过程是两个概念
就跟你喝水一样,你把水接到杯子里,不等于你就喝到了水
就跟你喝水一样,你把水接到杯子里,不等于你就喝到了水
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
更新完没有提交过程,你可能要加上
commit;在end emp_role_disable;之前
commit;在end emp_role_disable;之前
追问
已经加上去了,还是不行。执行后数据还是没有更新
create or replace procedure emp_role_disable Is
Begin
。。。
Commit;
end emp_role_disable;
追答
就是按F8执行,在哪里面?
似乎是你使用的环境问题。你可以尝试在SQLPLUS里
exec emp_role_disable;
能否执行成功。这样确认到底是哪儿的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存储过程可以手动执行;
excute 存储过程名;
excute 存储过程名;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询