sql リファレンス第 2 巻 - ibmpublic.dhe.ibm.com/ps/products/db2/info/vr105/pdf/ja_jp/...sql...

1565
IBM DB2 10.5 for Linux, UNIX, and Windows SQL リファレンス 第 2 2014 10 月更新版 SA88-5277-01 (英文原典:SC27-5510-01)

Upload: others

Post on 18-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

  • IBM DB2 10.5for Linux, UNIX, and Windows

    SQL リファレンス 第 2 巻2014 年 10 月更新版

    SA88-5277-01(英文原典:SC27-5510-01)

    ���

  • IBM DB2 10.5for Linux, UNIX, and Windows

    SQL リファレンス 第 2 巻2014 年 10 月更新版

    SA88-5277-01(英文原典:SC27-5510-01)

    ���

  • お願い本書および本書で紹介する製品をご使用になる前に、 1529ページの『付録 B. 特記事項』に記載されている情報をお読みください。

    本書には、IBM の専有情報が含まれています。その情報は、使用許諾条件に基づき提供され、著作権により保護されています。本書に記載される情報には、いかなる製品の保証も含まれていません。また、本書で提供されるいかなる記述も、製品保証として解釈すべきではありません。

    IBM 資料は、オンラインでご注文いただくことも、ご自分の国または地域の IBM 担当員を通してお求めいただくこともできます。

    v オンラインで資料を注文するには、IBM Publications Center (http://www.ibm.com/shop/publications/order) をご利用ください。

    v ご自分の国または地域の IBM 担当員を見つけるには、IBM Directory of Worldwide Contacts (http://www.ibm.com/planetwide/) をお調べください。

    IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ずる方法で、使用もしくは配布することができるものとします。

    お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示されたりする場合があります。

     

    原典: SC27-5510-01IBM DB2 10.5

    for Linux, UNIX, and Windows

    SQL Reference Volume 2

    Updated October, 2014

    発行: 日本アイ・ビー・エム株式会社

    担当: トランスレーション・サービス・センター

    © Copyright IBM Corporation 1993, 2014.

    http://www.ibm.com/shop/publications/orderhttp://www.ibm.com/planetwide/http://www.ibm.com/planetwide/

  • 目次本書について . . . . . . . . . . . . vii本書の対象読者 . . . . . . . . . . . . . vii本書の構成 . . . . . . . . . . . . . . vii構文図の見方 . . . . . . . . . . . . . viii本書の表記規則 . . . . . . . . . . . . . xエラー条件 . . . . . . . . . . . . . . x強調表記規則 . . . . . . . . . . . . . x

    関連資料 . . . . . . . . . . . . . . . . x

    SQL ステートメント . . . . . . . . . 1SQL ステートメントの呼び出し方法 . . . . . . 11アプリケーション・プログラムへのステートメントの組み込み . . . . . . . . . . . . . 11動的な準備と実行 . . . . . . . . . . . 12select ステートメントの静的呼び出し . . . . . 13select ステートメントの動的呼び出し . . . . . 13対話式呼び出し . . . . . . . . . . . . 13異なるホスト・システムで使用される SQL . . . 14

    ホスト言語アプリケーションでのエラー条件と警告条件の検出と処理 . . . . . . . . . . . . 14SQL コメント . . . . . . . . . . . . . 15SQL における条件付きコンパイル . . . . . . . 16SQL 制御ステートメントについて . . . . . . . 19

    SQL パラメーター、SQL 変数、およびグローバル変数の参照 . . . . . . . . . . . . . 19SQL ラベルの参照 . . . . . . . . . . . 20SQL 条件名の参照 . . . . . . . . . . . 21SQL ステートメント名の参照 . . . . . . . 21SQL カーソル名の参照 . . . . . . . . . 21

    関数、メソッド、およびプロシージャーの指定子 . . 23ALLOCATE CURSOR . . . . . . . . . . . 28ALTER AUDIT POLICY . . . . . . . . . . 30ALTER BUFFERPOOL . . . . . . . . . . . 34ALTER DATABASE PARTITION GROUP . . . . 37ALTER DATABASE . . . . . . . . . . . 42ALTER EVENT MONITOR . . . . . . . . . 48ALTER FUNCTION . . . . . . . . . . . . 53ALTER HISTOGRAM TEMPLATE . . . . . . . 57ALTER INDEX . . . . . . . . . . . . . 59ALTER MASK . . . . . . . . . . . . . 60ALTER METHOD . . . . . . . . . . . . 61ALTER MODULE . . . . . . . . . . . . 63ALTER NICKNAME . . . . . . . . . . . 72ALTER PACKAGE . . . . . . . . . . . . 82ALTER PERMISSION . . . . . . . . . . . 86ALTER PROCEDURE (外部). . . . . . . . . 87ALTER PROCEDURE (ソース派生) . . . . . . 90ALTER PROCEDURE (SQL) . . . . . . . . . 92ALTER SCHEMA . . . . . . . . . . . . 94ALTER SECURITY LABEL COMPONENT . . . . 96ALTER SECURITY POLICY . . . . . . . . . 99

    ALTER SEQUENCE . . . . . . . . . . . 103ALTER SERVER . . . . . . . . . . . . 107ALTER SERVICE CLASS . . . . . . . . . 111ALTER STOGROUP . . . . . . . . . . . 121ALTER TABLE . . . . . . . . . . . . . 126ALTER TABLESPACE . . . . . . . . . . 199ALTER THRESHOLD. . . . . . . . . . . 217ALTER TRIGGER . . . . . . . . . . . . 232ALTER TRUSTED CONTEXT . . . . . . . . 234ALTER TYPE (構造化) . . . . . . . . . . 243ALTER USAGE LIST. . . . . . . . . . . 251ALTER USER MAPPING . . . . . . . . . 253ALTER VIEW . . . . . . . . . . . . . 256ALTER WORK ACTION SET . . . . . . . . 259ALTER WORK CLASS SET . . . . . . . . 275ALTER WORKLOAD . . . . . . . . . . . 281ALTER WRAPPER . . . . . . . . . . . 299ALTER XSROBJECT . . . . . . . . . . . 301ASSOCIATE LOCATORS . . . . . . . . . 302AUDIT . . . . . . . . . . . . . . . 304BEGIN DECLARE SECTION . . . . . . . . 308CALL . . . . . . . . . . . . . . . . 310CASE . . . . . . . . . . . . . . . . 320CLOSE . . . . . . . . . . . . . . . 323COMMENT . . . . . . . . . . . . . . 325COMMIT . . . . . . . . . . . . . . . 337コンパウンド SQL. . . . . . . . . . . . 340コンパウンド SQL (インライン化) . . . . . . 341コンパウンド SQL (組み込み) . . . . . . . . 347コンパウンド SQL (コンパイル済み) . . . . . 351CONNECT (タイプ 1) . . . . . . . . . . 370CONNECT (タイプ 2) . . . . . . . . . . 378CREATE ALIAS . . . . . . . . . . . . 386CREATE AUDIT POLICY . . . . . . . . . 390CREATE BUFFERPOOL . . . . . . . . . . 394CREATE DATABASE PARTITION GROUP . . . 398CREATE EVENT MONITOR . . . . . . . . 401CREATE EVENT MONITOR (アクティビティー) 425CREATE EVENT MONITOR (変更履歴) . . . . 438CREATE EVENT MONITOR (ロック) . . . . . 446CREATE EVENT MONITOR (パッケージ・キャッシュ) ステートメント . . . . . . . . . . 453CREATE EVENT MONITOR (統計) . . . . . . 461CREATE EVENT MONITOR (しきい値違反) . . . 476CREATE EVENT MONITOR (作業単位) . . . . 490CREATE FUNCTION . . . . . . . . . . . 496CREATE FUNCTION (外部スカラー) . . . . . 497CREATE FUNCTION (外部表) . . . . . . . . 529CREATE FUNCTION (OLE DB 外部表) . . . . 553CREATE FUNCTION (ソース派生またはテンプレート) . . . . . . . . . . . . . . . . . 565

    © Copyright IBM Corp. 1993, 2014 iii

  • CREATE FUNCTION (SQL スカラー、表、または行) . . . . . . . . . . . . . . . . . 581CREATE FUNCTION MAPPING . . . . . . . 600CREATE GLOBAL TEMPORARY TABLE . . . . 605CREATE HISTOGRAM TEMPLATE . . . . . . 619CREATE INDEX . . . . . . . . . . . . 621CREATE INDEX EXTENSION . . . . . . . . 647CREATE MASK . . . . . . . . . . . . 654CREATE METHOD . . . . . . . . . . . 660CREATE MODULE . . . . . . . . . . . 666CREATE NICKNAME . . . . . . . . . . 668CREATE PERMISSION . . . . . . . . . . 683CREATE PROCEDURE . . . . . . . . . . 687CREATE PROCEDURE (外部) . . . . . . . . 688CREATE PROCEDURE (ソース派生) . . . . . 706CREATE PROCEDURE (SQL) . . . . . . . . 713CREATE ROLE. . . . . . . . . . . . . 725CREATE SCHEMA . . . . . . . . . . . 726CREATE SECURITY LABEL COMPONENT . . . 730CREATE SECURITY LABEL . . . . . . . . 733CREATE SECURITY POLICY . . . . . . . . 735CREATE SEQUENCE . . . . . . . . . . . 737CREATE SERVICE CLASS . . . . . . . . . 743CREATE SERVER . . . . . . . . . . . . 754CREATE STOGROUP. . . . . . . . . . . 758CREATE SYNONYM . . . . . . . . . . . 762CREATE TABLE . . . . . . . . . . . . 763CREATE TABLESPACE . . . . . . . . . . 856CREATE THRESHOLD . . . . . . . . . . 874CREATE TRANSFORM . . . . . . . . . . 894CREATE TRIGGER . . . . . . . . . . . 898CREATE TRUSTED CONTEXT . . . . . . . 916CREATE TYPE . . . . . . . . . . . . . 924CREATE TYPE (配列) . . . . . . . . . . 925CREATE TYPE (カーソル) . . . . . . . . . 932CREATE TYPE (特殊) . . . . . . . . . . 935CREATE TYPE (行) . . . . . . . . . . . 944CREATE TYPE (構造化). . . . . . . . . . 949CREATE TYPE MAPPING . . . . . . . . . 976CREATE USAGE LIST . . . . . . . . . . 983CREATE USER MAPPING . . . . . . . . . 987CREATE VARIABLE . . . . . . . . . . . 990CREATE VIEW . . . . . . . . . . . . 1000CREATE WORK ACTION SET . . . . . . . 1017CREATE WORK CLASS SET . . . . . . . 1028CREATE WORKLOAD . . . . . . . . . . 1034CREATE WRAPPER . . . . . . . . . . . 1054DECLARE CURSOR . . . . . . . . . . . 1056DECLARE GLOBAL TEMPORARY TABLE . . . 1063DELETE . . . . . . . . . . . . . . . 1078DESCRIBE . . . . . . . . . . . . . . 1089DESCRIBE INPUT . . . . . . . . . . . 1090DESCRIBE OUTPUT . . . . . . . . . . 1094DISCONNECT . . . . . . . . . . . . . 1099DROP . . . . . . . . . . . . . . . 1102END DECLARE SECTION. . . . . . . . . 1140

    EXECUTE . . . . . . . . . . . . . . 1141EXECUTE IMMEDIATE . . . . . . . . . 1150EXPLAIN . . . . . . . . . . . . . . 1153FETCH . . . . . . . . . . . . . . . 1159FLUSH BUFFERPOOLS . . . . . . . . . 1164FLUSH EVENT MONITOR . . . . . . . . 1165FLUSH FEDERATED CACHE . . . . . . . 1166FLUSH OPTIMIZATION PROFILE CACHE . . . 1168FLUSH PACKAGE CACHE . . . . . . . . 1170FOR . . . . . . . . . . . . . . . . 1171FREE LOCATOR . . . . . . . . . . . . 1174GET DIAGNOSTICS . . . . . . . . . . . 1175GOTO . . . . . . . . . . . . . . . 1179GRANT (データベース権限) . . . . . . . . 1181GRANT (免除) . . . . . . . . . . . . 1187GRANT (グローバル変数特権) . . . . . . . 1190GRANT (索引特権) . . . . . . . . . . . 1193GRANT (モジュール特権) . . . . . . . . . 1195GRANT (パッケージ特権) . . . . . . . . . 1197GRANT (ロール) . . . . . . . . . . . . 1201GRANT (ルーチン特権) . . . . . . . . . 1204GRANT (スキーマ特権) . . . . . . . . . 1209GRANT (セキュリティー・ラベル) . . . . . . 1212GRANT (シーケンス特権) . . . . . . . . . 1215GRANT (サーバー特権) . . . . . . . . . 1218GRANT (SETSESSIONUSER 特権) . . . . . . 1220GRANT (表スペース特権) . . . . . . . . . 1222GRANT (表、ビュー、またはニックネーム特権) 1224GRANT (ワークロード特権) . . . . . . . . 1231GRANT (XSR オブジェクト特権) . . . . . . 1233IF . . . . . . . . . . . . . . . . . 1234INCLUDE . . . . . . . . . . . . . . 1236INSERT . . . . . . . . . . . . . . . 1238ITERATE . . . . . . . . . . . . . . 1250LEAVE . . . . . . . . . . . . . . . 1252LOCK TABLE . . . . . . . . . . . . . 1254LOOP . . . . . . . . . . . . . . . 1256MERGE . . . . . . . . . . . . . . . 1258OPEN . . . . . . . . . . . . . . . 1272PIPE . . . . . . . . . . . . . . . . 1278PREPARE . . . . . . . . . . . . . . 1280REFRESH TABLE . . . . . . . . . . . 1287RELEASE (接続) . . . . . . . . . . . . 1291RELEASE SAVEPOINT . . . . . . . . . . 1293RENAME . . . . . . . . . . . . . . 1294RENAME STOGROUP . . . . . . . . . . 1296RENAME TABLESPACE . . . . . . . . . 1297REPEAT . . . . . . . . . . . . . . . 1299RESIGNAL . . . . . . . . . . . . . . 1301RETURN . . . . . . . . . . . . . . 1304REVOKE (データベース権限). . . . . . . . 1307REVOKE (免除) . . . . . . . . . . . . 1312REVOKE (グローバル変数特権) . . . . . . . 1315REVOKE (索引特権). . . . . . . . . . . 1318REVOKE (モジュール特権) . . . . . . . . 1320REVOKE (パッケージ特権) . . . . . . . . 1322

    iv SQL リファレンス 第 2 巻

  • REVOKE (ロール) . . . . . . . . . . . 1325REVOKE (ルーチン特権) . . . . . . . . . 1328REVOKE (スキーマ特権) . . . . . . . . . 1333REVOKE (セキュリティー・ラベル) . . . . . 1335REVOKE (シーケンス特権) . . . . . . . . 1337REVOKE (サーバー特権) . . . . . . . . . 1340REVOKE (SETSESSIONUSER 特権) . . . . . 1342REVOKE (表スペース特権) . . . . . . . . 1344REVOKE (表、ビュー、またはニックネーム特権) 1346REVOKE (ワークロード特権). . . . . . . . 1352REVOKE (XSR オブジェクト特権) . . . . . . 1354ROLLBACK . . . . . . . . . . . . . 1355SAVEPOINT . . . . . . . . . . . . . 1358SELECT . . . . . . . . . . . . . . . 1361SELECT INTO. . . . . . . . . . . . . 1362SET COMPILATION ENVIRONMENT . . . . . 1366SET CONNECTION . . . . . . . . . . . 1367SET CURRENT DECFLOAT ROUNDING MODE 1369SET CURRENT DEFAULT TRANSFORM GROUP 1371SET CURRENT DEGREE . . . . . . . . . 1373SET CURRENT EXPLAIN MODE . . . . . . 1375SET CURRENT EXPLAIN SNAPSHOT . . . . 1379SET CURRENT FEDERATED ASYNCHRONY 1382SET CURRENT IMPLICIT XMLPARSE OPTION 1384SET CURRENT ISOLATION . . . . . . . . 1385SET CURRENT LOCALE LC_MESSAGES . . . 1386SET CURRENT LOCALE LC_TIME . . . . . 1388SET CURRENT LOCK TIMEOUT . . . . . . 1390SET CURRENT MAINTAINED TABLE TYPESFOR OPTIMIZATION . . . . . . . . . . 1392SET CURRENT MDC ROLLOUT MODE . . . . 1395SET CURRENT OPTIMIZATION PROFILE . . . 1397SET CURRENT PACKAGE PATH . . . . . . 1400SET CURRENT PACKAGESET . . . . . . . 1404SET CURRENT QUERY OPTIMIZATION. . . . 1406SET CURRENT REFRESH AGE . . . . . . . 1409

    SET CURRENT SQL_CCFLAGS . . . . . . . 1412SET CURRENT TEMPORAL BUSINESS_TIME 1415SET CURRENT TEMPORAL SYSTEM_TIME . . 1417SET ENCRYPTION PASSWORD. . . . . . . 1419SET EVENT MONITOR STATE . . . . . . . 1421SET INTEGRITY . . . . . . . . . . . . 1424SET PASSTHRU . . . . . . . . . . . . 1445SET PATH . . . . . . . . . . . . . . 1447SET ROLE . . . . . . . . . . . . . . 1450SET SCHEMA . . . . . . . . . . . . . 1451SET SERVER OPTION . . . . . . . . . . 1453SET SESSION AUTHORIZATION . . . . . . 1455SET USAGE LIST STATE. . . . . . . . . 1458SET 変数 . . . . . . . . . . . . . . 1462SIGNAL . . . . . . . . . . . . . . . 1474TRANSFER OWNERSHIP . . . . . . . . . 1477TRUNCATE . . . . . . . . . . . . . 1490UPDATE . . . . . . . . . . . . . . 1493VALUES . . . . . . . . . . . . . . 1511VALUES INTO . . . . . . . . . . . . 1512WHENEVER . . . . . . . . . . . . . 1515WHILE . . . . . . . . . . . . . . . 1518

    付録 A. DB2 技術情報 . . . . . . . 1521DB2 テクニカル・ライブラリー (ハードコピーまたは PDF 形式) . . . . . . . . . . . . 1523コマンド行プロセッサーから SQL 状態ヘルプを表示する . . . . . . . . . . . . . . 1525異なるバージョンの DB2 についての、DB2 資料へのオンラインでのアクセス . . . . . . . . 1526ご利用条件 . . . . . . . . . . . . . . 1526

    付録 B. 特記事項 . . . . . . . . . 1529

    索引 . . . . . . . . . . . . . . . 1533

    目次 v

  • vi SQL リファレンス 第 2 巻

  • 本書について

    SQL リファレンス (第 1 巻、第 2 巻) では、DB2® Database for Linux, UNIX, andWindows によって使用される SQL 言語が定義されています。

    これには、次のものが含まれます。

    v リレーショナル・データベースの概念、言語エレメント、関数、および照会の形式に関する情報 (第 1 巻)

    v SQL ステートメントの構文およびセマンティクスに関する情報 (第 2 巻)

    本書の対象読者本書は構造化照会言語 (SQL) を使ってデータベースにアクセスするすべてのユーザーを対象としています。本書は主にプログラマーおよびデータベース管理者を対象としていますが、コマンド行プロセッサー (CLP) を通してデータベースにアクセスする方も利用することができます。

    本書はチュートリアルではなく、解説書です。本書では、読者がアプリケーション・プログラムを作成することを想定しており、このためデータベース・マネージャーのすべての機能を説明しています。

    本書の構成「SQL リファレンス 第 2 巻」には、SQL ステートメントの構文およびセマンティクスに関する情報が含まれています。

    v 『ステートメント』には、SQL プロシージャー・ステートメントを含むすべてのSQL ステートメントの構文図、セマンティクスの説明、規則、および例があります。

    © Copyright IBM Corp. 1993, 2014 vii

  • 構文図の見方このトピックでは、SQL 構文ダイアグラムの構造について説明します。

    構文図は、左から右、上から下に、線に沿って読みます。

    二重右矢印と線の記号 ��── は、構文図の始まりを示します。

    線と単一の右矢印の記号 ──� は、構文が次の行に続くことを示します。

    右矢印と線の記号 �── は、構文が前の行から続いていることを示します。

    線、右矢印、および左矢印の記号 ──�� は、構文図の終わりを示します。

    構文フラグメントは、パイプと線の記号 |── で始まり、線とパイプの記号 ──| で終わります。

    必須項目は、横線 (メインパス) 上に示されます。

    �� required_item ��

    オプショナル項目は、メインパスの下に示されます。

    �� required_itemoptional_item

    ��

    オプショナル項目をメインパスの上に示すこともありますが、それは構文図を見やすくするためであり、実行には関係しません。

    �� required_itemoptional_item

    ��

    複数の項目からの選択が可能な場合、それらの項目を縦に並べて (スタックに) 示しています。

    項目から 1 つを選択しなければならない 場合、スタックの項目の 1 つはメインパス上に示されます。

    �� required_item required_choice1required_choice2

    ��

    項目から 1 つをオプションで選択できる場合、スタック全体がメインパスよりも下に示されます。

    �� required_itemoptional_choice1optional_choice2

    ��

    項目の 1 つがデフォルト値の場合、その項目はメインパスより上に示され、残りの選択項目はメインパスよりも下に示されます。

    構文図の見方

    viii SQL リファレンス 第 2 巻

  • �� required_itemdefault_choice

    optional_choiceoptional_choice

    ��

    メインパスの上に、左へ戻る矢印がある場合には、項目を繰り返して指定できることを示しています。このような場合、繰り返す項目相互の間は、1 つ以上のブランクで区切らなければなりません。

    �� required_item � repeatable_item ��

    繰り返しの矢印にコンマが示されている場合は、繰り返し項目をコンマで区切らなければなりません。

    �� required_item �

    ,

    repeatable_item ��

    スタックの上部の反復の矢印の記号は、そのスタックの中から複数の項目を選択できること、または 1 つの選択項目を繰り返して選択できることを示します。

    キーワードは英大文字で示してあります (例: FROM)。示されているとおりに入力することが必要です。変数は英小文字で示しています (例: column-name)。このような変数は、構文にユーザーが指定する名前や値を示しています。

    句読点、括弧、算術演算子、その他の記号が示されている場合には、それらを構文の一部として入力する必要があります。

    1 つの変数が、構文を構成する大きいフラグメントを表すことがあります。例えば次の図で、変数 parameter-block は、 parameter-block というラベルの構文フラグメント全体を表します。

    �� required_item parameter-block ��

    parameter-block:

    parameter1parameter2 parameter3

    parameter4

    黒丸 (●) ではさまれて隣接しているセグメントは、任意の順序で指定することができます。

    �� required_item item1 ● item2 ● item3 ● item4 ��

    上記の図は、item2 と item3 をどのような順序で指定しても構わないことを示しています。以下はいずれも有効です。

    構文図の見方

    本書について ix

  • required_item item1 item2 item3 item4required_item item1 item3 item2 item4

    本書の表記規則

    エラー条件マニュアルの文章内では、エラーに関連する SQLSTATE を括弧に入れて表示することによって、エラー条件を示しています。

    以下に例を示します。

    シグニチャーが重複していると、SQL エラー (SQLSTATE 42723) を戻します。

    強調表記規則このトピックでは、「SQL リファレンス」で使用される表記規則について説明します。

    v 太字は、名前がシステムによって定義済みのコマンドやキーワードなどの項目を示します。

    v イタリック は、以下のいずれかの項目を示します。– ユーザーが指定する必要のある名前または値 (変数)

    – 一般的な強調

    – 新しい用語の紹介

    – 他の情報源の参照

    関連資料以下の資料は、アプリケーションを準備する際に役立つ可能性があります。

    v データベース・アプリケーション開発の基礎– DB2 アプリケーション開発の概要を示します。これにはプラットフォーム前提条件、サポートされる開発ソフトウェア、およびサポートされているプログラミング API の利点と制約事項についてのガイダンスが含まれます。

    v DB2 for i5/OS SQL リファレンス– この資料では、DB2 Query Manager and SQL Development Kit on System i®

    によってサポートされる SQL が定義されています。この資料にはシステム管理のタスク、データベース管理、アプリケーション・プログラミング、および操作のタスクに関する参照情報が含まれています。このマニュアルには、構文、使用上の注意、キーワード、および DB2 を実行する i5/OS™ システム上で使用される各 SQL ステートメントの例が含まれます。

    v DB2 for z/OS SQL リファレンス– この資料では、DB2 for z/OS® で使用される SQL を定義しています。この資料では、DB2 を実行する z/OS システムでの照会書式、SQL ステートメント、SQL プロシージャー・ステートメント、DB2 の制約事項、 SQLCA、SQLDA、カタログ表、および SQL 予約語について説明しています。

    v DB2 Spatial Extender ユーザーズ・ガイドおよびリファレンス

    構文図の見方

    x SQL リファレンス 第 2 巻

  • – この資料では、地理情報システム (GIS) を作成および使用するアプリケーションの作成方法を説明しています。GIS の作成および使用には、データベースにリソースを提供すること、またデータの照会を行って位置、距離、および領域内での分布などの情報を取得することが含まれます。

    v IBM SQL リファレンス– この資料には、IBM のデータベース製品に関係したすべての共通 SQL エレメントを収録しています。この資料では、IBM データベースを使用する移植可能プログラムを準備する際に参照できる、制約事項や規則について説明しています。このマニュアルでは、SQL 拡張機能、および各種の規格と製品(SQL92E、XPG4-SQL、IBM-SQL、および IBM リレーショナル・データベース製品) 間における非互換性のリストを示しています。

    v American National Standard X3.135-1992, Database Language SQL– SQL の ANSI 規格定義があります。

    v ISO/IEC 9075:1992, Database Language SQL– SQL の 1992 ISO 標準定義があります

    v ISO/IEC 9075-2:2003, Information technology -- Database Languages -- SQL --Part 2: Foundation (SQL/Foundation)

    – SQL の 2003 ISO 標準定義の大部分がここにあります。

    v ISO/IEC 9075-4:2003, Information technology -- Database Languages -- SQL --Part 4: Persistent Stored Modules (SQL/PSM)

    – SQL プロシージャー制御ステートメントの 2003 ISO 標準定義があります。

    関連資料

    本書について xi

  • 関連資料

    xii SQL リファレンス 第 2 巻

  • SQL ステートメント

    このトピックには、SQL ステートメントをタイプ別に分類してリスト表示した表があります。

    v SQL スキーマ・ステートメント (表 1)v SQL データ変更ステートメント ( 6ページの表 2)v SQL データ・ステートメント ( 7ページの表 3)v SQL トランザクション・ステートメント ( 7ページの表 4)v SQL 接続ステートメント ( 7ページの表 5)v SQL 動的ステートメント ( 8ページの表 6)v SQL セッション・ステートメント ( 8ページの表 7)v SQL 組み込みホスト言語ステートメント ( 9ページの表 8)v SQL 制御ステートメント ( 10ページの表 9)

    表 1. SQL スキーマ・ステートメント

    SQL ステートメント 目的

    30ページの『ALTER AUDIT POLICY』 現行サーバーの監査ポリシーの定義を変更します。

    34ページの『ALTER BUFFERPOOL』 バッファー・プールの定義を変更します。

    42ページの『ALTER DATABASE』 自動ストレージ表スペースに使用されるパスのコレクションへの新規ストレージ・パスを追加します。

    48ページの『ALTER EVENT MONITOR』 TABLE または UNFORMATTED EVENT TABLE イベント・モニターの定義を変更します。

    37ページの『ALTER DATABASEPARTITION GROUP』

    データベース・パーティション・グループの定義を変更します。

    53ページの『ALTER FUNCTION』 関数のプロパティーを変更して既存の関数を変更します。

    57ページの『ALTER HISTOGRAMTEMPLATE』

    1 つ以上のサービス・クラスまたは作業クラスのデフォルト・ヒストグラムをオーバーライドするために使用できるヒストグラムのタイプを記述するテンプレートを変更します。

    59ページの『ALTER INDEX』 索引の定義を変更します。

    60ページの『ALTER MASK』 列マスクの定義を変更します。

    61ページの『ALTER METHOD』 メソッドに関連したメソッド本文を変更して既存のメソッドを変更します。

    63ページの『ALTER MODULE』 モジュールの定義を変更します。

    72ページの『ALTER NICKNAME』 ニックネームの定義を変更します。

    82ページの『ALTER PACKAGE』 パッケージのバインドや再バインドを行わずに、現行のサーバーでパッケージに関するバインド・オプションを変更します。

    86ページの『ALTER PERMISSION』 行権限の定義を変更します。

    87ページの『ALTER PROCEDURE (外部)』 プロシージャーのプロパティーを変更して既存の外部プロシージャーを変更します。

    90ページの『ALTER PROCEDURE (ソース派生)』

    ソース派生プロシージャーの 1 つ以上のパラメーターのデータ・タイプを変更することによって、既存のソース派生プロシージャーを変更します。

    © Copyright IBM Corp. 1993, 2014 1

  • 表 1. SQL スキーマ・ステートメント (続き)

    SQL ステートメント 目的

    92ページの『ALTER PROCEDURE (SQL)』 SQL のプロパティーを変更して既存のプロシージャーを変更します。

    94ページの『ALTER SCHEMA』 スキーマのデータ・キャプチャー属性を変更することにより、既存のスキーマを変更します。

    96ページの『ALTER SECURITY LABELCOMPONENT』

    セキュリティー・ラベル・コンポーネントを変更します。

    99ページの『ALTER SECURITY POLICY』 セキュリティー・ポリシーを変更します。

    103ページの『ALTER SEQUENCE』 シーケンスの定義を変更します。

    107ページの『ALTER SERVER』 フェデレーテッド・システム内のデータ・ソースの定義を変更します。

    111ページの『ALTER SERVICE CLASS』 サービス・クラスの定義を変更します。

    121ページの『ALTER STOGROUP』 ストレージ・グループの定義を変更します。

    126ページの『ALTER TABLE』 表の定義を変更します。

    199ページの『ALTER TABLESPACE』 表スペースの定義を変更します。

    217ページの『ALTER THRESHOLD』 しきい値の定義を変更します。

    232ページの『ALTER TRIGGER』 トリガーの定義を変更します。

    234ページの『ALTER TRUSTEDCONTEXT』

    現行サーバーのトラステッド・コンテキストの定義を変更します。

    243ページの『ALTER TYPE (構造化)』 構造化タイプの定義を変更します。

    251ページの『ALTER USAGE LIST』 使用リストの定義を変更します。

    253ページの『ALTER USER MAPPING』 ユーザー許可マッピングの定義を変更します。

    256ページの『ALTER VIEW』 参照タイプ列を変更して有効範囲を追加することによって、ビューの定義を変更します。

    259ページの『ALTER WORK ACTIONSET』

    作業アクション・セット内の作業アクションについて追加、変更、またはドロップを行います。

    275ページの『ALTER WORK CLASS SET』 作業クラス・セット内の作業クラスについて追加、変更、またはドロップを行います。

    281ページの『ALTER WORKLOAD』 ワークロードを変更します。

    299ページの『ALTER WRAPPER』 特定のタイプのデータ・ソースにアクセスするために (ラッパー・モジュールと一緒に) 使用されるオプションを更新します。

    301ページの『ALTER XSROBJECT』 特定の XML スキーマの分解サポートを使用可能または使用不可にします。

    304ページの『AUDIT』 現行サーバーの特定のデータベースまたはデータベース・オブジェクトで使用する監査ポリシーを決定します。

    325ページの『COMMENT』 オブジェクトの記述のコメントを置換または追加します。

    386ページの『CREATE ALIAS』 モジュール、ニックネーム、シーケンス、表、ビュー、または別の別名に対する別名を定義します。

    390ページの『CREATE AUDIT POLICY』 現行サーバーの監査ポリシーを定義します。

    394ページの『CREATE BUFFERPOOL』 新しいバッファー・プールを定義します。

    398ページの『CREATE DATABASEPARTITION GROUP』

    データベース・パーティション・グループを定義します。

    401ページの『CREATE EVENT MONITOR』 モニターしたいデータベースのイベントを指定します。

    SQL ステートメント

    2 SQL リファレンス 第 2 巻

  • 表 1. SQL スキーマ・ステートメント (続き)

    SQL ステートメント 目的

    425ページの『CREATE EVENT MONITOR(アクティビティー)』

    モニターするデータベースのアクティビティー・イベントを指定します。

    438ページの『CREATE EVENT MONITOR(変更履歴)』

    モニターするデータベースの変更ヒストリー・イベントを指定します。

    446ページの『CREATE EVENT MONITOR(ロック)』

    モニターするデータベースのロッキング・イベントを指定します。

    453ページの『CREATE EVENT MONITOR(パッケージ・キャッシュ) ステートメント』

    モニターするデータベースのパッケージ・キャッシュ・ステートメント・イベントを指定します。

    461ページの『CREATE EVENT MONITOR(統計)』

    モニターするデータベースの統計イベントを指定します。

    476ページの『CREATE EVENT MONITOR(しきい値違反)』

    モニターするデータベースのしきい値違反イベントを指定します。

    490ページの『CREATE EVENT MONITOR(作業単位)』

    モニターするデータベースの作業単位イベントを指定します。

    496ページの『CREATE FUNCTION』 ユーザー定義関数を登録します。

    497ページの『CREATE FUNCTION (外部スカラー)』

    ユーザー定義外部スカラー関数を登録します。

    529ページの『CREATE FUNCTION (外部表)』

    ユーザー定義外部表関数を登録します。

    553ページの『CREATE FUNCTION (OLEDB 外部表)』

    ユーザー定義 OLE DB 外部表関数を登録します。

    565ページの『CREATE FUNCTION (ソース派生またはテンプレート)』

    ユーザー定義ソース派生関数または関数テンプレートを登録します。

    581ページの『CREATE FUNCTION (SQL スカラー、表、または行)』

    ユーザー定義 SQL 関数を定義します。

    600ページの『CREATE FUNCTIONMAPPING』

    関数マッピングを定義します。

    605ページの『CREATE GLOBALTEMPORARY TABLE』

    作成済み一時表を定義します。

    619ページの『CREATE HISTOGRAMTEMPLATE』

    1 つ以上のサービス・クラスまたは作業クラスのデフォルト・ヒストグラムをオーバーライドするために使用できるヒストグラムのタイプを記述するテンプレートを定義します。

    621ページの『CREATE INDEX』 表の索引を定義します。

    647ページの『CREATE INDEXEXTENSION』

    構造化タイプまたは特殊タイプ列のある表で、索引を使用するための拡張オブジェクトを定義します。

    654ページの『CREATE MASK』 列マスクを定義します。

    660ページの『CREATE METHOD』 既に定義済みのメソッド仕様書に関連付けるメソッド本体を定義します。

    666ページの『CREATE MODULE』 モジュールを定義します。

    668ページの『CREATE NICKNAME』 ニックネームを定義します。

    683ページの『CREATE PERMISSION』 行権限を定義します。

    687ページの『CREATE PROCEDURE』 プロシージャーを定義します。

    SQL ステートメント

    ステートメント 3

  • 表 1. SQL スキーマ・ステートメント (続き)

    SQL ステートメント 目的

    688ページの『CREATE PROCEDURE (外部)』

    外部プロシージャーを定義します。

    706ページの『CREATE PROCEDURE (ソース派生)』

    別のプロシージャー (ソース・プロシージャー) を基にしたプロシージャー (ソース派生プロシージャー) を定義します。フェデレーテッド・システムにおいて、フェデレーテッド・プロシージャーとは、サポートされているデータ・ソースにソース・プロシージャーを持つソース派生プロシージャーのことです。

    713ページの『CREATE PROCEDURE(SQL)』

    SQL プロシージャーを定義します。

    725ページの『CREATE ROLE』 現行サーバーのロールを定義します。

    726ページの『CREATE SCHEMA』 スキーマを定義します。

    730ページの『CREATE SECURITY LABELCOMPONENT』

    セキュリティー・ポリシーの一環として使用されるコンポーネントを定義します。

    733ページの『CREATE SECURITY LABEL』 セキュリティー・ラベルを定義します。

    735ページの『CREATE SECURITYPOLICY』

    セキュリティー・ポリシーを定義します。

    737ページの『CREATE SEQUENCE』 シーケンスを定義します。

    754ページの『CREATE SERVER』 データ・ソースをフェデレーテッド・データベースへ定義します。

    743ページの『CREATE SERVICE CLASS』 サービス・クラスを定義します。

    758ページの『CREATE STOGROUP』 データベース内に新しいストレージ・グループを定義します。

    762ページの『CREATE SYNONYM』 モジュール、ニックネーム、シーケンス、表、ビュー、または他のシノニムに、シノニムを定義します。

    763ページの『CREATE TABLE』 表を定義します。

    856ページの『CREATE TABLESPACE』 表スペースを定義します。

    874ページの『CREATE THRESHOLD』 しきい値を定義します。

    894ページの『CREATE TRANSFORM』 変換関数を定義します。

    898ページの『CREATE TRIGGER』 トリガーを定義します。

    916ページの『CREATE TRUSTEDCONTEXT』

    現行サーバーのトラステッド・コンテキストを定義します。

    924ページの『CREATE TYPE』 ユーザー定義のデータ・タイプを現在のサーバーで定義します。

    925ページの『CREATE TYPE (配列)』 配列タイプを定義します。

    932ページの『CREATE TYPE (カーソル)』 カーソル・タイプを定義します。

    935ページの『CREATE TYPE (特殊)』 特殊データ・タイプを定義します。

    944ページの『CREATE TYPE (行)』 行タイプを定義します。

    949ページの『CREATE TYPE (構造化)』 構造化データ・タイプを定義します。

    976ページの『CREATE TYPE MAPPING』 データ・タイプ間でのマッピングを定義します。

    983ページの『CREATE USAGE LIST』 特定の表または索引を実行中に参照したすべてのセクション (DML ステートメント) を重複なしでモニターするために、使用リストを定義します。

    987ページの『CREATE USER MAPPING』 ユーザー許可間でのマッピングを定義します。

    990ページの『CREATE VARIABLE』 グローバル変数を定義します。

    SQL ステートメント

    4 SQL リファレンス 第 2 巻

  • 表 1. SQL スキーマ・ステートメント (続き)

    SQL ステートメント 目的

    1000ページの『CREATE VIEW』 1 つ以上の表、ビュー、あるいはニックネームのビューを定義します。

    1017ページの『CREATE WORK ACTIONSET』

    作業アクション・セットおよびその中の作業アクションを定義します。

    1028ページの『CREATE WORK CLASSSET』

    作業クラス・セットを定義します。

    1034ページの『CREATE WORKLOAD』 ワークロードを定義します。

    1054ページの『CREATE WRAPPER』 ラッパーを登録します。

    1102ページの『DROP』 データベース中のオブジェクトを削除します。

    1181ページの『GRANT (データベース権限)』

    データベース全体に対する権限を付与します。

    1187ページの『GRANT (免除)』 指定されたラベル・ベースのアクセス制御 (LBAC) セキュリティー・ポリシーに対して、アクセス規則の免除を認可します。

    1190ページの『GRANT (グローバル変数特権)』

    作成されたグローバル変数に 1 つ以上の特権を付与します。

    1193ページの『GRANT (索引特権)』 データベースの索引に対する CONTROL 特権を付与します。

    1195ページの『GRANT (モジュール特権)』 モジュールについての特権を付与します。

    1197ページの『GRANT (パッケージ特権)』 データベースのパッケージに対する特権を付与します。

    1201ページの『GRANT (ロール)』 ロールを、ユーザー、グループ、またはその他のロールに付与します。

    1204ページの『GRANT (ルーチン特権)』 ルーチン (関数、メソッド、またはプロシージャー) についての特権を付与します。

    1209ページの『GRANT (スキーマ特権)』 スキーマについての特権を付与します。

    1212ページの『GRANT (セキュリティー・ラベル)』

    読み取りアクセス、書き込みアクセス、または読み取りアクセスと書き込みアクセスの両方に対する、ラベル・ベースのアクセス制御(LBAC) セキュリティー・ラベルを認可します。

    1215ページの『GRANT (シーケンス特権)』 シーケンスについての特権を付与します。

    1218ページの『GRANT (サーバー特権)』 特定のデータ・ソースを照会するための特権を付与します。

    1220ページの『GRANT (SETSESSIONUSER特権)』

    SET SESSION AUTHORIZATION ステートメントを使用する特権を認可します。

    1222ページの『GRANT (表スペース特権)』 表スペースについての特権を付与します。

    1224ページの『GRANT (表、ビュー、またはニックネーム特権)』

    表、ビュー、およびニックネームについての特権を付与します。

    1231ページの『GRANT (ワークロード特権)』

    ワークロードに USAGE 特権を付与します。

    1233ページの『GRANT (XSR オブジェクト特権)』

    XSR オブジェクトに対する USAGE 特権を認可します。

    1287ページの『REFRESH TABLE』 マテリアライズ照会表のデータをリフレッシュします。

    1294ページの『RENAME』 既存の表の名前を変更します。

    1296ページの『RENAME STOGROUP』 既存のストレージ・グループの名前を変更します。

    1297ページの『RENAME TABLESPACE』 既存の表スペースの名前を変更します。

    1307ページの『REVOKE (データベース権限)』

    データベース全体から権限を取り消します。

    SQL ステートメント

    ステートメント 5

  • 表 1. SQL スキーマ・ステートメント (続き)

    SQL ステートメント 目的

    1312ページの『REVOKE (免除)』 指定されたラベル・ベースのアクセス制御 (LBAC) セキュリティー・ポリシーに対するアクセス規則の免除を取り消します。

    1315ページの『REVOKE (グローバル変数特権)』

    作成されたグローバル変数に対する 1 つ以上の特権を取り消します。

    1318ページの『REVOKE (索引特権)』 所定の索引に対する CONTROL 特権を取り消します。

    1320ページの『REVOKE (モジュール特権)』 モジュールの特権を取り消します。

    1322ページの『REVOKE (パッケージ特権)』 データベースの所定のパッケージから特権を取り消します。

    1325ページの『REVOKE (ロール)』 ロールを、ユーザー、グループ、またはその他のロールから取り消します。

    1328ページの『REVOKE (ルーチン特権)』 ルーチン (関数、メソッド、またはプロシージャー) についての特権を取り消します。

    1333ページの『REVOKE (スキーマ特権)』 スキーマの特権を取り消します。

    1335ページの『REVOKE (セキュリティー・ラベル)』

    読み取りアクセス、書き込みアクセス、または読み取りアクセスと書き込みアクセスの両方に対する、ラベル・ベースのアクセス制御(LBAC) セキュリティー・ラベルを取り消します。

    1337ページの『REVOKE (シーケンス特権)』 シーケンスについての特権を取り消します。

    1340ページの『REVOKE (サーバー特権)』 特定のデータ・ソースを照会するための特権を取り消します。

    1342ページの『REVOKE (SETSESSIONUSER特権)』

    SET SESSION AUTHORIZATION ステートメントを使用する特権を取り消します。

    1344ページの『REVOKE (表スペース特権)』 指定した表スペースに対する USE 特権を取り消します。

    1346ページの『REVOKE (表、ビュー、またはニックネーム特権)』

    所定の表、ビュー、またはニックネームから特権を取り消します。

    1352ページの『REVOKE (ワークロード特権)』

    ワークロードに対する USAGE 特権を取り消します。

    1354ページの『REVOKE (XSR オブジェクト特権)』

    XSR オブジェクトに対する USAGE 特権を取り消します。

    1424ページの『SET INTEGRITY』 SET INTEGRITY ペンディング状態を設定し、制約違反の有無についてデータを検査します。

    1477ページの『TRANSFER OWNERSHIP』 データベース・オブジェクトの所有権を転送します。

    表 2. SQL データ変更ステートメント

    SQL ステートメント 目的

    1078ページの『DELETE』 1 つ以上の行を表から削除します。

    1238ページの『INSERT』 1 つ以上の行を表に挿入します。

    1258ページの『MERGE』 ソース (表参照の結果) からのデータを使ってターゲット (表またはビュー) を更新します。

    1490ページの『TRUNCATE』 すべての行を表から削除します。

    1493ページの『UPDATE』 表の 1 つ以上の行に含まれる 1 つ以上の列の値を更新します。

    SQL ステートメント

    6 SQL リファレンス 第 2 巻

  • 表 3. SQL データ・ステートメント

    SQL ステートメント 目的

    28ページの『ALLOCATE CURSOR』 結果セット・ロケーター変数で識別される結果セットにカーソルを割り当てます。

    302ページの『ASSOCIATE LOCATORS』 プロシージャーから戻される結果セットごとの結果セット・ロケーター値を入手します。

    323ページの『CLOSE』 カーソルをクローズします。

    1056ページの『DECLARE CURSOR』 SQL カーソルを定義します。

    1159ページの『FETCH』 行の値をホスト変数に割り当てます。

    1164ページの『FLUSH BUFFERPOOLS』 バッファー・プール内のダーティー・ページをディスクに書き出します。

    1165ページの『FLUSH EVENT MONITOR』 イベント・モニターのアクティブな内部バッファーを書き出します。

    1166ページの『FLUSH FEDERATEDCACHE』

    FLUSH FEDERATED CACHE ステートメントは、フェデレーテッド・キャッシュをフラッシュします。これにより、次回、フェデレーテッドの 3 部構成の名前を使用してリモート表またはリモート・ビューに対して SQL ステートメントを発行するときに、新しいメタデータを取得できます。

    1168ページの『FLUSH OPTIMIZATIONPROFILE CACHE』

    キャッシュに入れられた最適化プロファイルを削除します。

    1170ページの『FLUSH PACKAGE CACHE』 現在パッケージ・キャッシュ内に存在する、キャッシュに入れられたすべての動的 SQL を除去します。

    1174ページの『FREE LOCATOR』 ロケーター変数とその値の間の関連を除去します。

    1254ページの『LOCK TABLE』 並行処理による表の変更、または並行処理による表の使用のいずれかを禁止します。

    1272ページの『OPEN』 FETCH ステートメントが出された時に値を検索するのに使用するカーソルを準備します。

    1362ページの『SELECT INTO』 1 行以内の結果表を指定し、その値をホスト変数に割り当てます。

    1462ページの『SET 変数』 変数に値を割り当てます。

    1512ページの『VALUES INTO』 1 行以内の結果表を指定し、その値をホスト変数に割り当てます。

    表 4. SQL トランザクション・ステートメント

    SQL ステートメント 目的

    337ページの『COMMIT』 作業単位を終了し、その作業単位によって行われたデータベースの変更をコミットします。

    1293ページの『RELEASE SAVEPOINT』 トランザクション内のセーブポイントを解放します。

    1355ページの『ROLLBACK』 作業単位を終了し、その作業単位によって行われたデータベースの変更をバックアウトします。

    1358ページの『SAVEPOINT』 トランザクション内にセーブポイントを設定します。

    表 5. SQL 接続ステートメント

    SQL ステートメント 目的

    370ページの『CONNECT (タイプ 1)』 リモート作業単位の規則に従って、アプリケーション・サーバーに接続します。

    378ページの『CONNECT (タイプ 2)』 アプリケーション制御の分散作業単位の規則に従って、アプリケーション・サーバーに接続します。

    SQL ステートメント

    ステートメント 7

  • 表 5. SQL 接続ステートメント (続き)

    SQL ステートメント 目的

    1099ページの『DISCONNECT』 アクティブな作業単位がない場合に 1 つ以上の接続を終了します。

    1291ページの『RELEASE (接続)』 1 つ以上の接続を解放ペンディング状態にします。

    1367ページの『SET CONNECTION』 接続の状態を休止状態から現行状態に変更し、指定した位置を現行サーバーにします。

    表 6. SQL 動的ステートメント

    SQL ステートメント 目的

    1089ページの『DESCRIBE』 オブジェクトに関する情報を入手します。

    1090ページの『DESCRIBE INPUT』 準備済みステートメントの入力パラメーター・マーカーについての情報を入手します。

    1094ページの『DESCRIBE OUTPUT』 準備済みステートメントに関する情報、または準備済み SELECT ステートメント内の選択リスト列に関する情報を入手します。

    1141ページの『EXECUTE』 準備済み SQL ステートメントを実行します。

    1150ページの『EXECUTE IMMEDIATE』 SQL ステートメントを準備して実行します。

    1280ページの『PREPARE』 SQL ステートメント (およびオプション・パラメーター) を準備し、実行できるようにします。

    表 7. SQL セッション・ステートメント

    SQL ステートメント 目的

    1063ページの『DECLARE GLOBALTEMPORARY TABLE』

    宣言済み一時表を定義します。

    1153ページの『EXPLAIN』 選択したアクセス・プランについての情報をキャプチャーします。

    1366ページの『SET COMPILATIONENVIRONMENT』

    接続内の現行コンパイル環境を、デッドロック・イベント・モニターによって提供されるコンパイル環境に含まれている値と一致するように変更します。

    1369ページの『SET CURRENT DECFLOATROUNDING MODE』

    指定された丸めモードが CURRENT DECFLOAT ROUNDING MODE特殊レジスターに現在設定されている値であることを検査します。

    1371ページの『SET CURRENT DEFAULTTRANSFORM GROUP』

    CURRENT DEFAULT TRANSFORM GROUP 特殊レジスターの値を変更します。

    1373ページの『SET CURRENT DEGREE』 CURRENT DEGREE 特殊レジスターの値を変更します。

    1375ページの『SET CURRENT EXPLAINMODE』

    CURRENT EXPLAIN MODE 特殊レジスターの値を変更します。

    1379ページの『SET CURRENT EXPLAINSNAPSHOT』

    CURRENT EXPLAIN SNAPSHOT 特殊レジスターの値を変更します。

    1382ページの『SET CURRENT FEDERATEDASYNCHRONY』

    CURRENT FEDERATED ASYNCHRONY 特殊レジスターの値を変更します。

    1384ページの『SET CURRENT IMPLICITXMLPARSE OPTION』

    CURRENT IMPLICIT XMLPARSE OPTION 特殊レジスターの値を変更します。

    1385ページの『SET CURRENTISOLATION』

    CURRENT ISOLATION 特殊レジスターの値を変更します。

    1386ページの『SET CURRENT LOCALELC_MESSAGES』

    CURRENT LOCALE LC_MESSAGES 特殊レジスターの値を変更します。

    SQL ステートメント

    8 SQL リファレンス 第 2 巻

  • 表 7. SQL セッション・ステートメント (続き)

    SQL ステートメント 目的

    1388ページの『SET CURRENT LOCALELC_TIME』

    CURRENT LOCALE LC_TIME 特殊レジスターの値を変更します。

    1390ページの『SET CURRENT LOCKTIMEOUT』

    CURRENT LOCK TIMEOUT 特殊レジスターの値を変更します。

    1392ページの『SET CURRENTMAINTAINED TABLE TYPES FOR

    OPTIMIZATION』

    CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターの値を変更します。

    1395ページの『SET CURRENT MDCROLLOUT MODE』

    CURRENT MDC ROLLOUT MODE 特殊レジスターの値を割り当てます。

    1397ページの『SET CURRENTOPTIMIZATION PROFILE』

    CURRENT OPTIMIZATION PROFILE 特殊レジスターの値を割り当てます。

    1400ページの『SET CURRENT PACKAGEPATH』

    CURRENT PACKAGE PATH 特殊レジスターの値を割り当てます。

    1404ページの『SET CURRENTPACKAGESET』

    パッケージ選択のためのスキーマ名を設定します。

    1406ページの『SET CURRENT QUERYOPTIMIZATION』

    CURRENT QUERY OPTIMIZATION 特殊レジスターの値を変更します。

    1409ページの『SET CURRENT REFRESHAGE』

    CURRENT REFRESH AGE 特殊レジスターの値を変更します。

    1412ページの『SET CURRENTSQL_CCFLAGS』

    CURRENT SQL_CCFLAGS 特殊レジスターの値を変更します。

    1415ページの『SET CURRENT TEMPORALBUSINESS_TIME』

    CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの値を変更します。

    1417ページの『SET CURRENT TEMPORALSYSTEM_TIME』

    CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値を変更します。

    1419ページの『SET ENCRYPTIONPASSWORD』

    暗号化のためのパスワードを設定します。

    1421ページの『SET EVENT MONITORSTATE』

    イベント・モニターをアクティブ化または非アクティブ化します。

    1445ページの『SET PASSTHRU』 データ・ソースのネイティブ SQL を、対象となるデータ・ソースへ直接にサブミットするため、セッションをオープンします。

    1447ページの『SET PATH』 CURRENT PATH 特殊レジスターの値を変更します。

    1450ページの『SET ROLE』 セッションの許可 ID が特定のロールのメンバーであることを確認します。

    1451ページの『SET SCHEMA』 CURRENT SCHEMA 特殊レジスターの値を変更します。

    1453ページの『SET SERVER OPTION』 サーバーのオプション設定をセットします。

    1455ページの『SET SESSIONAUTHORIZATION』

    SESSION USER 特殊レジスターの値を変更します。

    1458ページの『SET USAGE LIST STATE』 使用リストの状態と、関連するデータとメモリーを管理します。

    表 8. SQL 組み込みホスト言語ステートメント

    SQL ステートメント 目的

    308ページの『BEGIN DECLARE SECTION』 ホスト変数宣言セクションの始まりを示します。

    SQL ステートメント

    ステートメント 9

  • 表 8. SQL 組み込みホスト言語ステートメント (続き)

    SQL ステートメント 目的

    1140ページの『END DECLARE SECTION』 ホスト変数宣言セクションの終わりを示します。

    1175ページの『GET DIAGNOSTICS』 以前に実行した SQL ステートメントについての情報を得るために使用されます。

    1236ページの『INCLUDE』 ソース・プログラムにコードまたは宣言を挿入します。

    1301ページの『RESIGNAL』 エラーまたは警告条件を再通知するのに使用します。

    1474ページの『SIGNAL』 エラーまたは警告条件を通知するのに使用します。

    1515ページの『WHENEVER』 SQL の戻りコードに基づいて実行するアクションを定義します。

    表 9. SQL 制御ステートメント

    SQL ステートメント 目的

    310ページの『CALL』 プロシージャーを呼び出します。

    320ページの『CASE』 複数の条件に基づいて実行パスを選択します。

    340ページの『コンパウンド SQL』 SQL ステートメントを BEGIN キーワードと END キーワードで囲みます。

    341ページの『コンパウンド SQL (インライン化)』

    1 つ以上の他の SQL ステートメントを結合して 1 つの動的ブロックにします。

    347ページの『コンパウンド SQL (組み込み)』

    1 つ以上の他の SQL ステートメントを結合して 1 つの実行可能ブロックにします。

    351ページの『コンパウンド SQL (コンパイル済み)』

    別のステートメントを SQL プロシージャーにグループ化します。

    1171ページの『FOR』 表の行ごとに、ステートメントまたはステートメントのグループを実行します。

    1179ページの『GOTO』 SQL プロシージャー内のユーザー定義ラベルに分岐させるために使用されます。

    1234ページの『IF』 条件の評価に基づいて実行パスを選択します。

    1250ページの『ITERATE』 制御のフローがラベル付きループの最初に戻ります。

    1252ページの『LEAVE』 プログラム制御をループまたはコンパウンド・ステートメントの外側に移動させます。

    1256ページの『LOOP』 ステートメント、またはステートメントのグループの実行を繰り返します。

    1278ページの『PIPE』 コンパイルされた表関数から行を戻します。

    1299ページの『REPEAT』 検索条件が真になるまでステートメントまたはステートメントのグループを実行します。

    1301ページの『RESIGNAL』 エラーまたは警告条件を再通知するのに使用します。

    1304ページの『RETURN』 ルーチンから戻るのに使用します。

    1474ページの『SIGNAL』 エラーまたは警告条件を通知するのに使用します。

    1518ページの『WHILE』 指定した条件が真である間、ステートメント、またはステートメントのグループの実行を繰り返します。

    SQL ステートメント

    10 SQL リファレンス 第 2 巻

  • SQL ステートメントの呼び出し方法SQL ステートメントは、実行可能と実行不能に分類されます。

    実行可能ステートメント には、4 つの呼び出し方法があります。 次のような名前にすることができます。

    v 対話式に発行する。v 動的に準備して実行する。v アプリケーション・プログラムに組み込む。v SQL プロシージャー、トリガー、コンパウンド SQL (コンパイル済み)、コンパウンド SQL (インライン化) に組み込む。制限事項がいくつかあります。

    – SQL プロシージャーおよびコンパウンド SQL (コンパイル済み) ステートメントでサポートされる実行可能ステートメントのセットについては、 351ページの『コンパウンド SQL (コンパイル済み)』の『SQL-procedure-statement』を参照してください。

    – コンパウンド SQL (インライン化) ステートメントではサポートされる実行可能ステートメントのセットについては、 341ページの『コンパウンド SQL (インライン化)』の『SQL-statement』を参照してください。

    – トリガーでサポートされる実行可能ステートメントのセットについては、 898ページの『CREATE TRIGGER』の『SQL-procedure-statement』を参照してください。

    ステートメントによっては、これらのいくつかまたはすべての方式を使用することができます。 REXX に組み込んだステートメントは、動的に準備され実行されます。

    実行不能ステートメント は、アプリケーション・プログラムに組み込む方式だけが可能です。

    別の SQL ステートメント構成は、select ステートメントです。 select ステートメント には、3 つの呼び出し方法があります。 次のような名前にすることができます。

    v 対話式に発行する。v 動的に準備し、DECLARE CURSOR で参照して、 OPEN、FETCH および

    CLOSE によって暗黙的に実行する。(動的起動)

    v DECLARE CURSOR に組み込んで、 OPEN、FETCH および CLOSE によって暗黙的に実行する。(静的起動)

    アプリケーション・プログラムへのステートメントの組み込みSQL ステートメントは、プリコンパイラーにサブミットされるソース・プログラムに組み込むことができます。このようなステートメントは、プログラムに組み込まれている と言います。

    組み込みステートメントは、ホスト言語のステートメントが可能な位置であればそのプログラム内のどこにでも組み込むことができます。各組み込みステートメントの前には、キーワード EXEC SQL を付ける必要があります。

    SQL ステートメントの呼び出し方法

    ステートメント 11

  • アプリケーション・プログラムに組み込まれた実行可能ステートメントは、ホスト言語ステートメントが実行されるたびに、そこに実行可能ステートメントが指定されていると同じ時点で実行されます。したがって、ループ内のステートメントは、ループが行われるたびに実行され、条件構文内のステートメントは、その条件が満たされた場合にのみ実行されます。

    組み込みステートメントには、ホスト変数への参照を含むことができます。参照されるホスト変数は、以下のような 2 つの方法で使用することができます。

    v 入力として使用する (ホスト変数の現行値がそのステートメントの実行に使用されます)。

    v 出力として使用する (ホスト変数には、そのステートメントの実行結果として新しい値が割り当てられます)。

    特に、式および述部の中のホスト変数に対する参照はすべて、変数の現行値により置き換えられます。つまり、変数は入力として使用されます。

    すべての実行可能ステートメントの後で、必ず SQL 戻りコードのテストを行う必要があります。別の方法として、WHENEVER ステートメント (それ自体は実行不能) を使用して、組み込みステートメントの実行直後の制御の流れを変更することもできます。

    データ操作言語 (DML) ステートメントで参照されるオブジェクトはすべて、ステートメントがデータベースにバインドされる時点で存在している必要があります。

    組み込まれた実行不能ステートメントは、プリコンパイラーによってのみ処理されます。プリコンパイラーはステートメントにエラーを検出すると、それを報告します。このようなステートメントは、プログラムの実行時に処理されることはありません。したがって、このようなステートメントの後で SQL 戻りコードのテストを行ってはなりません。

    CREATE PROCEDURE ステートメントの SQL プロシージャー本体にステートメントを組み込むことができます。このようなステートメントは、 SQL プロシージャーに組み込まれているといいます。 SQL ステートメントの説明でホスト変数 が参照されるときはいつでも、ステートメントが SQL プロシージャーに組み込まれていれば SQL 変数 を使用できます。

    動的な準備と実行アプリケーション・プログラムでは、ホスト変数に入った文字ストリングの形式のSQL ステートメントを動的に構築することができます。

    一般にステートメントは、プログラムが入手可能な何らかのデータから構築されます (例えば、ワークステーションからの入力)。構成されたステートメント (select ステートメントではない) は、 (組み込み) PREPARE ステートメントによって準備され、 (組み込み) EXECUTE ステートメントによって実行することができます。あるいは、(組み込み) EXECUTE IMMEDIATE ステートメントを使用して、 1 つのステップでステートメントを準備して実行することもできます。

    動的に準備されるステートメントには、ホスト変数への参照が含まれていてはなりません。パラメーター・マーカーは含めることができます。 (パラメーター・マーカーの規則に関しては、『PREPARE』を参照してください。) 準備済みのステート

    アプリケーション・プログラムへのステートメントの組み込み

    12 SQL リファレンス 第 2 巻

  • メントが実行される時点で、パラメーター・マーカーは、実際には EXECUTE ステートメントで指定されたホスト変数の現行値に置き換えられます。一度準備したステートメントは、ホスト変数の他の値を用いて何回も実行することができます。パラメーター・マーカーは、EXECUTE IMMEDIATE ステートメントでは使用できません。

    ステートメントが正しく実行されたか否かは、 EXECUTE (または EXECUTEIMMEDIATE) ステートメントの実行後の SQLCA への SQL 戻りコードの設定値によって示されます。前述のように、SQL 戻りコードを検査する必要があります。詳しくは、 14ページの『ホスト言語アプリケーションでのエラー条件と警告条件の検出と処理』 を参照してください。

    select ステートメントの静的呼び出しselect ステートメントは、(実行不能) DECLARE CURSOR ステートメントの一部として含めることができます。

    このようなステートメントは、 (組み込み) OPEN ステートメントによってカーソルがオープンされるたびに実行されます。カーソルがオープンされた後で、一連のFETCH ステートメントを実行することにより、結果表を一度に 1 つの行ずつ取り出すことができます。

    このように使用する場合、 select ステートメントにホスト変数への参照を含めることができます。これらの参照は、実際には、OPEN ステートメントを実行した時点での変数の値によって置き換えられます。

    select ステートメントの動的呼び出しアプリケーション・プログラムは、ホスト変数に入った文字ストリングの形式で、選択 (SELECT) ステートメントを動的に構築することができます。

    一般に、ステートメントはプログラムが入手可能な何らかのデータから構築されます (例えば、ワークステーションから入手した照会)。このように構成されたステートメントは、 (組み込み) PREPARE ステートメントによって実行の準備が行われ、(実行不能) DECLARE CURSOR ステートメントによって参照されます。このようなステートメントは、 (組み込み) OPEN ステートメントによってカーソルがオープンされるたびに実行されます。カーソルがオープンされた後で、一連の FETCH ステートメントを実行することにより、結果表を一度に 1 つの行ずつ取り出すことができます。

    このように使用する場合、 select ステートメントにホスト変数への参照を含めることはできません。パラメーター・マーカーは含めることができます。パラメーター・マーカーは、実際には、 OPEN ステートメントに指定されたホスト変数の値によって置き換えられます。

    対話式呼び出しワークステーションから SQL ステートメントを入力する機能は、データベース・マネージャーのアーキテクチャーの一部です。この方法で入力されたステートメントは、「対話式に発行される」と呼ばれます。

    動的な準備と実行

    ステートメント 13

  • このようなステートメントは、アプリケーション・プログラムのコンテキストでのみ認識されるので、パラメーター・マーカーやホスト変数への参照を含まない実行可能ステートメントでなければなりません。

    異なるホスト・システムで使用される SQLSQL ステートメントの構文は、ホスト・システムの種類 (DB2 for z/OS、DB2 fori、DB2 for Linux, UNIX, and Windows) によって若干異なります。

    アプリケーション内の SQL ステートメントが静的か動的かにかかわらず、別のデータベース・ホスト・システムにアクセスするアプリケーションの場合は、SQL ステートメントとプリコンパイル/BIND オプションが、アクセス先のデータベース・システムでサポートされるようにするのは重要なことです。

    他のホスト・システムで使用する SQL ステートメントの詳細については、 DB2for z/OS および DB2 for i の「SQL リファレンス」マニュアルを参照してください。

    ホスト言語アプリケーションでのエラー条件と警告条件の検出と処理実行可能な SQL ステートメントを含むアプリケーション・プログラムは、SQLCODE または SQLSTATE の値のいずれかを使用して、 SQL ステートメントからの戻りコードを処理することができます。

    アプリケーションでこれらの値にアクセスするには、 2 つの方法があります。

    v SQLCA と呼ばれる構造体を組み込む。 SQLCA には SQLCODE という名前の整変数と、 SQLSTATE という名前の文字ストリングが含まれています。 REXXでは、SQLCA は自動的に提供されます。 他の言語では、INCLUDE SQLCA ステートメントを使用することによって、 SQLCA を入手することができます。

    v プリコンパイル・オプションとして LANGLEVEL SQL92E が指定されている場合は、プログラムの SQL 宣言セクションに SQLCODE または SQLSTATE という名前の変数を宣言することができます。これらの値がいずれも SQL 宣言セクションに宣言されていない場合は、プログラムの別のロケーションで SQLCODEという名の変数が宣言されているものと想定されます。 LANGLEVEL SQL92Eを使用する場合は、プログラムに INCLUDE SQLCA ステートメントがあってはなりません。

    SQLCODE は、各 SQL ステートメントの実行後に、データベース・マネージャーによって設定されます。すべてのデータベース・マネージャーは、次のようにISO/ANSI SQL 標準規格に準拠しています。

    v SQLCODE = 0 で SQLWARN0 がブランクの場合、実行は成功しました。v SQLCODE = 100 の場合、"データが見つかりませんでした"。例えば、カーソルが結果表の最後の行より後に設定されていたために、 FETCH ステートメントからデータが戻されませんでした。

    v SQLCODE > 0 で、100 ではない場合、実行は警告付きで成功しました。v SQLCODE = 0 で SQLWARN0 = 'W' の場合、実行は成功しましたが、1 つ以上の警告標識がセットされました。

    v SQLCODE < 0 の場合、実行は不成功でした。

    対話式呼び出し

    14 SQL リファレンス 第 2 巻

  • 0 と 100 以外の SQLCODE の値の意味は、製品によって異なります。

    SQLSTATE は、各 SQL ステートメントの実行後に、データベース・マネージャーによって設定されます。アプリケーション・プログラムは、SQLCODE ではなく、SQLSTATE をテストすることによって SQL ステートメントの実行を検査することができます。 SQLSTATE は、共通エラー条件に関する共通コードを示します。アプリケーション・プログラムが特定のエラーまたは特定クラスのエラーの有無をテストできます。コード体系は、IBM® のどのデータベース・マネージャーでも同じであり、 ISO/ANSI SQL92 標準規格に基づいています。

    SQL コメント静的 SQL ステートメントには、ホスト言語または SQL のコメントを含めることができます。動的 SQL ステートメントには、SQL コメントを含めることができます。

    SQL コメントには以下の 2 つのタイプがあります。

    単純コメント単純コメントは、2 つの連続するハイフン (--) で始まり、行末で終わります。

    括弧で囲まれたコメント括弧で囲まれたコメントは、/* で始まり、*/ で終わります。

    単純コメントを使用する際には、以下の規則が適用されます。

    v 2 つのハイフンが同一行にあることが必要で、その間にスペースを入れることはできません。

    v 単純コメントは、スペースが有効な個所であればどこからでも開始できます (区切りトークンの中、または 'EXEC' と 'SQL' との間を除く)。

    v 単純コメントは次の行へ続けることはできません。v COBOL では、2 つのハイフンの前にスペースを 1 つ入れる必要があります。

    括弧で囲まれたコメントを使用する際には、以下の規則が適用されます。

    v /* が同一行にあることが必要で、その間にスペースを入れることはできません。v */ が同一行にあることが必要で、その間にスペースを入れることはできません。v 括弧で囲まれたコメントは、スペースが有効な個所であればどこからでも開始できます (区切りトークンの中、または 'EXEC' と 'SQL' との間を除く)。

    v 括弧で囲まれたコメントは後続の行へ続けることができます。

    例v 例 1: この例は、ステートメントに単純コメントを組み込む方法を示しています。

    CREATE VIEW PRJ_MAXPER -- PROJECTS WITH MOST SUPPORT PERSONNELAS SELECT PROJNO, PROJNAME -- NUMBER AND NAME OF PROJECT

    FROM PROJECTWHERE DEPTNO = ’E21’ -- SYSTEMS SUPPORT DEPT CODEAND PRSTAFF > 1

    v 例 2: この例は、ステートメントに括弧で囲まれたコメントを組み込む方法を示しています。

    ホスト言語アプリケーションでのエラー条件と警告条件の検出と処理

    ステートメント 15

  • CREATE VIEW PRJ_MAXPER /* PROJECTS WITH MOST SUPPORTPERSONNEL */

    AS SELECT PROJNO, PROJNAME /* NUMBER AND NAME OF PROJECT */FROM PROJECTWHERE DEPTNO = ’E21’ /* SYSTEMS SUPPORT DEPT CODE */AND PRSTAFF > 1

    SQL における条件付きコンパイル条件付きコンパイルでは、コンパイル対象となる実際の SQL を判別するために使用されるコンパイラー指示を SQL に組み込むことができます。

    条件付きコンパイルに使用できるコンパイラー指示として、次の 2 種類があります。

    選択ディレクティブコード・フラグメントの選択を判別するために使用されるコンパイラー制御ステートメント。 _IF ディレクティブは、照会ディレクティブか、定数として定義されたグローバル変数を参照できます。

    照会ディレクティブシステムによって割り当てられた、または CURRENT SQL_CCFLAGS で条件付きコンパイル名前付き定数と指定された、コンパイラー名前付き定数への参照。照会ディレクティブは、直接使用するか、選択ディレクティブ内で使用することが可能です。

    これらのディレクティブは、以下のコンテキストで使用できます。

    v SQL プロシージャー定義v コンパイル済み SQL 関数定義v コンパイル済みトリガー定義v Oracle PL/SQL パッケージ定義

    ディレクティブは、データ定義言語ステートメントでオブジェクト・タイプ(FUNCTION、PACKAGE、PACKAGE BODY、PROCEDURE、または TRIGGER) が指定された後にのみ置くことができます。

    選択ディレクティブ

    選択ディレクティブは IF ステートメントとよく似ていますが、条件付きコンパイルの使用を示す接頭部がキーワードにあり、終了キーワードは _END です。

    �� _IF search-condition _THEN code-fragment �

    � �

    _ELSEIF search-condition _THEN code-fragment�

    SQL コメント

    16 SQL リファレンス 第 2 巻

  • � _END_ELSE code-fragment

    ��

    search-condition

    もしあれば、どの code-fragment を含めるかを決定するために評価される条件を指定します。条件が不明または偽の場合は、条件が真になるまで、または_ELSE 節に達するまで、あるいは選択ディレクティブの終了に達するまで、次の検索条件で評価が続行されます。検索条件には、以下のエレメントのみを含めることができます (SQLSTATE 428HV)。

    v タイプが BOOLEAN、INTEGER、または VARCHAR の定数v NULL 定数v 照会ディレクティブv 定義された定数値が BOOLEAN、INTEGER、または VARCHAR タイプの単純リテラルであるグローバル定数

    v 基本述部v NULL 述部v ブール定数またはブール照会ディレクティブである述部v 論理演算子 (AND、OR、および NOT)

    code-fragment

    選択ディレクティブを置く SQL ステートメントのコンテキストに含めることができる SQL コードの一部分。 code-fragment 内に選択ディレクティブを置くことはできません (SQLSTATE 428HV)。

    照会ディレクティブ

    照会ディレクティブは、コンパイル環境について照会するために使用されます。照会ディレクティブは、下線文字 2 つを接頭部とする通常 ID として SQL ステートメント内で指定されます。実際の ID は、以下のいずれかの値を表すことになります。

    v システムによって定義されたコンパイル環境値v ユーザーによって定義されたデータベース・レベルまたは個別セッション・レベルのコンパイル値

    システムによって定義される唯一のコンパイル環境変数が __SQL_LINE です。この環境変数は、現在コンパイル中の SQL の行番号を示します。

    データベース・レベルのユーザー定義コンパイル値は、sql_ccflags データベース構成パラメーターを使用して定義できます。セッション・レベルのユーザー定義コンパイル値は、値を CURRENT SQL_CCFLAGS 特殊レジスターに割り当てることによって定義できます。

    参照される照会ディレクティブが定義されていない場合は、照会ディレクティブの値を NULL 値と見なして処理が続行します。

    SQL における条件付きコンパイル

    ステートメント 17

  • 注v 定数として定義されたグローバル変数への参照: 選択ディレクティブ内のグローバル変数 (モジュールでパブリッシュされるモジュール変数への参照にすることも可能) への参照は、コンパイル時に定数に基づいた値を提供するためのみに使用されます。参照されるグローバル変数は、以下の要件を満たしていなければなりません。

    – 現行サーバーに存在する (SQLSTATE 42704)

    – データ・タイプが BOOLEAN、INTEGER、または VARCHAR である(SQLSTATE 428HV)

    – 単一定数値のある CONSTANT 節を使用して定義されている (SQLSTATE428HV)

    このようなグローバル変数をグローバル定数と言います。後でグローバル定数に変更を加えても、コンパイル済みのステートメントに影響を与えることはありません。

    v 代替構文: データ・サーバー環境が PL/SQL ステートメントを実行できるようになっている場合:

    – ELSEIF の代わりに ELSIF を指定できます。

    – 条件付きコンパイルのキーワードであることを示す接頭部として、下線文字(_) の代わりにドル記号文字 ($) を使用できます。

    – 照会ディレクティブであることを示す接頭部として、下線文字 2 つ (__) の代わりにドル記号文字 2 つ ($$) を使用できます。

    ドル記号文字接頭部は、照会ディレクティブを使用する既存の SQL ステートメントをサポートすることのみを目的としています。新しい SQL ステートメントを書く場合は使用しないことをお勧めします。

    値が TRUE の DBV97 というコンパイル値に対してデータベース全体の設定を指定します。

    UPDATE DATABASE CONFIGURATION USING SQL_CCFLAGS DB2V97:TRUE

    この値は、以降のこのデータベースへの接続でのデフォルトとして使用できます。

    例えば、特定のセッションが現行セッション内のいくつかのルーチンの定義で使用するために最大年数コンパイル値を必要とする場合は、SET CURRENTSQL_CCFLAGS ステートメントを使用してデフォルトの SQL_CCFLAGS を拡張できます。

    BEGINDECLARE CCFLAGS_LIST VARCHAR(1024);SET CCFLAGS_LIST = CURRENT SQL_CCFLAGS CONCAT ’,max_years:50’;SET CURRENT SQL_CCFLAGS = CCFLAGS_LIST;

    END

    CCFLAGS_LIST 変数への割り当ての右辺に CURRENT SQL_CCFLAGS を使用した場合は既存の SQL_CCFLAGS 設定値が保持されるのに対し、ストリング定数の場合は追加のコンパイル値が指定されます。

    SQL における条件付きコンパイル

    18 SQL リファレンス 第 2 巻

  • 以下は、CURRENT SQL_CCFLAGS の内容を使用する CREATE PROCEDURE ステートメントの例です。

    CREATE PROCEDURE CHECK_YEARS (IN YEARS_WORKED INTEGER)BEGIN

    _IF __DB2V97 _THENIF YEARS_WORKED > __MAX_YEARS THEN...END IF;

    _END

    照会ディレクティブ __DB2V97 は、コードを含めることができるかどうかを判別するためのブール値として使用されます。照会ディレクティブ __MAX_YEARS は、コンパイル時に定数値 50 に置き換えられます。

    SQL 制御ステートメントについてSQL 制御ステートメント (SQL プロシージャー型言語 (SQL PL) とも呼ばれます)とは、構造化プログラミング言語でプログラムを作成する方法と同様に SQL を使用できるようにする SQL ステートメントです。

    SQL 制御ステートメントには、論理の流れを制御し、変数を宣言して設定し、警告や例外を処理する機能が備えられています。ある SQL 制御ステートメントに他のネストされた SQL ステートメントが組み込まれていることもあります。ルーチンの本体、トリガー、またはコンパウンド・ステートメントで SQL 制御ステートメントを使用できます。

    SQL パラメーター、SQL 変数、およびグローバル変数の参照式や変数を指定できる SQL プロシージャー・ステートメント中のどこでも、 SQLパラメーター、SQL 変数、およびグローバル変数を参照できます。

    SQL ルーチン、SQL トリガー、または動的コンパウンド・ステートメント中にホスト変数を指定することはできません。 SQL パラメーターはルーチン本体のどこでも参照でき、ルーチン名で修飾できます。 SQL 変数が宣言されているコンパウンド・ステートメント中のどこでも SQL 変数を参照でき、そのコンパウンド・ステートメントの先頭にラベル名を指定して SQL 変数を修飾できます。 SQL パラメーターまたは SQL 変数に行データ・タイプがある場合、SQL パラメーターまたはSQL 変数を参照できる場所であればどこでもフィールドを参照できます。グローバル変数は、式が決定論的である必要がない限り、どの式の中でも参照できます。以下のシナリオでは決定論的式が必要となり、グローバル変数は使用できません。

    v チェック制約v 生成列の定義v 即時リフレッシュ MQT

    SQL パラメーター、SQL 変数、行変数フィールド、およびグローバル変数はすべてNULL 可能と見なされます。 SQL ルーチン中の SQL パラメーター、SQL 変数、行変数フィールド、またはグローバル変数の名前を、そのルーチン中で参照されている表やビューの列名と同じ名前にすることもできます。 SQL 変数または行変数フィールドの名前を、同じルーチンで宣言されている別の SQL 変数または行変数フィールドと同じ名前にすることもできます。このことは、2 つの SQL 変数が別々のコンパウンド・ステートメントで宣言される場合に生じる可能性があります。

    SQL における条件付きコンパイル

    ステートメント 19

  • SQL 変数の宣言を含むコンパウンド・ステートメントは、この変数の有効範囲を決定します。詳しくは、 351ページの『コンパウンド SQL (コンパイル済み)』 を参照してください。

    SQL ルーチン中の SQL 変数または SQL パラメーターの名前を、特定の SQL ステートメント中で使用されている ID 名と同じ名前にすることもできます。名前を修飾しない場合は、以下の規則により、名前が ID、SQL パラメーター、またはSQL 変数のいずれであるかが示�