日期:2014-05-16  浏览次数:20418 次

循环便利oracle数据集合简单批量修改

之前 没有 接触过,通过 oracle 自定义 函数 处理问题 。今天有个需求 要求修改一批 字典数据的主见 ID ,变成 自增的。

由于之前 字典数据,是程序员自主维护的,主键起名。千奇百怪~所以这边要求统一下,需求很急。

?

简单的 分析下,无外乎啊就是把数据拿出来,把每条数据的主键更新为 自增变量 , 自增变量累加。这么个很简单的事情~

?

可是由于平时很少写oralce存储过程 或者 自定义函数,所以只有 思路 却不知道该怎么做。没办法,回归java吧。写了个junit 问题解决。解决问题之后,觉得应该去看看这类简单的问题,因为在以后的工作中 可能会用到。于是乎有了下面代码。

?

?

?

UPDATE tablename SET id='c'||id;//这里是为了防止,下面批量修改的时候报唯一约束错误!,ID 是主键

commit;?

?

DECLARE ?//类似于java的 声明变量的意思

? ? ?newid NUMBER(20):=1;

? ? ?CURSOR vo_array IS SELECT * FROM?tablename?;

//CURSOR 指的是 指针。这里声明了一个大的集合类型的指针。

begin?

? ? ?for ?vo in?vo_array?loop //有些像 for(String [] var : String_array) 的感觉

? ? ?update?tablename?set id = newid where id =?vo.id;?

? ? ?newid:=newid+1;

? ? ?end loop;

end; ?

?