プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CREATE JAVA

用途

CREATE JAVAを使用すると、Javaソース、クラスまたはリソースを含むスキーマ・オブジェクトを作成できます。


関連項目:

  • Javaの概要およびJavaストアド・プロシージャの詳細は、『Oracle Database Java開発者ガイド』を参照してください。

  • JDBCについては、『Oracle Database JDBC開発者ガイド』を参照してください。


前提条件

自分のスキーマにJavaソース、クラスまたはリソースを含むスキーマ・オブジェクトを作成または再作成する場合は、CREATE PROCEDUREシステム権限が必要です。他のユーザーのスキーマ内にスキーマ・オブジェクトを作成または再作成する場合は、CREATE ANY PROCEDUREシステム権限が必要です。

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のJavaクラス、ソースまたはリソースを含むスキーマ・オブジェクトを再作成できます。この句を指定した場合、付与されているオブジェクト権限を削除、再作成および再付与しなくても、既存のオブジェクトの定義を変更できます。

Javaスキーマ・オブジェクトを再定義し、RESOLVEまたはCOMPILEを指定した場合、そのオブジェクトが再コンパイルまたは変換されます。正常に変換またはコンパイルされたかどうかにかかわらず、Javaスキーマ・オブジェクトを参照するクラスは有効になります。

再定義したファンクションに対して権限が付与されていたユーザーは、権限を再付与されなくても、そのファンクションにアクセスできます。


関連項目:

その他の情報は、「ALTER JAVA」を参照してください。

RESOLVE | COMPILE

RESOLVEおよびCOMPILEは、同義のキーワードです。この文が正常に実行された場合に作成されるJavaスキーマ・オブジェクトを変換することを指定します。

  • クラスに適用された場合、他のクラス・スキーマ・オブジェクトに対する参照名に変換されます。

  • ソースに適用された場合、ソースがコンパイルされます。

RESOLVEおよびCOMPILEの制限事項: Javaリソースには、これらのキーワードを指定できません。

NOFORCE

RESOLVEまたはCOMPILEを指定しても、正常に変換またはコンパイルできない場合は、NOFORCEを指定するとCREATEコマンドの結果をロールバックできます。このオプションを指定しないと、正常に変換またはコンパイルできない場合でも何も処理が行われず、作成されたスキーマ・オブジェクトはそのままです。

JAVA SOURCE句

JAVA SOURCEを指定すると、Javaソース・ファイルをロードできます。

JAVA CLASS句

JAVA CLASSを指定すると、Javaクラス・ファイルをロードできます。

JAVA RESOURCE句

JAVA RESOURCEを指定すると、Javaリソース・ファイルをロードできます。

NAMED句

NAMED句は、Javaソースまたはリソースの場合に指定します。primary_nameは、二重引用符で囲む必要があります。長さの上限は、データベース・キャラクタ・セットで4000バイトです。

  • Javaソースの場合、この句にはソース・コードが保持されているスキーマ・オブジェクト名を指定します。正常なCREATE JAVA SOURCE文は、ソースによって定義されたJavaクラスをそれぞれ保持するために、追加スキーマ・オブジェクトも作成します。

  • Javaリソースの場合、この句にはJavaリソースを保持するスキーマ・オブジェクト名を指定します。

primary_nameの小文字、または大文字と小文字の組合せを保持するには、二重引用符を使用します。

schemaを指定しない場合、自分のスキーマにそのオブジェクトが作成されます。

NAMED Javaクラスの制限事項: NAMED句には、次の制限事項があります。

  • Javaクラスには、NAMEDを指定できません。

  • primary_nameは、データベース・リンクを含むことはできません。

SCHEMA句

SCHEMA句は、Javaクラスにのみ適用されます。このオプションは、Javaファイルを含むオブジェクトが存在するスキーマを指定します。この句を指定しない場合、自分のスキーマにそのオブジェクトが作成されます。

invoker_rights_clause

invoker_rights_clauseを使用すると、クラスを所有するユーザーのスキーマ内で、そのユーザーの権限を使用してクラスのメソッドが実行されるか、または、CURRENT_USERのスキーマ内で、そのユーザーの権限を使用してクラスのメソッドを実行するかを指定できます。

また、この句は、問合せ、DML操作、およびその型のメンバー・ファンクションおよびプロシージャ内の動的SQL文の外部名の変換方法も定義します。

AUTHID CURRENT_USER

CURRENT_USERを使用すると、クラスのメソッドがCURRENT_USER権限で実行されることを指定できます。この句はデフォルトで、実行者権限クラスを作成します。

また、この句は、問合せ、DML操作、および動的SQL文の外部名をCURRENT_USERのスキーマで変換することも指定します。他のすべての文における外部名は、メソッドを含むスキーマで変換します。

AUTHID DEFINER

DEFINERを使用すると、クラスが存在するスキーマの所有者権限でクラスのメソッドを実行すること、およびクラスが存在するスキーマで外部名を変換することを指定できます。この句によって定義者権限クラスが作成されます。


関連項目:

  • 『Oracle Database Java開発者ガイド』

  • CURRENT_USERの判断方法については、『Oracle Database PL/SQL言語リファレンス』を参照してください。


RESOLVER句

RESOLVER句を使用すると、Javaスキーマ・オブジェクトに対する完全修飾Java名のマッピングを指定できます。ここでは次のとおりです。

  • match_stringは、完全修飾Java名、そのようなJava名と一致するワイルド・カードまたは任意の名前と一致するワイルド・カードを指定します。

  • schema_nameは、対応するJavaスキーマ・オブジェクトを検索するスキーマを指定します。

  • schema_nameの代替としてのダッシュ(-)は、match_stringが有効なJava名と一致した場合、名前が変換されないことを示します。名前の変換は成功しますが、実行時にクラスがその名前を使用することはできません。

このマッピングは、後の変換で(暗黙的に、またはALTER JAVA ... RESOLVE文で明示的に)使用されるコマンドで作成されるスキーマ・オブジェクトの定義とともに格納されます。

USING句

USINGは、Javaクラスまたはリソースに対する文字データ(CLOBまたはBFILE)またはバイナリ・データ(BLOBまたはBFILE)の順序を決定します。文字の順序を使用して、1つのファイルがJavaクラスまたはリソースに、または1つのソース・ファイルおよび1つ以上の導出クラスがJavaソースに定義されます。

BFILE句

順序を含む、オペレーティング・システム(directory_object_name)およびサーバー・ファイル(server_file_name)であらかじめ作成されているファイルのディレクトリおよびファイル名を指定します。BFILEは、通常、CREATE JAVA SOURCEによって文字順序として、CREATE JAVA CLASSまたはCREATE JAVA RESOURCEによってバイナリ順序として解析されます。

CLOB | BLOB | BFILE subquery

指定した型(CLOBBLOBまたはBFILE)の行と列を選択する副問合せを指定します。列の値は文字列を構成します


注意:

以前のリリースでは、USING句は暗黙的にキーワードSELECTを提供しました。今回のリリースでは提供されません。ただし、キーワードSELECTなしの副問合せは、(下位互換性のために)サポートされています。

key_for_BLOB

key_for_BLOB句は、次の暗黙的な問合せを提供します。

SELECT LOB FROM CREATE$JAVA$LOB$TABLE 
   WHERE NAME = 'key_for_BLOB';

key_for_BLOB句の制限事項: このパラメータを使用する場合、表CREATE$JAVA$LOB$TABLEが現行のスキーマ内にあり、BLOB型のLOB列およびVARCHAR2型のNAME列が存在する必要があります。

AS source_char

Javaソースの文字列を指定します。

Javaクラス・オブジェクトの作成例: 次の文は、Javaバイナリ・ファイルにある名前を使用して、Javaクラスを含むスキーマ・オブジェクトを作成します。

CREATE JAVA CLASS USING BFILE (java_dir, 'Agent.class')
/

この例では、JavaクラスAgent.classを含むオペレーティング・システム・ディレクトリを指すディレクトリ・オブジェクトjava_dirがすでに存在していると想定しています。この例では、クラス名がJavaクラス・スキーマ・オブジェクトの名前を決定します。

Javaソース・オブジェクトの作成例: 次の文は、Javaソース・スキーマ・オブジェクトを作成します。

CREATE JAVA SOURCE NAMED "Welcome" AS
   public class Welcome {
      public static String welcome() {
         return "Welcome World";   } }
/

Javaリソース・オブジェクトの作成例: 次の文は、bfileからapptextという名前のJavaリソース・スキーマ・オブジェクトを作成します。

CREATE JAVA RESOURCE NAMED "appText" 
   USING BFILE (java_dir, 'textBundle.dat')
/