DROP LIBRARYは外部プロシージャ・ライブラリを削除するSQL文である。
外部プロシージャ・ライブラリとは、オペレーティング・システムの共有ライブラリに関連付けられたスキーマ・オブジェクトである。オペレーティング・システムの共有ライブラリとは、Linuxの共有オブジェクト(.so)やWindowsのダイナミック・リンク・ライブラリ(DLL)のことである。
外部プロシージャ・ライブラリを作成すると、ストアド・プロシージャやストアド・ファンクションから共有オブジェクトやDLLの関数を呼び出すことができる。外部プロシージャ・ライブラリを削除すると、それを参照するストアド・プロシージャやストアド・ファンクションを利用できなくなる。
DROP LIBRARY文の構文は次のとおり。
DROP LIBRARY name
外部プロシージャ・ライブラリを削除するSQL文の例を次に示す。
DROP LIBRARY example_lib;
外部プロシージャ・ライブラリを削除するには、DROP ANY LIBRARY システム権限が必要である。
外部プロシージャ・ライブラリを削除する権限をユーザー tsuka に付与するには、次のSQL文を実行する。
GRANT DROP ANY LIBRARY TO tsuka;
SQLはデータ定義言語(DDL)、データ操作言語(DML)およびデータ制御言語(DCL)の3種類に分類されいる。DROP LIBRARY文はDDL(Data Definition Language)である。
DDLに対するトランザクションの扱いは、リレーショナル・データベース管理システムによって異なる。Oracleデータベースの場合、DDL文を実行すると暗黙的にコミットされ、ロールバックできない。
RDBMS | 暗黙的なコミット |
---|---|
Oracle Database | される |
MySQL | される |
PostgreSQL | されない |
Microsoft SQL Server | されない |
PL/SQLでもDROP LIBRARY文を使用できる。構文はSQLと同じである。
DROP LIBRARY example_lib;
外部プロシージャ・ライブラリに関するSQL文には、次のものがある。
SQL | 説明 |
---|---|
CREATE LIBRARY | 外部プロシージャ・ライブラリを作成する。 |
ALTER LIBRARY | 外部プロシージャ・ライブラリを変更する。 |
DROP LIBRARY | 外部プロシージャ・ライブラリを削除する。 |
外部プロシージャ・ライブラリに関するデータ・ディクショナリ・ビューには、次のものがある。
データ・ディクショナリ・ビュー | 説明 |
---|---|
ALL_LIBRARIES | 現在のユーザがアクセスできる外部プロシージャ・ライブラリ |
DBA_LIBRARIES | Oracleデータベース内すべての外部プロシージャ・ライブラリ |
USER_LIBRARIES | 現在のユーザが所有する外部プロシージャ・ライブラリ |
次のSQL文を実行することで、自分が所有する外部プロシージャ・ライブラリの一覧を確認できる。
SQL> SELECT LIBRARY_NAME, FILE_SPEC FROM USER_LIBRARIES;
LIBRARY_NAME FILE_SPEC
------------ -------------------
lib_example /usr/lib/example.so
lib_app /usr/lib/app.so
外部プロシージャ・ライブラリに関するシステム権限には、次のものがある。
システム権限 | 説明 |
---|---|
CREATE LIBRARY | 自分のスキーマにライブラリを作成できる。 |
CREATE ANY LIBRARY | 任意のスキーマにライブラリを作成できる。 |
ALTER ANY LIBRARY | 任意のスキーマのライブラリを明示的に再コンパイルできる。 |
DROP ANY LIBRARY | 任意のスキーマのライブラリを削除できる。 |
EXECUTE ANY LIBRARY | 任意のスキーマのライブラリを使用できる。 |
外部プロシージャ・ライブラリに関するオブジェクト権限には、次のものがある。
オブジェクト権限 | 説明 |
---|---|
EXECUTE | 外部プロシージャ・ライブラリを使用できる。 |
Oracleデータベースには、次のSQL文がある。