ORACLE存储过程,循环插入数据后,更新数据来源表state字段

fetchcur_vio_surveilintovs_sjhm,vs_hphm,vs_wfsj,vs_wfdz,vs_gxsj;loopifcur_vio_surveil... fetch cur_vio_surveil into vs_sjhm,vs_hphm,vs_wfsj,vs_wfdz,vs_gxsj;
loop
if cur_vio_surveil%FOUND then
vs_content:=vs_hphm || '的车主,该车于' ||vs_wfsj|| '在' || vs_wfdz || '产生交通违法行为,请尽快到交警支队违法处理大厅接受处理.并注意行车安全.';
sql_text_vs:='insert into MSG_TABLE(PHONE,CONTENT,CREATE_TIME) values ('''||vs_sjhm||''','''||vs_content||''',to_date('''||vs_gxsj||''', ''YYYY-MM-DD HH24:MI:SS''))';
--dbms_output.put_line(sql_text);
execute immediate sql_text_vs;
Fetch cur_vio_surveil into vs_sjhm,vs_hphm,vs_wfsj,vs_wfdz,vs_gxsj;
else
exit;
end if;
end loop;
if cur_vio_surveil%ISOPEN then
close cur_vio_surveil;
end if;
commit;
这是我的存储过程,每次完成插入后,我想更新数据来源库,该怎么做?
展开
 我来答
随o天
推荐于2016-07-25 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2028万
展开全部
下面例子中A表是数据源,B表是插入数据目标。
create or replace procedure ... ...
cursor c1 is select * from A where... ...for update of 需要更新的列;
v c1%rowtype;
begin
open c1;
loop
fetch c1 into v;
exit when c1%notfound;
insert into B... ...;
update A set 需要更新列=... ... where current of c1;
... ...
end loop;
... ...
end;
BuddhaQQ
2012-12-15 · TA获得超过1763个赞
知道小有建树答主
回答量:860
采纳率:100%
帮助的人:980万
展开全部
更新数据来源库?是和你当前运行存储过程不在同一个库吗?
还是要,更新源数据表的?
更多追问追答
追问
数据来源表A,存储过程是将A中字段进行处理后插入B表中,插入完成后需要对A.state字段进行更新操作。。
追答
如果在同一数据库,可以在cursor中定义for update,例如:
...
cursor cur_vio_surveil is
select vs_sjhm,vs_hphm,vs_wfsj,vs_wfdz,vs_gxsj, state from a -- 加要更新的列state
for update of state -- cursor中增加for update
;
...
fetch cur_vio_surveil into vs_sjhm,vs_hphm,vs_wfsj,vs_wfdz,vs_gxsj;
...
execute immediate sql_text_vs; -- 执行insert后,加更新a表
update a set state=... where current of cur_vio_surveil -- 更新a表游标cur_vio_surveil中当前列
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式