database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38571 게시물 읽기
No. 38571
프로시져에서 시스템 테이블 사용시 에러 (ORA-00942)
작성자
라클리
작성일
2011-05-26 18:15
조회수
5,379

--프로시져에서 시스템 테이블 사용시 에러 (ORA-00942)

 

CREATE OR REPLACE PROCEDURE test
as   
CURSOR CURS01 IS
select 1 as result from dba_tab_privs oa where rownum < 10 ;

BEGIN
    FOR REC01 IN CURS01 LOOP
    DBMS_OUTPUT.PUT_LINE(REC01.result);
    END LOOP;       

  END ;
/


------------------------------

SYSTEM 유저로 프로지셔 생성하고 있습니다..

dba_tab_privs 뷰에서 컬럼등을 조회하는 간단한 프로시져인데,

위와 같이 생성후 컴파일시 ORA-00942 에러가 발생하네요, (일반 테이블의 경우  이상x)

시스템 관련 테이블이나 뷰를 프로시져에서 사용시 특별한 조치가 필요한지 문의드립니다.

 

 

 

 

이 글에 대한 댓글이 총 2건 있습니다.

A가 '테이블'을 소유하고 있고, B가 그 '테이블'을 읽는 프로시져를 컴파일하려면, B는 그 '테이블'에 대해 '직접' 읽을수 있는 권한이 필요합니다.  여기서 '직접'이란 말은 로울 (role)을 통해 간접적으로 권한을 주면 안된다는 뜻입니다.


예를 들어, A가 다음과 같이 권한을 주어야, B가 프로시져를 만들수 있읍니다.


GRANT SELECT ON '테이블' TO B;


그러므로, 이 경우에는, SYS 유저가 직접 읽을 수있는 권한을 SYSTEM 유저에게 주어야  합니다.

 

GRANT SELECT ON dba_tab_privs TO SYSTEM;

hopper(bunny)님이 2011-05-27 09:31에 작성한 댓글입니다.
이 댓글은 2011-05-27 09:33에 마지막으로 수정되었습니다.

hopper(bunny)님 감사합니다~

SELECT_CATALOG_ROLE 만으로는 프로시져에서 안되는 거였군요..

의문점이 풀렸습니다 ㅎㅎ

 

 

라클리님이 2011-05-27 09:48에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38574순차적으로 증가하는 값으로 trigger 생성하기 [4]
김홍찬
2011-05-29
5609
38573sql구간 구하기 질문이요 [2]
SQL초보
2011-05-27
4226
38572프로시져 내부 WHERE 절에서 '변수' 처리 사용할때... [5]
라클리
2011-05-27
5985
38571프로시져에서 시스템 테이블 사용시 에러 (ORA-00942) [2]
라클리
2011-05-26
5379
38570for 문을 거꾸로 돌리고 싶어요ㄱ- [3]
이종민
2011-05-26
4845
38569가능할지 모르겠지만 질문 올려봅니다. [3]
최진규
2011-05-25
3840
38568DB LINK를 통한 오라클 upgrade(8.x -> 10.x) [3]
매수신호
2011-05-25
4389
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다