web-dev-qa-db-ja.com

Oracleでユーザー定義タイプの権限を付与する方法

これはおそらく簡単ですが、理解できないようです。ユーザー定義タイプをCO_ADMINとして作成しました。ただし、タイプを使用するアプリケーションは、GS_USERデータベースアカウントを使用して実行されます。

CO_ADMINとしてGS_USERに権限を付与しましたが、アプリケーションがユーザー定義タイプを使用しようとするときはいつでも、常に以下を取得します。

: type ""."DOCPARAMETERTYPE_TABLE" not found    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
   at Oracle.DataAccess.Types.OracleUdtDescriptor..ctor(OracleConnection con, String schemaName, String typeName)

これが私がこれまでに試したステートメントです。それらを実行した後、すべてが「付与は成功しました」と言いますが、それは真実ではないか、おそらく私は間違ったステートメントを使用しています。助けてください:

GRANT all on "CO_ADMIN"."DOCPARAMETERTYPE" to "GS_USER" with grant option;
GRANT all on "CO_ADMIN"."DOCPARAMETERTYPE_TABLE" to "GS_USER" with grant option;

GRANT EXECUTE ON "CO_ADMIN"."DOCPARAMETERTYPE" TO "GS_USER";
GRANT EXECUTE ON "CO_ADMIN"."DOCPARAMETERTYPE_TABLE" TO "GS_USER";

タイプの定義は次のとおりです。

create or replace type DOCPARAMETERTYPE as object (
docID varchar2(20),
system varchar(50)
);

create or replace type DOCPARAMETERTYPE_TABLE AS TABLE of DOCPARAMETERTYPE;
2
user3821501

クライアントアカウントを使用する場合は、スキーマでタイプを修飾する必要があると思います(CO_ADMIN.DOCPARAMETERTYPE_TABLE、 だけでなく DOCPARAMETERTYPE_TABLE)またはタイプのパブリックシノニムを作成します。

2
a1ex07