0
패키지의 동의어를 만들었지 만 간단한 desc 명령을 포함하여 패키지로는 아무 것도 할 수 없습니다. 코드를 체크 아웃 :오라클 패키지와 동의어 사용
이 패키지는 SQL을 작성
create or replace PACKAGE pkg_elmah$log_error
IS
PROCEDURE LogError
(
v_ErrorId IN elmah$error.errorid%TYPE,
v_Application IN elmah$error.application%TYPE,
v_Host IN elmah$error.host%TYPE,
v_Type IN elmah$error.type%TYPE,
v_Source IN elmah$error.source%TYPE,
v_Message IN elmah$error.message%TYPE,
v_User IN elmah$error.username%TYPE,
v_AllXml IN elmah$error.allxml%TYPE,
v_StatusCode IN elmah$error.statuscode%TYPE,
v_TimeUtc IN elmah$error.timeutc%TYPE
);
END pkg_elmah$log_error;
는 동의어 및 (안 소유자의 사용자에서 실행) 테스트 SQL
CREATE SYNONYM pkg_elmah$log_error FOR DRSP.pkg_elmah$log_error;
desc pkg_elmah$log_error;
---------RESULT: object does not exist
execute pkg_elmah$log_error.logerror;
---------RESULT: identifier pkg_elmah$log_error must be declared
이 코드 만들기 (소유자의 사용자에서 실행) 이 객체의 소유자와 로그인 할 때 잘 실행하십시오.
그랜트가 다음과 같이 주어졌다 (그것이 ORA-04042주기 때문에 나는 단지 절차를 제공 할 수없는 것, 그래서 패키지 준) :
grant execute on PKG_ELMAH$LOG_ERROR to not_owner
환경 : WINDOWS 7 64bit를을 ; SQL 개발자 4.0.3.16; 동의어의 Oracle 클라이언트 11.2
세부 사항 : 당신은 잘못된 순서로 일을하거나 그렇지 않으면 말할 생략 한
동의어 소유자에게 권한 실행을 제공했다고 가정합니다. –
나는 절차에 대해서만 그것을 할 수없는 것처럼 패키지에 그랜트를 줬다. –
명령에 스키마를 추가합니다.'CREATE SYNONYM [SCHEMA] .pkg_elmah $ log_error FOR DRSP.pkg_elmah $ log_error; ' –