오라클 프로시저 호출시.. 권한이 불충분 문제.. 0 3 1,794

by 쿼리초보 [2021.11.18 10:07:42]


db는 오라클 11r이고요 

 

프로시저 내용은

    i_SQL := 'CREATE SEQUENCE test MINVALUE 0 MAXVALUE 9999 INCREMENT BY 1 START WITH 1';

    EXECUTE IMMEDIATE i_SQL;

위와 같이 test란 시퀀스를 만드는 구문입니다. (test는 동적으로 변경되는데 편의상 간략하게 표현했습니다)

 

위 프로시저를 실행하면   EXECUTE IMMEDIATE 순간 권한 불충분 에러가 나옵니다

하지만  동일 계정으로

CREATE SEQUENCE test MINVALUE 0 MAXVALUE 9999 INCREMENT BY 1 START WITH 1

위 구문 실행하면  시퀀스가 잘 만들어집니다

 

왜 프로시저에서는 동적 sql로 시퀀스 만드는게 안될까요?

도움 부탁드립니다

 

 

by 동동동 [2021.11.18 13:03:22]

정확한 에러 메세지가 뭔가요?

 

GRANT EXECUTE TO ['user1];

 


by 쿼리초보 [2021.11.19 11:05:27]

토드에서

exec XXX.GET_SEQ; 실행시 

ORA-01031: 권한이 불충분합니다
ORA-06512: "XXX.GET_SEQ",  57행
ORA-06512:  1행

 

XXX는 계정명이고 57행은 본문에서  EXECUTE IMMEDIATE i_SQL;  수행하는 행입니다.

 

GRANT EXECUTE TO XXX  -- 해봤는데..  ORA-01919: 롤 'EXECUTE'(이)가 존재하지 않습니다 라고 나오네요 ..

 

 


by 쿼리초보 [2021.11.19 11:11:11]

해결했습니다

 

 GRANT CREATE SEQUENCE TO XXX; 

 

권한주니까 되네요

그냥 XXX계정에서 시퀀스 생성이 되길래 프로시저에서도 당연히 될줄알았는데

.. 암튼 감사드립니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입