2017-01-26 2 views
2

내가 테이블이 변수 선언에서 %의 TYPE을 사용하는 데 필요한 :는 <code>User1</code>으로

PLS-00201: identifier 'USER1.TEST' must be declared 

REFERENCES p ermissions

GRANT REFERENCES ON USER1.TEST TO USER2; 

은 그럼 내가 얻을 : 나는 SELECT 권한을 부여하면

PLS-00904: insufficient privilege to access object USER1.TEST 

그런 다음 컴파일합니다 - 그러나, User2 다음 테이블에 선택을 수행 할 수 있으며, 나는 그들이 직접이 작업을 수행 할 수 없습니다 . 테이블에서 SELECT 기능을 부여하지 않고도 열 유형을 참조 할 수있는 권한을 사용할 수 있습니까? 그런 다음

CREATE PACKAGE USER1.TYPE_DEFINITIONS 
AS 
    SUBTYPE TYPE__TEST__ID IS USER1.TEST.ID%TYPE; 
END; 
/

:

+0

나는 그것이 가능하지 않다고 생각합니다. 매개 변수 정의로'in_id number'를 사용해야합니다. –

답변

2

한 가지 가능한 솔루션은 USER1 소유 한 패키지에 SUBTYPE를 만드는 것입니다

CREATE PROCEDURE USER2.passInATestId(
    in_id USER1.TYPE_DEFINITIONS.TYPE__TEST__ID 
) 
IS 
BEGIN 
    NULL; 
END; 
/

:

GRANT EXECUTE ON USER1.TYPE_DEFINITIONS TO USER2; 

절차는 다음과 같이 쓸 수있다 변수의 선언을 허용하는 솔루션을 선호합니다. 간접적 인 단계를 거치지 않고 직접 열의 유형을 참조하기 위해 입력하십시오 (하지만 가능하지는 않습니다).