读书人

Oracle 批量给某一列循环加数比如从1加

发布时间: 2012-07-15 20:20:06 作者: rapoo

Oracle 批量给某一列循环加数例如从1加到100
DECLARE???????code number(8) := 1; ???????str_old varchar(5) := '1'; ???????str_new varchar(5) := ''; ???????data_id varchar(50) := ''; BEGIN?FOR code IN 1..2234 LOOP?? --从00001循环插入到02234 ?????str_old := '' || code; ???str_new := ''; ???--取出每条数据的主键ID ???select id into data_id from ( ??????????select id, shortname_code, rownum rm from t_system_org ???) v where v.rm = code; ???--判断字符长度,设定str_new的值 ???IF length(str_old) = 1 THEN?????str_new := '0000' || str_old; ???ELSIF length(str_old) = 2 THEN?????str_new := '000' || str_old; ???ELSIF length(str_old) = 3 THEN?????str_new := '00' || str_old; ???ELSIF length(str_old) = 4 THEN?????str_new := '0' || str_old; ???ELSE?????str_new := str_old; ???END IF; ??--根据ID执行更新 ??update t_system_org t set t.shortname_code = str_new where id = data_id; ??commit; ?END LOOP; END;

DECLARE
?????? code number(8) := 1;
?????? str_old varchar(5) := '1';
?????? str_new varchar(5) := '';
?????? data_id varchar(50) := '';
BEGIN
?FOR code IN 1..2234 LOOP

?? str_old := '' || code;
?? str_new := '';
?? --取出每条数据的主键ID
?? select id into data_id from (
????????? select id, shortname_code, rownum rm from t_system_org
?? ) v where v.rm = code;
?? --判断字符长度,设定str_new的值
?? IF length(str_old) = 1 THEN
???? str_new := '0000' || str_old;
?? ELSIF length(str_old) = 2 THEN
???? str_new := '000' || str_old;
?? ELSIF length(str_old) = 3 THEN
???? str_new := '00' || str_old;
?? ELSIF length(str_old) = 4 THEN
???? str_new := '0' || str_old;
?? ELSE
???? str_new := str_old;
?? END IF;
? --根据ID执行更新
? update t_system_org t set t.shortname_code = str_new where id = data_id;
? commit;
?END LOOP;
END;

读书人网 >其他数据库

热点推荐