この付録では、DBMS_JAVAパッケージについて説明します。このパッケージのファンクションとプロシージャは、JavaからRDBMS機能にアクセスするためのエントリ・ポイントを提供します。
FUNCTION longname (shortname VARCHAR2) RETURN VARCHAR2
このファンクションは、指定したJavaスキーマ・オブジェクトの完全修飾名を戻します。JavaクラスとJavaメソッドには、SQL識別子の最大長を超える名前を設定できるため、Oracle JVMの内部では、SQLアクセス用の短縮名が使用されます。このファンクションは、すべての切り捨てられた名前の元のJava名を戻します。このファンクションの例では、無効なクラスの完全修飾名を次のように出力します。
SELECT dbms_java.longname (object_name) FROM user_objects WHERE object_type = 'JAVA CLASS' AND status = 'INVALID';
FUNCTION shortname (longname VARCHAR2) RETURN VARCHAR2
データベースにフルネームを指定するには、DBMS_JAVAパッケージのshortname()ルーチンを使用できます。このルーチンは、フルネームを入力として取得し、対応する短い名前を戻します。 このルーチンは、USER_OBJECTSビューの問合せによってロードされたクラスの検証に役立ちます。
FUNCTION get_compiler_option(name VARCHAR2, optionName VARCHAR2) RETURN VARCHAR2
このファンクションは、optionNameパラメータで指定したオプションの値を戻します。このファンクションは、Oracle Databaseにより提供されるJavaとSQLJコンパイラに関するオプションの制御に使用するファンクションの1つです。
PROCEDURE set_compiler_option(name VARCHAR2, optionName VARCHAR2, value VARCHAR2)
このプロシージャは、Oracle Databaseにより提供されるJavaとSQLJコンパイラに関するオプションの設定に使用されます。
PROCEDURE reset_compiler_option(name VARCHAR2, optionName VARCHAR2)
このプロシージャは、指定したコンパイラ・オプションをデフォルト値に再設定するために使用されます。
FUNCTION resolver (name VARCHAR2, owner VARCHAR2, type VARCHAR2) RETURN VARCHAR2
このファンクションは、オブジェクトがtype型のスキーマownerのオブジェクトnameに対するリゾルバ仕様を戻します。コール元には、EXECUTE権限、およびこのファンクションを使用するように指定されたオブジェクトへのアクセス権が必要です。
nameパラメータは、このオブジェクトの短縮名です。
typeの値は、SOURCEまたはCLASSのいずれかです。
エラーがある場合は、NULLが戻されます。基礎となるオブジェクトが変更された場合は、ObjectTypeChangedExceptionがスローされます。
このファンクションは次のようにコールできます。
SELECT dbms_java.resolver('tst', 'SCOTT', 'CLASS') FROM DUAL;
次の結果が戻されます。
DBMS_JAVA.RESOLVER('TST','SCOTT','CLASS')
-----------------------------------------
((* SCOTT)(* PUBLIC))
FUNCTION derivedFrom (name VARCHAR2, owner VARCHAR2, type VARCHAR2) RETURN VARCHAR2
このファンクションは、オブジェクトがtype型のスキーマownerのオブジェクトnameに対するソース名を戻します。コール元には、EXECUTE権限、およびこのファンクションを使用するように指定されたオブジェクトへのアクセス権が必要です。
nameパラメータおよび戻されたソース名は、このオブジェクトの短縮名です。
typeの値は、SOURCEまたはCLASSのいずれかです。
エラーがある場合は、NULLが戻されます。基礎となるオブジェクトが変更された場合は、ObjectTypeChangedExceptionがスローされます。
オブジェクトがOracle JVMでコンパイルされなかった場合は、戻り値がNULLになります。
このファンクションは次のようにコールできます。
SELECT dbms_java.derivedFrom('tst', 'SCOTT', 'CLASS') FROM DUAL;
次の結果が戻されます。
DBMS_JAVA.DERIVEDFROM('TST','SCOTT','CLASS')
-----------------------------------------
tst
FUNCTION fixed_in_instance (name VARCHAR2, owner VARCHAR2, type VARCHAR2) RETURN NUMBER
このファンクションは、オブジェクトがtype型のスキーマownerのオブジェクトnameに対して、永続的に保持されるステータスを戻します。コール元には、EXECUTE権限、およびこのファンクションを使用するように指定されたオブジェクトへのアクセス権が必要です。
nameパラメータは、このオブジェクトの短縮名です。
typeの値は、RESOURCE、SOURCE、CLASSまたはSHARED_DATAのいずれかです。
戻される数値は、ステータスを保持しないことを示す0か、保持することを示す1のいずれかです。
このファンクションは次のようにコールできます。
SELECT dbms_java.fixed_in_instance('tst', 'SCOTT', 'CLASS') FROM DUAL;
次の結果が戻されます。
DBMS_JAVA.FIXED_IN_INSTANCE('TST','SCOTT','CLASS')
-----------------------------------------
0
次の文を考えてみます。
SELECT dbms_java.fixed_in_instance('java/lang/String', 'SYS', 'CLASS') FROM DUAL;
次の結果が戻されます。
DBMS_JAVA.FIXED_IN_INSTANCE('JAVA/LANG/STRING','SYS','CLASS')
-------------------------------------------------------------
1
PROCEDURE set_output (buffersize NUMBER)
このプロシージャは、Javaストアド・プロシージャの出力をリダイレクトし、DBMS_OUTPUTパッケージにトリガーします。
PROCEDURE start_debugging(host VARCHAR2, port NUMBER, timeout NUMBER)
このプロシージャは、指定したポートの指定ホストでデバッグ・エージェントを起動するために使用されます。
PROCEDURE restart_debugging(timeout NUMBER)
このプロシージャは、デバッグ・エージェントを再起動するために使用されます。
PROCEDURE export_source(name VARCHAR2, schema VARCHAR2, blob BLOB) PROCEDURE export_source(name VARCHAR2, blob BLOB) PROCEDURE export_source(name VARCHAR2, clob CLOB)
このプロシージャは、Javaソースを、Javaソース・スキーマ・オブジェクトとしてOracle Databaseにエクスポートするために使用されます。ソースは、nameパラメータを使用して指定します。このソースは、BLOBオブジェクトまたはCLOBオブジェクトにエクスポートできます。ソースの内部表現にはUTF8形式が使用されるため、BLOBへのソースの格納にもこの形式が使用されます。ソース・スキーマ・オブジェクトは指定のスキーマで作成されます。スキーマが未指定の場合は、現行スキーマが使用されます。
PROCEDURE export_class(name VARCHAR2, schema VARCHAR2, blob BLOB) PROCEDURE export_class(name VARCHAR2, blob BLOB)
このプロシージャは、nameパラメータで指定したJavaクラスを、Javaクラス・スキーマ・オブジェクトとしてOracle Databaseにエクスポートするために使用されます。クラスのエクスポート先はBLOBオブジェクトのみで、CLOBオブジェクトにはエクスポートできません。スキーマが指定されている場合、クラス・スキーマ・オブジェクトは、現行スキーマの他に、指定されたスキーマにも作成されます。
PROCEDURE export_resource(name VARCHAR2, schema VARCHAR2, blob BLOB) PROCEDURE export_resource(name VARCHAR2, blob BLOB) PROCEDURE export_resource(name VARCHAR2, schema VARCHAR2, clob CLOB) PROCEDURE export_resource(name VARCHAR2, clob CLOB)
nameパラメータで指定したリソースが、schemaパラメータで指定したスキーマのリソース・スキーマ・オブジェクトとしてOracle Databaseにエクスポートされます。スキーマが未指定の場合は、現行スキーマが使用されます。このリソースは、CLOBオブジェクトまたはBLOBオブジェクトのいずれにもエクスポートできます。
PROCEDURE loadjava(options VARCHAR2) PROCEDURE loadjava(options VARCHAR2, resolver VARCHAR2)
これらのプロシージャでは、loadjavaコマンドライン・ツールではなく、コールを使用して、データベースに複数のクラスをロードできます。このプロシージャは、次のように、使用しているJavaアプリケーション内でコールできます。
CALL dbms_java.loadjava('... options...');
オプションは、コマンドラインで指定する内容と同じです。各オプションは、スペースで区切る必要があります。オプションをカンマで区切らないでください。これに関する唯一の例外は、スペースを含むloadjava -resolverオプションです。-resolverの場合は、次のように、最初にすべての他のオプションを指定してカンマで区切り、次に-resolverオプションを指定します。
CALL dbms_java.loadjava('... options...', 'resolver_options');
-thin、-oci、-userおよび-passwordの各オプションはデータベース接続に関連しているため、指定しないでください。出力は、System.errに送られます。通常、出力はトレース・ファイルに保存されますが、リダイレクトできます。
PROCEDURE dropjava(options VARCHAR2)
このプロシージャを使用すると、dropjavaコマンドライン・ツールではなく、コールを使用して、データベース内のクラスを削除できます。このプロシージャは、次のように、使用しているJavaアプリケーション内でコールできます。
CALL dbms_java.dropjava('... options...');
PROCEDURE grant_permission(grantee VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, permission_action VARCHAR2)
このメソッドを使用すると、特定のユーザーまたはロールにパーミッションを付与できます。
PROCEDURE restrict_permission(grantee VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, permission_action VARCHAR2)
このメソッドを使用すると、一般的な規則に対する制限または例外を指定できます。
PROCEDURE grant_policy_permission(grantee VARCHAR2, permission_schema VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2)
このメソッドを使用すると、PolicyTablePermissionを付与および制限できます。
PROCEDURE revoke_permission(permission_schema VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, permission_action VARCHAR2)
このメソッドを使用すると、付与されたパーミッションを取り消すことができます。
PROCEDURE disable_permission(key NUMBER)
このメソッドを使用すると、付与されたパーミッションを使用禁止にできます。
procedure set_preference(user VARCHAR2, type VARCHAR2, abspath VARCHAR2, key VARCHAR2, value VARCHAR2)
このプロシージャでは、次のように、SYS:java$prefs$表内の行の挿入または更新が行われます。
CALL dbms_java.set_preference('SCOTT', 'U', '/my/package/method/three', 'windowsize', '22:32');
userパラメータには、設定項目の連結先スキーマの名前を指定します。ログイン・スキーマがSYSでない場合、userには、現在のログイン・スキーマを指定する必要があります。指定しないと、INSERTに失敗します。 typeパラメータには、ユーザー設定項目を示す値Uを指定するか、またはシステム設定項目を示すSを指定できます。 abspathパラメータには、設定項目の絶対パスを指定します。 keyは参照に使用する設定項目キー、valueは設定項目キーの値です。