ALTER FUNCTION (外部表)
ALTER FUNCTION (外部表) ステートメントは、現行サーバーの外部表関数を変更します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。
権限
このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。
- ステートメント内で識別される関数に対しては次のもの。
- その関数に対する ALTER 特権、および
- 関数が入っているライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
別の外部プログラムが指定されている場合、ステートメントの権限 ID によって保持される特権には、新規の外部表関数を作成するために必要な同一特権が含まれていなければなりません。詳しくは、CREATE FUNCTION (外部表)を参照してください。
- このステートメントの許可 ID には、セキュリティー管理者権限 がなければなりません。 管理権限を参照してください。
SQL 特権に対応するシステム権限の説明については、『関数またはプロシージャーへの権限を検査する際の対応するシステム権限』、『表またはビューへの権限を検査する際の対応するシステム権限』、および『特殊タイプへの権限を検査する際の対応するシステム権限』を参照してください。
構文
>>-ALTER--------------------------------------------------------> >--+-FUNCTION--function-name--+------------------------------+-+--> | '-(--+--------------------+--)-' | | | .-,--------------. | | | | V | | | | '---parameter-type-+-' | '-SPECIFIC FUNCTION--specific-name--------------------------' .-ALTER-. >--+-------+--+----------+--option-list------------------------>< '-RESTRICT-' parameter-type |----data-type--+------------+----------------------------------| '-AS LOCATOR-' data-type |--+-built-in-type------+---------------------------------------| '-distinct-type-name-'
option-list |--+-----------------------+------------------------------------> '-LANGUAGE--+-C-------+-' +-C++-----+ +-CL------+ +-COBOL---+ +-COBOLLE-+ +-JAVA----+ +-PLI-----+ +-REXX----+ +-RPG-----+ '-RPGLE---' >--+--------------------------------+---------------------------> '-+-PARAMETER STYLE SQL--------+-' '-PARAMETER STYLE DB2GENERAL-' (1) >--+-------------------+------+-------------------+-------------> +-NOT DETERMINISTIC-+ +-MODIFIES SQL DATA-+ '-DETERMINISTIC-----' +-READS SQL DATA----+ +-CONTAINS SQL------+ '-NO SQL------------' >--+----------------------------+-------------------------------> +-CALLED ON NULL INPUT-------+ '-RETURNS NULL ON NULL INPUT-' >--+---------------------------+--+-----------------+-----------> '-INHERIT SPECIAL REGISTERS-' '-STATIC DISPATCH-' >--+-----------+--+--------------------+--+------------+--------> +-NO DBINFO-+ +-EXTERNAL ACTION----+ +-FENCED-----+ '-DBINFO----' '-NO EXTERNAL ACTION-' '-NOT FENCED-' >--+--------------------------------------+---------------------> '-EXTERNAL NAME--external-program-name-' >--+---------------+--+-------------------+---------------------> +-NO FINAL CALL-+ +-ALLOW PARALLEL----+ '-FINAL CALL----' '-DISALLOW PARALLEL-' >--+-------------------------+--+---------------------+---------> +-NO SCRATCHPAD-----------+ '-CARDINALITY--bigint-' | .-100-----. | '-SCRATCHPAD--+---------+-' '-integer-' >--+-------------+----------------------------------------------| +-NOT SECURED-+ '-SECURED-----'
- option-list 内の文節は、どのような順番で指定してもかまいません。
built-in-type |--+-+---SMALLINT---+--------------------------------------------------------------------------+--| | +-+-INTEGER-+--+ | | | '-INT-----' | | | '---BIGINT-----' | | .-(5,0)------------------------. | +-+-+-DECIMAL-+-+--+------------------------------+-----------------------------------------+ | | '-DEC-----' | | .-,0--------. | | | '-+-NUMERIC-+-' '-(--integer--+-----------+--)-' | | '-NUM-----' '-, integer-' | | .-(--53--)------. | +-+-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--)-' | | .-(--200--)-----. | +---DATALINK--+---------------+--+--------------+-------------------------------------------+ | '-(--integer--)-' '-ccsid-clause-' | +---ROWID-----------------------------------------------------------------------------------+ '---XML-------------------------------------------------------------------------------------' ccsid-clause |--CCSID--integer-----------------------------------------------|
説明
- FUNCTION または SPECIFIC FUNCTION
-
変更する関数を識別します。
function-name は、現行サーバーに存在している外部表関数を識別していなければなりません。
これは、組み込み関数、ソース派生関数、または SQL 関数を識別することはできません。
外部スカラー関数は、外部表関数に変更することはできません。
指定した関数が変更されます。 関数の所有者は保持されます。 関数が変更された時点で外部プログラムまたはサービス・プログラムが存在する場合、関数に対するすべての特権が保持されます。
- 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) のデータ・タイプで定義された関数のパラメーターに一致するものとみなされます。 ただし、精度値は特定のデータ・タイプ (REAL または DOUBLE) を示すため、 中が空の括弧で FLOAT を指定することはできません。
- 長さ属性、精度属性、あるいは位取り属性に特定の値を指定した場合、 その値は、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 は、現行サーバーに存在する特定の関数を示している必要があります。
- ALTER option-list
- 関数の 1 つ以上のオプションが変更されることを示します。 オプションが指定されない場合は、既存の関数定義での値が使用されます。 各オプションの説明については、CREATE FUNCTION (外部表)を参照してください。
- RESTRICT
- 任意のビュー、関数、プロシージャー、またはマテリアライズ照会表によって参照された場合は、関数が変更されないことを示します。
注
関数の定義または置換に関する一般考慮事項: 関数の定義に関する一般情報については、CREATE FUNCTION (外部表) を参照してください。 ALTER FUNCTION (外部表) を使用すると、関数の特権を保持したままで、個々の属性を変更できます。
NOT SECURED から SECURED への 関数の変更: ALTER FUNCTION ステートメントが実行された後、関数はセキュアであると 見なされます。DB2® は SECURED 属性を、ユーザー定義関数に対するすべての変更の監査手順をユーザーが確立したことを宣言するアサーションとして扱います。DB2 は、 後続のすべての ALTER FUNCTION ステートメントがこの監査手順によってレビューされると 想定します。
セキュアな関数内での他のユーザー定義関数の 呼び出し: 行アクセス制御または列アクセス制御を使用している 表を参照する SQL データ変更ステートメント内でセキュアなユーザー定義関数が参照されていて、 そのセキュアなユーザー定義関数が他のユーザー定義関数を呼び出す場合、ネストされたユーザー定義関数はセキュアであるとは判定 されません。こういったネストされた関数が機密データに アクセスする可能性がある場合、IBM® i のデータベース・セキュリティー管理者機能の権限があるユーザー は、それらの関数がそのデータにアクセスすることを許可されていること、および、それらの関数に加えられるすべての変更に関して変更管理監査手順 が確立されていることを確認する必要があります。
代替構文: 以下のキーワードは、旧リリースとの互換性を維持するためにサポートされている同義語です。 これらのキーワードは標準キーワードではないので、原則として使用しないようにしてください。
- キーワード VARIANT と NOT VARIANT は、NOT DETERMINISTIC と DETERMINISTIC の同義語として使用することができます。
- キーワード NULL CALL と NOT NULL CALL は、CALLED ON NULL INPUT と RETURNS NULL ON NULL INPUT の 同義語として使用できます。
- DB2GENERAL の同義語として、キーワード DB2GENRL を使用できます。
- SQL の同義語として、値 DB2SQL を使用できます。
- PARAMETER STYLE 文節のキーワード PARAMETER STYLE はオプションです。
- DETERMINISTIC の同義語として、キーワード IS DETERMINISTIC を使用できます。
例
カーディナリティーを 10,000 に設定するには、外部表関数の定義を変更してください。
ALTER FUNCTION GET_TABLE
ALTER CARDINALITY 10000