昨天导入一个数据库,用户反映导过来的有sequence要小于已经导入到表中的sequence的值。原因生产数据中seq导入的时候可能在操作,导致出现一些重复的出现。为了解决这个问题,我把当前用户下所有的sequence全部向后延至200,具体操作如下:
create table MAHANSO_TEST
(
ID NUMBER,
SEQUENCE VARCHAR2(100)
)
DECLARE
CURSOR c_cursor IS
select sequence_name from user_sequences;
v_sequences_name user_sequences.sequence_name%type;
v_sql varchar2(2000);
v_insert_sql varchar2(2000);
v_sequences_value number;
BEGIN
--隐含打开游标
FOR v_sequences_name IN c_cursor LOOP
--隐含执行一个FETCH语句
for int in 1..1000 loop
v_sql := 'select '||v_sequences_name.sequence_name||'.Nextval from dual';
--v_sql := v_sequences_name;
--dbms_output.put_line(v_sql);
execute immediate v_sql into v_sequences_value;
v_insert_sql := 'insert into mahanso_test values(:1,:2)';
execute immediate v_insert_sql using v_sequences_value,v_sequences_name.sequence_name;
commit;
end loop;
--隐含监测c_sal%NOTFOUND
END LOOP;
--隐含关闭游标
END;