これはおそらく簡単ですが、理解できないようです。ユーザー定義タイプを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;
クライアントアカウントを使用する場合は、スキーマでタイプを修飾する必要があると思います(CO_ADMIN.DOCPARAMETERTYPE_TABLE
、 だけでなく DOCPARAMETERTYPE_TABLE
)またはタイプのパブリックシノニムを作成します。