Oracle 重置sequence2

CREATE OR REPLACE PROCEDURE RESET_SEQUENCE(p_sSeqName IN VARCHAR2)
 IS
    n    NUMBER(10 );
    tsql VARCHAR2(100 );
BEGIN
    EXECUTE IMMEDIATE 'SELECT ' || p_sSeqName || '.NEXTVAL FROM dual '
        INTO n;
    n := - (n - 1);

    tsql := 'alter sequence ' || p_sSeqName || ' increment by ' || n;
    EXECUTE IMMEDIATE tsql;

    EXECUTE IMMEDIATE 'SELECT ' || p_sSeqName || '.NEXTVAL FROM dual '
        INTO n;
    tsql := 'alter sequence ' || p_sSeqName || ' increment by  1' ;
    EXECUTE IMMEDIATE tsql;
   
    EXCEPTION WHEN OTHERS THEN
         NULL;
END RESET_SEQUENCE;
  

猜你喜欢

转载自southking.iteye.com/blog/1728016