DROP
DROP ステートメントは、オブジェクトを除去します。 削除されるオブジェクトに直接または間接的に依存しているオブジェクトも除去できます。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。
権限
表、ビュー、索引、別名またはパッケージを除去するには、ステートメント の権限 ID によって保持される特権には、少なくとも次の 1 つが含まれてい なければなりません。
- 次のシステム権限
- 除去したいオブジェクトについての *OBJOPR および *OBJEXIST システ ム権限。
- 該当のオブジェクトが表またはビューである場合は、その表またはビューに 従属しているビュー、索引、および論理ファイルに対する *OBJOPR および *OBJEXIST システム権限。
- 当該オブジェクトがシステム期間テンポラル表である場合は、関連する履歴表に対する *OBJOPR および *OBJEXIST システム権限。
- 除去したいオブジェクトが入っているライブラリーについての *EXECUTE システム権限。
- データベース管理者権限
スキーマを除去するには、ステートメントの権限 ID によって保持され る特権には、少なくとも次の 1 つが含まれていなければなりません。
- 次のシステム権限
- 除去したいライブラリーに対する *OBJEXIST、*OBJOPR、*EXECUTE、およ び *READ システム権限。
- そのスキーマのすべてのオブジェクトについての *OBJOPR および *OBJEXIST システム権限、およびそのスキーマの中の表やビューに従属す るビュー、索引、および論理ファイルについての *OBJOPR および *OBJEXIST システム権限。
- そのスキーマの中のその他のオブジェクト・タイプの削除に必要な追加の権限。 スキーマにデータ・ディクショナリーが入っている場合における、 そのデータ・ディクショナリーに対する *OBJMGT、およびジャーナル・レシーバーに対する一部のシステム・データ権限がその例です。 詳しくは、「機密保護解説書」を参照してください。
- データベース管理者権限
ユーザー定義タイプを除去するためには、ステートメントの権限 ID によって保持される特権に、少なくとも次のいずれか 1 つが含まれなければなりません。
- 次のシステム権限
- 除去したいタイプについての *OBJOPR および *OBJEXIST システム権限。
- 除去したいタイプが入っているライブラリーについての *EXECUTE システム権限。
- SYSTYPES、SYSPARMS、および SYSROUTINES カタログ表に対する DELETE 特権
- QSYS2 ライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
グローバル変数を除去するためには、ステートメントの権限 ID によって保持される特権に、少なくとも次のいずれか 1 つが含まれなければなりません。
- 次のシステム権限
- 削除するグローバル変数の *SRVPGM オブジェクトに対する *OBJEXIST システム権限
- 除去したいグローバル変数が入っているライブラリーについての *EXECUTE システム権限。
- SYSVARIABLES カタログ表に対する DELETE 特権、および
- QSYS2 ライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
XSR オブジェクトを除去するためには、ステートメントの権限 ID によって保持される特権に、少なくとも次のいずれか 1 つが含まれなければなりません。
- 次のシステム権限
- 削除する XSR オブジェクトの *SQLXSR オブジェクトに対する *OBJOPR システム権限と *OBJEXIST システム権限
- 除去したい XSR オブジェクトが入っているライブラリーについての *EXECUTE システム権限。
- XSROBJECTS、XSROBJECTCOMPONENTS、および XSRANNOTATIONINFO カタログ表に対する DELETE 特権
- QSYS2 ライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
関数を除去するためには、ステートメントの権限 ID によって保持され る特権に、少なくとも次のいずれか 1 つが含まれなければなりません。
- 次のシステム権限
- SQL 関数の場合、その関数に関連したサービス・プログラム・オブジェクトに対する *OBJEXIST システム権限
- SYSFUNCS、SYSPARMS、および SYSROUTINEDEP カタログ表に対する DELETE 特権
- QSYS2 ライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
プロシージャーを除去するためには、ステートメントの権限 ID によって保 持される特権に、少なくとも次のいずれか 1 つが含まれなければなりません。
- 次のシステム権限
- SQL プロシージャーの場合、そのプロシージャーに関連したプログラム・オブジェクトに対する *OBJEXIST システム権限
- SYSPROCS、SYSPARMS、および SYSROUTINEDEP カタログ表に対する DELETE 特権
- QSYS2 ライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
シーケンスを除去するためには、ステートメントの権限 ID によって保持される特権に、 少なくとも次のいずれか 1 つが含まれなければなりません。
- 次のシステム権限
- シーケンスに関連したデータ域に対する *OBJEXIST システム権限
- 除去したいシーケンスが入っているライブラリーについての *EXECUTE システム権限。
- SYSSEQOBJECTS カタログ表に対する DELETE 特権、および
- QSYS2 ライブラリーに対する *EXECUTE システム権限、および
- データ域削除 (DLTDTAARA) コマンドに対する *USE 権限。
- データベース管理者権限
トリガーを除去するには、ステートメントの権限 ID が保持する 特権に、次のうち少なくともいずれか 1 つを含める必要があります。
- 次の権限
- 物理ファイル削除トリガー (RMVPFTRG) コマンドに対する *USE システム権限
- トリガーの対象表またはビューに対する権限
- 対象表またはビューに対する ALTER 特権
- 対象表またはビューが入っているライブラリーに対する *EXECUTE システム権限
- 削除されるトリガーが SQL トリガーの場合
- トリガー・プログラム・オブジェクトに対する *OBJEXIST システム権限
- トリガーが入っているライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
- このステートメントの許可 ID には、セキュリティー管理者権限 がなければなりません。 管理権限を参照してください。
- このステートメントの許可 ID には、セキュリティー管理者権限 がなければなりません。 管理権限を参照してください。
SQL 特権に対応するシステム権限については、『表またはビューへの権限を検査する際の対応するシステム権限』を参照してください。
構文
>>-DROP--+-ALIAS--alias-name-----------------------------------------------------------------+->< +-+-+-FUNCTION-+--function-name--+------------------------------+-+--+----------+---+ | | '-ROUTINE--' '-(--+--------------------+--)-' | '-RESTRICT-' | | | | .-,--------------. | | | | | | V | | | | | | '---parameter-type-+-' | | | '-SPECIFIC--+-FUNCTION-+--specific-name-------------------------' | | '-ROUTINE--' | +-INDEX--index-name-----------------------------------------------------------------+ +-MASK--mask-name-------------------------------------------------------------------+ +-PACKAGE--package-name--+-------------------------+--------------------------------+ | | .-VERSION-. | | | '-+---------+--version-id-' | +-PERMISSION--permission-name-------------------------------------------------------+ +-+-+-PROCEDURE-+--procedure-name--+------------------------------+-+--+----------+-+ | | '-ROUTINE---' '-(--+--------------------+--)-' | '-RESTRICT-' | | | | .-,--------------. | | | | | | V | | | | | | '---parameter-type-+-' | | | '-SPECIFIC--+-PROCEDURE-+--specific-name--------------------------' | | '-ROUTINE---' | +-SCHEMA--schema-name--+----------+-------------------------------------------------+ | +-RESTRICT-+ | | '-CASCADE--' | | .-RESTRICT-. | +-SEQUENCE--sequence-name--+----------+---------------------------------------------+ +-TABLE -table-name--+----------+---------------------------------------------------+ | +-RESTRICT-+ | | '-CASCADE--' | +-TRIGGER--trigger-name-------------------------------------------------------------+ +-TYPE--+-distinct-type-name-+--+----------+----------------------------------------+ | '-array-type-name----' +-RESTRICT-+ | | '-CASCADE--' | +-VARIABLE--variable-name--+----------+---------------------------------------------+ | +-RESTRICT-+ | | '-CASCADE--' | +-VIEW--view-name--+----------+-----------------------------------------------------+ | +-RESTRICT-+ | | '-CASCADE--' | '-XSROBJECT--xsrobject-name---------------------------------------------------------'
data-type |--+-built-in-type------+---------------------------------------| +-distinct-type-name-+ '-array-type-name----'
built-in-type |--+-+---SMALLINT---+----------------------------------------------------------------------+--| | +-+-INTEGER-+--+ | | | '-INT-----' | | | '---BIGINT-----' | | .-(5,0)------------------------. | +-+-+-DECIMAL-+-+--+------------------------------+-------------------------------------+ | | '-DEC-----' | | .-,0--------. | | | '-+-NUMERIC-+-' '-(--integer--+-----------+--)-' | | '-NUM-----' '-, integer-' | | .-(--52--)------. | +-+-FLOAT--+---------------+-+----------------------------------------------------------+ | | '-(--integer--)-' | | | +-REAL---------------------+ | | | .-PRECISION-. | | | '-DOUBLE--+-----------+----' | | .-(--34--)-. | +---DECFLOAT--+----------+--------------------------------------------------------------+ | '-(--16--)-' | | .-(--1--)-------. | +-+-+-+-CHARACTER-+--+---------------+----------+--+----------------+-----------------+-+ | | | '-CHAR------' '-(--integer--)-' | +-FOR BIT DATA---+ | | | | '-+-+-CHARACTER-+--VARYING-+--(--integer--)-' +-FOR SBCS DATA--+ | | | | | '-CHAR------' | +-FOR MIXED DATA-+ | | | | '-VARCHAR----------------' '-ccsid-clause---' | | | | .-(--1M--)-------------. | | | '---+-+-CHARACTER-+--LARGE OBJECT-+----+----------------------+--+----------------+-' | | | '-CHAR------' | '-(--integer--+---+--)-' +-FOR SBCS DATA--+ | | '-CLOB------------------------' +-K-+ +-FOR MIXED DATA-+ | | +-M-+ '-ccsid-clause---' | | '-G-' | | .-(--1--)-------. | +-+---GRAPHIC----+---------------+-------+--+--------------+----------------------------+ | | '-(--integer--)-' | '-ccsid-clause-' | | +-+-GRAPHIC VARYING-+--(--integer--)---+ | | | '-VARGRAPHIC------' | | | | .-(--1M--)-------------. | | | '---DBCLOB----+----------------------+-' | | '-(--integer--+---+--)-' | | +-K-+ | | +-M-+ | | '-G-' | | .-(--1--)-------. | +-+-+-+-NATIONAL CHARACTER-+--+---------------+----------+---------------------+--------+ | | | +-NATIONAL CHAR------+ '-(--integer--)-' | | | | | | '-NCHAR--------------' | | | | | '-+-+-NATIONAL CHARACTER-+--VARYING-+--(--integer--)-' | | | | | +-NATIONAL CHAR------+ | | | | | | '-NCHAR--------------' | | | | | '-NVARCHAR------------------------' | | | | .-(--1M--)-------------. | | | '-----+-+-NATIONAL CHARACTER-+--LARGE OBJECT-+------+----------------------+-' | | | '-NCHAR--------------' | '-(--integer--+---+--)-' | | '-NCLOB--------------------------------' +-K-+ | | +-M-+ | | '-G-' | | .-(--1--)-------. | +-+-+-BINARY--+---------------+---------+-----------------+-----------------------------+ | | | '-(--integer--)-' | | | | | '-+-BINARY VARYING-+--(--integer--)-' | | | | '-VARBINARY------' | | | | .-(--1M--)-------------. | | | '---+-BLOB----------------+----+----------------------+-' | | '-BINARY LARGE OBJECT-' '-(--integer--+---+--)-' | | +-K-+ | | +-M-+ | | '-G-' | +-+-DATE-------------------------+------------------------------------------------------+ | | .-(--0--)-. | | | +-TIME--+---------+------------+ | | | .-(--6--)-------. | | | '-TIMESTAMP--+---------------+-' | | '-(--integer--)-' | +---XML--+--------------+---------------------------------------------------------------+ | '-ccsid-clause-' | | .-(--200--)-----. | +---DATALINK--+---------------+--+--------------+---------------------------------------+ | '-(--integer--)-' '-ccsid-clause-' | +---ROWID-------------------------------------------------------------------------------+ '---XML---------------------------------------------------------------------------------' ccsid-clause |--CCSID--integer-----------------------------------------------|
説明
- ALIAS alias-name
- 除去したい別名を識別します。
この別名 は、現行サーバーに存在している別名を
示すものでなければなりません。
指定した別名は、スキーマから削除されます。 別名を除去しても、その別名を使用して定義された制約、ビュー、 またはマテリアライズ照会には影響を与えません。 別名は、関数、パッケージ、プロシージャー、プログラム、トリガー、または変数で参照されているかに関係なく、除去できます。
- FUNCTION または SPECIFIC FUNCTION
- 除去したい関数を識別します。
その関数は現行サーバーに存在していて、
CREATE FUNCTION ステートメントによって定義された関数であることが必要です。
特定の関数は、それぞれその名前、関数シグニチャー、あるいは特定名によって識別することができます。
CREATE TYPE ステートメントによって暗黙的に生成された関数は、 DROP ステートメントによって除去できません。 特殊タイプが除去されると、それらは暗黙的に除去されます。
関数は、別の関数がそれに従属している場合は、除去できません。 関数が別の関数に従属するのは、CREATE FUNCTION ステートメントの SOURCE 文節でそれが識別されている場合です。RESTRICT が指定されなければ、関数は、関数、パッケージ、プロシージャー、プログラム、トリガー、変数、またはビューで参照されているかどうかに関係なく、除去できます。マスク または許可で参照されている関数は、RESTRICT が指定されていない場合でも除去できません。
指定した関数は、スキーマから除去されます。 ユーザー定義関数に対する特権も、すべて除去されます。 これが、SQL 関数の場合、またはソース化関数の場合、その関数に関連したサービス・プログラム (*SRVPGM) も削除されます。 これが外部関数の場合、CREATE FUNCTION ステートメントに指定されている プログラムまたはサービス・プログラム内に保管されている情報も、そのオブジェクトから削除されます。
- FUNCTION function-name
- 関数を名前によって識別します。 function-name は厳密に 1 つの関数を示す必要があります。この関数には、パラメーター をいくつでも定義することができます。指定されたスキーマまたは暗黙のスキーマの中に、指定された名前 の関数が複数ある場合、エラーが戻されます。
- FUNCTION function-name (parameter-type, ...)
- 関数を一意的に識別する関数シグニチャーによって、関数を識別します。
function-name
(parameter-type,...) は、指定された関数シグニチャーを持つ関数を識別しなければなりません。
指定されたパラメーターは、関数の作成時に指定された、
対応する位置にあるデータ・タイプと一致していなければなりません。
除去する関数インスタンスを識別する場合、データ・タイプの数とデータ・
タイプの論理連結が使用されます。
データ・タイプの同義語は、一致として扱われます。
デフォルトがあるパラメーターは、このシグニチャーに含まれていなければなりません。
function-name () を指定する場合、識別される関数にパラメーターを使用することはできません。
- function-name
- 関数の名前を識別します。
- (parameter-type, ...)
- 関数のパラメーターを識別します。
非修飾の特殊タイプ名を指定する場合、データベース・マネージャーはその特殊タイプのスキーマ名を解決するための SQL パスを検索します。
長さ属性、精度属性、あるいは位取り属性があるデータ・タイプの場合、以下のいずれかを使用します。
- 空の括弧は、データベース・マネージャーがデータ・タイプの一致の判別に際して属性を無視することを示します。例えば、DEC() は、DEC(7,2) のデータ・タイプで定義された関数のパラメーターに一致するものとみなされます。 ただし、FLOAT に空の括弧を指定することはできません。これは、そのパラメーター値が特定のデータ・タイプ (REAL または DOUBLE) を示しているからです。
- 長さ属性、精度属性、あるいは位取り属性に特定の値を指定した場合、 その値は、CREATE FUNCTION ステートメントの中で暗黙的または明示的に指定された値と正確に一致している必要があります。 データ・タイプが FLOAT の場合、 突き合わせはデータ・タイプ (REAL または DOUBLE) に基づいて行われるので、 精度は指定された値に厳密に一致している必要はありません。
- 長さ属性、精度属性、または位取り属性が明示的に指定されておらず、空の括弧も指定されていない場合、該当のデータ・タイプのデフォルト属性が暗黙指定されます。暗黙の長さは、CREATE FUNCTION ステートメントの中で暗黙的または明示的に指定さ れた値と正確に一致している必要があります。
FOR DATA 文節または CCSID 文節の指定はオプショナルです。 いずれの文節も指定しないと、データ・タイプが一致するかどうかを判定する場合に、データベース・マネージャーが属性を無視することを示します。 どちらか一方の文節を指定する場合は、CREATE FUNCTION ステートメントに 暗黙的または明示的に指定されている値と一致させる必要があります。
- AS LOCATOR
- 関数が、このパラメーターのロケーターを受け取るように定義されることを示します。 AS LOCATOR を指定する場合は、データ・タイプは LOB または XML、あるいは LOB または XML に基づく特殊タイプでなければなりません。
- SPECIFIC FUNCTION specific-name
- 関数を特定名によって識別します。 specific-name は、現行サーバーに存在する特定の関数を示している必要があります。
- RESTRICT
- 関数が SQL 関数、SQL プロシージャー、表、マスク、権限、SQL トリガー、変数、またはビューで参照される場合は、除去できないことを指定します。
- RESTRICT を指定しない場合
- 関数がマスクまたは許可で参照されている 場合、ステートメントの権限 ID にセキュリティー管理者権限がないと除去は失敗します。
- INDEX index-name
- 除去したい索引を識別します。
この索引名 は、現行サーバーに存在している索引を示すものでなければなりません。
指定した索引は、スキーマから除去されます。 索引は、関数、パッケージ、プロシージャー、プログラム、またはトリガーで参照されるかどうかに関わらず、除去できます。
- MASK mask-name
- 除去したいマスクを識別します。
マスク名 は、現行サーバーに存在するマスクを示していなければ
なりません。
指定したマスクは、スキーマから除去されます。 マスクは、関数、パッケージ、プロシージャー、プログラム、またはト リガーで参照されているかに関係なく、削除できます。
- PACKAGE package-name
- 除去したいパッケージを識別します。
このパッケージ名 は、現行サーバーに存在してい
るパッケージを識別していなければなりません。
指定したパッケージは、スキーマから除去されます。 パッケージに対する特権も、すべて削除されます。
パッケージは、関数、パッケージ、プロシージャー、プログラム、またはト リガーで参照されているかに関係なく、削除できます。
- VERSION version-id
- バージョン ID は、作成時にパッケージに割り当てられたバージョン ID です。 バージョン ID を指定しない場合、バージョン ID として NULL ストリングが使用されます。
- PERMISSION permission-name
- 除去したい権限を識別します。
許可名 は、現行サーバーに存在する許可を
示していなければなりません。
指定した権限は、スキーマから除去されます。 権限は、関数、パッケージ、プロシージャー、プログラム、またはトリガーで参照されているかに関係なく、削除できます。
- PROCEDURE または SPECIFIC PROCEDURE
- 除去したいプロシージャーを識別します。
このプロシージャー名 は、現行サーバーに存在しているプロシージャーを識別していなければなりません。
指定したプロシージャーは、スキーマから除去されます。 そのプロシージャーに対する特権も、すべて削除されます。 これが SQL プロシージャーの場合、そのプロシージャーに関連したプログラム (*PGM) またはサービス・プログラム (*SRVPGM) も削除されます。これが外部プロシージャーの場合、CREATE PROCEDURE ステートメントに指定されている プログラム内に保管されている情報も、そのオブジェクトから削除されます。
プロシージャーは、関数、パッケージ、プロシージャー、プログラム、またはトリガーで参照されているかに関係なく、削除できます。
- PROCEDURE procedure-name
- プロシージャーを名前によって識別します。 プロシージャー名 は、ただ 1 つのプロシージャーを識別していなければなりません。 このプロシージャーには、パラメーターをいくつでも定義することができます。 指定されたスキーマまたは暗黙のスキーマの中に、 指定された名前のプロシージャーが複数ある場合、エラーが戻されます。
- PROCEDURE procedure-name (parameter-type, ...)
- プロシージャーを一意的に識別するプロシージャー・シグニチャーによって、プロシージャーを識別します。
procedure-name (parameter-type,...) では、指定されたプロシージャー・シグニチャーを持つプロシージャーを識別する必要があります。
指定されたパラメーターは、プロシージャーの作成時に指定された、
対応する位置にあるデータ・タイプと一致していなければなりません。
除去するプロシージャー・インスタンスを識別する場合、データ・タイプの数とデータ・タイプの論理連結が使用されます。
データ・タイプの同義語は、一致として扱われます。
デフォルトがあるパラメーターは、このシグニチャーに含まれていなければなりません。
プロシージャー名 () を指定する場合、識別されるプロシージャー にパラメーターを使用することはできません。
- procedure-name
- プロシージャーの名前を識別します。
- (parameter-type, ...)
- プロシージャーのパラメーターを識別します。
非修飾の特殊タイプ名または配列タイプ名を指定する場合、データベース・マネージャーはその特殊タイプまたは配列タイプのスキーマ名を解決するための SQL パスを検索します。
長さ属性、精度属性、あるいは位取り属性があるデータ・タイプの場合、以下のいずれかを使用します。
- 空の括弧は、データベース・マネージャーがデータ・タイプの一致の判別に際して属性を無視することを示します。例えば、DEC() は、DEC(7,2) のデータ・タイプで定義されたプロシージャーのパラメーターに一致するものとみなされます。 ただし、FLOAT に空の括弧を指定することはできません。これは、そのパラメーター値が特定のデータ・タイプ (REAL または DOUBLE) を示しているからです。
- 長さ属性、精度属性、あるいは位取り属性に特定の値を指定する場合、その値は、 CREATE PROCEDURE ステートメントの中で暗黙的または明示的に指定された値と正確に一致している必要があります。 データ・タイプが FLOAT の場合、 突き合わせはデータ・タイプ (REAL または DOUBLE) に基づいて行われるので、 精度は指定された値に厳密に一致している必要はありません。
- 長さ属性、精度属性、または位取り属性が明示的に指定されておらず、空の括弧も指定されていない場合、該当のデータ・タイプのデフォルト属性が暗黙指定されます。暗黙の長さは、CREATE PROCEDURE ステートメントの中で暗黙的または明示的 に指定された値と正確に一致している必要があります。
FOR DATA 文節または CCSID 文節の指定はオプショナルです。 いずれの文節も指定しないと、データ・タイプが一致するかどうかを判定する場合に、データベース・マネージャーが属性を無視することを示します。 どちらか一方の文節を指定する場合は、CREATE PROCEDURE ステートメントに 暗黙的または明示的に指定されている値と一致させる必要があります。
- AS LOCATOR
- プロシージャーが、このパラメーターのロケーターを受け取るように定義されることを示します。 AS LOCATOR を指定する場合は、データ・タイプは LOB または XML、あるいは LOB または XML に基づく特殊タイプでなければなりません。
- SPECIFIC PROCEDURE specific-name
- プロシージャーを特定名によって識別します。 特定名 は、現行サーバーに存在してい る特定のプロシージャーを識別していなければなりません。
- RESTRICT
- プロシージャーが、SQL 関数、SQL プロシージャー、または SQL トリガーで参照される場合には、除去できないことを指定します。
- SCHEMA schema-name
- 除去したいスキーマを識別します。
スキーマ名 は、現行サーバ
ーに存在しているスキーマを識別していなければなりません。
除去したスキーマは削除されます。 スキーマ内の各オブジェクトは、指定の削除オプション (CASCADE、RESTRICT、または、 どちらもなし) を使用して該当する DROP ステートメント実行した場合と同様に除去されます。 これらのオブジェクトに従属するオブジェクトの扱いについては、これらの オブジェクト・タイプの DROP の説明を参照してください。
DROP SCHEMA は、コミット・レベルが *NONE の場合にのみ有効です。
- CASCADE も RESTRICT も指定しない場合
- スキーマが別のスキーマ内の関数、パッケージ、プロシージャー、プログラム、表、マスク、権限、トリガー、または変数で参照されている場合も、スキーマは除去されることを指定します。
- CASCADE
- このスキーマ内のオブジェクトとこのスキーマを参照しているトリガーを、 すべて除去することを指定します。 ステートメントの権限 ID にセキュリティー管理者権限がある場合は、このスキーマを参照する、別のスキーマ内のすべてのマスクおよび許可 が除去されます。
- RESTRICT
- スキーマが別のスキーマ内の SQL トリガー、マスク、または権限で参照されている場合、 またはカタログ・ビュー、ジャーナル、ジャーナル・レシーバー以外の SQL オブジェクトがスキーマに含まれる場合は、 そのスキーマを除去できないことを指定します。
- SEQUENCE sequence-name
- 除去したいシーケンスを識別します。
シーケンス名 は、現行サーバーに存在するシーケンスを示すものでなければなりません。
- RESTRICT
- シーケンスが SQL トリガー、関数、プロシージャー、または変数で参照されている場合、そのシーケンスは除去できないことを指定します。
- TABLE table-name
- 除去したい表を識別します。
table-name は現行サーバーに存在する基本表を識別するものでなければならず、カタログ表や、システム期間テンポラル表の履歴表を識別するものであってはなりません。
指定した表は、スキーマから除去されます。 その表に関する特権、制約、索引、マスク、権限、およびトリガーもすべて除去されます。
指定された表を参照している別名は、除去されません。
- CASCADE も RESTRICT も指定しない場合
- 表が制約、索引、トリガー、マスク、 権限、ビュー、またはマテリアライズ照会表で参照されていても、 表は除去されることを指定します。 その表を参照する索引、ビュー、およびマテリアライズ照会表は、 ステートメントの権限 ID が明示的にそれらのオブジェクトに対する特権を持っていなくても、 すべて除去されます。 表がシステム期間テンポラル表である場合、履歴表も除去されます。その表がマスクまたは許可で参照されている 場合、ステートメントの権限 ID にセキュリティー管理者権限がないと除去は失敗します。
- CASCADE
- 表が制約、索引、トリガー、変数、マスク、 権限、ビュー、XSR オブジェクト、またはマテリアライズ照会表で参照されていても、 表は除去されることを指定します。 その表を参照する制約、索引、トリガー、変数、ビュー、XSR オブジェクト、およびマテリアライズ照会表は、ステートメントの権限 ID が明示的にそれらのオブジェクトに対する特権を持っていなくても、すべて除去されます。表がシステム期間テンポラル表である場合、履歴表も除去されます。ステートメントの 権限 ID にセキュリティー管理者権限がある場合は、その表を 参照するすべてのマスクおよび許可が除去されます。
- RESTRICT
- 表が制約、索引、マスク、権限、トリガー、変数、ビュー、XSR オブジェクト、またはマテリアライズ照会表で参照されている場合や、表がシステム期間テンポラル表である場合は表を除去できないことを指定します。
- TRIGGER trigger-name
- 除去したいトリガーを識別します。
トリガー名 は、現行サーバーに存在して
いるトリガーを識別していなければなりません。
指定したトリガーは、スキーマから除去されます。 トリガーが SQL トリガーの場合、そのトリガーに関連したプログラム・オブ ジェクトもスキーマから削除されます。
トリガー名 がビューに対して INSTEAD OF トリガーを指定する場合、そのビューに対する更新を行うことにより、他のトリガーはそのトリガーに従属できます。
- TYPE distinct-type-name または array-type-name
- 除去したいタイプを識別します。特殊タイプ名 または配列タイプ名 は、現行サーバーに存在する特殊タイプまたは配列タイプを識別する必要があります。指定したタイプは、スキーマから削除されます。
- CASCADE も RESTRICT も指定しない場合
- 制約、索引、マスク、権限、シーケンス、表、変数、およびビューがタイプを参照している場合、そのタイプは除去できないことを指定します。
次の DROP ステートメントは、除去されるタイプのパラメーターや戻り値を持つすべてのプロシージャーまたは関数 R で、有効に実行されます。
DROP ROUTINE R
次の DROP ステートメントは、除去されるタイプを参照するすべてのトリガ ー T で、有効に実行されます。
DROP TRIGGER T
このステートメントをカスケードにして、従属する関数やプロシージャー を除去することも可能です。これらの関数やプロシージャーのすべてが、タイプと従属関係にあるために除去されるリストに入っている場合、タイプの除去は正常に行われます。
- CASCADE
- タイプが制約、関数、索引、プロシージャー、シーケンス、表、トリガー、変数、またはビューで参照されていても、タイプは除去されることを指定します。そのタイプを参照する制約、関数、索引、プロシージャー、シーケンス、表、トリガー、変数、およびビューは、すべて除去されます。カスケード処理 が行われるのは、そのタイプが、ルーチン・パラメーター・タイプ、シーケンス・タイプ、変数タイプ、 および列タイプを定義するために使用されている場合に限られます。ステートメントの 権限 ID にセキュリティー管理者権限がある場合は、そのタイプを参照する すべてのマスクおよび許可が除去されます。
- RESTRICT
- タイプが制約、関数 (そのタイプの作成時に作成された関数以外の)、索引、プロシージャー、シーケンス、表、マスク、権限、トリガー、変数、またはビューで参照されている場合、そのタイプは除去できないことを指定します。制限チェック が行われるのは、タイプが、ルーチン・パラメーター・タイプ、シーケンス・タイプ、変数タイプ、 および列タイプを定義するために使用されている場合に限られます。
- VARIABLE variable-name
- 除去したい変数を識別します。この変数名 は、現行サーバーに存在している変数を識別していなければなりません。指定した変数は、スキーマから除去されます。
- CASCADE も RESTRICT も指定しない場合
- トリガー、プロシージャー、関数、マスク、権限、ビュー、または別の変数で参照されていても、変数は除去されることを指定します。その変数を参照するすべての表およびビューも削除されます。その変数 がマスクまたは許可で参照されている場合、 ステートメントの権限 ID にセキュリティー管理者権限がないと除去は失敗します。
- CASCADE
- 表、トリガー、プロシージャー、関数、ビュー、または別の変数で参照されていても、変数は除去されることを指定します。その変数を参照するすべての表、トリガー、プロシージャー、関数、ビュー、変数も削除されます。ステートメントの 権限 ID にセキュリティー管理者権限がある場合は、その変数を 参照するすべてのマスクおよび許可が除去されます。
- RESTRICT
- 変数が、表、トリガー、プロシージャー、関数、マスク、許可、 ビュー、または別の変数で参照されている場合、その変数は除去できないことを指定します。
- VIEW view-name
- 除去したいビューを識別します。
このビュー名 は、現行サーバーに存在しているビューを識別していなければなりませんが、
カタログ・ビューを識別するものであってはなりません。
指定したビューは、スキーマから除去されます。 ビューが削除されると、そのビューに関する特権およびトリガーはすべて削除されます。
- CASCADE も RESTRICT も指定しない場合
- トリガー、マテリアライズ照会表、マスク、権限、または別のビューで参照されていても、 ビューは除去されることを指定します。 そのビューを参照するビューおよびマテリアライズ照会表は、すべて除去されます。そのビュー がマスクまたは許可で参照されている場合、 ステートメントの権限 ID にセキュリティー管理者権限がないと除去は失敗します。
- CASCADE
- トリガー、変数、マテリアライズ照会表、または別のビューで参照されていても、ビューは除去されることを指定します。そのビューを参照するトリガー、変数、マテリアライズ照会表、およびビューはすべて除去されます。ステートメントの 権限 ID にセキュリティー管理者権限がある場合は、そのビューを 参照するすべてのマスクおよび許可が除去されます。
- RESTRICT
- トリガー、変数、マスク、権限、マテリアライズ照会表、または別のビューで参照されている場合、ビューは除去できないことを指定します。
- XSROBJECT xsrobject-name
- 除去したい XSR オブジェクトを識別します。このXSR オブジェクト名 は、現行サーバーに存在しているXSR オブジェクトを示すものでなければなりません。指定した XSR オブジェクトは削除されます。
注
除去の影響: オブジェクトを除去すると、 そのオブジェクトの記述も必ずカタログから除去されます。 オブジェクトが関数、パッケージ、プロシージャー、プログラム、トリガー、または変数で参照されている場合、そのオブジェクトを参照するアクセス・プランは、アクセス・プランが次回に使用されるときに、暗黙的に再準備されます。そのときにそのオブジェクトが存在しないと、エラーが戻されます。
従属関係: 直接または間接的にオブジェクトが 除去される場合、除去されるオブジェクトに従属する他のオブジェクトも 除去されることがあります。下記のセマンティクスによって、従属オブジェクトが従属しているオブジェクト (すなわち、基礎オブジェクト) がドロップされたときに、従属オブジェクトに何が起こるかが決定されます。
- D
- 従属オブジェクトはドロップされます。
- A
- 自動再評価が必要です。データベース・マネージャーは、オブジェクトが参照されたときにオブジェクトの再評価を試みます。
- R
- DROP ステートメントは失敗します。
DROP ステートメント |
ALIAS |
CONSTRAINT |
FUNCTION |
INDEX |
MASK |
PERMISSION |
PROCEDURE |
SCHEMA |
SEQUENCE |
TABLE |
TRIGGER |
TYPE |
VARIABLE |
VIEW |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DROP ALIAS | ||||||||||||||
DROP FUNCTION | R1 | A | A | A | A | A | A | A | ||||||
DROP FUNCTION RESTRICT | R | R | R | R | R | R | R | R | ||||||
DROP INDEX | ||||||||||||||
DROP MASK | ||||||||||||||
DROP PACKAGE | ||||||||||||||
DROP PERMISSION | ||||||||||||||
DROP PROCEDURE | A | A | A | |||||||||||
DROP PROCEDURE RESTRICT | R | R | R | |||||||||||
DROP SCHEMA2 | A | A | A | A | A | A | A | A | ||||||
DROP SCHEMA CASCADE3 | A | D | D | A | A | D | A | A | ||||||
DROP SCHEMA RESTRICT4 | A | R | R | A | A | R | A | A | ||||||
DROP SEQUENCE | A | A | A | A | ||||||||||
DROP SEQUENCE RESTRICT | R | R | R | R | ||||||||||
DROP TABLE | D | A | D | A | A | A | D | A | A | D | ||||
DROP TABLE CASCADE | D | A | D | D | D | A | D | D | D | D | ||||
DROP TABLE RESTRICT | R | A | R | R | R | A | R | R | R | R | ||||
DROP TRIGGER | ||||||||||||||
DROP TYPE | R | D5 | R | R | R | D | R | R | D | R | R | |||
DROP TYPE CASCADE | D | D | D | D | D | D | D | D | D | D | D | |||
DROP TYPE RESTRICT | R | R | R | R | R | R | R | R | R | R | R | |||
DROP VARIABLE | A | A | A | A | D | A | A | D | ||||||
DROP VARIABLE CASCADE | D | D | D | D | D | D | D | D | ||||||
DROP VARIABLE RESTRICT | R | R | R | R | R | R | R | R | ||||||
DROP VIEW | A | A | A | D | A | A | D | |||||||
DROP VIEW CASCADE | A | D | D | A | D | D | D | D | ||||||
DROP VIEW RESTRICT | A | R | R | A | R | R | R | R | ||||||
DROP XSROBJ | A | A | A | A | A | A | A | |||||||
注 :
|
代替構文: 以下のキーワードは、旧リリースとの互換性を維持するためにサポートされている同義語です。 これらのキーワードは標準キーワードではないので、原則として使用しないようにしてください。
- キーワード SYNONYM は、ALIAS の同義語として使用することができます。
- キーワード DATA TYPE または DISTINCT TYPE を TYPE の同義語として使用することができます。
- PACKAGE の同義語として、キーワード PROGRAM を使用することができます。
- キーワード COLLECTION を SCHEMA の同義語として使用できます。
例
例 1:MY_IN_TRAY という名前の表を削除します。 この表に関して作成されているビューまたは索引がある場合は、この除去はできません。
DROP TABLE MY_IN_TRAY RESTRICT
例 2: MA_PROJ という名前のビューを削除します。
DROP VIEW MA_PROJ
例 3: PERS.PACKA という名前のパッケージを削除します。
DROP PACKAGE PERS.PACKA
例 4: 特殊タイプ DOCUMENT が現在使用されていなければ、それを除去します。
DROP DISTINCT TYPE DOCUMENT RESTRICT
例 5: 自分が SMITH であり、ATOMIC_WEIGHT が、スキーマ CHEM 内でその名前 を持つ唯一の関数であると想定します。 ATOMIC_WEIGHT を除去します。
DROP FUNCTION CHEM.ATOMIC_WEIGHT RESTRICT
例 6: 除去する関数インスタンスを識別するために関数シグニチャーを使用して、CENTER という名前を除去します。
DROP FUNCTION CENTER (INTEGER, FLOAT) RESTRICT
例 7: 除去する関数インスタンスを識別するために特定名を使用して、CENTER を除去します。
DROP SPECIFIC FUNCTION JOHNSON.FOCUS97
例 8: プロシージャー OSMOSIS がスキーマ BIOLOGY 内にあると仮定します。OSMOSIS を除去します。
DROP PROCEDURE BIOLOGY.OSMOSIS
例 9: トリガー BONUS がデフォルトのスキーマに存在するとします。BONUS を除去します。
DROP TRIGGER BONUS