コマンド解説書

コマンド行構造化照会言語ステートメントの使用

この節では、 コマンド行から SQL (構造化照会言語) ステートメントを使用する方法について説明します。 これらのステートメントは、 オペレーティング・システムのコマンド・プロンプトから直接実行できるもので、 コマンドをアプリケーション・プログラムに書き込む場合とほぼ同じようにして、 データベースの表や索引や視点に格納されている情報を定義したり実行したりするのに使用できます。 情報については追加や削除や更新ができます。レポートは表の内容から生成できます。

コマンド行プロセッサーによって実行できる SQL ステートメントはすべて、 表 8 の CLP 列にリストされています。 SQL ステートメントの構文は、コマンド行から実行できるものであれ、 ソース・プログラムに組み込まれているものであれ、 すべてが SQL 解説書 に記述されています。 多くの場合、組み込み SQL ステートメントと CLP SQL ステートメントの構文は同じです。 ただし、ホスト変数、パラメーター・マーカー、記述子名、 およびステートメント名は、組み込み SQL にのみ適用できます。 CLOSE、CONNECT、DECLARE CURSOR、FETCH、OPEN、 および SELECT の構文は、組み込み型のものと CLP によって実行されるものとでは違います。 これらのステートメントの CLP 構文を次に示します。

CALL

>>-CALL----+-SQLJ.INSTALL_JAR--(--jar-url, jar-id--)--+--------><
           +-SQLJ.REPLACE_JAR--(--jar-url, jar-id--)--+
           +-SQLJ.REMOVE_JAR--(--jar-id--)------------+
           '-SQLJ.REFRESH_CLASSES--(--void--)---------'
 

CLOSE

>>-CLOSE--cursor-name------------------------------------------><
 

CONNECT

>>-CONNECT------------------------------------------------------>
 
>-----+---------------------------------------------------------------+>
      +-TO--server-name--+-----------------+---+--------------------+-+
      |                  '-| lock-block |--'   '-| authorization |--' |
      +-RESET---------------------------------------------------------+
      |                   (1)                                         |
      '-| authorization |---------------------------------------------'
 
>--------------------------------------------------------------><
 
authorization
 
|---USER--authorization-name------------------------------------>
 
>-----+--------------------------------------------------------+-|
      +-USING--password--+-----------------------------------+-+
      |                  '-NEW--password--CONFIRM--password--' |
      '-CHANGE PASSWORD----------------------------------------'
 
lock-block
 
    .-IN SHARE MODE--------------------------.
|---+----------------------------------------+------------------|
    '-IN EXCLUSIVE MODE--+----------------+--'
                         '-ON SINGLE NODE-'
 

注:

  1. この形式は、暗黙接続が使用可能である場合にのみ有効です。

DECLARE CURSOR

>>-DECLARE--cursor-name--CURSOR---+-----------+----------------->
                                  '-WITH HOLD-'
 
>----FOR--select-statement-------------------------------------><
 

FETCH

>>-FETCH--+------+--cursor-name--------------------------------->
          '-FROM-'
 
>-----+-------------------------------------------------------+-><
      +-FOR--+-ALL-+---+-ROW--+-------------------------------+
      |      '-n---'   '-ROWS-'                               |
      '-LOB--+-COLUMN--+---ALL--INTO--filename--+-APPEND----+-'
             '-COLUMNS-'                        +-NEW-------+
                                                '-OVERWRITE-'
 

OPEN

>>-OPEN--cursor-name-------------------------------------------><
 

SELECT

 
fullselect
 
|--+-subselect---------+---------------------------------------->
   +-(fullselect)------+
   '-| values-clause |-'
 
      .---------------------------------------------------.
      V                                                   |
>--------+---------------------------------------------+--+-----|
         '--+-UNION---------+---+-subselect---------+--'
            +-UNION ALL-----+   +-(fullselect)------+
            +-EXCEPT--------+   '-| values-clause |-'
            +-EXCEPT ALL----+
            +-INTERSECT-----+
            '-INTERSECT ALL-'
 
subselect
 
|---select-clause--from-clause---------------------------------->
 
>----+--------------+--+-----------------+--+---------------+---|
     '-where-clause-'  '-group-by-clause-'  '-having-clause-'
 
select-clause
 
              .-ALL------.
|---SELECT----+----------+-------------------------------------->
              '-DISTINCT-'
 
>-----+-*----------------------------------------------+--------|
      |  .-,-----------------------------------------. |
      |  V                                           | |
      '----+-expression--+----------------------+-+--+-'
           |             | .-AS-.               | |
           |             '-+----+--column-name--' |
           +-table-name.*-------------------------+
           +-view-name.*--------------------------+
           '-correlation-name.*-------------------'
 
values-clause
 
              .-,---------------------.
              V                       |
|---VALUES-------| row-expression |---+-------------------------|
 
row-expression
 
|---+--+-expression-+---------------+---------------------------|
    |  '-NULL-------'               |
    |    .-,-----------------.      |
    |    V                   |      |
    '-(------+-expression-+--+---)--'
             '-NULL-------'
 

注:

  1. コマンド行プロセッサーから CALL を発行する場合は、 明示されたプロシージャーとそれらに伴う個別パラメーターだけがサポートされます。

    jar-url
    インストールまたは置換する jar ファイルが含まれている URL を指定します。 サポートされている URL スキームは、file: だけです。

    jar-id
    jar-url に指定されたファイルに関連付ける、 データベースの jar 識別子を指定します。

    たとえば、次のようにします。

       db2 call sqlj.install_jar ( "file:///C:/java/jarfiles/myprocs.zip", "myprocs" )
    

    SQLJ.REFRESH_CLASSES
    DB2 が、インスタンスを再始動せずに、 更新されたストアード・プロシージャー Java クラスを使用するようにします。 ストアード・プロシージャー Java クラスを更新した後にこのステートメントが呼びだされない場合、 DB2 は以前のバージョンのストアード・プロシージャー・クラスの使用を継続します。

  2. CONNECT の CLP バージョンを使用すると、ユーザーは、 次のパラメーターを使用してパスワードを変更することができます。

    NEW password
    ユーザー名に割り当てられる新規パスワードを指定します。 パスワードの長さは、最大で 18 文字です。 パスワードが変更されるシステムは、 ユーザー認証がセットアップされた方法によって異なります。

    CONFIRM password
    新規パスワードと同一のストリング。 このパラメーターは、入力エラーを検出するために使用されます。

    CHANGE PASSWORD
    このオプションが指定されていると、ユーザーにプロンプトが出され、 現在のパスワード、新規パスワード、および新規パスワードの確認を要求します。 入力時にパスワードは表示されません。

  3. FETCH または SELECT がコマンド行プロセッサーから出されると、 10 進数および浮動小数点が、各国の 10 進数区切り文字と共に表示されます。 米国、カナダ、英国の場合はピリオド (.)、 他のほとんどの国の場合はコンマ (,) です。 ただし、INSERT、UPDATE、 およびその他の SQL ステートメントをコマンド行プロセッサーから出して表を更新する場合は、 10 進数区切り文字としてピリオドを使用しなければなりません。

  4. FETCH または SELECT がコマンド行プロセッサーから出されると、 通常ヌル値はハイフン (-) で表示されます。 DFT_SQLMATHWARN YES で構成されたデータベースでは、 算術計算エラーとなる式はヌル値として処理されます。 そのような算術計算エラー・ヌル値は、プラス (+) で表示されます。

    たとえば、表 t1 を次のように作成します。

       create table t1 (i1 int , i2 int);
       insert into t1 values (1,1),(2,0),(3,null);
    

    ステートメント select i1/i2 from t1 は、次の結果を生成します。



       1
       ---
         1
         +
         -
       3 records selected
    

  5. 新しい LOB オプションが FETCH に追加されています。 LOB 文節を指定する場合は、次の行だけが取り出されます。

  6. LOB 列を含む表を照会するために SELECT がコマンド行プロセッサーを通じて発行される場合、 各 LOB 列は出力で 4KB に切り捨てられます。

  7. コマンド行プロセッサーは、BLOB 列を 16 進表記で表示します。

  8. 適切な変換関数を使用できない場合には、 構造型列への参照を含む SQL ステートメントを発行することはできません。 詳細については、アプリケーション開発の手引き を参照してください。

CLP を介する SQL ステートメントを使用してデータベースを照会する場合、 CLP がデータを表示する仕方を変更することができます。 このことは、CLP バインド・ファイルを照会するデータベースに対して再バインドすることにより行います。 たとえば、日時を ISO 形式で表示したい場合、次のようにできます。

  1. CLP バインド・ファイルの名前を含むテキスト・ファイルを作成する。 このファイルは、 1 回の BIND コマンドで複数のファイルをバインドする場合のリスト・ファイルとして使用します。 この例では、とりあえずこのファイルの名前を clp.lst としておきます。 このファイルの中身は次のようになっています。
       db2clpcs.bnd +
       db2clprr.bnd +
       db2clpur.bnd +
       db2clprs.bnd +
       db2clpns.bnd
    
  2. データベースに接続する。
  3. 次のコマンドを発行する。
       db2 bind @clp.lst collection nullid datetime iso
    

コマンド行プロセッサーの詳細については、コマンド行プロセッサー (CLP)を参照してください。 SQL ステートメントの構文および SQL ステートメントの関数の詳細については、 SQL 解説書 を参照してください。 構文図の読み方については、付録 A, 構文図の読み方を参照してください。


表 8. SQL ステートメント (DB2 ユニバーサル・データベース)
SQL ステートメント 動的1 コマンド行プロセッサー (CLP) コール・レベル・ インターフェース3 (CLI) SQL プロシージャー
ALLOCATE CURSOR X
割り当てステートメント X
ASSOCIATE LOCATORS X
ALTER { BUFFERPOOL, NICKNAME,10 NODEGROUP, SERVER,10 TABLE, TABLESPACE, USER MAPPING,10 TYPE, VIEW } X X X
BEGIN DECLARE SECTION2
CALL X9 X4 X
CASE ステートメント X
CLOSE X SQLCloseCursor()SQLFreeStmt() X
COMMENT ON X X X X
COMMIT X X SQLEndTranSQLTransact() X
複合 SQL (組み込み) X4
複合ステートメント X
CONNECT (タイプ 1) X SQLBrowseConnect()SQLConnect()SQLDriverConnect()
CONNECT (タイプ 2) X SQLBrowseConnect()SQLConnect()SQLDriverConnect()
CREATE { ALIAS, BUFFERPOOL, DISTINCT TYPE, EVENT MONITOR, FUNCTION, FUNCTION MAPPING,10 INDEX, INDEX EXTENSION, METHOD, NICKNAME,10 NODEGROUP, PROCEDURE, SCHEMA, TABLE, TABLESPACE, TRANSFORM TYPE MAPPING,1 TRIGGER, USER MAPPING,10 TYPE, VIEW, WRAPPER10 } X X X X11
DECLARE CURSOR2 X SQLAllocStmt() X
DECLARE GLOBAL TEMPORARY TABLE X X X X
DELETE X X X X
DESCRIBE8 X SQLColAttributes()SQLDescribeCol()SQLDescribParam()6
DISCONNECT X SQLDisconnect()
DROP X X X X11
END DECLARE SECTION2
EXECUTE SQLExecute() X
EXECUTE IMMEDIATE SQLExecDirect() X
EXPLAIN X X X X
FETCH X SQLExtendedFetch()7SQLFetch()SQLFetchScroll()7 X
FLUSH EVENT MONITOR X X X
FOR ステートメント X
FREE LOCATOR X4 X
GET DIAGNOSTICS X
GOTO ステートメント X
GRANT X X X X
IF ステートメント X
INCLUDE2
INSERT X X X X
ITERATE X
LEAVE ステートメント X
LOCK TABLE X X X X
LOOP ステートメント X
OPEN X SQLExecute()SQLExecDirect() X
PREPARE SQLPrepare() X
REFRESH TABLE X X X
RELEASE X X
RELEASE SAVEPOINT X X X X
RENAME TABLE X X X
RENAME TABLESPACE X X X
REPEAT ステートメント X
RESIGNAL ステートメント X
RETURN ステートメント X
REVOKE X X X
ROLLBACK X X SQLEndTran()SQLTransact() X
SAVEPOINT X X X X
select-statement X X X X
SELECT INTO X
SET CONNECTION X SQLSetConnection()
SET CURRENT DEFAULT TRANSFORM GROUP X X X X
SET CURRENT DEGREE X X X X
SET CURRENT EXPLAIN MODE X X X、SQLSetConnectAttr() X
SET CURRENT EXPLAIN SNAPSHOT X X X、SQLSetConnectAttr() X
SET CURRENT PACKAGESET
SET CURRENT QUERY OPTIMIZATION X X X X
SET CURRENT REFRESH AGE X X X X
SET EVENT MONITOR STATE X X X X
SET INTEGRITY X X X
SET PASSTHRU10 X X X X
SET PATH X X X X
SET SCHEMA X X X X
SET SERVER OPTION10 X X X X
SET transition-variable5 X X X X
SIGNAL ステートメント X
SIGNAL SQLSTATE5 X X X
UPDATE X X X X
VALUES INTO X
WHENEVER2
WHILE ステートメント X
Notes:
  1. このリストのすべてのステートメントは静的 SQL としてコーディングできますが、 動的 SQL としてコーディングできるのは X になっているステートメントだけです。
  2. このステートメントは実行できません。
  3. X は、該当するステートメントが SQLExecDirect() または SQLPrepare()SQLExecute() のどちらによっても実行できるという意味です。 同等の DB2 CLI 機能がある場合は、機能名がリストされています。
  4. このステートメントは動的ではないものの、 DB2 CLI によって SQLExecDirect() または SQLPrepare()SQLExecute() のどちらかを呼び出すときにステートメントは指定されます。
  5. CREATE TRIGGER ステートメント内だけで使用できます。
  6. SQL DESCRIBE ステートメントで出力の記述ができますが、 DB2 CLI を使用すると、入力の記述も可能となります
    (SQLDescribeParam() 関数を使用する場合)。
  7. SQL FETCH ステートメントで 1 つの行を一度に 1 方向に取り出すことができますが、 DB2 CLI の SQLExtendedFetch() および SQLFetchScroll() を使用すると、 配列の形で取り出すことができます。 さらに、どの方向でも、また結果セットのどの位置でも取り出しができます。
  8. DESCRIBE SQL ステートメントの構文は、CLP DESCRIBE コマンドの構文と異なります。 DESCRIBE SQL ステートメントについては、 SQL 解説書 を参照してください。 DESCRIBE CLP コマンドについては、 コマンド解説書 を参照してください。
  9. コマンド行プロセッサーから CALL を発行する場合は、 特定のプロシージャーとそれらに伴う個別パラメーターだけがサポートされます (*** を参照)。
  10. ステートメントは、連合データベース・サーバーでのみサポートされます。
  11. SQL プロシージャーは、索引、表、視点には CREATE および DROP ステートメントしか発行できません。


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