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;
这是我的存储过程,每次完成插入后,我想更新数据来源库,该怎么做? 展开
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;
这是我的存储过程,每次完成插入后,我想更新数据来源库,该怎么做? 展开
2个回答
展开全部
下面例子中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;
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;
展开全部
更新数据来源库?是和你当前运行存储过程不在同一个库吗?
还是要,更新源数据表的?
还是要,更新源数据表的?
更多追问追答
追问
数据来源表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中当前列
...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询