oracle 存储过程循环执行update语句

selectcolumn1fromtable1;对column1进行update操作。由于update时,需要对column1进行特殊处理。如果是java程序里,可以先f... select column1 from table1 ;对column1进行update操作。由于update时,需要对column1进行特殊处理。如果是java程序里,可以先for循环,然后分别update。请问在存储过程里如何实现?
请写一个较为完成的存储过程。我会适当再加分的。谢谢!
展开
 我来答
京南吴彦祖
2012-06-28 · TA获得超过2.3万个赞
知道顶级答主
回答量:4.1万
采纳率:75%
帮助的人:5.3亿
展开全部
其实二楼写的最简单,但对于新手,最好别那么写,至于1楼,如果数据不是很多,没必要搞个游标。你也可以看看我写的

create or replace procedure P_Update(o_vc_message out varchar2)
is
type column1 is table of table1.column1%type index by binary_integer;
col1s column1;
type rid is table of rowid index by binary_integer;
rids rid;
temp table1.column1%type;
begin
select column1,rowid bulk collect into col1s,rids from table1;
if (column1.count != 0) then
for i in col1s.first..col1s.last loop
temp := col1s(i);--处理 col1s(i) 想干嘛干嘛
update table1 set column1 = temp where rowid = rids(i);
end loop;
end if;
o_vc_message := 'OK!';
exception
when others then
o_vc_message := 'exception happend.' || sqlcode || sqlerrm;
rollback;
return;
end P_Update;

如果仅仅是简单处理column1,比如加1什么的,就别搞那么复杂,一个sql就ok了。
舞动的阿旗
2012-06-28 · 超过32用户采纳过TA的回答
知道答主
回答量:167
采纳率:0%
帮助的人:77.9万
展开全部
create or replace procedure TESTis
begin
--遍历记录 for table1model in (select column1 from table1) loop --更新列(当前值加1) update table1 set column1=table1model.column1+1 where column1=table1model.column1; end loop;
commit;exception when others then rollback; return;
end TEST;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h20043549
2012-06-28 · TA获得超过118个赞
知道答主
回答量:128
采纳率:0%
帮助的人:102万
展开全部
找出主键,用游标可以完成!但特殊处理是哈,说清楚我写个例子出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式