2014-09-08 4 views
3

시퀀스에 문제가 있습니다. 관리자로 시퀀스를 만들고 다른 사용자에게 선택 및 변경 권한을 부여했습니다.시퀀스가 ​​존재하지 않습니다. ORA-02289

CREATE SEQUENCE "OWNER"."TOT_SEQ" MINVALUE 1000 MAXVALUE 1000000000 INCREMENT BY 1 START WITH 1000 CACHE 20 NOORDER NOCYCLE ; 

grant select,ALTER on TOT_SEQ to user; 
commit; 

나는이 수행 할 때

select sequence_name from all_sequences; 

TOT_SEQ 

나는 목록에 내 SEQUENCE를 볼 수 있습니다.

하지만 코드에서 시퀀스에 액세스 할 수 없습니다. 다음을 사용 :

select <SEQUNCE_name>.nextval from dual; 

내가 뭘 잘못하고 있니?

+0

시스템 선택 .TOT_SEQ.nextval from dual – MarianP

+0

질문에 답변하지는 않지만 여기서 커밋을하지 않아도됩니다. DDL은 각 명령문 전후에 자동으로 커밋을 수행합니다. – Bacs

+0

네, 저도 커밋 할 필요가 없다는 것을 알고 있습니다. 그러나 그것을 도울 수는 없다. 나는 내가 커밋만큼 분명하게 뭔가를 놓친 것 같은데. ( – user3752511

답변

4

당신은 완전히 통해 순서를 자격을해야합니다 중 하나

SELECT <owner>.<sequence name>.nextval FROM dual; 

아니면위한 공용 동의어 생성합니다 경우에도

CREATE PUBLIC SYNONYM TOT_SEQ for OWNER.TOT_SEQ; 
SELECT TOT_SEQ.nexval FROM DUAL; 
+0

그리고 죄송합니다. 이것을 할 수있는 권한이 없습니다. 다음 중 하나 : ( – user3752511

+0

시퀀스 소유자를 추가하여 시퀀스 이름을 완전히 한정해야하지만, 위의 코드가 작동하지 않는다고 말하면 수신중인 오류 메시지를 공유 할 수 있습니까? – gvenzl

+0

DBD :: Oracle :: db ORA-02289 : 시퀀스가 ​​존재하지 않습니다 (DBD ERROR : 'select OWNER. <*> TOT_SEQ.nextval from DUAL'의 <*> 인디케이터 근처의 오류) [DUAL에서 OWNER.TOT_SEQ.nextval 선택] – user3752511

1

코드에서 정규화 된 이름을 사용해 보셨습니까?

select <owner>.<SEQUNCE_name>.nextval from dual; 

이미있는 경우 질문을 편집하여 다음 명령의 출력을 게시 할 수 있습니까? 예제에서 "OWNER", "USER"는 다소 혼란 스럽습니다.

all_sequences의 시퀀스를 선택하십시오. 여기서 sequence_name = 'TOT_SEQ'; select grantor, table_name, all_tab_privs의 권한 where sequence_name = 'TOT_SEQ';

+0

예. 그게 도움이되지 못했습니다. 죄송합니다. 제 질문에 그들을 추가하지 않았습니다. – user3752511

1

는 대문자로 순서를 만들 수 있는지 확인을하면 trigger/select 문에서 소문자를 사용하십시오.

관련 문제