|
注意: CREATE LIBRARY文は、共有ライブラリおよび動的リンクがサポートされているプラットフォームに対してのみ有効です。 |
CREATE LIBRARY文を使用すると、ライブラリ、つまりオペレーティング・システムの共有ライブラリに関連付けられたスキーマ・オブジェクトが作成されます。(オペレーティング・システムの共有ライブラリ(DLL)の作成方法については、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。)
このライブラリ・スキーマ・オブジェクトの名前は、SQLおよびPL/SQLによって第三世代言語(3GL)ファンクションおよびプロシージャを起動できるように、CREATE FUNCTION文またはCREATE PROCEDURE文のcall_specで使用したり、パッケージまたは型のファンクションまたはプロシージャを宣言する際に使用できます。
ここでのトピック
前提条件
自分のスキーマ内にライブラリを作成するには、CREATE LIBRARYシステム権限が必要です。他のユーザーのスキーマ内にライブラリを作成する場合は、CREATE ANY LIBRARYシステム権限が必要です。
CREATE FUNCTION文のcall_specでライブラリを使用したり、パッケージまたは型のファンクションを宣言する場合には、そのライブラリに対するEXECUTEオブジェクト権限とCREATE FUNCTIONシステム権限が必要です。
CREATE PROCEDURE文のcall_specでライブラリを使用したり、パッケージまたは型のプロシージャを宣言する場合には、そのライブラリに対するEXECUTEオブジェクト権限とCREATE PROCEDUREシステム権限が必要です。
call_specで定義されたプロシージャまたはファンクション(パッケージまたは型内で定義されたプロシージャまたはファンクションを含む)を実行するには、そのプロシージャまたはファンクションに対するEXECUTEオブジェクト権限が必要です(ライブラリ対するEXECUTEオブジェクト権限は必要ありません)。
セマンティクス
OR REPLACE
ライブラリが存在する場合は、ライブラリを再作成し、再コンパイルします。
再定義する前のライブラリに対する権限を付与されていたユーザーは、権限を再付与される必要なく、ライブラリにアクセスできます。
schema
ライブラリが含まれているスキーマの名前。デフォルト: 自分のスキーマ。
library_name
call_specで使用するライブラリを表す名前。
filename
一重引用符で囲まれた文字列リテラル。この文字列は、オペレーティング・システムによって共有ライブラリのネーミングとして認識されるパスまたはファイル名である必要があります。
CREATE LIBRARY文の実行中は、filenameは解釈されません。ライブラリ・ファイルの存在は、ルーチンの実行が試行されるまでチェックされません。
AGENT 'agent_dblink'
サーバー以外のデータベース・リンクから外部プロシージャを実行できます。Oracle Databaseでは、agent_dblinkによって指定されたデータベース・リンクを使用して外部プロシージャを実行します。この句を省略すると、サーバー上のデフォルト・エージェント(extproc)によって外部プロシージャが実行されます。
例
ライブラリの作成: 例 次の文によって、ライブラリext_libが作成されます。
CREATE LIBRARY ext_lib AS '/OR/lib/ext_lib.so'; /
次の文によって、ライブラリext_libが再作成されます。
CREATE OR REPLACE LIBRARY ext_lib IS '/OR/newlib/ext_lib.so'; /
外部プロシージャ・エージェントの指定: 例 次の例では、ライブラリapp_libが作成され、外部プロシージャがパブリック・データベースsales.hq.example.comから実行されるよう指定します。
CREATE LIBRARY app_lib as '${ORACLE_HOME}/lib/app_lib.so'
AGENT 'sales.hq.example.com';
/
|
参照: データベース・リンクの作成の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |