注意: 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言語リファレンス』を参照してください。 |