SQL 解説書

COMMENT ON

COMMENT ON ステートメントは、 種々のオブジェクトのカタログ記述にコメントを追加するか、または置き換えます。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、 または動的 SQL ステートメントを使用して発行することができます。 このステートメントは、動的に準備可能な実行可能ステートメントです。 しかし、バインド・オプション DYNAMICRULES BIND を適用する場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。

許可

COMMENT ON ステートメントの許可 ID が持つ特権には、 以下の特権のいずれかが含まれている必要があります。

表スペースまたはノードグループの場合、 許可 ID は SYSADM 権限または SYSCTRL 権限を持っている必要がある点に注意してください。

構文

>>-COMMENT ON--------------------------------------------------->
 
>-----+-| objects |--IS--string-constant----------------------------------+>
      |                      .-,-----------------------------------.      |
      |                      V                                     |      |
      '--+-table-name-+---(-----column-name--IS--string-constant---+---)--'
         '-view-name--'
 
>--------------------------------------------------------------><
 
objects
 
|--------+-ALIAS--alias-name--------------------------------------------+----->
         +-COLUMN--+-table-name.column-name-+---------------------------+
         |         '-view-name.column-name--'                           |
         +-CONSTRAINT--table-name.constraint-name-----------------------+
         +-FUNCTION----function-name--+-------------------------------+-+
         |                            '-(--+-------------------+---)--' |
         |                                 |  .-,-----------.  |        |
         |                                 |  V             |  |        |
         |                                 '----data-type---+--'        |
         +-SPECIFIC FUNCTION--specific-name-----------------------------+
         +-FUNCTION MAPPING--function-mapping-name----------------------+
         |                   (1)                                        |
         +-INDEX--index-name--------------------------------------------+
         +-NICKNAME--nickname-------------------------------------------+
         +-NODEGROUP--nodegroup-name------------------------------------+
         +-PACKAGE--package-name----------------------------------------+
         +-PROCEDURE--procedure-name--+-------------------------------+-+
         |                            '-(--+-------------------+---)--' |
         |                                 |  .-,-----------.  |        |
         |                                 |  V             |  |        |
         |                                 '----data-type---+--'        |
         +-SPECIFIC PROCEDURE--specific-name----------------------------+
         +-SCHEMA--schema-name------------------------------------------+
         +-SERVER--server-name------------------------------------------+
         +-SERVER OPTION--server-option-name--FOR--| remote-server |----+
         +-TABLE--+-table-name-+----------------------------------------+
         |        '-view-name--'                                        |
         +-TABLESPACE--tablespace-name----------------------------------+
         +-TRIGGER--trigger-name----------------------------------------+
         +-+----------------+---TYPE--type-name-------------------------+
         | |          (2)   |                                           |
         | '-DISTINCT-------'                                           |
         +-TYPE MAPPING--type-mapping-name------------------------------+
         '-WRAPPER--wrapper-name----------------------------------------'
 
>---------------------------------------------------------------|
 
remote-server
 
|---+-SERVER--server-name----------------------------------------------------------------------+->
    '-TYPE--server-type------+-------------------------------------------------------------+---'
                             '-VERSION--| server-version |----+-------------------------+--'
                                                              '-WRAPPER--wrapper-name---'
 
>---------------------------------------------------------------|
 
server-version
 
|---+-version--+--------------------------+-+-------------------|
    |          '-.--release--+---------+--' |
    |                        '-.--mod--'    |
    '-version-string-constant---------------'
 

注:

  1. Index-name には、索引、 あるいは索引指定のどちらかの名前を指定できます。

  2. DISTINCT の同義語としてキーワード DATA を使用できます。

説明

ALIAS alias-name
alias-name (別名) に対するコメントの追加または置き換えを行うことを指定します。 alias-name (別名) は、 カタログに記述されている別名を指定する名前でなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.TABLES カタログ視点の別名を記述する行の REMARKS 列の値を置き換えます。

COLUMN table-name.column-name または view-name.column-name
列に対するコメントを追加または置き換えることを指定します。 table-name.column-name (表名.列名) または view-name.column-name (視点名.列名) の組み合わせは、 カタログに記述されている列と表の組み合わせを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.COLUMNS カタログ視点のその列を記述する行の REMARKS 列の値を置き換えます。

作動不能視点の列にコメントを作成することはできません。 (SQLSTATE 51024)。

CONSTRAINT table-name.constraint-name
制約に対するコメントの追加または置き換えを指定します。 table-name.constraint-name (表名.制約名) の組み合わせは、 制約とそれが制約する表を指定していなければなりません。これらは、 カタログに記述されていなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.TABCONST カタログ視点のその制約を記述する行の REMARKS 列の値を置き換えます。

FUNCTION
関数に対するコメントの追加または置き換えを指定します。 指定する関数インスタンスは、カタログに記述されたユーザー定義関数、 または関数テンプレートでなければなりません。

関数のインスタンスを指定する方法としては、次のようにいくつかの方法があります。

FUNCTION function-name
特定の関数を指定します。 function-name (関数名) の関数がちょうど 1 つだけ存在している場合にのみ有効です。 このように指定する関数には、任意の数のパラメーターが定義されていても構いません。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 指定したスキーマまたは暗黙のスキーマにこの名前の関数が存在しない場合は、 エラー (SQLSTATE 42704) になります。 指定したスキーマまたは暗黙のスキーマに、 この関数の特定インスタンスが複数存在する場合、 エラー (SQLSTATE 42854) になります。

FUNCTION function-name (data-type,...)
コメントを付ける関数名を固有に識別する関数シグニチャーを指定します。 関数選択のアルゴリズムは使用されません

function-name
コメントを付ける関数名を指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。

(data-type,...)
これは、 CREATE FUNCTION ステートメントの対応する位置に指定されたデータ・タイプに一致していなければなりません。 データ・タイプ (data-type) の数、 およびそれらのデータ・タイプを論理的に連結したものが、 コメントを追加または置換する特定の関数を識別するのに使用されます。

data-type が修飾されない場合、 SQL パスでスキーマを検索することにより、タイプ名は解決されます。 REFERENCE タイプに指定するデータ・タイプ名にも同様の規則が当てはまります。

パラメーター化データ・タイプの長さ、精度、または位取りを指定する必要はありません。 代わりに、空の括弧をコーディングすることによって、 データ・タイプの一致を調べる際にそれらの属性を無視するように指定することができます。

パラメーター値が異なるデータ・タイプ (REAL または DOUBLE) を示しているため、 FLOAT() を使用することはできません (SQLSTATE 42601)。

ただし、長さ、精度、または位取りをコーディングする場合、 その値は、CREATE FUNCTION ステートメントにおける指定に完全に一致していなければなりません。

0 <n<25 は REAL を意味し、24<n<54 は DOUBLE を意味するので、 FLOAT(n) のタイプは、n に定義された値と一致している必要はありません。 タイプが REAL か DOUBLE かによって、生じる一致は異なってきます。

(FOR BIT DATA 属性は、一致検索のためのシグニチャーの一部とはみなされません。 したがって、たとえばシグニチャーの中に CHAR FOR BIT DATA が指定されている場合、 それは CHAR とだけ定義されている関数と一致し、 シグニチャーに CHAR とだけ指定されているものは、 CHAR FOR BIT DATA と指定されている関数と一致することになります。)

指定したスキーマまたは暗黙のスキーマに、指定したシグニチャーを持つ関数がない場合は、 エラー (SQLSTATE 42883) になります。

SPECIFIC FUNCTION specific-name
関数のコメントを追加または置換することを指定します (関数を指定する他の方法については、 FUNCTION の部分を参照)。 関数の作成時に指定された特定の関数名、 またはデフォルト値として使用された特定の関数名を使用して、 コメントを付ける特定のユーザー定義関数を指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 specific-name (特定名) は、 指定したスキーマまたは暗黙のスキーマの特定関数のインスタンスを指定していなければなりません。 そうでない場合、エラー (SQLSTATE 42704) になります。

SYSIBM スキーマまたは SYSFUN スキーマのいずれかにある関数にコメントを付けることはできません (SQLSTATE 42832)。

コメントは、SYSCAT.FUNCTIONS カタログ視点のうちその関数を記述する行の REMARKS 列の値を置き換えます。

FUNCTION MAPPING function-mapping-name
関数マッピングに対するコメントの追加または置き換えを指定します。 function-mapping-name (関数マッピング名) は、 カタログに記述されている関数マッピングを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.FUNCMAPPINGS カタログ視点のうち、 その関数マッピングを記述する行の REMARKS 列の値を置き換えます。

INDEX index-name
索引または索引指定に対するコメントを追加または置換することを指定します。 index-name (索引名) は、カタログに記述されている特定の索引、 または索引指定のいずれかを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.INDEXES カタログ視点のうち、 その索引または索引指定を記述する行の REMARKS 列の値を置き換えます。

NICKNAME nickname
ニックネームに対するコメントの追加または置き換えを指定します。 nickname (ニックネーム) は、 カタログに記述されているニックネームでなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.TABLES カタログ視点のニックネームを記述する行の REMARKS 列の値を置き換えます。

NODEGROUP nodegroup-name
ノードグループに対するコメントを追加または置換することを指定します。 nodegroup-name (ノードグループ名) は、 カタログに記述されている特定のノードグループを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.NODEGROUPS カタログ視点のうち そのノードグループを記述する行の REMARKS 列の値を置き換えます。

PACKAGE package-name
パッケージに対するコメントを追加または置換することを指定します。 package-name (パッケージ名) は、 カタログに記述されている特定のパッケージを指定していなければなりません (SQLSTATE 42704)。 コメントは、 SYSCAT.PACKAGES カタログ視点のうち そのパッケージを記述する行の REMARKS 列の値を置き換えます。

PROCEDURE
プロシージャーに対するコメントを追加または置換することを指定します。 指定するプロシージャー・インスタンスは、 カタログに記述されたストアード・プロシージャーでなければなりません。

プロシージャー・インスタンスを指定する方法としては、 次のようにいくつかの方法があります。

PROCEDURE procedure-name
特定のプロシージャーを指定します。 スキーマに procedure-name のプロシージャーが 1 つだけ存在している場合にのみ有効です。 このように指定するプロシージャーには、任意の数のパラメーターが定義されていても構いません。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 指定したスキーマまたは暗黙のスキーマに該当の名前のプロシージャーが存在しない場合は、 エラー (SQLSTATE 42704) になります。 指定したスキーマまたは暗黙のスキーマに、 このプロシージャーの特定インスタンスが複数個ある場合、 エラー (SQLSTATE 42854) になります。

PROCEDURE procedure-name (data-type,...)
これは、コメントを付けるプロシージャーを固有に識別するプロシージャー・シグニチャーを指定するのに使用されます。

procedure-name
コメントを付けるプロシージャーのプロシージャー名を指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。

(data-type,...)
これは、CREATE PROCEDURE ステートメントの 対応する位置に指定されたデータ・タイプに一致していなければなりません。 データ・タイプの数、およびそれらのデータ・タイプを論理的に連結したものが、 コメントを追加または置換する特定のプロシージャーを識別するのに使用されます。

data-type が修飾されない場合、 SQL パスでスキーマを検索することにより、タイプ名は解決されます。 REFERENCE タイプに指定するデータ・タイプ名にも同様の規則が当てはまります。

パラメーター化データ・タイプの長さ、精度、または位取りを指定する必要はありません。 代わりに、空の括弧をコーディングすることによって、 データ・タイプの一致を調べる際にそれらの属性を無視するように指定することができます。

パラメーター値が異なるデータ・タイプ (REAL または DOUBLE) を示しているため、 FLOAT() を使用することはできません (SQLSTATE 42601)。

ただし、長さ、精度、または位取りをコーディングする場合、 その値は、CREATE PROCEDURE ステートメントにおける指定に完全に一致していなければなりません。

0 <n<25 は REAL を意味し、24<n<54 は DOUBLE を意味するので、 FLOAT(n) のタイプは、n に定義された値と一致している必要はありません。 タイプが REAL か DOUBLE かによって、生じる一致は異なってきます。

指定したスキーマまたは暗黙のスキーマに、 指定したシグニチャーを持つプロシージャーがない場合は、 エラー (SQLSTATE 42883) になります。

SPECIFIC PROCEDURE specific-name
プロシージャーのコメントを追加または置換することを指定します (プロシージャーを指定する他の方法については、 PROCEDURE を参照)。 プロシージャーの作成時に指定されたか、 またはデフォルト値として付けられた特定のプロシージャー名を使用して、 コメントを付ける特定のストアード・プロシージャーを指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 specific-name は、指定したスキーマまたは暗黙のスキーマの 特定プロシージャーのインスタンスを指定していなければなりません。 そうでない場合、エラー (SQLSTATE 42704) になります。

コメントは、SYSCAT.PROCEDURES カタログ視点のうちそのプロシージャーを記述する行の REMARKS 列の値を置き換えます。

SCHEMA schema-name
スキーマに対するコメントを追加または置換することを指定します。 schema-name (スキーマ名) は、 カタログに記述されているスキーマを指定していなければなりません (SQLSTATE 42704)。 コメントは、 SYSCAT.SCHEMATA カタログ視点のうちそのスキーマを記述する行の REMARKS 列の値を置き換えます。

SERVER server-name
データ・ソースに対するコメントの追加または置き換えを指定します。 server-name (サーバー名) は、 カタログに記述されているデータ・ソースを指定していなければなりません (SQLSTATE 42704)。 コメントは、 SYSCAT.SERVERS カタログ視点のうちそのデータ・ソースを記述する行の REMARKS 列の値を置き換えます。

SERVER OPTION server-option-name FOR remote-server
サーバー・オプションに対するコメントの追加または置き換えを指定します。

server-option-name
サーバー・オプションを指定します。 このオプションは、カタログに記述されているものでなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.SERVEROPTIONS カタログ視点のうち、 そのサーバー・オプションを記述する行の REMARKS 列の値を置き換えます。

remote-server
server-option が適用されるデータ・ソースを示します。

SERVER server-name
server-option が適用されるデータ・ソースを指定します。 server-name (サーバー名) は、 カタログに記述されているデータ・ソースを指定していなければなりません。

TYPE server-type
server-option が適用されるデータ・ソースのタイプを指定します。 たとえば、DB2 ユニバーサル・データベース (OS/390 版) または Oracle など。 server-type の指定は、大文字でも小文字でもかまいません。 カタログには大文字で格納されます。

VERSION
server-name で指定したデータ・ソースのバージョンを指定します。

version
バージョン番号を指定します。 version は整数でなければなりません。

release
version で示されたバージョンのリリース番号を指定します。 release は整数でなければなりません。

mod
release で示されたリリースのモディフィケーション番号を指定します。 mod は整数でなければなりません。

version-string-constant
バージョンの正式名称を指定します。 version-string-constant は単一値 (たとえば、'8i') にすることができます。 あるいは、versionrelease、 そして該当する場合は mod を連結した値にすることができます (たとえば、'8.0.3')。

WRAPPER wrapper-name
server-name で示されるデータ・ソースにアクセスするときに使用するラッパーを指定します。

TABLE table-name または view-name
表または視点に対するコメントを追加または置換することを指定します。 table-name (表名) または view-name (視点名) は、 カタログ (SQLSTATE 42704) に記述されている表または視点 (別名またはニックネームではない) を指定していなければならず、 宣言された一時表 (SQLSTATE 42995) を指定してはなりません。 コメントは、 SYSCAT.TABLES カタログ視点のうちその表または視点を記述する行の REMARKS 列の値を置き換えます。

TABLESPACE tablespace-name
表スペースに対するコメントを追加または置換することを指定します。 tablespace-name (表スペース名) は、 カタログに記述されている特定の表スペースを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.TABLESPACES カタログ視点のうち その表スペースを記述する行の REMARKS 列の値を置き換えます。

TRIGGER trigger-name
トリガーに対するコメントを追加または置換することを指定します。 trigger-name (トリガー名) は、 カタログに記述されている特定のトリガーを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.TRIGGERS カタログ視点のうちそのトリガーを記述する行の REMARKS 列の値を置き換えます。

TYPE type-name
ユーザー定義タイプのコメントを追加または置換することを指示します。 type-name (タイプ名) は、 カタログに記述されているユーザー定義タイプを指定していなければなりません (SQLSTATE 42704)。 DISTINCT 文節が指定されている場合、type-name (タイプ名) は、 カタログに記述されている特殊タイプを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.DATATYPES カタログ視点の REMARKS 列の値を、 ユーザー定義タイプを記述する行に置き換えます。

動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターは、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、 QUALIFIER プリコンパイル / バインド・オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。

TYPE MAPPING type-mapping-name
ユーザー定義のデータ・タイプのマッピングに対するコメントを追加または置換することを指定します。 type-mapping-name (タイプ・マッピング名) は、 カタログに記述されているデータ・タイプ・マッピングを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.TYPEMAPPINGS カタログ視点のうち、 そのマッピングを記述する行の REMARKS 列の値を置き換えます。

WRAPPER wrapper-name
ラッパーに対するコメントの追加または置き換えを指定します。 wrapper-name (ラッパー名) は、 カタログに記述されているラッパーを指定していなければなりません (SQLSTATE 42704)。 コメントは、SYSCAT.WRAPPERS カタログ視点のうち、 そのラッパーを記述する行の REMARKS 列の値を置き換えます。

IS string-constant
追加または置換するコメントを指定します。 string-constant (ストリング定数) には、 最大 254 バイトの任意の文字ストリング定数を指定できます。 (復帰文字 (CR) と改行文字 (LR) はそれぞれ 1 バイトとカウントされます。)

table-name|view-name ( { column-name IS string-constant } ... )
この形式の COMMENT ON ステートメントを使用すると、 表または視点の複数の列に対するコメントを指定することができます。 列名は修飾できず、各名前は指定する表または視点の列を指定するものでなければなりません。 また、その表または視点はカタログに記述されていなければなりません。 table-name を宣言された一時表 (SQLSTATE 42995) にすることはできません。

作動不能視点の列にコメントを作成することはできません (SQLSTATE 51024)。

例 1: EMPLOYEE 表についてのコメントを追加します。

    COMMENT ON TABLE EMPLOYEE  
      IS 'Reflects first quarter reorganization'

例 2: EMP_VIEW1 視点についてのコメントを追加します。

    COMMENT ON TABLE EMP_VIEW1  
      IS 'View of the EMPLOYEE table without salary information'

例 3: EMPLOYEE 表の EDLEVEL 列についてのコメントを追加します。

    COMMENT ON COLUMN EMPLOYEE.EDLEVEL
      IS 'highest grade level passed in school'

例 4: EMPLOYEE 表の異なる 2 つの列についてのコメントを追加します。

    COMMENT ON EMPLOYEE
    (WORKDEPT IS 'see DEPARTMENT table for names',
     EDLEVEL IS 'highest grade level passed in school' )

例 5: Pellow は、自身の PELLOW スキーマに作成した CENTRE 関数についてのコメントを付けます。 シグニチャーを使用して、コメントを付ける特定の関数を指定します。

    COMMENT ON FUNCTION CENTRE (INT,FLOAT)
     IS 'Frank''s CENTRE fctn, uses Chebychev method'

例 6: McBride は、PELLOW スキーマに作成した別の CENTRE 関数にコメントを付けます。 特定の名前を使用して、コメントを付ける関数インスタンスを指定します。

    COMMENT ON SPECIFIC FUNCTION PELLOW.FOCUS92 IS
     'Louise''s most triumphant CENTRE function, uses the
      Brownian fuzzy-focus technique'

例 7: CHEM スキーマの関数 ATOMIC_WEIGHT にコメントを付けます。 このスキーマではこの名前の関数は 1 つしかないことが分かっています。

    COMMENT ON FUNCTION CHEM.ATOMIC_WEIGHT
     IS 'takes atomic nbr, gives atomic weight'

例 8: Eigler は、自身の EIGLER スキーマに作成した SEARCH プロシージャーについてのコメントを付けます。 シグニチャーを使用して、コメントを付ける特定のプロシージャーを指定します。

    COMMENT ON PROCEDURE SEARCH (CHAR,INT)
     IS 'Frank''s mass search and replace algorithm'

例 9: Macdonald は、EIGLER スキーマに作成した別の SEARCH 関数にコメントを付けます。 特定の名前を使用して、コメントを付けるプロシージャー・インスタンスを指定します。

    COMMENT ON SPECIFIC PROCEDURE EIGLER.DESTROY IS
     'Patrick''s mass search and destroy algorithm'

例 10: BIOLOGY スキーマのプロシージャー OSMOSIS にコメントを付けます。 このスキーマではこの名前のプロシージャーは 1 つしかないことが分かっています。

    COMMENT ON PROCEDURE BIOLOGY.OSMOSIS
     IS 'Calculations modelling osmosis'

例 11: INDEXSPEC という索引指定にコメントを付けます。

    COMMENT ON INDEX INDEXSPEC
     IS 'An index specification that indicates to the optimizer
     that the table referenced by nickname NICK1 has an index.'  

例 12: デフォルト名が NET8 のラッパーにコメントを付けます。

    COMMENT ON WRAPPER NET8
     IS 'The wrapper for data sources associated with 
         Oracle's Net8 client software.'


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]