循环方便oracle数据集合简单批量修改
循环便利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;