日期:2014-05-16 浏览次数:20418 次
之前 没有 接触过,通过 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; ?
?