2017-05-16 1 views
0

パッケージの同義語を作成しましたが、単純なdescコマンドを含めて何もできません。コードをチェックアウト:同義語をOracleパッケージで使用する

は同義語と(いない所有者ユーザーで実行)テスト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 

これらのコードを作成します(所有者ユーザーで実行)パッケージ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; 

を作成します。これらのオブジェクトの所有者とログインすると正常に実行されます。

次のようにグラントは、(それがORA-04042を与えるように私は、唯一の手順に与えることができないように見えるので、私はパッケージにそれを与えた)与えられた:

grant execute on PKG_ELMAH$LOG_ERROR to not_owner 

環境:WINDOWS 7 64-ビット; SQLデベロッパー4.0.3.16;同義語のOracleクライアント11.2

詳細:パッケージの
Details of the synonym.

詳細:あなたは間違った順序で何かをやっているか、そうでなければ伝えるために省略している
package details

+0

シノニム所有者に許可を実行したとしますか? –

+0

私は手続きのためにしかできないように、私はパッケージに助成金を渡しました。 –

+0

コマンドにスキーマを追加する 'CREATE SYNONYM [SCHEMA] .pkg_elmah $ log_error FOR DRSP.pkg_elmah $ log_error; ' –

答えて

2

私たち何か。正しい順序で実行された手順が期待どおりに機能するため、

SQL> conn a/a 
Connected. 
USER is "A" 
SQL> create or replace PACKAGE pkg_elmah$log_error 
    2 IS 
    3 PROCEDURE LogError 
    4  (
    5  v_ErrorId IN number, 
    6  v_Application IN varchar2, 
    7  v_Host IN varchar2, 
    8  v_Type IN varchar2, 
    9  v_Source IN varchar2, 
10  v_Message IN varchar2, 
11  v_User IN varchar2, 
12  v_AllXml IN varchar2, 
13  v_StatusCode IN varchar2, 
14  v_TimeUtc IN date 
15  ); 
16 
17 END pkg_elmah$log_error; 
18/

Package created. 

SQL> grant execute on PKG_ELMAH$LOG_ERROR to b 
    2/

Grant succeeded. 

SQL> conn b/b 
Connected. 
USER is "B" 
SQL> CREATE SYNONYM pkg_elmah$log_error FOR A.pkg_elmah$log_error; 

Synonym created. 

SQL> desc pkg_elmah$log_error 
PROCEDURE LOGERROR 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
V_ERRORID      NUMBER     IN 
V_APPLICATION     VARCHAR2    IN 
V_HOST       VARCHAR2    IN 
V_TYPE       VARCHAR2    IN 
V_SOURCE      VARCHAR2    IN 
V_MESSAGE      VARCHAR2    IN 
V_USER       VARCHAR2    IN 
V_ALLXML      VARCHAR2    IN 
V_STATUSCODE     VARCHAR2    IN 
V_TIMEUTC      DATE     IN 

SQL> exec pkg_elmah$log_error.logerror 
BEGIN pkg_elmah$log_error.logerror; END; 

     * 
ERROR at line 1: 
ORA-06550: line 1, column 7: 
PLS-00306: wrong number or types of arguments in call to 'LOGERROR' 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 


SQL> 
関連する問題