reset序列到指定的值

 CREATE OR REPLACE PROCEDURE Set_seq_To
(p_Name  IN VARCHAR2,
p_val   IN NUMBER)
IS
v_num  NUMBER;
BEGIN
EXECUTE IMMEDIATE 'SELECT '
||p_Name
||'.NEXTVAL FROM DUAL' INTO v_num;
DBMS_OUTPUT.Put_Line('v_num=' || v_num);

EXECUTE IMMEDIATE 'ALTER SEQUENCE '
||p_Name
||' INCREMENT BY '
||(p_val - v_num - 1)
||' MINVALUE 1';

EXECUTE IMMEDIATE 'SELECT '
||p_Name
||'.NEXTVAL FROM DUAL' INTO v_num;

EXECUTE IMMEDIATE 'ALTER SEQUENCE '
||p_Name
||' INCREMENT BY 1 ';

DBMS_OUTPUT.Put_Line('Sequence '
||p_Name
||' IS NOW AT '
||p_val);
END;
 

你可能感兴趣的:(reset序列到指定的值)