2016-12-15 5 views
1
ALTER SEQUENCE my_sequence 
    INCREMENT BY '1000000000' - TO_NUMBER(SELECT last_number FROM all_sequences WHERE sequence_name='my_sequence'); 

누군가가 왜 '잘못된 숫자'를 던질 수 있는지 설명 할 수 있습니까? 나는 TO_NUMBER을 어디 에나 두어 보았습니다. 전혀 시도하지 않았고, 큰 번호에 ''없이 시도했습니다. 모든 조합은 여전히 ​​생각할 수 있습니다. 오류는 전혀 이해가되지 않습니다. 하위 쿼리가 작동하고 확인했습니다.오라클은 시퀀스에서 increment_by를 변경합니다.

대신
+0

[이 질문]를 보라 (http://stackoverflow.com/questions/10383091/how-can-i-alter-a-sequence- in-dynamic-sql) – Aleksej

+0

프로 시저를 사용할 수 없습니다. – Shadov

+2

'증분 단위'에 대한 표현식을 사용할 수 없습니다. 또한 '1000000000'은 문자열이 아닌 숫자를 지정해야합니다. 'to_number()'에 완전한 SQL 쿼리를 전달할 수도 없다. 'increment by '에 대한 질의를 사용할 수 있더라도 to_number() 호출은 완전히 쓸모가 없습니다.'last_number'가 이미 숫자이기 때문에 숫자로 변환 할 필요가 없습니다 –

답변

3

사용하는 PL/SQL 블록 :

DECLARE 
    INC NUMBER; 
BEGIN 
    SELECT 1000000000 - LAST_NUMBER 
    INTO INC 
    FROM USER_SEQUENCES 
    WHERE SEQUENCE_NAME='my_sequence'; 

    EXECUTE IMMEDIATE 'ALTER SEQUENCE my_sequence INCREMENT BY '||INC; 
END;