CREATE OR REPLACE PROCEDURE EAM.PROC_RESET_SEQUENCES IS
TSQL VARCHAR(200);
CURSOR CUR_SEQ IS SELECT SEQUENCE_NAME FROM USER_SEQUENCES;
CUR_SEQ_ITEM CUR_SEQ%ROWTYPE;
BEGIN
OPEN CUR_SEQ;
LOOP
    FETCH CUR_SEQ INTO CUR_SEQ_ITEM;
    EXIT WHEN CUR_SEQ%NOTFOUND;
        TSQL := 'DROP SEQUENCE ' || CUR_SEQ_ITEM.SEQUENCE_NAME;
        EXECUTE IMMEDIATE TSQL;
        TSQL := 'CREATE SEQUENCE ' || CUR_SEQ_ITEM.SEQUENCE_NAME || ' INCREMENT BY 1 MAXVALUE 99999999999999999999';
        EXECUTE IMMEDIATE TSQL;
END LOOP;
CLOSE CUR_SEQ;
END PROC_RESET_SEQUENCES;
/

解决方案 »

  1.   

    lz想干嘛,业务里面重建sequence不是就乱套了么
      

  2.   

    测试库上用的吧
    既然名称放到CUR_SEQ_ITEM
    那么DROP 和create语句里面的CUR_SEQ_ITEM.SEQUENCE_NAME就应该用CUR_SEQ_ITEM代替了。
      

  3.   

    业务需要。定时触发因为序列不能重设start,所以重建喽
      

  4.   

    http://topic.csdn.net/u/20111030/10/14d9cee1-6cca-41cc-85c8-867f891a00c8.html
      

  5.   

    做项目的时候,做库迁移的时候用,EXPDP、impdp