サイトトップへこのカテゴリの一覧へ

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(1) 

目 次 

ページ 

序文 ··································································································································· 1 

1 適用範囲 ························································································································· 1 

2 引用規格 ························································································································· 2 

2.1 JIS及びISO規格 ··········································································································· 2 

2.2 その他の国際規格 ·········································································································· 3 

3 定義,表記法及び規約 ······································································································· 4 

3.1 定義 ···························································································································· 4 

3.1.1 JIS X 0221 [ISO10646] からの定義 ·················································································· 4 

3.1.2 [ISO14651] からの定義 ································································································· 4 

3.1.3 [Unicode] からの定義 ··································································································· 4 

3.1.4 JIS X 0301 [ISO8601] からの定義 ···················································································· 5 

3.1.5 第1部 [ISO9075-1] からの定義 ······················································································ 5 

3.1.6 第2部で規定する定義 ·································································································· 6 

3.2 表記法 ························································································································ 12 

3.3 規約 ··························································································································· 12 

3.3.1 用語の使用 ················································································································ 12 

3.3.1.1 その他の用語 ··········································································································· 12 

4 概念······························································································································ 13 

4.1 データ型 ····················································································································· 13 

4.1.1 データ型の一般的な導入 ······························································································ 13 

4.1.2 既定義型の名前 ·········································································································· 13 

4.1.3 ホスト言語データ型 ···································································································· 15 

4.1.4 データ型の用語 ·········································································································· 15 

4.1.5 異なることの特性 ······································································································· 17 

4.2 文字列 ························································································································ 17 

4.2.1 文字列の導入 ············································································································· 17 

4.2.2 文字列の比較 ············································································································· 18 

4.2.3 文字列を含む演算 ······································································································· 19 

4.2.3.1 正規表現構文 ··········································································································· 19 

4.2.3.2 文字列に作用し文字列を戻す演算子 ············································································· 19 

4.2.3.3 文字列を含む他の演算子 ···························································································· 21 

4.2.3.4 長大オブジェクト文字列を含む演算 ············································································· 22 

4.2.4 文字レパートリ ·········································································································· 22 

4.2.5 文字符号化形式 ·········································································································· 24 

4.2.6 照合順 ······················································································································ 24 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(2) 

ページ 

4.2.7 文字集合 ··················································································································· 25 

4.2.8 国際文字集合 ············································································································· 26 

4.3 2進オクテット列 ·········································································································· 27 

4.3.1 2進オクテット列の導入 ······························································································· 27 

4.3.2 2進オクテット列の比較 ······························································································· 27 

4.3.3 2進オクテット列を含む演算 ························································································· 27 

4.3.3.1 2進オクテット列に作用し,2進オクテット列を戻す演算子 ·············································· 27 

4.3.3.2 2進オクテット列を含む他の演算子 ·············································································· 27 

4.4 数 ······························································································································ 28 

4.4.1 数の導入 ··················································································································· 28 

4.4.2 数の性質 ··················································································································· 28 

4.4.3 数を含む演算 ············································································································· 29 

4.5 ブール型 ····················································································································· 30 

4.5.1 ブール型の導入 ·········································································································· 30 

4.5.2 ブール値の比較及び代入 ······························································································ 30 

4.5.3 ブール値を含む演算 ···································································································· 30 

4.5.3.1 ブール値を戻すブール値の演算 ··················································································· 30 

4.5.3.2 ブール値を含む他の演算子 ························································································· 31 

4.6 日時及び時間隔 ············································································································ 31 

4.6.1 日時及び時間隔の導入 ································································································· 31 

4.6.2 日時 ························································································································· 31 

4.6.3 時間隔 ······················································································································ 33 

4.6.4 日時及び時間隔を含む演算 ··························································································· 35 

4.7 利用者定義型 ··············································································································· 35 

4.7.1 利用者定義型の導入 ···································································································· 35 

4.7.2 個別型 ······················································································································ 36 

4.7.3 構造型 ······················································································································ 36 

4.7.3.1 構造型の導入 ··········································································································· 36 

4.7.3.2 観測関数及び変異関数 ······························································································· 36 

4.7.3.3 構成子 ···················································································································· 36 

4.7.3.4 下位型及び上位型 ····································································································· 37 

4.7.4 メソッド ··················································································································· 38 

4.7.5 利用者定義型の比較及び代入 ························································································ 39 

4.7.6 利用者定義型のための変換 ··························································································· 39 

4.7.7 利用者定義型記述子 ···································································································· 40 

4.8 行型 ··························································································································· 41 

4.9 参照型 ························································································································ 41 

4.9.1 参照型の導入 ············································································································· 41 

4.9.2 参照を含む演算 ·········································································································· 42 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(3) 

ページ 

4.10 集まり型 ···················································································································· 42 

4.10.1 集まり型の導入 ········································································································· 42 

4.10.2 配列 ························································································································ 43 

4.10.3 マルチ集合 ··············································································································· 43 

4.10.4 集まりの比較及び代入 ································································································ 44 

4.10.5 配列を含む演算 ········································································································· 44 

4.10.5.1 配列値に作用し,配列要素を戻す演算子 ······································································ 44 

4.10.5.2 配列値に作用し,配列値を戻す演算子 ········································································· 44 

4.10.5.3 配列値に作用し,数を戻す演算子 ··············································································· 44 

4.10.6 マルチ集合を含む演算 ································································································ 44 

4.10.6.1 マルチ集合に作用し,マルチ集合要素を戻す演算子 ······················································· 44 

4.10.6.2 マルチ集合に作用し,マルチ集合を戻す演算子 ····························································· 44 

4.10.6.3 マルチ集合に作用し,数を戻す演算子 ········································································· 45 

4.11 データ変換 ················································································································· 45 

4.12 定義域 ······················································································································· 46 

4.13 列,フィールド及び属性 ······························································································· 46 

4.14 期間 ·························································································································· 48 

4.14.1 期間の導入 ··············································································································· 48 

4.14.2 期間を含む演算 ········································································································· 48 

4.15 表 ····························································································································· 49 

4.15.1 表の導入 ·················································································································· 49 

4.15.2 実表 ························································································································ 49 

4.15.2.1 通常永続実表 ········································································································· 49 

4.15.2.2 システムバージョン表 ····························································································· 49 

4.15.2.3 一時表 ·················································································································· 49 

4.15.3 導出表 ····················································································································· 50 

4.15.4 過渡表 ····················································································································· 51 

4.15.5 表の一意識別 ············································································································ 51 

4.15.6 表更新可能性 ············································································································ 51 

4.15.7 表記述子 ·················································································································· 52 

4.15.8 表間の関係 ··············································································································· 53 

4.15.9 参照可能表,下位表及び上位表 ···················································································· 53 

4.15.10 表を含む演算 ·········································································································· 54 

4.15.11 識別列 ··················································································································· 56 

4.15.12 実列及び生成列 ······································································································· 56 

4.15.13 グループ表 ············································································································· 57 

4.15.14 ウィンドウ表 ·········································································································· 57 

4.16 データ分析操作(表を含む) ························································································· 58 

4.16.1 データ分析操作の導入 ································································································ 58 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(4) 

ページ 

4.16.2 グループ関数 ············································································································ 59 

4.16.3 ウィンドウ関数 ········································································································· 59 

4.16.4 集約関数 ·················································································································· 61 

4.17 決定論 ······················································································································· 63 

4.18 整合性制約 ················································································································· 64 

4.18.1 整合性制約の概要 ······································································································ 64 

4.18.2 制約の検査 ··············································································································· 64 

4.18.3 表制約 ····················································································································· 65 

4.18.3.1 表制約の導入 ········································································································· 65 

4.18.3.2 一意性制約 ············································································································ 65 

4.18.3.3 参照制約 ··············································································································· 65 

4.18.3.4 表検査制約 ············································································································ 68 

4.18.4 定義域制約 ··············································································································· 68 

4.18.5 表明 ························································································································ 68 

4.19 関数従属性 ················································································································· 68 

4.19.1 関数従属性の規則及び表記法の概要 ·············································································· 68 

4.19.2 一般規則及び定義 ······································································································ 69 

4.19.3 実表中の知られている関数従属性 ················································································· 70 

4.19.4 ビュー表中の知られている関数従属性 ··········································································· 71 

4.19.5 遷移表中の知られている関数従属性 ·············································································· 71 

4.19.6 <表値構成子>中の知られている関数従属性····································································· 71 

4.19.7 <結合表>中の知られている関数従属性 ·········································································· 71 

4.19.8 <表一次子>中の知られている関数従属性········································································ 73 

4.19.9 <表因子>中の知られている関数従属性 ·········································································· 73 

4.19.10 <表参照>中の知られている関数従属性 ········································································· 74 

4.19.11 <FROM句>の結果中の知られている関数従属性 ···························································· 74 

4.19.12 <WHERE句>の結果中の知られている関数従属性 ·························································· 74 

4.19.13 <GROUP BY句>の結果中の知られている関数従属性 ······················································ 74 

4.19.14 <HAVING句>の結果中の知られている関数従属性 ························································· 75 

4.19.15 <問合せ指定>中の知られている関数従属性 ··································································· 75 

4.19.16 <問合せ式>中の知られている関数従属性 ······································································ 75 

4.20 候補キー ···················································································································· 76 

4.21 SQLスキーマ ············································································································· 77 

4.22 順序数生成子 ·············································································································· 78 

4.22.1 順序数生成子の一般記述 ····························································································· 78 

4.22.2 順序数生成子を含む演算 ····························································································· 79 

4.23 SQLクライアントモジュール ························································································ 79 

4.24 埋込み構文 ················································································································· 80 

4.25 動的SQLの概念 ········································································································· 81 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(5) 

ページ 

4.25.1 動的SQLの概要 ······································································································· 81 

4.25.2 動的SQL文及び記述子領域 ························································································ 82 

4.26 SQLの直接起動 ·········································································································· 83 

4.27 外部呼出し手続 ··········································································································· 83 

4.28 SQL呼出しルーチン ···································································································· 83 

4.28.1 SQL呼出しルーチンの概要 ························································································· 83 

4.28.2 SQL呼出しルーチンの性質 ························································································· 85 

4.28.3 SQL呼出しルーチンの実行 ························································································· 87 

4.28.4 ルーチン記述子 ········································································································· 87 

4.28.5 SQL呼出し手続によって戻される結果集合 ···································································· 89 

4.29 SQLパス ··················································································································· 90 

4.30 ホストパラメタ ··········································································································· 91 

4.30.1 ホストパラメタの概要 ································································································ 91 

4.30.2 状態パラメタ ············································································································ 91 

4.30.3 データパラメタ ········································································································· 91 

4.30.4 標識パラメタ ············································································································ 91 

4.30.5 位置付け子 ··············································································································· 92 

4.31 診断領域 ···················································································································· 92 

4.32 ホスト言語 ················································································································· 93 

4.33 カーソル ···················································································································· 94 

4.33.1 カーソルの一般記述 ··································································································· 94 

4.33.2 カーソルの操作及びカーソルを用いる操作 ····································································· 98 

4.34 SQL文 ······················································································································ 99 

4.34.1 SQL文の種類 ··········································································································· 99 

4.34.2 機能によって分類されたSQL文 ················································································· 100 

4.34.2.1 SQLスキーマ文 ····································································································· 100 

4.34.2.2 SQLデータ文 ········································································································ 101 

4.34.2.3 SQLデータ変更文 ·································································································· 102 

4.34.2.4 SQLトランザクション文 ························································································· 102 

4.34.2.5 SQLコネクション文 ······························································································· 102 

4.34.2.6 SQL制御文 ··········································································································· 102 

4.34.2.7 SQLセション文 ····································································································· 102 

4.34.2.8 SQL診断文 ··········································································································· 103 

4.34.2.9 動的SQL文 ·········································································································· 103 

4.34.2.10 SQL埋込み例外宣言 ····························································································· 103 

4.34.3 SQL文及びSQLデータアクセス指示 ··········································································· 103 

4.34.4 SQL文及びトランザクション状態 ··············································································· 104 

4.34.5 SQL文の基本単位性及び文実行文脈 ············································································ 106 

4.34.6 埋込み可能なSQL文 ································································································ 106 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(6) 

ページ 

4.34.7 準備可能及び即時実行可能なSQL文 ··········································································· 108 

4.34.8 直接実行可能なSQL文 ····························································································· 109 

4.35 基本安全保護モデル ···································································································· 110 

4.35.1 認可識別子 ·············································································································· 110 

4.35.1.1 SQLセション認可識別子 ························································································· 110 

4.35.1.2 SQLクライアントモジュール認可識別子 ···································································· 111 

4.35.1.3 SQLスキーマ認可識別子 ························································································· 111 

4.35.2 権限 ······················································································································· 111 

4.35.3 役割 ······················································································································· 113 

4.35.4 安全保護モデル定義 ·································································································· 114 

4.36 SQLトランザクション ································································································ 114 

4.36.1 SQLトランザクションの一般記述 ··············································································· 114 

4.36.2 保存点 ···················································································································· 115 

4.36.3 SQLトランザクションの特性 ····················································································· 115 

4.36.4 SQLトランザクションの隔離性水準 ············································································ 116 

4.36.5 暗黙ロールバック ····································································································· 118 

4.36.6 SQLトランザクション中のSQL文の効果 ····································································· 118 

4.36.7 全体トランザクション ······························································································· 118 

4.37 SQLコネクション ······································································································ 120 

4.38 SQLセション ············································································································ 121 

4.38.1 SQLセションの一般記述 ··························································································· 121 

4.38.2 SQLセションの識別 ································································································· 121 

4.38.3 SQLセション特性 ···································································································· 122 

4.38.4 SQLセション文脈管理 ······························································································ 124 

4.38.5 実行文脈 ················································································································· 125 

4.38.6 ルーチン実行文脈 ····································································································· 125 

4.39 トリガ ······················································································································ 126 

4.39.1 トリガの一般記述 ····································································································· 126 

4.39.2 トリガ実行 ·············································································································· 127 

4.40 クライアントサーバ処理 ······························································································ 129 

5 語彙要素 ······················································································································· 130 

5.1 <SQL終端文字> ·········································································································· 130 

5.2 <トークン>及び<分離符号> ···························································································· 133 

5.3 <定数> ······················································································································· 143 

5.4 名前及び識別子 ··········································································································· 151 

6 スカラ式 ······················································································································· 161 

6.1 <データ型> ················································································································· 161 

6.2 <フィールド定義> ········································································································ 172 

6.3 <値式一次子> ·············································································································· 173 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(7) 

ページ 

6.4 <値指定>及び<相手指定> ······························································································· 174 

6.5 <文脈型付き値指定> ····································································································· 179 

6.6 <識別子鎖> ················································································································· 180 

6.7 <列参照> ···················································································································· 183 

6.8 <SQLパラメタ参照> ···································································································· 185 

6.9 <集合関数指定> ··········································································································· 186 

6.10 <ウィンドウ関数>······································································································· 187 

6.11 <入れ子ウィンドウ関数> ······························································································ 194 

6.12 <CASE式> ················································································································ 196 

6.13 <CAST指定> ············································································································· 199 

6.14 <次値式> ·················································································································· 212 

6.15 <フィールド参照>······································································································· 213 

6.16 <下位型扱い>············································································································· 214 

6.17 <メソッド呼出し>······································································································· 215 

6.18 <静的メソッド呼出し> ································································································· 216 

6.19 <NEW指定> ·············································································································· 217 

6.20 <属性又はメソッド参照> ······························································································ 218 

6.21 <内参照演算>············································································································· 218 

6.22 <メソッド参照>·········································································································· 219 

6.23 <参照解決> ··············································································································· 220 

6.24 <配列要素参照>·········································································································· 221 

6.25 <マルチ集合要素参照> ································································································· 221 

6.26 <値式> ····················································································································· 222 

6.27 <数値式> ·················································································································· 224 

6.28 <数値関数> ··············································································································· 226 

6.29 <データ列値式>·········································································································· 236 

6.30 <データ列値関数>······································································································· 239 

6.31 <日時値式> ··············································································································· 253 

6.32 <日時値関数>············································································································· 255 

6.33 <時間隔値式>············································································································· 257 

6.34 <時間隔値関数>·········································································································· 260 

6.35 <ブール値式>············································································································· 261 

6.36 <配列値式> ··············································································································· 264 

6.37 <配列値関数>············································································································· 265 

6.38 <配列値構成子>·········································································································· 266 

6.39 <マルチ集合値式>······································································································· 267 

6.40 <マルチ集合値関数>···································································································· 269 

6.41 <マルチ集合値構成子> ································································································· 270 

7 問合せ式 ······················································································································· 271 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(8) 

ページ 

7.1 <行値構成子> ·············································································································· 271 

7.2 <行値式> ···················································································································· 274 

7.3 <表値構成子> ·············································································································· 275 

7.4 <表式> ······················································································································· 276 

7.5 <FROM句> ················································································································ 276 

7.6 <表参照> ···················································································································· 277 

7.7 <結合表> ···················································································································· 289 

7.8 <WHERE句> ·············································································································· 298 

7.9 <GROUP BY句>·········································································································· 299 

7.10 <HAVING句> ············································································································ 307 

7.11 <WINDOW句> ·········································································································· 308 

7.12 <問合せ指定>············································································································· 319 

7.13 <問合せ式> ··············································································································· 327 

7.14 <SEARCH又はCYCLE句> ························································································· 343 

7.15 <副問合せ> ··············································································································· 346 

8 述語····························································································································· 347 

8.1 <述語> ······················································································································· 347 

8.2 <比較述語> ················································································································· 348 

8.3 <BETWEEN述語> ······································································································· 354 

8.4 <IN述語> ··················································································································· 355 

8.5 <LIKE述語> ··············································································································· 356 

8.6 <SIMILAR述語> ········································································································· 360 

8.7 <LIKE̲REGEX述語> ··································································································· 365 

8.8 <NULL述語> ·············································································································· 366 

8.9 <限定比較述語> ··········································································································· 367 

8.10 <EXISTS述語> ·········································································································· 368 

8.11 <UNIQUE述語> ········································································································· 368 

8.12 <NORMALIZED述語> ································································································ 369 

8.13 <MATCH述語>·········································································································· 370 

8.14 <OVERLAPS述語> ···································································································· 371 

8.15 <DISTINCT述語> ······································································································ 373 

8.16 <MEMBER述語> ······································································································· 375 

8.17 <SUBMULTISET述語> ······························································································· 376 

8.18 <SET述語> ··············································································································· 377 

8.19 <型述語> ·················································································································· 378 

8.20 <期間述語> ··············································································································· 379 

8.21 <探索条件> ··············································································································· 383 

9 その他の共通規則 ··········································································································· 383 

9.1 取出し代入 ················································································································· 383 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(9) 

ページ 

9.2 格納代入 ···················································································································· 388 

9.3 ホスト言語からSQLサーバへの値の受渡し ······································································ 392 

9.4 SQLサーバからホスト言語への値の受渡し ······································································· 395 

9.5 データ型組合せの結果 ·································································································· 398 

9.6 当該ルーチン決定 ········································································································ 401 

9.7 型優先順序リスト決定 ·································································································· 402 

9.8 ホストパラメタモード決定····························································································· 404 

9.9 型名決定 ···················································································································· 405 

9.10 同一値の決定 ············································································································· 406 

9.11 等値性演算 ················································································································ 408 

9.12 グループ化操作 ·········································································································· 409 

9.13 マルチ集合要素グループ化操作 ····················································································· 410 

9.14 順序付け操作 ············································································································· 411 

9.15 照合順決定 ················································································································ 412 

9.16 配列戻し関数の実行 ···································································································· 413 

9.17 マルチ集合戻し関数の実行 ··························································································· 416 

9.18 XQuery正規表現照合 ·································································································· 416 

9.19 XQuery正規表現置換 ·································································································· 419 

9.20 データ型の同一性 ······································································································· 420 

9.21 FROM-SQL関数の決定 ······························································································· 420 

9.22 置換メソッドのためのFROM-SQL関数の決定································································· 421 

9.23 TO-SQL関数の決定 ···································································································· 422 

9.24 置換メソッドのためのTO-SQL関数の決定 ····································································· 422 

9.25 順序数生成子の次値の生成 ··························································································· 423 

9.26 順序数生成子の作成 ···································································································· 423 

9.27 順序数生成子の変更 ···································································································· 425 

9.28 ビューの階層的な<問合せ式>の生成 ··············································································· 427 

9.29 ビュー権限の決定 ······································································································· 428 

9.30 ビュー構成要素権限の決定 ··························································································· 429 

10 その他の共通要素 ········································································································· 432 

10.1 <時間隔修飾子>·········································································································· 433 

10.2 <LANGUAGE句> ······································································································ 435 

10.3 <パス指定> ··············································································································· 436 

10.4 <ルーチン呼出し>······································································································· 437 

10.5 <文字集合指定>·········································································································· 458 

10.6 <特定ルーチン指示子> ································································································· 459 

10.7 <COLLATE句> ········································································································· 462 

10.8 <制約名定義>及び<制約特性> ······················································································· 462 

10.9 <集約関数> ··············································································································· 463 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(10) 

ページ 

10.10 <ソート指定リスト> ·································································································· 474 

11 スキーマ定義及びスキーマ操作 ······················································································· 476 

11.1 <スキーマ定義> ·········································································································· 476 

11.2 <スキーマ削除文> ······································································································· 478 

11.3 <表定義> ··················································································································· 480 

11.4 <列定義> ··················································································································· 490 

11.5 <DEFAULT句> ·········································································································· 495 

11.6 <表制約定義> ············································································································· 498 

11.7 <一意性制約定義> ······································································································· 499 

11.8 <参照制約定義> ·········································································································· 501 

11.9 <検査制約定義> ·········································································································· 506 

11.10 <表変更文> ·············································································································· 507 

11.11 <列定義追加> ··········································································································· 508 

11.12 <列定義変更> ··········································································································· 509 

11.13 <列DEFAULT句設定> ······························································································· 510 

11.14 <列DEFAULT句削除> ······························································································· 511 

11.15 <列NOT NULL句設定> ····························································································· 511 

11.16 <列NOT NULL句削除> ····························································································· 512 

11.17 <列SCOPE句追加> ··································································································· 512 

11.18 <列SCOPE句削除> ··································································································· 513 

11.19 <列データ型句変更> ·································································································· 514 

11.20 <識別列指定変更> ····································································································· 516 

11.21 <IDENTITY特性句削除> ···························································································· 517 

11.22 <列生成式句削除> ····································································································· 518 

11.23 <列定義削除> ··········································································································· 518 

11.24 <表制約定義追加> ····································································································· 520 

11.25 <表制約定義変更> ····································································································· 520 

11.26 <表制約定義削除> ····································································································· 521 

11.27 <表期間定義追加> ····································································································· 523 

11.28 <表期間定義削除> ····································································································· 525 

11.29 <SYSTEM VERSIONING句追加> ················································································ 528 

11.30 <SYSTEM VERSIONING句削除> ················································································ 529 

11.31 <表削除文> ·············································································································· 530 

11.32 <ビュー定義> ··········································································································· 532 

11.33 <ビュー削除文> ········································································································ 541 

11.34 <定義域定義> ··········································································································· 544 

11.35 <定義域変更文> ········································································································ 545 

11.36 <定義域DEFAULT句設定> ························································································· 546 

11.37 <定義域DEFAULT句削除> ························································································· 546 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(11) 

ページ 

11.38 <定義域制約定義追加> ······························································································· 547 

11.39 <定義域制約定義削除> ······························································································· 547 

11.40 <定義域削除文> ········································································································ 548 

11.41 <文字集合定義> ········································································································ 549 

11.42 <文字集合削除文> ····································································································· 550 

11.43 <照合順定義> ··········································································································· 551 

11.44 <照合順削除文> ········································································································ 552 

11.45 <文字変換定義> ········································································································ 553 

11.46 <文字変換削除文> ····································································································· 555 

11.47 <表明定義> ·············································································································· 556 

11.48 <表明削除文> ··········································································································· 557 

11.49 <トリガ定義> ··········································································································· 559 

11.50 <トリガ削除文> ········································································································ 563 

11.51 <利用者定義型定義> ·································································································· 566 

11.52 <属性定義> ·············································································································· 580 

11.53 <型変更文> ·············································································································· 582 

11.54 <属性定義追加> ········································································································ 582 

11.55 <属性定義削除> ········································································································ 584 

11.56 <原メソッド指定追加> ······························································································· 585 

11.57 <置換メソッド指定追加> ···························································································· 589 

11.58 <メソッド指定削除> ·································································································· 592 

11.59 <データ型削除文> ····································································································· 595 

11.60 <SQL呼出しルーチン>······························································································· 597 

11.61 <ルーチン変更文> ····································································································· 620 

11.62 <ルーチン削除文> ····································································································· 622 

11.63 <利用者定義型変換定義> ···························································································· 623 

11.64 <利用者定義型変換削除文> ························································································· 625 

11.65 <利用者定義順序付け定義> ························································································· 626 

11.66 <利用者定義順序付け削除文> ······················································································ 629 

11.67 <変換定義> ·············································································································· 630 

11.68 <変換変更文> ··········································································································· 632 

11.69 <変換要素リスト追加> ······························································································· 633 

11.70 <変換要素リスト削除> ······························································································· 634 

11.71 <変換削除文> ··········································································································· 636 

11.72 <順序数生成子定義> ·································································································· 637 

11.73 <順序数生成子変更文> ······························································································· 639 

11.74 <順序数生成子削除文> ······························································································· 640 

12 アクセス制御 ··············································································································· 641 

12.1 <GRANT文> ············································································································· 641 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(12) 

ページ 

12.2 <GRANT権限文> ······································································································· 645 

12.3 <権限> ····················································································································· 647 

12.4 <役割定義> ··············································································································· 650 

12.5 <GRANT役割文> ······································································································· 650 

12.6 <役割削除文>············································································································· 651 

12.7 <REVOKE文> ··········································································································· 652 

12.8 権限付与者決定 ·········································································································· 667 

13 SQLクライアントモジュール·························································································· 668 

13.1 <SQLクライアントモジュール定義> ·············································································· 668 

13.2 <モジュール名句>······································································································· 672 

13.3 <外部呼出し手続>······································································································· 672 

13.4 <SQL手続文> ············································································································ 689 

13.5 データ型対応 ············································································································· 696 

14 データ操作 ·················································································································· 705 

14.1 <カーソル宣言>·········································································································· 705 

14.2 <カーソル特性>·········································································································· 705 

14.3 <カーソル指定>·········································································································· 707 

14.4 <OPEN文> ··············································································································· 709 

14.5 <FETCH文> ············································································································· 709 

14.6 <CLOSE文> ·············································································································· 712 

14.7 <SELECT文:単一行> ································································································ 713 

14.8 <DELETE文:位置付け> ····························································································· 716 

14.9 <DELETE文:探索> ··································································································· 717 

14.10 <TRUNCATE TABLE文> ··························································································· 720 

14.11 <INSERT文> ··········································································································· 721 

14.12 <MERGE文> ··········································································································· 726 

14.13 <UPDATE文:位置付け> ··························································································· 734 

14.14 <UPDATE文:探索> ································································································· 735 

14.15 <設定句リスト> ········································································································ 739 

14.16 <一時表宣言> ··········································································································· 743 

14.17 <FREE LOCATOR文> ······························································································· 744 

14.18 <HOLD LOCATOR文> ······························································································ 744 

15 その他のデータ操作規則 ································································································ 745 

15.1 カーソルを開くことの効果 ··························································································· 745 

15.2 結果集合を受け取ることの効果 ····················································································· 747 

15.3 カーソルの現在行の決定 ······························································································ 748 

15.4 カーソルを閉じることの効果 ························································································ 750 

15.5 位置付け削除の効果 ···································································································· 750 

15.6 位置付け更新の効果 ···································································································· 752 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(13) 

ページ 

15.7 実表からの行の削除の効果 ··························································································· 754 

15.8 導出表からの行の削除の効果 ························································································ 756 

15.9 ビュー表からの行の削除の効果 ····················································································· 757 

15.10 実表への表の挿入の効果····························································································· 758 

15.11 導出表への表の挿入の効果 ·························································································· 759 

15.12 ビュー表への表の挿入の効果······················································································· 761 

15.13 実表中の行の置換えの効果·························································································· 762 

15.14 導出表中の行の置換えの効果······················································································· 765 

15.15 ビュー表中の行の置換えの効果···················································································· 767 

15.16 BEFOREトリガの実行 ······························································································ 768 

15.17 参照動作の実行 ········································································································ 769 

15.18 AFTERトリガの実行································································································· 773 

15.19 トリガの実行 ··········································································································· 774 

16 制御文 ························································································································ 776 

16.1 <CALL文> ··············································································································· 776 

16.2 <RETURN文> ··········································································································· 776 

17 トランザクション管理 ··································································································· 777 

17.1 <START TRANSACTION文> ······················································································· 777 

17.2 <SET TRANSACTION文> ··························································································· 778 

17.3 <トランザクション特性> ······························································································ 779 

17.4 <SET CONSTRAINTS MODE文> ·················································································· 781 

17.5 <SAVEPOINT文> ······································································································· 781 

17.6 <RELEASE SAVEPOINT文> ························································································ 782 

17.7 <COMMIT文> ·········································································································· 782 

17.8 <ROLLBACK文> ······································································································· 784 

18 コネクション管理 ········································································································· 786 

18.1 <CONNECT文> ········································································································· 786 

18.2 <SET CONNECTION文> ····························································································· 788 

18.3 <DISCONNECT文> ···································································································· 789 

19 セション管理 ··············································································································· 790 

19.1 <SET SESSION CHARACTERISTICS文> ······································································· 790 

19.2 <セション利用者識別子設定文> ····················································································· 791 

19.3 <SET ROLE文> ········································································································· 791 

19.4 <地方時刻帯設定文>···································································································· 792 

19.5 <SET CATALOG文> ··································································································· 793 

19.6 <SET SCHEMA文> ···································································································· 793 

19.7 <SET NAMES文>······································································································· 794 

19.8 <SET PATH文> ········································································································· 795 

19.9 <SET TRANSFORM GROUP文> ··················································································· 795 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(14) 

ページ 

19.10 <セション照合順設定文> ···························································································· 796 

20 動的SQL ···················································································································· 797 

20.1 SQL記述子領域の記述 ································································································ 797 

20.2 <ALLOCATE DESCRIPTOR文> ··················································································· 804 

20.3 <DEALLOCATE DESCRIPTOR文> ··············································································· 805 

20.4 <GET DESCRIPTOR文> ····························································································· 805 

20.5 <SET DESCRIPTOR文> ······························································································ 808 

20.6 <PREPARE文> ·········································································································· 812 

20.7 <カーソル属性の並び> ································································································· 822 

20.8 <DEALLOCATE PREPARE文> ···················································································· 822 

20.9 <記述文> ·················································································································· 823 

20.10 <入力USING句> ······································································································ 828 

20.11 <出力USING句> ······································································································ 831 

20.12 <EXECUTE文> ········································································································ 835 

20.13 <EXECUTE IMMEDIATE文> ····················································································· 836 

20.14 <動的カーソル宣言> ·································································································· 837 

20.15 <拡張動的カーソル割当て文> ······················································································ 837 

20.16 <受取りカーソル割当て文> ························································································· 839 

20.17 <動的OPEN文> ······································································································· 840 

20.18 <動的FETCH文> ····································································································· 841 

20.19 <動的単一行SELECT文> ··························································································· 842 

20.20 <動的CLOSE文> ····································································································· 842 

20.21 <動的DELETE文:位置付け> ···················································································· 843 

20.22 <動的UPDATE文:位置付け>····················································································· 843 

20.23 <準備可能動的DELETE文:位置付け>········································································· 844 

20.24 <準備可能動的カーソル名> ························································································· 846 

20.25 <準備可能動的UPDATE文:位置付け> ········································································· 847 

21 埋込みSQL ················································································································· 848 

21.1 <SQL埋込みホストプログラム> ···················································································· 848 

21.2 <埋込み例外宣言>······································································································· 858 

21.3 <SQL埋込みAdaプログラム> ······················································································ 861 

21.4 <SQL埋込みCプログラム> ························································································· 868 

21.5 <SQL埋込みCOBOLプログラム> ················································································· 877 

21.6 <SQL埋込みFortranプログラム> ················································································· 883 

21.7 <SQL埋込みMUMPSプログラム> ················································································ 889 

21.8 <SQL埋込みPascalプログラム> ··················································································· 892 

21.9 <SQL埋込みPL/Iプログラム> ······················································································ 897 

22 SQLの直接起動 ··········································································································· 904 

22.1 <直接SQL文> ··········································································································· 904 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(15) 

ページ 

22.2 <直接SELECT文:複数行> ························································································· 907 

23 診断管理 ····················································································································· 907 

23.1 <GET DIAGNOSTICS文> ···························································································· 907 

23.2 診断領域スタックに対する押込み及び取出し ··································································· 919 

24 状態コード ·················································································································· 920 

24.1 SQLSTATE ··············································································································· 920 

24.2 遠隔データベースアクセスのSQLSTATEクラス ······························································ 925 

25 適合性 ························································································································ 926 

25.1 SQL/Foundationに対する適合性の主張 ··········································································· 926 

25.2 SQL/Foundationに対するその他の適合性要件 ·································································· 927 

25.3 SQL/Foundationの前提機能の関係 ················································································· 927 

附属書A(参考)SQL適合性の要約 ······················································································· 930 

附属書B(参考)処理系定義要素··························································································· 992 

附属書C(参考)処理系依存要素 ·························································································1009 

附属書D(参考)削除予定機能 ····························································································1017 

附属書E(参考)ISO/IEC 9075:2008との非互換性 ···································································1018 

附属書F(参考)SQLの機能の分類 ······················································································1020 

附属書G(参考)JIS X 3005 (ISO/IEC 9075) 規格群のこの版で取り込まれていない欠陥報告 ···········1037 

参考文献 ··························································································································1038 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 目次 

(16) 

まえがき 

この規格は,工業標準化法に基づき,日本工業標準調査会の審議を経て,経済産業大臣が改正した日本

工業規格である。 

これによって,JIS X 3005-2:2010は改正され,この規格に置き換えられた。 

また,令和2年6月22日,産業標準化法第17条又は第18条の規定に基づく確認公示に際し,産業標

準化法の用語に合わせ,規格中“日本工業規格”を“日本産業規格”に改めた。 

この規格は,著作権法で保護対象となっている著作物である。 

この規格の一部が,特許権,出願公開後の特許出願又は実用新案権に抵触する可能性があることに注意

を喚起する。経済産業大臣及び日本産業標準調査会は,このような特許権,出願公開後の特許出願及び実

用新案権に関わる確認について,責任はもたない。 

JIS X 3005の規格群には,次に示す部編成がある。 

JIS X 3005-1 第1部:枠組 (SQL/Framework)  

JIS X 3005-2 第2部:基本機能 (SQL/Foundation)  

JIS X 3005-13 第13部:Javaプログラム言語を用いるSQLルーチン及び型 (SQL/JRT)  

JIS X 3005-14 第14部:XML関連仕様 (SQL/XML)  

注記 この規格群に対応する国際規格ISO/IEC 9075には,上記の部のほかに,2003年に第2部から

分離して制定されたISO/IEC 9075-11,Information technology−Database languages−SQL−Part 

11: Information and Definition Schemas (SQL/Schemata),すなわち,データベース言語SQL 第11

部:情報スキーマ及び定義スキーマ (SQL/ Schemata) もある。 

日本産業規格 

JIS 

X 3005-2:2015 

(ISO/IEC 9075-2:2011) 

データベース言語SQL  

第2部:基本機能 (SQL/Foundation) 

Information technology-Database languages-SQL- 

Part 2: Foundation (SQL/Foundation) 

序文 

この規格は,2011年に第4版として発行されたISO/IEC 9075-2を基に,技術的内容及び構成を変更す

ることなく作成した日本産業規格である。 

なお,この規格で点線の下線を施してある参考事項は,対応国際規格にはない事項である。 

適用範囲 

この規格では,SQLデータのデータ構造及び基本操作を規定する。SQLデータの作成,アクセス,保守,

制御及び保護の機能を提供する。 

この規格は,次に示すデータベース言語の構文及び意味を規定する。 

− SQLデータの構造及び整合性制約 (integrity constraints) の指定及び変更。 

− SQLデータ及びカーソルに関する操作の宣言及び呼出し。 

− データベース言語手続の宣言。 

− 特定のプログラム言語(ホスト言語)で他の部分が書かれた翻訳単位中へのSQL文の埋込み。 

− ホスト言語中の等価な翻訳単位の導出。その等価な翻訳単位中で,各埋込みSQL文は,ホスト言語の

一つ以上の文に置き換えられ,そのうちの幾つかの文は,実行されるとき,SQL文の実行と等価な効

果をもつSQL外部呼出し手続を呼び出す。 

− SQL文の直接起動。 

− SQL文の動的な準備及び実行の提供。 

この規格は,SQL処理系 (SQL-implementation) 間でのデータ定義及び翻訳単位の可搬性の手段を提供す

る。 

この規格は,SQL処理系間の相互接続の手段を提供する。 

この規格の処理系は,データベース設計・データ管理・性能最適化のための様々な道具はもちろん,適

用業務プログラム言語・エンドユーザ問合せ言語・報告書作成システム・データ辞書システム・プログラ

ムライブラリシステム・分散通信システムを提供する環境中に存在してもよい。 

注記 この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。 

ISO/IEC 9075-2:2011,Information technology−Database languages−SQL−Part 2: Foundation 

(SQL/Foundation)(IDT) 

なお,対応の程度を表す記号“IDT”は,ISO/IEC Guide 21-1に基づき,“一致している”こ

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とを示す。 

引用規格 

次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの

引用規格のうちで,西暦年を付記してあるものは,記載の年の版を適用し,その後の改正版(追補を含む。)

は適用しない。西暦年の付記がない引用規格は,その最新版(追補を含む。)を適用する。 

2.1 

JIS及びISO規格 

[ISO1539] 

JIS X 3001-1:2009 プログラム言語Fortran−第1部:基底言語 

注記 対応国際規格:ISO/IEC 1539-1:2004,Information technology−Programming languages−Fortran

−Part 1: Base language(IDT) 

ISO/IEC 1539-1:2004/Cor 1:2006 

ISO/IEC 1539-1:2004/Cor 2:2007 

ISO/IEC 1539-1:2004/Cor 3:2008 

ISO/IEC 1539-1:2004/Cor 4:2009 

注記 [ISO1539] のような,各引用規格の前に付加されている角括弧で囲んだ記号は,引用規格を

後で参照するために用いる記号である。 

[ISO1989] 

JIS X 3002:2011 電子計算機プログラム言語COBOL 

注記 対応国際規格:ISO/IEC 1989:2002,Information technology−Programming languages−COBOL

(IDT)及びISO/IEC 1989:2002/Cor 1:2006(IDT) 

ISO/IEC 1989:2002/Cor 2:2006 

ISO/IEC 1989:2002/Cor 3:2009 

[ISO6160] 

ISO 6160:1979,Programming languages−PL/1 (Endorsement of ANSI X3.53-1976) 

[ISO7185] 

JIS X 3008:1994 プログラム言語Pascal 

注記 対応国際規格:ISO/IEC 7185:1990,Information technology−Programming languages−Pascal

(IDT) 

[ISO8601] 

ISO 8601,Data elements and interchange formats−Information interchange−Representation of dates and times 

注記 JIS X 0301:2002 情報交換のためのデータ要素及び交換形式−日付及び時刻の表記が,ISO 

8601:2000と対応(MOD)している。 

[ISO8652] 

ISO/IEC 8652:1995,Information technology−Programming languages−Ada 

注記 ISO/IEC 8652:1995と一致(IDT)していたJIS X 3009:2002 電子計算機プログラム言語Ada

は,2012年1月に廃止された。 

ISO/IEC 8652:1995/Cor.1:2001 

[ISO8859-1] 

ISO/IEC 8859-1,Information technology−8-bit single-byte coded graphic character sets−Part 1: Latin alphabet 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

No. 1 

[ISO9075-1] 

JIS X 3005-1:2014 データベース言語SQL 第1部:枠組 (SQL/Framework) 

注記 対応国際規格:ISO/IEC 9075-1:2011,Information technology−Database languages−SQL−Part 

1: Framework (SQL/Framework)(IDT) 

[ISO9075-11] 

ISO/IEC 9075-11:2011,Information technology−Database languages−SQL−Part 11: Information and 

Definition Schemas (SQL/Schemata) 

[ISO9579] 

ISO/IEC 9579,Information technology−Remote database access for SQL with security enhancement 

[ISO9899] 

JIS X 3010:2003 プログラム言語C 

注記 対応国際規格:ISO/IEC 9899:1999,Programming languages−C(IDT) 

ISO/IEC 9899:1999/Cor 1:2001 

ISO/IEC 9899:1999/Cor 2:2004 

ISO/IEC 9899:1999/Cor 3:2007 

[ISO10206] 

ISO/IEC 10206:1991,Information technology−Programming languages−Extended Pascal 

[ISO10646] 

JIS X 0221 国際符号化文字集合 (UCS) 

注記 対応国際規格:ISO/IEC 10646,Information technology−Universal Multi-Octet Coded Character 

Set (UCS) 

注記 JIS X 0221:2014が,ISO/IEC 10646:2012と一致(IDT)している。 

[ISO11756] 

ISO/IEC 11756:1999,Information technology−Programming languages−M 

注記 JIS X 3011:1995 プログラム言語MUMPSが,この国際規格の前の版ISO 11756:1992,

Information technology−Programming languages−MUMPSと対応(MOD)している。 

[ISO14651] 

ISO/IEC 14651,Information technology−International string ordering and comparison−Method for comparing 

character strings and description of the common template tailorable ordering 

2.2 

その他の国際規格 

[Unicode] 

The Unicode Consortium, The Unicode Standard. (Information about the latest version of the Unicode standard 

can be found by using the "Latest Unicode Version" link on the "Enumerated Versions of The Unicode 

Standard" page.) 

http://www.unicode.org/versions/enumeratedversions.html 

[Unicode10] 

Davis, Mark and Whistler, Ken. Unicode Technical Standard #10, Unicode Collation Algorithm, The Unicode 

Consortium. 

http://www.unicode.org/reports/tr10/ 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

[Unicode15] 

Davis, Mark and Durst, Martin, Unicode Standard Annex #15: Unicode Normalization Forms, The Unicode 

Consortium. 

http://www.unicode.org/reports/tr15/ 

[Unicode18] 

Davis, Mark, Unicode Technical Standard #18: Unicode Regular Expressions, The Unicode Consortium. 

http://www.unicode.org/reports/tr18/ 

[XQueryFO] 

(W3C Recommendation) XQuery 1.0 and XPath 2.0 Functions and Operators, World Wide Web Consortium. 

http://www.w3.org/TR/xpath-functions/ 

定義,表記法及び規約 

この箇条は,ISO/IEC 9075-3の“3 定義,表記法及び規約”によって修正される。 

この箇条は,ISO/IEC 9075-4の“3 定義,表記法及び規約”によって修正される。 

この箇条は,ISO/IEC 9075-10の“3 定義,表記法及び規約”によって修正される。 

この箇条は,ISO/IEC 9075-11の“3 定義,表記法及び規約”によって修正される。 

この箇条は,ISO/IEC 9075-13の“3 定義,表記法及び規約”によって修正される。 

この箇条は,ISO/IEC 9075-14の“3 定義,表記法及び規約”によって修正される。 

3.1 

定義 

この細分箇条は,ISO/IEC 9075-3の“3.1 定義”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“3.1 定義”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“3.1 定義”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“3.1 定義”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“3.1 定義”によって修正される。 

3.1.1 

JIS X 0221 [ISO10646] からの定義 

この規格では,JIS X 0221 [ISO10646] で定義されている次の用語を用いる。 

3.1.1.1 

文字 (character) 

注記2 これは,[Unicode] で規定する抽象文字 (abstract character) と同一である。JIS X 3005 

(ISO/IEC 9075) 規格群では,関連する文字レパートリがUCSのとき,ある文字は,一つの符

号位置によって表現されている (that which is represented by one code point) と考えることがで

きる。 

3.1.1.2 

レパートリ (repertoire) 

3.1.2 

[ISO14651] からの定義 

この規格では,[ISO14651] で定義されている次の用語を用いる。 

3.1.2.1 

照合順 (collation) 

3.1.3 

[Unicode] からの定義 

この規格では,[Unicode] で定義されている次の用語を用いる。 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3.1.3.1 

文字符号化形式 (character encoding form) 

3.1.3.2 

符号位置 (code point) 

3.1.3.3 

符号単位 (code unit) 

3.1.3.4 

制御文字 (control character) 

3.1.3.5 

非文字 (noncharacter) 

3.1.3.6 

正規化 (normalization) 

3.1.3.7 

符号変換 (transcoding) 

3.1.4 

JIS X 0301 [ISO8601] からの定義 

この規格では,JIS X 0301 [ISO8601] で定義されている次の用語を用いる。 

3.1.4.1 

協定世界時,UTC (Coordinated Universal Time) 

3.1.4.2 

日付(JIS X 0301 [ISO8601] 中での日付,暦) [ date (date, calendar in [ISO8601])] 

3.1.5 

第1部 [ISO9075-1] からの定義 

この規格では,第1部 [ISO9075-1] で定義されている次の用語を用いる。 

3.1.5.1 

基本単位 (atomic) 

3.1.5.2 

列 (column) 

3.1.5.3 

翻訳単位 (compilation unit) 

3.1.5.4 

データ型 (data type) 

3.1.5.5 

記述子 (descriptor) 

3.1.5.6 

(あるSQLオブジェクトの名前の)完全修飾付き [ fully qualified (of a name of some SQL object)] 

3.1.5.7 

識別子 (identifier) 

3.1.5.8 

識別 (identify) 

3.1.5.9 

処理系定義 (implementation-defined) 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3.1.5.10 

処理系依存 (implementation-dependent) 

3.1.5.11 

(値の)実現値 [ instance (of value)] 

3.1.5.12 

ナル値 (null value) 

3.1.5.13 

(“xオブジェクト”などの)オブジェクト [ object (as in 'x object')] 

3.1.5.14 

永続 (persistent) 

3.1.5.15 

(オブジェクトの)特性 [ property (of an object)] 

3.1.5.16 

行 (row) 

3.1.5.17 

(規格の)適用範囲 [ scope (of a standard)] 

3.1.5.18 

(名前又は宣言の)有効範囲 [ scope (of a name or a declaration)] 

3.1.5.19 

(参照型の)有効範囲 [ scope (of a reference type)] 

3.1.5.20 

並び (sequence) 

3.1.5.21 

格納場所 (site) 

3.1.5.22 

SQLコネクション (SQL-connection) 

3.1.5.23 

SQL環境 (SQL-environment) 

3.1.5.24 

SQL処理系 (SQL-implementation) 

3.1.5.25 

SQLセション (SQL-session) 

3.1.5.26 

SQL文 (SQL-statement) 

3.1.5.27 

表 (table) 

3.1.6 

第2部で規定する定義 

この規格では,他の規格からの定義に加えて,次の用語を定義する。 

3.1.6.1 

(対にされたデータ型が)代入可能 [assignable (of data types, taken pairwise)] 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

あるデータ型T1の値を特定のデータ型T2の格納場所に代入することを許すデータ型T1の特性。ここ

で,T1及びT2は,同じデータ型であってもよい。 

3.1.6.2 

代入 (assignment) 

[相手 (target) として知られている]格納場所Tの値が[代入元 (source) として知られている]与えら

れた値Sと同一になることを確実にする効果をもつ操作。 

注記3 代入は,しばしば,“Tには,Sが設定される (T is set to S)”又は“Tには,Sの値が設定され

る (the value of T is set to S)”という句を用いて示される。 

3.1.6.3 

属性 (attribute) 

構造型の構成要素。 

注記4 構造型T中の各値Vは,Tの各属性Aに対して,ただ一つの属性値をもつ。属性の特性は,

属性記述子によって指定される。属性の値は,その属性の観測関数の呼出しA (V) の結果と

して取り出してもよい。 

3.1.6.4 

(集まりの)基数 [cardinality (of collection)] 

その集まり中の要素の個数。 

注記5 それらの要素は,必ずしも異なる値をもつ必要はない。この概念を適用するオブジェクトに

は,表,及び集まり型の値を含む。 

3.1.6.5 

(値の対が)比較可能 [comparable (of a pair of values)] 

“8.2 <比較述語>”の規則に従って,比較できること。 

注記6 一つのデータ型の値は,全てとは限らないが,たいていの場合,ある値を別の値と比較する

ことができる(個々のデータ型の比較可能性の規定については,“4.2 文字列”から“4.10 集

まり型”までを参照。)。 

3.1.6.6 

構成関数 (constructor function) 

どの構造型に対しても,ただ一つが暗に指定される零項SQL呼出し関数。 

注記7 データ型Tに対する構成関数の呼出しは,値Vがナル値でなく,かつ,Tに対して定義され

たどの観測関数Oに対しても,O (V) の呼出しがOに対応する属性の既定値を戻すような,

Tの最特定型の値Vを戻す。 

3.1.6.7 

(値を示す式,又は,例えば,パラメタ,列若しくは変数のような,値を示すために参照できる任意のも

のの)宣言型 [declared type (of an expression denoting a value or anything that can be referenced to denote a value, 

such as, for example, a parameter, column, or variable)] 

その式の評価の結果の全ての値に共通する一意なデータ型。 

3.1.6.8 

(比較可能な値の対が)異なる [distinct (of a pair of comparable values)] 

ある与えられた文脈内で区別することができる。 

注記8 非公式には,二つの値は,どちらもナルでなく,かつ,値が等しくないならば,異なる。ナ

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ル値とナルでない値とは,異なる。二つのナル値は,異ならない(“4.1.5 異なることの特性”,

及び“8.15 <DISTINCT述語>”の一般規則参照。)。 

3.1.6.9 

個別型 (distinct type) 

既定義型又は集まり型から導出される利用者定義型。 

3.1.6.10 

重複 (duplicates) 

マルチ集合の二つ以上の異ならない要素。 

3.1.6.11 

(演算子,関数及び手続の)2項 [dyadic (of operators, functions, and procedures)] 

ただ二つのオペランド又はパラメタをもつこと。 

注記9 この規格での2項演算子の例としては,左のオペランドからの右のオペランドの減算を指定

する“-”がある。2項関数の例としては,POSITIONがある。 

3.1.6.12 

(集まり型の)要素型 [element type (of a collection type)] 

集まり型CTの定義で指定する宣言型DT。 

注記10 型CTの全ての値の全ての要素の宣言型は,DTである。 

3.1.6.13 

(比較可能な値の対が)等しい [equal (of a pair of comparable values)] 

<比較演算子>が<等号演算子>である<比較述語>中で引数として渡されるならば,真 (True) を生じる(連

体修飾)(“8.2 <比較述語>”参照。)。 

3.1.6.14 

外部ルーチン (external routine) 

SQL以外のプログラム言語で書かれたプログラムを識別する外部本体参照であるルーチン本体をもつ

SQL呼出しルーチン。 

3.1.6.15 

固定長 (fixed-length) 

型が文字列型又は2進オクテット列型である格納場所の宣言型の特性で,それぞれ,格納場所の文字単

位又はオクテット単位での長さとして知られているただ一つの文字数又はオクテット数を含むようにそれ

らの格納場所の値を制約する特性。 

3.1.6.16 

(値の対が)同一 [identical (of a pair of values)] 

JIS X 3005 (ISO/IEC 9075) 規格群中で規定するどのような方法によっても,それらの間のどんな違いも

検知できないという意味で,区別できないこと。 

注記11 完全な定義については,“9.10 同一値の決定”参照。 

3.1.6.17 

(利用者定義型の)インタフェース [interface (of a user-defined type)] 

パラメタ又は結果の少なくとも一つの宣言型がその利用者定義型である全ての関数から成る集合。 

3.1.6.18 

(演算子,関数及び手続の)単項 [monadic (of operators, functions, and procedures)] 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ただ一つのオペランド又はパラメタをもつこと。 

注記12 この規格での単項算術演算子の例としては,オペランドの符号の反転を指定する“-”がある。

単項関数の例としては,引数の文字単位での長さを指定するCHARACTER̲LENGTHがある。 

3.1.6.19 

(値の)最特定型 [most specific type (of a value)] 

その値の全てのデータ型が上位型となる一意なデータ型。 

3.1.6.20 

変異関数 (mutator function) 

構造型の属性の定義によって暗に定義される2項型保持SQL呼出し関数で,呼び出すと,それに関連付

けられている属性の値を修正する。 

3.1.6.21 

n項演算子 (n-adic operator) 

可変個のオペランド(非公式には,n個のオペランド)をもつ演算子。 

注記13 この規格でのn項演算子の例としては,COALESCEがある。 

3.1.6.22 

(関数及び手続の)零項 [niladic (of functions and procedures)] 

パラメタがないこと。 

3.1.6.23 

観測関数 (observer function) 

構造型の属性に関連付けられる単項SQL呼出し関数で,呼び出すと,それに関連付けられている属性の

値を戻す。 

注記14 観測関数は,属性の定義によって暗に定義される。 

3.1.6.24 

冗長な重複 (redundant duplicates) 

重複する値又は行の集まりの一つを除いた全てのもの。 

3.1.6.25 

REF値 (REF value) 

ある格納場所を参照する値。 

3.1.6.26 

参照型 (reference type) 

一つの特定のデータ型の格納場所を全ての値が参照する可能性のあるデータ型。 

3.1.6.27 

被参照型 (referenced type) 

特定の参照型の値によって参照される格納場所の値の宣言型。 

3.1.6.28 

被参照値 (referenced value) 

REF値によって参照される格納場所の値。 

3.1.6.29 

結果データ型 (result data type) 

SQL呼出し関数の結果の宣言型。 

10 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3.1.6.30 

結果集合 (result set) 

<カーソル指定>によって指定された行の並びであって,カーソルを開くことによって存在するようにな

り,そのカーソルが移動する範囲になるもの。 

3.1.6.31 

結果集合並び (result set sequence) 

戻り結果集合の並び。 

3.1.6.32 

結果SQLパラメタ (result SQL parameter) 

SQLパラメタで,それをパラメタとしてもつSQL呼出し関数の結果の最特定型を,このSQLパラメタ

の値の最特定型が決定するもの。 

3.1.6.33 

戻り結果集合 (returned result set) 

SQL呼出し手続の実行中に作成される結果集合で,その実行が終了するとき,破壊されないもの。 

注記15 そのような結果集合は,それを存在させるようにしたカーソル以外のカーソル(受取りカー

ソル)を用いてアクセスすることができる。 

3.1.6.34 

保存点 (savepoint) 

SQLトランザクション内の点で,保存点名によって識別され,そのSQLトランザクションをそこまで戻

すことができる点。 

3.1.6.35 

(SQL呼出しルーチンの)署名 [signature (of an SQL-invoked routine)] 

SQL呼出しルーチンの名前,そのルーチンの各SQLパラメタの位置及び宣言型,並びにそのルーチンが

SQL呼出し関数か又はSQL呼出し手続かを示す標識。 

3.1.6.36 

SQL引数 (SQL argument) 

SQL呼出しルーチンの呼出しでのSQLパラメタを置き換える値を示す式。 

3.1.6.37 

SQL呼出しルーチン (SQL-invoked routine) 

SQL内からだけ呼び出すことが許されるルーチン。 

3.1.6.38 

SQLパラメタ (SQL parameter) 

SQL呼出しルーチンの署名の部分として宣言するパラメタ。 

3.1.6.39 

SQLルーチン (SQL routine) 

ルーチン本体がSQLで書かれたSQL呼出しルーチン。 

3.1.6.40 

構造型 (structured type) 

属性の集合として指定する利用者定義型。 

3.1.6.41 

11 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(行型の)下位フィールド [subfield (of a row type)] 

行型RTのフィールドか,又はRTの下位フィールドであるフィールドの宣言型である行型RT2のフィ

ールド。 

3.1.6.42 

(データ型の)下位型 [subtype (of a data type)] 

データ型T2の全ての値がデータ型T1の値でもあるようなデータ型T2。 

注記16 T1とT2とが互換でないならば,T2は,T1の真下位型 (proper subtype)。“互換”は,“4.1.4 

データ型の用語”で定義している。上位型も参照。 

3.1.6.43 

(データ型の)上位型 [supertype (of a data type)] 

データ型T2の全ての値がデータ型T1の値でもあるようなデータ型T1。 

注記17 T1とT2とが互換でないならば,T1は,T2の真上位型 (proper supertype)。“互換”は,“4.1.4 

データ型の用語”で定義している。下位型も参照。 

3.1.6.44 

文字変換 (transliteration) 

一つの文字集合中の文字から同じか又は異なる文字集合の文字へ文字を変換する方法。 

3.1.6.45 

型保持関数 (type-preserving function) 

SQL呼出し関数で,そのパラメタの一つが結果SQLパラメタであるもの。 

注記18 型保持関数の呼出しによって戻される値の最特定型は,結果SQLパラメタを置き換えるSQL

引数値の最特定型と同一である。 

3.1.6.46 

利用者定義型 (user-defined type) 

利用者定義のインタフェースをもつデータ型。 

3.1.6.47 

可変長 (variable-length) 

型が文字列型又は2進オクテット列型である格納場所の宣言型の特性で,0と,それぞれ,格納場所の

文字単位又はオクテット単位での最大長として知られている最大数との間の任意の文字数又はオクテット

数をそれらの格納場所の値が含むことを許す特性。 

3.1.6.48 

空白類 (white space) 

字形 (glyph) をもたない一つ以上の文字の連続する並び。 

注記19 空白類は,SQLテキスト中の二つのトークン間に用いることが常に許され,主として,SQL

テキスト中の他のものから<非区切りトークン>を区切るために用いる。 

3.1.6.49 

WITH RETURNカーソル (with-return cursor) 

開かれるとき,戻り結果集合となることができる結果集合を作成するカーソル。 

注記20 <カーソル宣言>,<動的カーソル宣言>及び<拡張動的カーソル割当て文>のWITH RETURN

選択肢が,WITH RETURNカーソルを指定する。WITH RETURNは,動的カーソルとして開

かれるとき,被準備文がWITH RETURNカーソルを作成することを示すために,<PREPARE

12 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

文>中の<属性変数>の内容中で指定してもよい。 

3.1.6.50 

XQuery取り込み部分文字列 (XQuery captured substring) 

[XQueryFO]で規定される取り込み部分文字列。 

3.1.6.51 

XQueryオプションフラグ (XQuery option flag) 

[XQueryFO]で規定されるfn:matchesの$flags引数の正しい値。 

3.1.6.52 

XQuery正規表現 (XQuery regular expression) 

[XQueryFO]で規定される正規表現。 

3.1.6.53 

XQuery正規表現括弧付き部分表現 (XQuery regular expression parenthesized sub-expression) 

[XQueryFO]で規定される正規表現の括弧付き部分表現。 

3.1.6.54 

XQuery置換文字列 (XQuery replacement string) 

[XQueryFO]で規定されるfn:replaceの$replacement引数の正しい値。 

3.2 

表記法 

この細分箇条は,ISO/IEC 9075-14中の“3.2 表記法”によって修正される。 

この規格で用いる表記法は,第1部 [ISO9075-1]で定義する。 

3.3 

規約 

この細分箇条は,ISO/IEC 9075-3の“3.2 規約”によって修正される。 

この細分箇条は,ISO/IEC 9075-4の“3.1 規約”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“3.2 規約”によって修正される。 

この細分箇条は,ISO/IEC 9075-11の“3.1 規約”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“3.2 規約”によって修正される。 

この規格で用いる規約は,次を加え,第1部 [ISO9075-1] で定義する。 

3.3.1 

用語の使用 

この細分箇条は,ISO/IEC 9075-4の“3.1.1 用語の使用”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“3.2.1 用語の使用”によって修正される。 

3.3.1.1 

その他の用語 

この細分箇条は,ISO/IEC 9075-4の“3.1.1.1 その他の用語”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“3.2.1.1 その他の用語”によって修正される。 

SQL文S1が,実行された<外部呼出し手続>又は<SQL呼出しルーチン>に含まれるSQL文ならば,S1

は,SQL文の実行の直接の結果 (direct result of executing an SQL-statement) として実行されるという。 

SQL文S1が,実行された<外部呼出し手続>に含まれる<EXECUTE IMMEDIATE文>によって参照され

る<SQL文変数>の値か,又はS1が,<PREPARE文>によって<SQL文名>と関連付けられた<SQL文変数>

の値で,かつ,その同じ<SQL文名>が,実行された<外部呼出し手続>に含まれる<EXECUTE文>によって

参照されるならば,S1は,SQL文の実行の直接の結果として実行されるという。 

概念 

13 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

この箇条は,ISO/IEC 9075-3の“4 概念”によって修正される。 

この箇条は,ISO/IEC 9075-4の“4 概念”によって修正される。 

この箇条は,ISO/IEC 9075-9の“4 概念”によって修正される。 

この箇条は,ISO/IEC 9075-10の“4 概念”によって修正される。 

この箇条は,ISO/IEC 9075-11の“4 概念”によって修正される。 

この箇条は,ISO/IEC 9075-13の“4 概念”によって修正される。 

この箇条は,ISO/IEC 9075-14の“4 概念”によって修正される。 

4.1 

データ型 

4.1.1 

データ型の一般的な導入 

データ型 (data type) は,表現可能な値の集合とする。全ての表現可能な値は,少なくとも一つのデータ

型に属し,幾つかは,複数のデータ型に属する。データ型の値の物理的な表現は,処理系依存とする。 

値Vのデータ型のうちのただ一つの型,すなわち,Vの最特定型は,Vの全てのデータ型の下位型とす

る。<値式>Eは,Eの評価の可能な全ての結果に共通するただ一つの宣言型をもつ。SQLパラメタ,列,

フィールド,属性,変数など,名前によって参照することができる項目も,宣言型をもつ。 

SQLは,既定義データ型 (predefined data type),構成型 (constructed type) 及び利用者定義型 (user-defined 

type) の3種類のデータ型を提供する。既定義データ型は,この規格ではそう呼ばないが,ときには,“組

込みデータ型 (built-in data type)”とも呼ばれる。利用者定義型は,規格,処理系又は適用業務によって定

義することができる。 

構成型は,SQLのデータ型構成子ARRAY,MULTISET,REF及びROWのうちの一つを用いて指定す

る。構成型は,ARRAY,MULTISET,REF又はROWのどれで指定したかによって,それぞれ,配列型,

マルチ集合型,参照型又は行型のいずれかとする。配列型及びマルチ集合型は,一般に集まり型 (collection 

type) として知られている。 

全ての既定義データ型は,それ自体の下位型とし,他のデータ型の下位型ではない。結果として,全て

の既定義データ型は,それ自体の上位型とし,他のデータ型の上位型ではない。既定義データ型は,“4.2 

文字列”から“4.6 日時及び時間隔”までの各細分箇条で個別に規定する。 

行型,参照型及び集まり型は,それぞれ“4.8 行型”,“4.9 参照型”及び“4.10 集まり型”で規定する。 

利用者定義型は,個別型 (distinct type) 又は構造型 (structured type) のいずれかとする。利用者定義型は,

“4.7 利用者定義型”で規定する。 

4.1.2 

既定義型の名前 

この細分箇条は,ISO/IEC 9075-9の“4.1.1 既定義型の名前”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“4.1.1 既定義型の名前”によって修正される。 

09 14 SQLでは,次の<キーワード>によって既定義データ型の名前を定義する。 

CHARACTER 

CHARACTER VARYING 

CHARACTER LARGE OBJECT 

BINARY 

BINARY VARYING 

BINARY LARGE OBJECT 

NUMERIC 

DECIMAL 

14 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SMALLINT 

INTEGER 

BIGINT 

FLOAT 

REAL 

DOUBLE PRECISION 

BOOLEAN 

DATE 

TIME 

TIMESTAMP 

INTERVAL 

これらの名前は,“9.7 型優先順序リスト決定”で規定する型優先順序リスト (type precedence list) を構

成する型指示子 (type designator) 中で用いる。 

09 14 次のように参照する。 

− データ型CHARACTER, CHARACTER VARYING及びCHARACTER LARGE OBJECTは,まとめて文

字列型 (character string type) として参照し,文字列型の値は,文字列 (character string) として知られ

ている。 

− データ型BINARY,BINARY VARYING及びBINARY LARGE OBJECTは,2進オクテット列型 (binary 

string type) として参照し,2進オクテット列型の値は,2進オクテット列 (binary string) として参照す

る。 

− データ型CHARACTER LARGE OBJECT及びBINARY LARGE OBJECTは,まとめて長大オブジェク

トデータ列型 (large object string type) として参照し,長大オブジェクトデータ列型の値は,長大オブ

ジェクトデータ列 (large object string) として参照する。 

− 文字列型及び2進オクテット列型は,まとめてデータ列型 (string type) として参照し,データ列型の

値は,データ列 (string) として参照する。 

− データ型NUMERIC, DECIMAL, SMALLINT,INTEGER及びBIGINTは,まとめて真数型 (exact numeric 

type) として参照する。 

− データ型FLOAT, REAL及びDOUBLE PRECISIONは,まとめて概数型 (approximate numeric type) と

して参照する。 

− 真数型及び概数型は,まとめて数型 (numeric type) として参照する。数型の値は,数 (number) として

参照する。 

− データ型TIME WITHOUT TIME ZONE及びTIME WITH TIME ZONEは,まとめて時刻型 (time type) 

として(強調が必要なときは,時刻帯付き時刻又は時刻帯なし時刻として)参照する。 

− データ型TIMESTAMP WITHOUT TIME ZONE及びTIMESTAMP WITH TIME ZONEは,まとめて時刻

印型 (timestamp type) として(強調が必要なときは,時刻帯付き時刻印又は時刻帯なし時刻印として)

参照する。 

− データ型DATE,TIME及びTIMESTAMPは,まとめて日時型 (datetime type) として参照する。 

− 日時型の値は,日時 (datetime) として参照する。 

− データ型INTERVALは,時間隔型 (interval type) として参照する。時間隔型の値は,時間隔 (interval)

15 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

と呼ぶ。 

各データ型は,関連付けられたデータ型記述子をもつ。データ型記述子の内容は,それが記述する特定

のデータ型によって決められる。データ型記述子は,データ型の識別,及びそのデータ型の値を特徴づけ

るために必要な全ての情報を含む。 

“6.1 <データ型>”で各データ型の意味特性を記述する。 

4.1.3 

ホスト言語データ型 

この細分箇条は,ISO/IEC 9075-13の“4.7.1 ホスト言語データ型”によって修正される。 

13 各ホスト言語は,それ自体のデータ型をもち,データ型を記述するために類似の名前を用いるかもし

れないが,それらは,SQLのデータ型とは別の異なるデータ型である。ホスト言語のデータ型へのSQLデ

ータ型の対応付けは,“11.60 <SQL呼出しルーチン>”及び“21.1 <SQL埋込みホストプログラム>”で記述

する。全てのSQLデータ型が全てのホスト言語中に対応するデータ型をもつわけではない。 

4.1.4 

データ型の用語 

この細分箇条は,ISO/IEC 9075-9の“4.1.2 データ型の用語”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“4.1.2 データ型の用語”によって修正される。 

宣言型DTの構成要素 (constituent) の概念は,次のように再帰的に定義する。 

− DTは,DTの構成要素とする。 

− DTが行型ならば,DTの各フィールドの宣言型は,DTの構成要素とする。 

− DTが集まり型ならば,DTの要素型は,DTの構成要素とする。 

− DTの構成要素のどの構成要素も,DTの構成要素とする。 

次の条件のいずれか一つが真ならば,データ型TYは,利用者定義型UDTに用途依存 (usage-dependent) 

とする。 

− TYがUDTである。 

− TYが参照型で,かつ,その被参照型がUDTである。 

− TYが行型で,かつ,TYのいずれかのフィールドの宣言型がUDTに用途依存である。 

− TYが集まり型で,かつ,TYの宣言要素型がUDTに用途依存である。 

次のいずれかが真ならば,構造型STは,データ型DTを直接基にする (directly based on)。 

− DTがSTのいずれかの属性の宣言型である。 

− DTがSTの直接上位型である。 

− DTがSTの直接下位型である。 

− DTがSTと互換である。 

データ型DTが集まり型CTの要素型ならば,CTは,DTを直接基にする。 

データ型DTが,行型RTの記述子中に記述子が含まれるいずれかのフィールドの宣言型(又は,いずれ

かのフィールドの定義域のデータ型)ならば,RTは,DTを直接基にする。 

データ型DT1がデータ型DT2と互換か,DT1がDT2を直接基にするか,又はDT2を基にするあるデー

タ型をDT1が直接基にするならば,DT1は,DT2を基にする (based on)。 

二つのデータ型T1及びT2は,T1がT2に代入可能で,T2がT1に代入可能で,かつ,それらの記述子

が同じデータ型名を含むならば,互換 (compatible) であるという。それらが行型ならば,更にそれらの対

16 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

応するフィールドの宣言型が対ごとに互換でなければならない。それらが集まり型ならば,更にそれらの

要素型が互換でなければならない。それらが参照型ならば,更にそれらの被参照型が互換でなければなら

ない。 

注記21 データ型“CHARACTER(n) CHARACTER SET CS1”及び“CHARACTER(m) CHARACTER SET 

CS2”は,CS1≠CS2のとき,同じデータ型名(CHARACTER)を含む記述子をもつが,相互に

代入可能ではない。したがって,これらは,互換ではない。 

既定義データ型の値の順序付け及び比較には,それらの既定義データ型についての知識だけが要求され

る。しかし,構成型又は利用者定義型の値を比較し順序付けることを可能にするためには,追加情報が要

求される。ある型集合Sに対して,ある型Tの値を比較し順序付けるために,S中の少なくとも一つの型

の順序付けについての情報が最初に要求されるならば,型Tは,S順序付けという。S順序付けの定義は,

幾つかのS(すなわち,幾つかの型集合)に対して要求されるが,考えられるそのような全ての集合に対

しては,要求されない。 

S順序付けの一般的な定義は,次による。 

型をTとし,型集合をSとする。次のいずれか一つが真ならば,Tは,S順序付け (S-ordered) とする。 

− TがSの要素である。 

− Tが行型で,かつ,Tのいずれかのフィールドの宣言型がS順序付けである。 

− Tが集まり型で,かつ,Tの要素型がS順序付けである。 

− Tが構造型で,その構造型の比較形式がSTATEで,かつ,Tのいずれかの属性の宣言型がS順序付け

である。 

− Tが利用者定義型で,その利用者定義型の比較形式がMAPで,かつ,その<写像関数指定>によって識

別されるSQL呼出し関数の戻り型がS順序付けである。 

− Tが参照型で,その参照型が導出表現をもち,かつ,その<導出表現>によって列挙されるいずれかの

属性の宣言型がS順序付けである。 

09 14 S順序付けの概念は,次の定義中で適用する。 

− 型TがS順序付けで,Sが長大オブジェクト型の集合ならば,Tは,LOB順序付け (LOB-ordered) と

する。 

− 型TがS順序付けで,Sが配列型の集合ならば,Tは,配列順序付け (array-ordered) とする。 

− 型TがS順序付けで,Sが,元型が配列型である個別型の集合ならば,Tは,配列順序付け とする。 

− 型TがS順序付けで,Sがマルチ集合型の集合ならば,Tは,マルチ集合順序付け (multiset-ordered) 

とする。 

− 型TがS順序付けで,Sが,元型がマルチ集合型である個別型の集合ならば,Tは,マルチ集合順序

付け とする。 

− 型TがS順序付けで,Sが行型の集合ならば,Tは,行順序付け (row-ordered) とする。 

− 型TがS順序付けで,Sが参照型の集合ならば,Tは,参照順序付け (reference-ordered) とする。 

− 型TがS順序付けで,Sが,EQUALS ONLY比較形式をもつ個別型の集合ならば,Tは,DT-EC順序

付け (DT-EC-ordered) とする[DT-ECは,“個別型等値性比較 (distinct type-equality comparison)”を意

味する。]。 

− 型TがS順序付けで,Sが,FULL比較形式をもつ個別型の集合ならば,Tは,DT-FC順序付け (DT-

FC-ordered) とする。 

17 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 型TがS順序付けで,Sが,比較形式をもたない個別型の集合ならば,Tは,DT-NC順序付け (DT-

NC-ordered) とする。 

− 型TがS順序付けで,Sが,EQUALS ONLY比較形式をもつ構造型の集合ならば,Tは,ST-EC順序

付け (ST-EC-ordered) とする。 

− 型TがS順序付けで,Sが,FULL比較形式をもつ構造型の集合ならば,Tは,ST-FC順序付け (ST-

FC-ordered) とする。 

− 型TがS順序付けで,Sが,比較形式をもたない構造型の集合ならば,Tは,ST-NC順序付け (ST-NC-

ordered) とする。 

− 型TがST-EC順序付けか,ST-FC順序付けか,又はST-NC順序付けのいずれかならば,Tは,ST順

序付け (ST-ordered) とする。 

− 型TがDT-EC順序付けか,又はST-EC順序付けのいずれかならば,Tは,UDT-EC順序付け (UDT-

EC-ordered) とする[UDTは,“利用者定義型 (user-defined type)”を意味する。]。 

− 型TがDT-FC順序付けか,又はST-FC順序付けのいずれかならば,Tは,UDT-FC順序付け (UDT-

FC-ordered) とする。 

− 型TがDT-NC順序付けか,又はST-NC順序付けのいずれかならば,Tは,UDT-NC順序付け (UDT-

NC-ordered) とする。 

4.1.5 

異なることの特性 

与えられた文脈内で二つの比較可能な値を区別することが可能ならば,それらは,異なる。 

二つのナル値は,異ならない。 

ナル値とナルでない値とは,異なる。 

“8.15 <DISTINCT述語>”の一般規則が真 (True) を戻すならば,二つのナルでない値は,異なる。 

比較可能な二つの値が異なるかどうかの評価の結果は,決して不定 (Unknown) にはならない。比較可能

でない二つの値(例えば,比較型をもたない利用者定義型の値)が異なるかどうかの評価の結果は,定義

しない。 

4.2 

文字列 

この細分箇条は,ISO/IEC 9075-10の“4.2 文字列”によって修正される。 

4.2.1 

文字列の導入 

文字列は,文字の並びとする。文字列中の全ての文字は,単一の文字集合からの文字とする。文字列は,

長さをもち,その長さは,並び中の文字の個数とする。長さは,0又は正の整数とする。 

文字列型 (character string type) は,文字列型記述子によって記述される。文字列型記述子は,次の項目

を含む。 

− 特定の文字列データ型の名前(CHARACTER,CHARACTER VARYING又はCHARACTER LARGE 

OBJECT。NATIONAL CHARACTER,NATIONAL CHARACTER VARYING及びNATIONAL 

CHARACTER LARGE OBJECTは,それぞれ,CHARACTER,CHARACTER VARYING及び

CHARACTER LARGE OBJECTとして表現される。) 

− 文字列型の文字単位での長さ又は最大長。 

− 文字列型の文字集合のカタログ名,スキーマ名及び文字集合名。 

− 文字列型の照合順のカタログ名,スキーマ名及び照合順名。 

18 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

文字長大オブジェクト型 (character large object type) は,特定の文字列型の名前がCHARACTER LARGE 

OBJECTである文字列型とする。文字長大オブジェクト型の値は,長大オブジェクト文字列とする。 

文字列型の文字集合は,陽に指定しても,暗に想定されてもよい。 

<キーワード>のNATIONAL CHARACTERは,処理系定義の文字集合をもつ文字列型を指定するために

用いる。特殊な構文(Nʼ文字列ʼ)は,その文字集合の定数を表現するために提供される。 

二つの例外があるが,文字列の式は,文字集合が同じ文字列型の格納場所にだけ代入可能とする。それ

らの例外は,“4.2.8 国際文字集合”で規定する場合,及び処理系定義としてもよいようなその他の場合と

する。格納代入で,切捨てによって<空白>でない文字が失われることになるならば,例外条件が引き起こ

される。取出し代入,又は<CAST指定>の評価で,切捨てによって文字が失われることになるならば,警

告条件が引き起こされる。 

文字集合は,次の三つに分類される。各国規格又は国際規格によって定義される文字集合,SQL処理系

によって定義される文字集合,及び適用業務によって定義される文字集合。国際文字集合 (Universal 

Character Set) (UCS) として知られていて,[ISO10646] 及び [Unicode] で規定している文字集合,及びそ

れらの扱いは,“4.2.8 国際文字集合”で記述している。どの文字集合も,(U+0020と等価な)<空白>文字

を含む。適用業務は,文字集合に新しい名前を割り当てることによって,最初の二つの分類のうちの一つ

から文字集合を定義する。それらの文字集合は,適用業務によって選ばれたどのスキーマ中にも “備わっ

ている (reside)”ものとして定義できる。規格又はSQL処理系によって定義された文字集合は,各カタロ

グ中の(INFORMATION̲SCHEMAと名付けられた)情報スキーマ中に備わっており,規格によって定義

された照合順,並びにSQL処理系によって定義された照合順,文字変換及び符号変換も同様とする。 

注記22 情報スキーマは,[ISO9075-11] で規定している。 

4.2.2 

文字列の比較 

二つの文字列が比較可能であることは,それらが同じ文字集合をもつか,又はそれらのそれぞれの文字

集合の両方に適用可能な少なくとも一つの照合順が存在する(これは,文字集合が同じレパートリを共有

するときに限り,あり得る。)かのいずれかであることと同値とする。 

照合順 (collation) は,“二つの文字列が互いに未満,超える又は等しいの関係のうちのただ一つである

ことを決定する方法”として,[ISO14651] で規定されている。SQL環境中で知られている各照合順は,一

つ以上の文字集合に適用可能とし,各文字集合に対して,一つ以上の照合順が適用可能で,それらの照合

順のうちの一つが文字集合照合順 (character set collation) として関連付けられる。 

宣言型が文字列型ならば,その宣言型をもつものは,その文字列型の文字集合に適用可能な照合順と関

連付けることができる。これは,宣言型照合順 (declared type collation) として知られている。文字列型で

あるどの宣言型も,照合順起源をもち,それは,なし (none),暗黙 (implicit) 又は明示 (explicit) のいずれ

かとする。<データ型>によって陽又は暗に指定される宣言型照合順をもつ宣言型の照合順起源は,暗黙と

する。宣言型照合順をもつ宣言型の照合順起源が暗黙でないならば,それは,明示とする。宣言型照合順

をもたない文字列型の式の照合順起源は,なしとする。 

文字列比較を陽又は暗に含む演算は,文字比較演算 (character comparison operation) とする。文字比較

演算のオペランドの少なくとも一つは,宣言型照合順をもたなければならない。 

SQL処理系に知られている幾つか又は全ての文字集合に対して,SQLセション照合順があってもよい

(“4.38 SQLセション”参照。)。 

特定の文字比較で用いる照合順は,“9.15 照合順決定”で規定する。 

二つの文字列式の比較は,比較のために用いる照合順に依存する(“9.15 照合順決定”参照)。長さが等

19 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

しくない値が比較されるとき,比較のための照合順がNO PAD特性をもち,短い方の値が長い方の値の先

頭部分と等しいならば,短い方の値は,長い方の値未満とみなす。比較のための照合順がPAD SPACE特

性をもつならば,その比較のために,短い方の値は,右側に<空白>を連結することによって長い方の長さ

まで実効的に拡張される。 

どの文字集合に対しても,少なくとも一つの照合順がある。 

4.2.3 

文字列を含む演算 

4.2.3.1 

正規表現構文 

この規格は,正規表現のための二つの構文,POSIXに基づく正規表現構文及びXQuery正規表現構文を

利用する。 

POSIXに基づく正規表現構文は,[POSIX] で規定している構文と類似しているが,“8.6 <SIMILAR述語

>”の一般規則で規定として定義している。 

XQuery正規表現構文は,[XQueryFO] で規定として定義している。 

4.2.3.2 

文字列に作用し文字列を戻す演算子 

<連結演算子>は,与えられた順序で文字列オペランドを結合した文字列を戻す演算子 || とする。 

<文字部分列関数>は,数値で与えられた開始位置及び数値で与えられた長さに従って,与えられた文字

列から取り出した文字列を戻す3項関数SUBSTRINGとする。 

<正規表現部分列関数>は,キーワードSIMILAR及びUESCAPEで区別される3項関数SUBSTRINGと

する。その関数は,三つのパラメタ,すなわち,元の文字列,パターン文字列及びエスケープ文字をもつ。

その関数は,POSIXに基づく正規表現を用いたパターン照合によって元の文字列から取り出した結果の文

字列を戻す。 

− 第1段階 (Step 1) :エスケープ文字の長さは,正確に1文字とする。図1“<正規表現部分列関数>の

演算”で示すように,エスケープ文字は,パターン文字列を(R1,R2及びR3として識別される)三

つの部分パターンに分割するために用いる<2重引用符>の二つの実現値に先行する 

− 第2段階 (Step 2) :元の文字列Sが次の述語を満たさないならば,結果は,ナル値とする。 

'S' SIMILAR TO 'R1' || 'R2' || 'R3' 

− 第3段階 (Step 3) :そうでなければ,次の条件を満たす最小で最初のSの部分文字列にS1がなるよ

うに,Sを二つの部分文字列S1及びS23に分割する。 

'S1' SIMILAR TO 'R1' AND 

 'S23' SIMILAR TO '(' || 'R2' || 'R3' || ')' 

− 第4段階 (Step 4) :次に,次の条件を満たす最小で最後の部分文字列にS3がなるように,S23を二つ

の部分文字列S2及びS3に分割する。 

'S2' SIMILAR TO 'R2' AND 'S3' SIMILAR TO 'R3' 

<正規表現部分列関数>の結果は,S2とする。 

background image

20 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

図1−<正規表現部分列関数>の演算 

<SUBSTRING̲REGEX関数>は,XQuery正規表現パターンに対して文字列を探索し,一致する部分文字

列の一つの実現値を戻す関数SUBSTRING̲REGEXとする。 

<TRANSLATE̲REGEX関数>は,XQuery正規表現パターンに対して文字列を探索し,XQuery置換文字

列を用いて,XQuery正規表現パターンの一つ又は全ての実現値を置き換えた文字列を戻す関数

TRANSLATE̲REGEXとする。 

<文字OVERLAY関数>は,数値で与えられた開始位置及び数値で与えられた長さで指定される部分文字

列を(置換文字列と呼ばれる)別の文字列に置き換えることによって,文字列引数を修正する関数

OVERLAYとする。部分文字列の長さが0のときは,その関数によって戻される文字列は,元の文字列か

ら何も取り除かれず,開始位置で元の文字列に置換文字列を挿入した結果とする。 

<大文字小文字変換>は,与えられた文字列中の全ての小文字及びタイトル文字 (title case character) を大

文字に変換する (UPPER) か,又は全ての大文字及びタイトル文字を小文字に変換する (LOWER) 関数の

組とする。小文字は,Unicode一般カテゴリクラス (Unicode General Category class)“Ll”(lower-case letter) 

中の文字とする。大文字は,Unicode一般カテゴリクラス“Lu”(upper-case letter) 中の文字とする。タイト

ル文字は,Unicode一般カテゴリクラス“Lt”(title-case letter) 中の文字とする。 

注記23 大文字小文字の対応は,必ずしも1対1とは限らない。大文字小文字変換の結果は,元の文字

元 

21 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

列と文字単位で異なる長さの文字列であってもよい。例えば,U+00DF,“ß”,Latin Small Letter 

Sharp Sは,大文字に変換したとき,“SS”になる。 

<符号変換>は,与えられた文字列S1から導出される文字列S2を戻すために組込み提供の符号変換を呼

び出す関数とする。この規格で強制はされないが,S2は,S1と正確に同じ文字の並びであるが,異なる文

字符号化形式に従って符号化されていることを意図している。典型的な利用法は,文字列を2オクテット

UCSから1オクテットLatin1に,又はその逆に変換することであってもよい。 

<TRIM関数>は,第1引数の文字列から先行及び/又は後続する詰め込み文字を取り除いた文字列を戻

す関数とする。第2引数は,取り除くべき詰め込み文字が,先行する詰め込み文字か,後続する詰め込み

文字か,又はそれらの両方かを示す。第3引数は,取り除くべき詰め込み文字を指定する。 

<文字文字変換>は,与えられた文字列の各文字を,必ずしも異ならない二つの文字集合の間の多対1又

は1対1の対応付けに従って変換する関数とする。この対応付けは,関数の部分として指定されるのでは

なく,<変換名>で識別される外部関数とする。 

文字集合のどの組に対しても,<文字文字変換>によって呼び出してもよい0個以上の文字変換がある。

文字変換は,文字変換記述子によって記述される。文字変換記述子は,次の項目を含む。 

− 文字変換の名前。 

− 文字変換元の文字集合の名前。 

− 文字変換先の文字集合の名前。 

− 文字変換を実行するSQL呼出しルーチンの特定名。 

4.2.3.3 

文字列を含む他の演算子 

<LENGTH式>は,関数の選択によって文字単位又はオクテット単位で,与えられた文字列の長さを真数

値で戻す。 

<POSITION式>は,ある文字列S1が別の文字列S2の中に現れるならば,その最初の位置を決定する。

S1の長さが0ならば,S2のどの値に対しても結果の位置は,1とする。S1がS2中に現れないならば,0

が戻される。<POSITION式>の宣言型は,真数とする。 

<LIKE述語>は,三つの文字列に対して作用し,ブール値を戻す3項演算子LIKE(又は逆のNOT LIKE)

を用いる。LIKEは,文字列が,与えられた“パターン (pattern)”(これも文字列)と“一致する (match)”

かどうかを決定する。文字<パーセント>及び<下線文字>は,それらがパターン中に現れるとき特殊な意味

をもつ。省略可能な第3引数は,“エスケープ文字”として知られ,<パーセント>,<下線文字>又は“エス

ケープ文字 (escape character)”自体が特殊な意味なしでパターン中に必要なときに用いるただ一つの文字

を含む文字列とする。 

<SIMILAR述語>は,三つの文字列に対して作用し,ブール値を戻す3項演算子SIMILAR(又は逆のNOT 

SIMILAR)を用いる。SIMILARは,POSIXに基づく正規表現を用いて,文字列が,与えられた“パターン”

(これも文字列)と“一致する”かどうかを決定する。そのパターンは,“正規表現 (regular expression)”

の形式でのパターンとする。この正規表現中では,幾つかの文字(<左角括弧>,<右角括弧>,<左括弧>,

<右括弧>,<垂直棒>,<サーカムフレックス>,<負符号>,<正符号>,<アスタリスク>,<下線文字>,<パ

ーセント>,<疑問符>,<左波括弧>)は,特殊な意味をもつ。省略可能な第3引数には,特殊文字又は“エ

スケープ文字”自体が特殊な意味なしでパターン中に必要なときに用いる“エスケープ文字”を指定する。 

<POSITION̲REGEX式>は,XQuery正規表現パターンに対して文字列を探索し,一致した部分文字列の

一つ実現値の開始位置を示す整数,又は1に終了位置を加えた整数を戻す関数POSITION̲REGEXとする。 

22 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<LIKE̲REGEX述語>は,XQuery正規表現照合を実行する述語LIKE̲REGEXとする。 

4.2.3.4 

長大オブジェクト文字列を含む演算 

長大オブジェクト文字列には,全てのデータ列演算を行うことができない。しかし,長大オブジェクト

文字列には,次の演算を行うことができる。 

− <NULL述語>。 

− <LIKE述語>。 

− <SIMILAR述語>。 

− <POSITION式>。 

− <等号演算子>又は<不等号演算子>の<比較述語>。 

− <等号演算子>又は<不等号演算子>の<限定比較述語>。 

これらの制約の結果として,長大オブジェクト文字列は,(他の場所の中でも)次の場所では用いること

ができない。 

− 上記及び<EXISTS述語>以外の述語。 

− <一般集合関数>。 

− <GROUP BY句>。 

− <ORDER BY句>。 

− <一意性制約定義>。 

− <参照制約定義>。 

− DISTINCTの<集合限定子>をもつ<問合せ指定>の<選択リスト>。 

− UNION,INTERSECT及びEXCEPT。 

− <結合表>を構成するときの照合に用いる列。 

 “4.2.3.2 文字列に作用し文字列を戻す演算子”及び“4.2.3.3 文字列を含む他の演算子”内で記述して

いる全ての演算が長大オブジェクト文字列に対して提供される。 

4.2.4 

文字レパートリ 

SQL処理系は,一つ以上の文字レパートリを提供する。これらの文字レパートリは,規格によって定義

されてもよいし,処理系定義であってもよい。 

文字レパートリは,文字レパートリ記述子によって記述される。文字レパートリ記述子は,次の項目を

含む。 

− 文字レパートリの名前。 

− 文字レパートリの既定照合順の名前。 

次の文字レパートリ名を,JIS X 3005 (ISO/IEC 9075) 規格群の部分として規定する。 

− SQL̲CHARACTERは,“5.1 <SQL終端文字>”で規定する88個の<SQL言語文字>から成る文字レパ

ートリとする。既定照合順の名前は,SQL̲CHARACTERとする。 

− GRAPHIC̲IRVは,[ISO646] で規定している国際基準版 (International Reference Version) (IRV) の95個

の図形文字の部分集合から成る文字レパートリとする。そのレパートリは,SQL̲CHARACTERのレ

パートリを真に包含する集合とする。既定照合順の名前は,GRAPHIC̲IRVとする。 

− LATIN1は,[ISO8859-1] で規定している文字レパートリとする。既定照合順の名前は,LATIN1とす

る。 

23 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− ISO8BITは,[ISO8859-1] で規定している文字レパートリと,[ISO6429] で規定している“制御文字”

とを組み合わせることによって構成される文字レパートリとする。このレパートリは,それぞれが正

確に8ビットから成り,数値0に対応する文字を除く全ての制御文字及び全ての図形文字を含むよう

な255個の全ての文字から成る。既定照合順の名前は,ISO 8 BITとする。 

− UCSは,[Unicode] 及びJIS X 0221 [ISO10646] によって規定される国際文字集合 (Universal Character 

Set) のレパートリとする。既定照合順の名前がUCS̲BASICか又はUNICODEかは,処理系定義とす

る。 

− SQL̲TEXTは,全ての<SQL言語文字>と,SQL処理系によって提供される全ての文字集合中の全て

の文字とを含み,国際文字集合のレパートリの処理系定義の部分集合である文字レパートリとする。

既定照合順の名前は,SQL̲TEXTとする。 

− SQL̲IDENTIFIERは,<SQL言語文字>,及び<通常識別子>で用いるためにSQL処理系が提供する他

の全ての文字から成る処理系定義の文字レパートリとする。既定照合順の名前は,SQL̲IDENTIFIER

とする。 

各文字レパートリは,空白類(“3.1.6 第2部で規定する定義”参照)として定義される一つ以上の文字

を含む。 

空白類は,Unicode一般カテゴリクラス (Unicode General Category class)“Zs”,“Z1”及び“Zp”中の文

字に加えて,次の文字のいずれかとする。 

− U+0009, Horizontal Tabulation 

− U+000A, Line Feed 

− U+000B, Vertical Tabulation 

− U+000C, Form Feed 

− U+000D, Carriage Return 

− U+0085, Next Line 

注記24 この規格の規定は,どの文字集合もU+0020(<空白>)を除くこれらの文字のいずれかと等価な

文字を含むことを要求しない。しかし,空白類のこの定義の参照によって,これらのうちのい

ずれかと等価な全ての文字を空白類文字として認識しなければならないことを要求する。 

Unicode一般カテゴリクラス“Zs”,“Z1”及び“Zp”は,それぞれ,空白分離符号 (space separator),行

分離符号 (line separator) 及び段落分離符号 (paragraph separator) であるUnicode文字に割り当てられる。 

Unicode一般カテゴリクラス“Z1”の要素の文字は,U+2028 (Line Separator) だけである。Unicode一般

カテゴリクラス“Zp”の要素の文字は,U+2029 (Paragraph Separator) だけである。Unicode一般カテゴリク

ラス“Zs”の要素の文字は,U+0020 (Space),U+00A0 (No-Break Space),U+1680 (Ogham Space Mark),U+180E 

(Mongolian Vowel Separator),U+2000 (En Quad),U+2001 (Em Quad),U+2002 (En Space),U+2003 (Em Space),

U+2004 (Three-Per-Em Space),U+2005 (Four-Per-Em Space),U+2006 (Six-Per-Em Space),U+2007 (Figure Space),

U+2008 (Punctuation Space),U+2009 (Thin Space),U+200A (Hair Space),U+202F (Narrow No-Break Space),

U+205F (Space, Medium Mathematical) 及びU+3000 (Ideographic Space) である。 

注記25 Unicode一般カテゴリクラス“Zs”,“Z1”及び/又は“Zp”が修正され,新しい文字が追加され

るか又は文字が取り除かれるならば,そのとき,この規格への適合性に影響を与えることなく,

SQL処理系は,これらの修正を実装してもよい。 

24 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4.2.5 

文字符号化形式 

SQL処理系は,提供する各文字レパートリに対して,一つ以上の文字符号化形式を提供する。これらの

文字符号化形式は,規格によって定義されてもよいし,処理系定義であってもよい。 

文字符号化形式は,文字符号化形式記述子によって記述される。文字符号化形式記述子は,次の項目を

含む。 

− 文字符号化形式の名前。 

− 文字符号化形式を適用可能な文字レパートリの名前。 

次の文字符号化形式名を,JIS X 3005 (ISO/IEC 9075) 規格群の部分として規定する。 

− SQL̲CHARACTERは,処理系定義の文字符号化形式とする。これは,SQL̲CHARACTER文字レパー

トリに適用可能とする。 

− GRAPHIC̲IRVは,各文字の符号化表現が [ISO646] で規定される文字符号化形式とする。これは,

GRAPHIC̲IRV文字レパートリに適用可能とする。 

− LATIN1は,[ISO8859-1] で規定される文字符号化形式とする。これは,LATIN1文字レパートリに適

用可能とする。 

− ISO8BITは,[ISO8859-1] で規定され,[ISO6429] で補われた文字符号化形式とする。LATIN1の文字

に制限すると,LATIN1と同じ文字符号化形式とする。これは,ISO 8 BIT文字レパートリに適用可能

とする。 

− UTF32は,JIS X 0221 [ISO10646] で規定され,各文字が4オクテットで符号化される文字符号化形式

とする。これは,UCS文字レパートリに適用可能とする。 

− UTF16は,JIS X 0221 [ISO10646] で規定され,各文字が2又は4オクテットで符号化される文字符号

化形式とする。これは,UCS文字レパートリに適用可能とする。 

− UTF8は,JIS X 0221 [ISO10646] で規定され,各文字が1〜4オクテットで符号化される文字符号化形

式とする。これは,UCS文字レパートリに適用可能とする。 

− SQL̲TEXTは,処理系定義の文字符号化形式とする。これは,SQL̲TEXT文字レパートリに適用可能

とする。 

− SQL̲IDENTIFIERは,処理系定義の文字符号化形式とする。これは,SQL̲IDENTIFIER文字レパート

リに適用可能とする。 

SQL処理系が特定の文字レパートリに対して二つ以上の文字符号化形式を提供するならば,その文字レ

パートリの文字符号化形式の優先順序を規定しなければならない。UCS文字レパートリに適用可能で,こ

の規格で規定する文字符号化形式の優先順序は,次による。 

UTF8 < UTF16 < UTF32 

4.2.6 

照合順 

SQL処理系は,提供する各文字レパートリに対して,一つ以上の照合順を提供し,提供する各文字集合

に対して,一つ以上の照合順を提供する。照合順は,照合順記述子によって記述される。照合順記述子は,

次の項目を含む。 

− 照合順の名前。 

− 照合順を適用可能な文字レパートリの名前。 

− 照合順を適用可能な文字集合の名前のリスト。 

25 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 照合順がNO PAD特性をもつか,又はPAD SPACE特性をもつか。 

次の照合順名を,JIS X 3005 (ISO/IEC 9075) 規格群の部分として規定する。 

− SQL̲CHARACTERは,処理系定義の照合順とする。これは,SQL̲CHARACTER文字レパートリに適

用可能とする。 

− GRAPHIC̲IRVは,[ISO646] で定義される符号位置を符号なし整数として扱うことによって順序付け

が決定される照合順とする。これは,GRAPHIC̲IRV文字レパートリに適用可能とする。 

− LATIN1は,[ISO8859-1] で定義される符号位置を符号なし整数として扱うことによって順序付けが決

定される照合順とする。これは,LATIN1文字レパートリに適用可能とする。 

− ISO8BITは,[ISO8859-1] で定義される符号位置を符号なし整数として扱うことによって順序付けが

決定される照合順とする。LATIN1の文字に制限すると,LATIN1と同じ照合順になる。これは,ISO 

8 BIT文字レパートリに適用可能とする。 

− UCS̲BASICは,文字列中の文字の分類されたUnicodeスカラ値によって順序付けが完全に決定され

る照合順とする。これは,UCS文字レパートリに適用可能とする。どの文字レパートリも,UCSレパ

ートリの部分集合なので,UCS̲BASIC照合順は,どの文字集合にも潜在的に適用可能とする。 

注記26 文字のUnicodeスカラ値は,符号なし整数として扱われるその文字の符号位置である。 

− UNICODEは,[Unicode10] で規定されているとおり,既定Unicode照合順要素表 (Default Unicode 

Collation Element Table) を用いてUnicode照合順アルゴリズム (Unicode Collation Algorithm) を適用す

ることによって,順序付けが決定される照合順とする。これは,UCS文字レパートリに適用可能とす

る。どの文字レパートリも,UCSレパートリの部分集合なので,UNICODE照合順は,どの文字集合

にも潜在的に適用可能とする。 

− SQL̲TEXTは,処理系定義の照合順とする。これは,SQL̲TEXT文字レパートリに適用可能とする。 

− SQL̲IDENTIFIERは,処理系定義の照合順とする。これは,SQL̲IDENTIFIER文字レパートリに適用

可能とする。 

SQL処理系が提供する照合順は,規格定義照合順を含めて,処理系定義とする。 

4.2.7 

文字集合 

この細分箇条は,ISO/IEC 9075-10の“4.2.2 文字集合”によって修正される。 

規格,SQL処理系又は利用者によって定義される文字集合名をSQLの<文字集合指定>によって参照す

ることができる。 

文字集合は,文字集合記述子によって記述される。文字集合記述子は,次の項目を含む。 

− 文字集合の名前。 

− 文字集合の文字レパートリの名前。 

− 文字集合の文字符号化形式の名前。 

− 文字集合の既定照合順の名前。 

10 次の文字集合名を,JIS X 3005 (ISO/IEC 9075) 規格群の部分として規定する。 

− 

10 SQL̲CHARACTERは,レパートリがSQL̲CHARACTERで,文字符号化形式がSQL̲CHARACTER

である文字集合とする。既定照合順の名前は,SQL̲CHARACTERとする。 

− GRAPHIC̲IRVは,レパートリがGRAPHIC̲IRVで,文字符号化形式がGRAPHIC̲IRVである文字集

合とする。既定照合順の名前は,GRAPHIC̲IRVとする。 

background image

26 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− ASCII̲GRAPHICは,GRAPHIC̲IRVの同義語とする。 

− LATIN1は,レパートリがLATIN1で,文字符号化形式がLATIN1である文字集合とする。既定照合順

の名前は,LATIN1とする。 

− ISO8BITは,レパートリがISO8BITで,文字符号化形式がISO8BITである文字集合とする。既定照合

順の名前は,ISO8BITとする。 

− ASCII̲FULLは,ISO8BITの同義語とする。 

− UTF32は,レパートリがUCSで,文字符号化形式がUTF32である文字集合とする。既定照合順の名

前がUCS̲BASICか又はUNICODEかは,処理系定義とする。 

− UTF16は,レパートリがUCSで,文字符号化形式がUTF16である文字集合とする。既定照合順の名

前がUCS̲BASICか又はUNICODEかは,処理系定義とする。 

− UTF8は,レパートリがUCSで,文字符号化形式がUTF8である文字集合とする。既定照合順の名前

がUCS̲BASICか又はUNICODEかは,処理系定義とする。 

− SQL̲TEXTは,レパートリがSQL̲TEXTで,文字符号化形式がSQL̲TEXTである文字集合とする。

既定照合順の名前は,SQL̲TEXTとする。 

− SQL̲IDENTIFIERは,レパートリがSQL̲IDENTIFIERで,文字符号化形式がSQL̲IDENTIFIERであ

る文字集合とする。既定照合順の名前は,SQL̲IDENTIFIERとする。 

最特定型が文字集合CSをもつ文字列式の評価の結果は,CSの文字レパートリから取り出される文字か

ら成るように制約される。 

表1−文字集合の概要 

文字集合 

文字レパートリ 

文字符号化形式 

照合順 

同義語 

GRAPHIC̲IRV 

GRAPHIC̲IRV 

GRAPHIC̲IRV 

GRAPHIC̲IRV 

ASCII̲GRAPHIC 

ISO8BIT 

ISO8BIT 

ISO8BIT 

ISO8BIT 

ASCII̲FULL 

LATIN1 

LATIN1 

LATIN1 

LATIN1 

SQL̲CHARACTER 

SQL̲CHARACTER 

SQL̲CHARACTER 

SQL̲CHARACTER 

SQL̲TEXT 

SQL̲TEXT 

SQL̲TEXT 

SQL̲TEXT 

SQL̲IDENTIFIER 

SQL̲IDENTIFIER 

SQL̲IDENTIFIER 

SQL̲IDENTIFIER 

UTF16 

UCS 

UTF16 

UCS̲BASIC又はUNICODE  

UTF32 

UCS 

UTF32 

UCS̲BASIC又はUNICODE  

UTF8 

UCS 

UTF8 

UCS̲BASIC又はUNICODE  

注記27 SQL処理系は,追加の文字集合を提供してもよく,この規格で規定する文字集合に対して追加の文字符号化

形式及び照合順を提供してもよい。 

4.2.8 

国際文字集合 

UCS文字列 (UCS string) は,文字レパートリがUCSで,文字符号化形式がUTF8,UTF16又はUTF32

のうちの一つである文字列とする。どの二つのUCS文字列も,比較可能とする。 

SQL処理系は,全てのUCS文字列が,[Unicode15] で規定されている正規化形式C (Normalization Form 

C) (NFC),正規化形式D (Normalization Form D) (NFD),正規化形式KC (Normalization Form KC) (NFKC) 又

は正規化形式KD (Normalization Form KD) (NFKD) のうちの一つで正規化されていると仮定してもよい。

<NORMALIZED述語>は,特定のUCS文字列が適合する正規化形式を確かめるために用いてもよい。適用

業務は,特定の<正規形式>にするために,<NORMALIZE関数>を用いてもよい。<NORMALIZE関数>及び

<NORMALIZED述語>を除いて,非正規化UCS文字列に関するどの操作の結果も,処理系定義とする。 

27 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ある文字集合から別の文字集合へのUCS文字列の変換は,自動的に行われる。 

UCS文字列中の非文字の検知は,例外条件を引き起こさせる。割り当てられていない符号位置の検知は,

行われない。 

4.3 

2進オクテット列 

4.3.1 

2進オクテット列の導入 

2進オクテット列 (binary string) は,それに関連付けられる文字集合も照合順ももたないオクテットの

並びとする。 

2進オクテット列型は,2進オクテット列型記述子によって記述される。2進オクテット列型記述子は,

次の項目を含む。 

− データ型の名前 (BINARY,BINARY VARYING又はBINARY LARGE OBJECT)。 

− 2進オクテット列型のオクテット単位での長さ又は最大長。 

2進オクテット列は,2進オクテット列型の格納場所にだけ代入可能とする。格納代入で,切捨てによっ

て0でないオクテットが失われることになるならば,例外条件が引き起こされる。取出し代入で,切捨て

によってオクテットが失われることになるならば,警告条件が引き起こされる。 

4.3.2 

2進オクテット列の比較 

全ての2進オクテット列の値は,比較可能とする。長大オブジェクト2進オクテット列の値が比較され

るとき,等しいとみなされるためには,それらは,(オクテット単位で)正確に同じ長さをもたなければな

らない。長大オブジェクト2進オクテット列の値は,等値性のためだけに比較することができる。 

長大オブジェクト2進オクテット列値以外の2進オクテット列値に対して,等価でない二つの2進オク

テット列値を比較するとき,後続するXʼ00ʼを意味があるとみなすかどうかは,処理系定義とする。 

4.3.3 

2進オクテット列を含む演算 

4.3.3.1 

2進オクテット列に作用し,2進オクテット列を戻す演算子 

<2進オクテット連結>は,与えられた順序で2進オクテット列オペランドを結合した2進オクテット列

を戻す演算子 ‖ とする。 

<2進オクテット部分列関数>は,引数及び戻り値が全て2進オクテット列であることを除いて,<文字部

分列関数>と同一の構文及び意味をもつ3項関数とする。 

<2進オクテットOVERLAY関数>は,第1引数,第2引数及び戻り値が全て2進オクテット列であるこ

とを除いて,<文字OVERLAY関数>と同一の構文及び意味をもつ関数とする。 

<2進オクテットTRIM関数>は,引数及び戻り値が全て2進オクテット列であることを除いて,<TRIM

関数>と同一の構文及び意味をもつ関数とする。 

4.3.3.2 

2進オクテット列を含む他の演算子 

<LENGTH式>は,与えられた2進オクテット列のオクテット単位での長さを真数値として戻す。 

<POSITION式>は,2進オクテット列に適用されるとき,そのオペランドが2進オクテット列であるこ

とを除いて,文字列での対応する演算と同一の構文及び意味をもつ。 

<LIKE述語>は,2進オクテット列に適用されるとき,そのオペランドが2進オクテット列であることを

除いて,文字列に関する対応する演算と同一の構文及び意味をもつ。 

長大オブジェクト2進オクテット列は,次の演算中で用いることができない。 

− <等号演算子>又は<不等号演算子>の<比較述語>,<等号演算子>又は<不等号演算子>の<限定比較述 

語>,及び<EXISTS述語>以外の述語。 

28 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− <一般集合関数>。 

− <GROUP BY句>。 

− <ORDER BY句>。 

− <一意性制約定義>。 

− <参照制約定義>。 

− DISTINCTの<集合限定子>をもつ<問合せ指定>の<選択リスト>。 

− UNION,INTERSECT及びEXCEPT。 

− <結合表>を構成するときの照合に用いる列。 

4.4 

数 

4.4.1 

数の導入 

数は,真数値か又は概数値のいずれかとする。どの二つの数も,比較可能とする。 

数型は,数型記述子によって記述される。数型記述子は,次の項目を含む。 

− 特定の数型の名前(NUMERIC,DECIMAL,SMALLINT,INTEGER,BIGINT,FLOAT,REAL又は

DOUBLE PRECISION)。 

− 数型の実装上の精度。 

− 真数型に対して,数型の実装上の位取り。 

− 精度(及び位取り)が10進で表現されるか又は2進で表現されるかを示す標識。 

− 宣言で用いられた数型の名前(ただし,INT又はDECが指定されたならば,それに対応する完全な名

前。)。 

− あるならば,数型の陽に宣言された精度。 

− 真数型に対して,あるならば,数型の陽に宣言された位取り。 

精度又は位取りが陽に指定されないならば,記述子の対応する要素は,ナル値を実効的に含む。 

“6.1 <データ型>”の構文規則で許される同じ精度,位取り及び基数を幾つかの<真数型>がもつならば,

SQL処理系は,それらの<真数型>を等価であるとみなすことができる。二つ以上の<真数型>が等価である

とき,SQL処理系は,<真数型>のその等価な種類を表現する標準形 (normal form) として,これらの等価

な<真数型>のうちの一つを選択する。標準形は,数型記述子中の真数型の名前を決定する。 

同様に,SQL処理系は,“6.1 <データ型>”の構文規則で許される幾つかの<概数型>を等価であるとみな

すことができる。その場合,SQL処理系は,<概数型>のそれぞれの等価な種類を表現するために標準形を

選択し,標準形は,概数型の名前を決定する。 

どの数型も,最小値は,0より小さく,最大値は,0より大きい。 

4.4.2 

数の性質 

真数型は,精度P及び位取りSをもつ。Pは,特定の基数Rで有効桁数を決定する正の整数とする。こ

こで,Rは,2又は10のいずれかとする。Sは,負でない整数とする。位取りSの真数型のどの値も,式

n×10-Sの値とする。ここで,nは,−RP ≤ n < RPであるような整数とする。 

注記28 その範囲中の全ての値が,必ずしもその型の値である必要はない。 

概数値は,仮数及び指数から成る。仮数は,符号付き数値とし,指数は,仮数の大きさを指定する符号

付き整数とする。概数値は,精度をもつ。精度は,仮数の有効2進桁数を指定する正の整数とする。概数

値は,指数によって決定される因子を,仮数に乗じた値とする。 

<概数定数> ANLは,(<仮数>と呼ばれる)<真数定数>,文字ʼEʼ又はʼeʼ,及び(<指数>と呼ばれる)符

29 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

号付き整数から成る。Mが<仮数>の値で,Eが<指数>の値ならば,M *10Eは,ANLの見掛けの値 (apparent 

value) とする。ANLの実際の値は,処理系定義の規則に従ったANLの見掛けの値の近似とする。 

数は,数型の格納場所にだけ代入可能とする。ある数の代入で,その最上位有効桁が失われることにな

るならば,例外条件が引き起こされる。最下位有効桁が失われるならば,例外条件を引き起こさないで,

処理系定義の丸め又は切捨てが発生する。算術の規則は,“6.27 <数値式>”で規定する。 

真数値又は概数値が真数値の格納場所に代入されるときはいつでも,丸め又は切捨て後に上位有効桁を

保持するその値の近似が相手の宣言型で表現される。値は,相手の精度及び位取りをもつように変換され

る。切り捨てるか又は丸めるかの選択は,処理系定義とする。 

<真数型> Tに対する数値Nの切捨てによって得られる近似は,T中の次のような値Vとする。NがV

より0に近くなく,かつ,VとNとの間にT中の値が存在しない。 

<真数型> Tに対する数値Nの丸めによって得られる近似は,T中の次のような値Vとする。Nと数値V

との差の絶対値がT中の二つの連続する数値間の差の絶対値の半分以下である。そのような値Vが二つ以

上あるならば,どれをとるかは,処理系定義とする。 

与えられた真数型中の最小値と最大値との間の全ての数値は,最小値及び最大値を含めて,その型に対

する丸め又は切捨てによって得られる近似をもつ。他のどの数値がそのような近似をもつかは,処理系定

義とする。 

<概数型> Tに対する数値Nの切捨て又は丸めによって得られる近似は,T中の次のような値Vとする。

数値VとNとの間にある数値で,Vとは異なる数値がT中に存在しない。 

そのような値Vが二つ以上あるならば,どれをとるかは,処理系定義とする。与えられた概数型に対し

てどの数値が丸め又は切捨てによって得られる近似をもつかは,処理系定義とする。 

真数値又は概数値が概数値の格納場所に代入されるときはいつでも,その値の近似が相手の宣言型で表

現される。値は,相手の精度をもつように変換される。 

数の演算は,“6.27 <数値式>”で規定する場合を除いて,処理系定義の制限の範囲内で,算術の通常の規

則に従って実行される。 

4.4.3 

数を含む演算 

通常の算術演算子の和,差,積,商,単項プラス及び単項マイナスと同様に,数を戻す次の関数がある。 

− <POSITION式>(“4.2.3 文字列を含む演算”及び“4.3.3 2進オクテット列を含む演算”参照)は,引

数として二つのデータ列をとり,整数を戻す。 

− <LENGTH式>(“4.2.3 文字列を含む演算”及び“4.3.3 2進オクテット列を含む演算”参照)は,デー

タ列の引数に作用し,整数を戻す。 

− <EXTRACT式>(“4.6.4 日時及び時間隔を含む演算”参照)は,日時又は時間隔の引数に作用し,真

数を戻す。 

− <基数式>(“4.10.5 配列を含む演算”及び“4.10.6 マルチ集合を含む演算”参照)は,集まりの引数に

作用し,整数を戻す。 

− <最大基数式>(“4.10.5 配列を含む演算”参照)は,配列の引数に作用し,整数を戻す。 

− <絶対値式>は,数の引数に作用し,同じ最特定型でその絶対値を戻す。 

− <剰余式>は,位取りが0の二つの真数の引数に作用し,第1引数を第2引数で除した剰余(余り)を

位取り0の真数として戻す。 

− <自然対数>は,引数の自然対数を計算する。 

− <指数関数>は,指数関数を計算,すなわち,e(自然対数の底)を引数でべき乗する。 

background image

30 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− <べき関数>は,第1引数を第2引数でべき乗する。 

− <平方根>は,引数の平方根を計算する。 

− <下限関数>は,引数以下の最大の整数を計算する。 

− <上限関数>は,引数以上の最小の整数を計算する。 

− <幅バケット関数>は,四つの引数をもち,第2引数と第3引数との間の数の範囲の均等幅の区間に最

初の引数を当てはめることによって,0と最後の引数に1を加えた値との間の整数を戻す関数とする。

第2引数と第3引数との間の範囲外の値には,0か又は最後の引数に1を加えた値が割り当てられる。 

注記29 図2“WIDTH̲BUCKETの意味の図解”で<幅バケット関数>の意味を示す。 

図2−WIDTH̲BUCKETの意味の図解 

4.5 

ブール型 

4.5.1 

ブール型の導入 

ブールデータ型は,異なる真理値の真 (True) 及び偽 (False) を含む。NOT NULL制約によって禁止され

ない限り,ブールデータ型は,ナル値として,真理値の不定 (Unknown) も提供する。この規定では,ブー

ルデータ型のナル値と,SQLの<述語>,<探索条件>又は<ブール値式>の結果の真理値である不定 とを区

別しない。それらは,正確に同じものを意味するため,交換可能なものとして用いてもよい。 

ブールデータ型は,ブールデータ型記述子によって記述される。ブールデータ型記述子は,次の項目を

含む。 

− ブールデータ型の名前 (BOOLEAN) 

4.5.2 

ブール値の比較及び代入 

全てのブール値及びSQL真理値は,比較可能とし,ブール型の格納場所に代入可能とする。真 の値は,

偽 の値よりも大きい。ナル値を含むどの比較も,不定 の真理値も,不定 の結果を戻す。真 及び偽 の値

は,ブールデータ型をもつどの格納場所に代入してもよい。不定 又はナル値の代入は,相手のナル可能特

性に従う。 

4.5.3 

ブール値を含む演算 

4.5.3.1 

ブール値を戻すブール値の演算 

単項ブール演算子NOT,並びに2項ブール演算子AND及びORは,ブール値のオペランドをとり,ブ

ール値の結果を戻す(表11“ANDブール演算子のための真理値表”及び表12“ORブール演算子のための

真理値表”参照)。 

4.5.3.2 

ブール値を含む他の演算子 

31 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SQLのどの<述語>,<探索条件>及び<ブール値式>も,ブール値の結果を戻す演算子とみなしてもよい。 

4.6 

日時及び時間隔 

4.6.1 

日時及び時間隔の導入 

日時データ型は,日時データ型記述子によって記述される。時間隔データ型は,時間隔データ型記述子

によって記述される。 

日時データ型記述子は,次の項目を含む。 

− 特定の日時データ型の名前(DATE,TIME WITHOUT TIME ZONE,TIMESTAMP WITHOUT TIME ZONE,

TIME WITH TIME ZONE又はTIMESTAMP WITH TIME ZONE)。 

− TIME WITHOUT TIME ZONE,TIMESTAMP WITHOUT TIME ZONE,TIME WITH TIME ZONE又は

TIMESTAMP WITH TIME ZONE型ならば,<時刻小数秒精度>の値。 

時間隔データ型記述子は,次の項目を含む。 

− 時間隔データ型の名前 (INTERVAL)。 

− 時間隔データ型が年月時間隔か又は日時刻時間隔かを示す標識。 

− 時間隔データ型の精度を記述する<時間隔修飾子>。 

時間隔データ型の値は,常に符号付きとする。 

どの日時データ型又は時間隔データ型も,暗に想定される位置単位での長さ (length in positions) をもつ。

ある日時データ型又は時間隔データ型DTの値をDで示す。DTの位置単位での長さは,全てのDに対し

て一定とする。位置単位での長さは,与えられた日時データ型又は時間隔データ型の任意の値を表現する

ためにとられる文字集合SQL̲TEXTでの文字の個数とする。 

日時型又は時間隔型Tに対する日時又は時間隔の値Dの丸めによって得られる近似は,T中の次のよう

な値Vとする。Dと数値Vとの間の差の絶対値がT中の二つの連続する日時又は時間隔の値の間の差の絶

対値の半分以下である。そのような値Vが二つ以上あるならば,どれをとるかは,処理系定義とする。 

注記30 この規格で結合を規定するどのホスト言語にも,この規格で規定する日時及び時間隔のデータ

型に対応するデータ型はない。それらの言語の一つで書かれた適用業務プログラムがSQL処理

系からホスト言語プログラムにこれらのデータ型の値を受け渡さなければならないときには,

そのホスト言語が対応するデータ型をもつ,あるデータ型の値にそれらの値を変換しなければ

ならない。ある文字列型の値にこれらのデータ型の値を変換するために,<CAST指定>の規則

が典型的に用いられる。このような値をホストプログラムからSQL処理系に受け渡すときも,

同様の解決が必要となる。 

4.6.2 

日時 

表2“日時値中のフィールド”は,日時値を構成できるフィールドを規定する。日時値は,これらのフィ

ールドの部分集合から成る。示された全てのフィールドが部分集合中に必要なわけではないが,最初に含

まれる<基本日時フィールド>と最後に含まれる<基本日時フィールド>との間の表中に現れる全てのフィ

ールドも,含まれなければならない。<時刻帯フィールド>のいずれかが部分集合に含まれるならば,それ

らの両方が含まれなければならない。 

background image

32 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表2−日時値中のフィールド 

キーワード 

意味 

YEAR 

年 

MONTH 

年の中の月 

DAY 

月の中の日 

HOUR 

日の中の時 

MINUTE 

時の中の分 

SECOND 

分の中の秒及び場合によって小数秒 

TIMEZONE̲HOUR 

時刻帯時差の時の値 

TIMEZONE̲MINUTE 

時刻帯時差の分の値 

<基本日時フィールド>には,有効順序がある。その順序は,最上位有効から最下位有効へ,YEAR,MONTH,

DAY,HOUR,MINUTE及びSECONDの順とする。 

SECOND以外の<基本日時フィールド>は,グレゴリオ暦を用いた日付の自然な規則に従った負でない整

数値を含む。しかし,SECONDは,秒値中の小数点以下の小数の桁数を示す負でない真数値の<時刻小数

秒精度>をもつように定義することができる。 

この規格では,3種類の日時データ型を規定する。 

− DATE − <基本日時フィールド> YEAR,MONTH及びDAYを含む。 

− TIME − <基本日時フィールド> HOUR,MINUTE及びSECONDを含む。 

− TIMESTAMP − <基本日時フィールド> YEAR,MONTH,DAY,HOUR,MINUTE及びSECOND

を含む。 

日時型の項目は,それらが同じ<基本日時フィールド>をもつときに限り,比較可能とする。 

WITH TIME ZONEを指定する日時データ型は,時刻帯付き日時 (datetime with time zone) のデータ型と

するが,WITHOUT TIME ZONEを指定する日時型は,時刻帯なし日時 (datetime without time zone) のデー

タ型とする。 

地球上の表面は,時刻帯と呼ばれる地域に分割され,その中では,全ての正確な時計が地方時刻 (local 

time) として知られている同じ時刻を示す。地方時刻は,UTC(協定世界時)に時刻帯時差 (time zone 

displacement) を加えた時刻と等しい。その時刻帯時差は,INTERVAL'-14:00' HOUR TO MINUTEと

INTERVAL'+14:00' HOUR TO MINUTEとの間の範囲の時間隔の値とする。この時刻帯時差は,時刻帯の中

全体で一定であり,夏時間を適用するところでは夏時間の最初及び最後に変更される。 

データ型TIME WITHOUT TIME ZONE又はTIMESTAMP WITHOUT TIME ZONEの日時値は,地方時刻

を表してもよい。これに対して,データ型TIME WITH TIME ZONE又はTIMESTAMP WITH TIME ZONE

の日時値は,UTCを表す。 

UTCは,恒星時との一致を図るために,秒の省略又は“うるう秒 (leap second)”の挿入によって調整さ

れる。これによって,非常にまれ(希)ではあるが,特定の分が厳密には59秒,61秒又は62秒含むこと

がある。SQL処理系がうるう秒を提供するかどうか,及びそれが日時及び時間隔の算術演算の結果に反映

されるかどうかは,処理系定義とする。 

利用者の便宜のため,時刻帯付き日時値が時刻帯なし日時値から暗に導出されるべきときに(例えば,

単純な代入操作において)はいつでも,SQLは,時刻帯なし日時値を地方時刻として想定し,UTCを求め

るために,その日時値からSQLセションの現行既定時刻帯時差を差し引いて,その結果とその時刻帯時差

を関連付ける。 

background image

33 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

逆に,時刻帯なし日時値が時刻帯付き日時値から暗に導出されるべきときにはいつでも,SQLは,時刻

帯付き日時値をUTCとして想定し,地方時刻を求めるために,その日時値に時刻帯時差を加えて,その結

果は,時刻帯時差なしで,地方時刻とする。 

<CAST指定>によって実装される上記の原理は,表3“日時データ型の変換”にまとめた様々な日時デ

ータ型の間のデータ型変換になる。 

表3−日時データ型の変換 

変換相手 

DATE 

TIME 
WITHOUT 
TIME ZONE  

TIME WITH 
TIME ZONE 

TIMESTAMP 
WITHOUT 
TIME ZONE 

TIMESTAMP 
WITH 
TIME ZONE 


DATE 

自明 

提供されない 

提供されない 

年月日を複写。時分
秒に0を設定。 

SV⇒TSw/oTZ 

⇒TSw/TZ 

TIME 
WITHOUT 
TIMEZONE 

提供されない 自明 

TV.UTC = 

 SV-STZD 

(24を法とする)。 

TV.TZ=STZD 

CURRENT̲DATEか
ら日付フィールド
に,SVから時刻フィ
ールドに複写。 

SV⇒TSw/oTZ 

⇒TSw/TZ 

TIME WITH 
TIMEZONE 

提供されない SV.UTC+SV.TZ 

(24を法とする) 

自明 

SV⇒TSw/TZ 

⇒TSw/oTZ 

CURRENT̲DATE
から日付フィール
ドに,SVから時刻
及び時刻帯フィー
ルドに複写。 

TIMESTAMP
WITHOUT 
TIMEZONE 

SVから日付

フィールドを
複写 

SVから時刻フィ

ールドを複写 

SV⇒TSw/TZ 

⇒TIMEw/TZ 

自明 

TV.UTC = 

 SV-STZD ; 

TV.TZ=STZD 

TIMESTAMP 
WITH 
TIMEZONE 

SV⇒TSw/oTZ 

⇒DATE 

SV⇒TSw/oTZ 

⇒TIMEw/oTZ 

SVから時刻及び

時刻帯フィール
ドを複写 

SV.UTC + SV.TZ 

自明 

ここで,記号の意味は,次のとおりとする。 

SV 

変換元の値。 

TV 

変換相手の値。 

UTC 

SV又はTVのUTC構成要素(変換元又は変換相手が時刻帯をもつ場合)。 

TZ 

SV又はTVの時刻帯時差(変換元又は変換相手が時刻帯をもつ場合)。 

STZD 

SQLセションの既定時刻帯時差。 

⇒ 

矢印の前の型から後の型への型変換を意味する。 

TIMEw/TZ 

TIME WITH TIME ZONE。 

TIMEw/oTZ 

TIME WITHOUT TIME ZONE。 

TSw/TZ 

TIMESTAMP WITH TIME ZONE。 

TSw/oTZ 

TIMESTAMP WITHOUT TIME ZONE。 

代入元及び代入相手が両方ともDATE型,(WITH TIME ZONE若しくはWITHOUT TIME ZONEが,指

定されるか若しくは暗に想定されるかどうかにかかわらず,)両方ともTIME型,又は(WITH TIME ZONE

若しくはWITHOUT TIME ZONEが,指定されるか若しくは暗に想定されるかどうかにかかわらず,)両方

ともTIMESTAMP型のときに限り,日時は,格納場所に代入可能とする。 

4.6.3 

時間隔 

時間隔 (interval) には,2種類ある。1種類は,年月 (year-month) 時間隔と呼ばれ,陽に指定されるか又

は暗に想定される時間隔精度をもち,YEAR及びMONTH以外のフィールドを含まないが,YEAR及び

background image

34 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

MONTHの両方を含む必要はない。もう1種類は,日時刻 (day-time) 時間隔と呼ばれ,陽に指定されるか

又は暗に想定される時間隔精度をもち,YEAR又はMONTH以外の任意のフィールドを含む。 

表4“年月INTERVALの値中のフィールド”が年月時間隔を構成するフィールドを規定する。年月時間

隔は,これらのフィールドの連続する部分集合から成る。 

表4−年月INTERVALの値中のフィールド 

キーワード 

意味 

YEAR 

年数 

MONTH 

月数 

表5“日時刻INTERVALの値中のフィールド”が日時刻時間隔を構成するフィールドを規定する。日時

刻時間隔は,これらのフィールドの連続する部分集合から成る。 

表5−日時刻INTERVALの値中のフィールド 

キーワード 

意味 

DAY 

日数 

HOUR 

時数 

MINUTE 

分数 

SECOND 

秒数及び場合によって小数秒数 

時間隔のいずれかの型の値を構成するフィールドの実際の部分集合は,<時間隔修飾子>によって定義さ

れ,この部分集合がその値の精度として知られている。 

時間隔型の値の中で,最初のフィールドは,関連付けられた<時間隔修飾子>の<時間隔先行フィールド

精度>によってだけ制約される。表6“INTERVALの値中のフィールドに対する正しい値”が後に続くフィ

ールドの値に対する制約を規定する。 

表6−INTERVALの値中のフィールドに対する正しい値 

キーワード 

INTERVALフィールドの正しい値 

YEAR 

<時間隔先行フィールド精度>によるものを除き制約なし 

MONTH 

(年の中の)月数 (0-11) 

DAY 

<時間隔先行フィールド精度>によるものを除き制約なし 

HOUR 

(日の中の)時数 (0-23) 

MINUTE 

(時の中の)分数 (0-59) 

SECOND 

(分の中の)秒数 (0-59.999...) 

SECOND以外の時間隔フィールドの値は,整数とし,最初のフィールドでないとき,その精度は,2と

する。しかし,SECONDは,秒数値中の小数点以下の小数の桁数を示す<時間隔小数秒精度>をもつように

定義することができる。最初のフィールドでないとき,SECONDの小数点より上位の精度は,2とする。 

時間隔型の項目を構成するフィールドは,グレゴリオ暦の定義によっても制約される。 

年月時間隔は,他の年月時間隔とだけ比較可能とする。二つの年月時間隔が異なる時間隔精度をもつな

らば,それらの間のどの演算のためにも,一方の年月時間隔の最上位有効フィールド若しくは一方の年月

時間隔の最下位有効フィールドのいずれか,又はその両方に新しい<基本日時フィールド>を追加すること

によって同じ精度に実効的に変換される。新しい最下位有効<基本日時フィールド>には,値0が代入され

る。新しい最上位有効日時フィールドを追加する必要があるとき,関連する値は,グレゴリオ暦の日付及

background image

35 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

び時刻の自然な規則に従う方法で新しい精度に実効的に変換される。 

日時刻時間隔は,他の日時刻時間隔とだけ比較可能とする。二つの日時刻時間隔が異なる時間隔精度を

もつならば,それらの間のどの演算のためにも,一方の日時刻時間隔の最上位有効フィールド若しくは一

方の日時刻時間隔の最下位有効フィールドのいずれか,又はその両方に新しい<基本日時フィールド>を追

加することによって同じ精度に実効的に変換される。新しい最下位有効<基本日時フィールド>には,値0

が代入される。新しい最上位有効日時フィールドを追加する必要があるとき,関連する値は,グレゴリオ

暦の日付及び時刻の自然な規則に従う方法で新しい精度に実効的に変換される。 

4.6.4 

日時及び時間隔を含む演算 

表7“日時及び時間隔を含む有効な演算子”は,日時及び時間隔のオペランドを含む算術式の宣言型を

規定する。 

表7−日時及び時間隔を含む有効な演算子 

第1オペランド 

演算子 

第2オペランド 

結果の型 

日時 

− 

日時 

時間隔 

日時 

+又は− 

時間隔 

日時 

時間隔 

+ 

日時 

日時 

時間隔 

+又は− 

時間隔 

時間隔 

時間隔 

*又は/ 

数 

時間隔 

数値 

時間隔 

時間隔 

日時型又は時間隔型の値を含む算術演算は,日付及び時刻の自然な規則に従い,グレゴリオ暦に従った

正しい日時又は時間隔の結果をもたらす。 

日時型の値を含む演算は,日時値が比較可能であることを要求する。時間隔型の値を含む演算は,時間

隔値が比較可能であることを要求する。 

日時及び時間隔を含む演算は,日時オペランドの時刻帯を保存する。日時オペランドが時刻帯時差を含

まないならば,結果は,時刻帯時差をもたない。 

<OVERLAPS述語>は,演算子OVERLAPSを用いて,二つの時間上の期間が時刻で重なっているかどう

かを決定する。時間上の期間は,(始まり及び終わりの)日時の組,又は始まりの日時及び時間隔のいずれ

かとして指定する。期間の長さが0より大きいならば,その期間は,下端点以上で,かつ,上端点未満の

全ての時点から成る。期間の長さが0と等しいならば,その期間は,下端点の単一の時点から成る。二つ

の期間が少なくとも一つの時点を共有するならば,それらの期間は,重なる。 

<EXTRACT式>は,日時又は時間隔に作用し,日時又は時間隔の一つの構成要素の値を表現する真数値

を戻す。 

<時間隔絶対値関数>は,時間隔の引数に作用し,それと同じ最特定型で絶対値を戻す。 

4.7 

利用者定義型 

4.7.1 

利用者定義型の導入 

この細分箇条は,ISO/IEC 9075-13の“4.8.1 利用者定義型の導入”によって修正される。 

13 利用者定義型 (user-defined type) は,スキーマオブジェクトとし,<利用者定義型名>によって識別さ

れる。利用者定義型の定義は,その型の値の表現を指定する。利用者定義型は,個別型 (distinct type) 又は

構造型 (structured type) のいずれかとする。個別型の表現は,元型 (source type) として知られている単一

の既定義型又は集まり型とする。構造型の表現は,属性定義のリストから成る。属性定義は,利用者定義

型の表現を定義するというが,実際には,これらは,利用者定義型のインタフェースの部分となる幾つか

36 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の関数(観測関数及び変異関数)を暗に定義する。利用者定義型の値の物理的な表現は,処理系依存とす

る。 

利用者定義型の定義は,その利用者定義型のSQL呼出しメソッド (SQL-invoked method) 又は単にメソ

ッド (method) を識別する一つ以上の<メソッド指定>から成る<メソッド指定リスト>を含んでもよい。 

4.7.2 

個別型 

個別型の定義は,その型の名前及びその型の元型の名前を指定する。 

個別型の定義は,FINALを指定してもよい。指定しなければ,FINALが暗に想定される。その結果とし

て,個別型の定義は,<下位型句>を指定してはならない。 

個別型DTの定義は,DTの値をその型の元型STの値に変換するSQL呼出し関数F1,STの値をDTの

値に変換するSQL呼出し関数F2,及びF1 をFROM-SQL関数とし,F2 をTO-SQL関数とする変換TR

を暗に作成する。 

元型が集まり型CTである個別型DTは,CTの要素型 (element type) である要素型をもつという。DTの

値は,その値中の要素の個数である基数 (cardinality) をもつ。元型が配列型ATである個別型は,ATの最

大基数である最大基数 (maximum cardinality) をもつという。 

4.7.3 

構造型 

4.7.3.1 

構造型の導入 

構造型の定義は,その型の名前及び<属性定義>のリストを指定する。各<属性定義>は,属性の名前,属

性のデータ型,及び属性の省略可能な既定値を指定する。 

構造型の定義は,INSTANTIABLE又はNOT INSTANTIABLEを指定してもよい。指定しなければ,

INSTANTIABLEが暗に想定される。構造型STの定義がNOT INSTANTIABLEを指定するならば,STのど

の値の最特定型も,必然的にSTの真下位型のいずれかとなる。 

構造型の定義は,FINAL又はNOT FINALのいずれかを指定しなければならない。構造型の定義がFINAL

を指定するならば,<下位型句>又はNOT INSTANTIABLEのいずれも指定してはならない。 

4.7.3.2 

観測関数及び変異関数 

どの構造型のどの属性にも,ただ一つの暗に定義される観測関数,及びただ一つの暗に定義される変異

関数が対応している。これらは,両方ともSQL呼出し関数とする。さらに,変異関数は,型保持関数とす

る。 

構造型Tの属性の名前をAとし,Aのデータ型をATとする。この属性のための観測関数の署名は,

FUNCTION A(T) とし,その結果データ型は,ATとする。この属性のための変異関数の署名は,FUNCTION 

A(T RESULT, AT) とし,その結果データ型は,Tとする。 

データ型Tの値をVとし,データ型ATの値をAVとする。呼出しA (V, AV) は,“A (MV) がAVと同

一”で,かつ,Tのどの属性A' (A'≠A) に対しても“A' (MV) がA' (V)と同一”であるようなMVを戻す。

MVの最特定型は,Vの最特定型とする。 

4.7.3.3 

構成子 

各構造型STに,一つの暗に定義される構成関数 (constructor function) が関連付けられることは,STが

実現値生成可 (instantiable) であることと同値とする。 

構造型Tの名前をTNとする。Tのための構成関数の署名は,TN ( ) とし,その結果データ型は,Tと

する。呼出しTN ( ) は,ナルでなく,かつ,Tのどの属性Aに対しても,A (V) がAの既定値を戻すよう

な,値Vを戻す。Vの最特定型は,Tとする。 

実現値生成可の,どの構造型STに対しても,0個以上のSQL呼出し構成メソッドを指定することがで

37 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

きる。それらのメソッドの名前は,それらを指定する型の名前と等価でなければならない。 

注記31 SQL呼出し構成メソッドは,オーバロードできない原メソッドである。SQL呼出し構成メソッ

ドとSQL呼出し通常関数とが等価な関数名をもち,メソッドの拡張パラメタリストと関数のパ

ラメタリストの最初のパラメタとの型が同じで,(あるならば,)残りの対応するパラメタの型

が“9.20 データ型の同一性”の構文規則に従って同一であるようなSQL呼出し構成メソッドと

SQL呼出し通常関数とが存在してもよい。 

4.7.3.4 

下位型及び上位型 

<利用者定義型定義>の<下位型句>の結果として,TaがTbの下位型であるような互換でない二つの構造

型TaとTbとが存在してもよい(“11.51 <利用者定義型定義>”参照)。 

型Taが型Tbの真下位型であり,Tbの真下位型で,かつ,Taの真上位型であるような型Tcが存在しな

いならば,Taは,Tbの直接下位型 (direct subtype) とする。 

次のうちの一つが当てはまるならば,型Taは,型Tbの下位型とする。 

− TaとTbとが互換である。 

− TaがTbの直接下位型である。 

− Taがある型Tcの下位型で,かつ,TcがTbの直接下位型である。 

同様に,TaがTbの直接下位型であるような特定の場合には,Tbは,Taの上位型で,かつ,Taの直接

上位型とする。 

TaがTbの下位型で,かつ,TaとTbとが互換でないならば,Taは,Tbの真下位型とし,Tbは,Taの

真上位型とする。型は,それ自体の真上位型ではあり得ない。 

真上位型をもたない型は,最上位型 (maximal supertype) とする。真下位型をもたない型は,末端の型 (leaf 

type) とする。 

最上位型をTaとし,Taの下位型をTとする。(Ta自体を含む)Taの全ての下位型の集合を,T又は(等

価的に)Taの下位型族 (subtype family) と呼ぶ。下位型族が二つ以上の最上位型をもつことは許されない。 

型Tの全ての値は,あるならば,Tの直接上位型の値とする。型Tの値Vは,MSTがTの下位型で,

かつ,VがMSTのどの真下位型の値でもないような,ただ一つの最特定型MSTをもつ。値の最特定型は,

末端の型である必要はない。例えば,ある型構造は,二つの下位型としてSTUDENT及びEMPLOYEEを

もつ型PERSONから成るが,STUDENTは,二つの直接下位型UG̲STUDENT及びPG̲STUDENTをもつ

かもしれない。STUDENTのための構成関数の呼出しSTUDENT ( ) は,最特定型が末端の型ではない

STUDENTの値を戻す。 

Taが型Tbの下位型ならば,Tbの値が要求されるところではどこでも,Taの値を用いることができる。

詳細には,Taの値を,型Tbの列に格納すること,データ型Tbの入力SQLパラメタのための引数として

代用すること,及び結果データ型がTbであるSQL呼出し関数の呼出しの戻り値にすることができる。 

型Tが型集合S中の全ての型の上位型で,かつ,S中の全ての型の上位型であるどの型に対しても下位

型であるならば,Tは,Sの最小共通上位型 (minimal common supertype) であるという。 

注記32 下位型族は,ただ一つの最上位型をもつので,二つの型が共通の下位型をもつならば,それら

は,最小共通上位型も,もたなければならない。したがって,同じ下位型族から導出されるどの

型集合に対しても,その集合中の全ての型の最小共通上位型である要素がその族の中に存在す

る。 

構造型STが実現値生成不可 (not instantiable) と定義されているならば,STのどの値の最特定型も,必

38 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

然的にSTの真下位型となる。 

利用者定義型UDTの定義がFINALを指定するか又は暗に想定されるならば,UDTは,真下位型をもた

ない。結果として,UDTのどの値の最特定型も,必然的にUDTとなる。 

ある型の直接下位型を利用者が定義するためには,その利用者は,その型に関するUNDER権限をもた

なければならない。型は,二つ以上の直接下位型をもつことができる。利用者定義型又は参照型は,高々

一つの直接上位型をもつことができる。 

型Tのための<利用者定義型定義>は,Tの直接上位型があるならば,それの構成要素への参照を含むこ

とができる。直接上位型の表現の構成要素がその下位型の表現に実効的に複写される。 

4.7.4 

メソッド 

利用者定義型Tのメソッドは,Tの原メソッド (original method of) か又はTの置換メソッド (overriding 

method of) のいずれかとする。原メソッドは,<原メソッド指定>によって指定するが,置換メソッドは,

<置換メソッド指定>によって指定する。 

各<原メソッド指定>は,次の項目を指定する。 

− <メソッド名>。 

− <特定メソッド名>。 

− <SQLパラメタ宣言リスト>。 

− <戻りデータ型>。 

− (あるならば,)<結果CAST FROM型>。 

− メソッドが型保持かどうか。 

− <LANGUAGE句>。 

− 言語がSQLでないならば,<パラメタ様式>。 

− STATIC又はCONSTRUCTORが指定されたかどうか。 

− メソッドが決定的であるかどうか。 

− メソッドがSQLデータを潜在的に修正するか,SQLデータを潜在的に読むか,SQLを潜在的に含む

か,又はSQLを潜在的に含まないかどうか。 

− いずれかの引数がナル値のときにはいつでもメソッドの実際の呼出しなしでそのメソッドがナル値と

評価されるべきかどうか。 

各<置換メソッド指定>は,次の項目を指定する。 

− <メソッド名>。 

− <特定メソッド名>。 

− <SQLパラメタ宣言リスト>。 

− <戻りデータ型>。 

各<置換メソッド指定>に対して,同じ<メソッド名>及び<SQLパラメタ宣言リスト>をもつ<原メソッド

指定>が,その利用者定義型の真上位型に存在しなければならない。スキーマ中のどのSQL呼出しメソッ

ドも,そのスキーマ中に存在する利用者定義型に関連付けられるただ一つの<原メソッド指定>又は<置換

メソッド指定>に対応しなければならない。 

メソッドMは,次のうちの一つを満たすならば,型T1のメソッド (method of type T1) とする。 

− MがT1の原メソッドである。 

39 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− MがT1の置換メソッドである。 

− T1の真上位型T2が存在し,MがT2の原メソッド又は置換メソッドで,かつ,Mと同じ<メソッド名

>及び<SQLパラメタ宣言リスト>をもつ次のようなメソッドM3が存在しない。M3は,T2がT3の真

上位型で,かつ,T3がT1の上位型であるようなT3の原メソッド又は置換メソッドである。 

4.7.5 

利用者定義型の比較及び代入 

この細分箇条は,ISO/IEC 9075-13の“4.8.3 利用者定義型の比較及び代入”によって修正される。 

次の全ての条件を満たす利用者定義型Tbを,利用者定義型Taの比較型 (comparison type) とする。 

1) Tbの型指示子がTaの型優先順序リスト中にある。 

2) Tbの利用者定義型記述子がEQUALS又はFULLの順序付け形式を含む。 

3) Taの型優先順序リスト中でTbの型指示子に型指示子が先行し,かつ,EQUAL又はFULLの順序

付け形式を記述子が含むような型Tcが存在しない。 

このような型Tbが存在しないならば,Taは,比較型をもたない。 

利用者定義型Taの比較型の利用者定義型記述子に含まれる順序付け形式を,Taの比較形式 (comparison 

form) とする。 

利用者定義型Taの比較型の利用者定義型記述子に含まれる順序付けカテゴリを,Taの比較カテゴリ 

(comparison category) とする。 

13 利用者定義型Taの比較型の利用者定義型記述子に含まれる順序付け関数を,Taの比較関数 

(comparison function) とする。 

13 最特定型が利用者定義型T1及びT2である二つの値V1とV2とが比較可能であることは,T1及びT2

が同じ下位型族の中に存在し,かつ,それらが,それぞれ,ある比較型CT1及びCT2をもつことと同値と

する。CT1及びCT2は,T1及びT2の比較形式及び比較カテゴリが同じであるように制約し,それらの全

ての上位型の比較形式及び比較カテゴリと同じであるように制約する。比較カテゴリがSTATE又は

RELATIVEのいずれかならば,T1及びT2は,同じ比較関数をもつように制約される。比較カテゴリがMAP

ならば,それらは,同じ比較関数をもつように制約されない。 

注記33 明示的な型変換関数又は属性比較は,両方の値を同じ下位型族の値にするために,又は利用者

定義型の属性の比較を行うために用いることができる。 

注記34 “下位型”及び“下位型族”は,“4.7.3.4 下位型及び上位型”で定義している。 

適当な利用者定義の型変換関数が存在しないならば,宣言型が利用者定義型UDT1である式Eが,宣言

型が利用者定義型UDT2である格納場所Sに代入可能であることは,UDT1がUDT2の下位型であること

と同値とする。EのSへの代入の効果は,Sの値が,Eの評価によって得られるVになることとする。Sの

宣言型がUDT2のままであるのに対して,Vの最特定型は,UDT1自体であるかもしれないUDT1の下位

型とする。 

“11.51 <利用者定義型定義>”の一般規則によって暗に想定される型変換関数が作成されるので,元型が

SDTである個別型を宣言型としてもつ式は,SDTを宣言型としてもつどの格納場所にも代入可能とする。

同様に,既定義型SDTを宣言型としてもつ式は,元型がSDTである個別型を宣言型としてもつどの格納

場所にも代入可能とする。 

4.7.6 

利用者定義型のための変換 

変換 (transform) は,利用者定義型の値がSQL環境からホスト言語に渡されるか又はその逆に渡される

ときに,自動的に呼び出されるSQL呼出し関数とする。 

変換は,利用者定義型に関連付けられる。変換は,変換関数 (transform function) と呼ばれるSQL呼出し

40 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

関数を二つまで含む変換グループ (transform group) のリストを識別し,それぞれの変換グループは,グル

ープ名によって識別される。変換グループのグループ名は,変換に対してどの二つの変換グループも同じ

グループ名をもたないような<識別子>とする。二つの変換関数は,次による。 

− FROM-SQL関数 このSQL呼出し関数は,利用者定義型の値がホスト言語プログラム又は外部ルー

チンに渡されるときにはいつでも呼び出され,利用者定義型の値をSQL既定義型の値に写像する。 

− TO-SQL関数 このSQL呼出し関数は,利用者定義型の値がホスト言語プログラム又は外部ルーチン

によって与えられるときにはいつでも呼び出され,SQL既定義型の値を利用者定義型の値に写像する。 

変換は,<変換定義>によって定義される。変換は,変換記述子 (transform descriptor) によって記述され

る。変換記述子は,空であるかもしれない変換グループ記述子 (transform group descriptor) のリストを含

む。ここで,各変換グループ記述子は,次の項目を含む。 

− 変換グループのグループ名。 

− あるならば,変換グループに関連付けられたFROM-SQL関数の特定名。 

− あるならば,変換グループに関連付けられたTO-SQL関数の特定名。 

4.7.7 

利用者定義型記述子 

この細分箇条は,ISO/IEC 9075-13の“4.8.2 利用者定義型記述子”によって修正される。 

13 利用者定義型は,利用者定義型記述子によって記述される。利用者定義型記述子は,次の項目を含む。 

− 利用者定義型の名前(<利用者定義型名>)。これは,型優先順序リスト中で用いるその型の型指示子と

する(“9.7 型優先順位リスト決定”参照)。 

− 利用者定義型が構造型か又は個別型かを示す標識。 

− 利用者定義型のための順序付け形式(EQUALS,FULL又はNONE)。 

− 

13 利用者定義型のための順序付けカテゴリ(RELATIVE,MAP又はSTATE)。 

− 順序付けカテゴリに依存して,順序付け関数を識別する<特定ルーチン指示子>。 

− 利用者定義型が別の利用者定義型の直接下位型ならば,その利用者定義型の名前。 

− 利用者定義型が個別型ならば,元型の記述子。そうでなければ,利用者定義型の全ての原定義属性及

び全ての継承属性の属性記述子。 

− 利用者定義型が実現値生成可か又は実現値生成不可かを示す標識。 

− 利用者定義型が終端か又は終端でないかを示す標識。 

− 

13 利用者定義型の変換記述子。 

− 利用者定義型が構造型ならば,次の項目。 

・ 構造型の参照している型が,利用者定義表現をもつか,導出表現をもつか,又はシステム定義表現

をもつか。 

・ 利用者定義表現が指定されるならば,構造型の参照している型の表現型の型記述子。導出表現が指

定されるならば,属性のリスト。 

注記35 参照型の“利用者定義表現”,“導出表現”及び“システム定義表現”は,“4.9 参照型”で定

義している。 

− <メソッド指定リスト>が指定されるならば,<メソッド指定リスト>に含まれる各<メソッド指定>に対

して次の項目を含むメソッド指定記述子 (method specification descriptor)。 

・ <メソッド名>。 

・ <特定メソッド名>。 

41 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

・ <メソッド指定>が<原メソッド指定>か又は<置換メソッド指定>かを示す標識。 

・ <メソッド指定>が<原メソッド指定>ならば,STATIC又はCONSTRUCTORが指定されたどうかを

示す標識 

・ パラメタ名SELFをもつ暗に想定される第1パラメタを含むように拡張された<SQLパラメタ宣言

リスト>。 

・ <SQLパラメタ宣言リスト>中の全ての<SQLパラメタ宣言>に対して,あるならば,<位置付け子標

識>。 

・ <戻りデータ型>。 

・ あるならば,<結果CAST FROM型>。 

・ あるならば,<RETURNS句>に含まれる<位置付け子標識>。 

・ <言語名>。 

・ <言語名>がSQLでないならば,<パラメタ様式>。 

・ メソッドが決定的かどうかを示す標識 

・ メソッドがSQLデータを潜在的に修正するか,SQLデータを潜在的に読むか,SQLを潜在的に含

むか又はSQLを潜在的に含まないかを示す標識。 

・ いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示す標識。 

・ 作成時刻印。 

・ 最終変更時刻印。 

注記36 <メソッド名>,<SQLパラメタ宣言リスト>及び<戻りデータ型>以外の<置換メソッド指定>

の特性は,対応する<原メソッド指定>の特性と同じである。 

4.8 

行型 

行型は,フィールド (field) と呼ばれる(<フィールド名> <データ型>)対の並びとする。行型は,行型

記述子によって記述される。行型記述子は,行型の全てのフィールドのフィールド記述子から成る。 

表の行の最特定型は,行型とする。この場合,行の各列は,その列と同じ順序位置をもつ行型のフィー

ルドに対応する。 

行型RT2がデータ型RT1の下位型であることは,RT1及びRT2が同じ次数の行型であり,かつ,対応

するフィールド定義のどのn番目の組,RT1中のFD1nとRT2中のFD2nとにおいても,<フィールド名

>が等しく,FD2nの<データ型>がFD1nの<データ型>の下位型であることと同値とする。 

行型RT1の値が行型RT2の格納場所に代入可能であることは,RT1の次数がRT2の次数と同じで,か

つ,RT1中のどのフィールドも,RT2中の同じ順序位置のフィールドに代入可能であることと同値とする。 

行型RT1の値が行型RT2の値と比較可能であることは,RT1の次数がRT2の次数と同じで,かつ,RT1

中のどのフィールドも,RT2中の同じ順序位置のフィールドと比較可能であることと同値とする。 

4.9 

参照型 

4.9.1 

参照型の導入 

REF値 (REF value) は,参照可能表 (referenceable table)(“4.15.9 参照可能表,下位表及び上位表”参照)

中の行を参照する値とする。参照可能表は,必然的に,型付き表 (typed table) でもある(すなわち,関連

付けられた構造型をもち,その構造型からその表の行型が導出される。)。 

ある構造型Tが与えられると,Tを基に定義される型付き表中の行を参照できるREF値は,参照型 

(reference type) として知られるあるデータ型RTを集合的に形作る。RTは,Tの参照している型 (referencing 

type) とし,Tは,RTの被参照型 (referenced type) とする。 

42 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

Tの名前をTNとする。RTの型指示子は,REF(TN) とする。 

二つの参照型の宣言型の被参照型が共通の上位型をもつならば,それらの参照型の値は,比較可能とす

る。 

宣言型が参照型RT1である式Eが,宣言型が参照型RT2である格納場所Sに代入可能であることは,

RT1の被参照型がRT2の被参照型の下位型であることと同値とする。EのSへの代入の効果は,Sの値が,

Eの評価によって得られるVになることとする。Sの宣言型がRT2のままであるのに対して,Vの最特定

型は,RT1自体であるかもしれないRT1の下位型とする。 

REF値によって占められる格納場所RSは,RSでの値に関する<参照解決> RRの呼出しの効果を決定す

る有効範囲 (scope) をもつかもしれない。有効範囲は,表名STNとして指定し,いつでもSTNによって

識別される表ST中の全ての行から成る。STは,RRのための有効範囲化された表 (scoped table) とする。

RSの有効範囲は,RSの宣言型中で指定される。RSの宣言型中で有効範囲が指定されないならば,<参照

解決>は,利用可能でない。 

参照型は,参照型記述子によって記述される。RTに対する参照型記述子は,次の項目を含む。 

− RTの型指示子。 

− あるならば,RTの有効範囲である参照可能表の名前 

ホスト変数中では,REF値は,Nオクテットの値として実体化される。ここで,Nは,処理系定義とす

る。 

参照型RT2がデータ型RT1の下位型 (subtype) である[等価的に,RT1がRT2の上位型 (supertype) で

ある]ことは,RT1が参照型で,かつ,RT2の被参照型がRT1の被参照型の下位型であることと同値とす

る。 

参照型RTのどの値も,RTの全ての上位型の値とする。型RTの値Vは,型MSTがRTの下位型で,

かつ,VがMSTのどの真下位型の値でもないようなただ一つの最特定型MSTをもつ。 

参照型の被参照型が,<利用者定義表現>を指定する<利用者定義型定義>によって定義されるならば,そ

の参照型は,利用者定義表現 (user-defined representation) をもつ。参照型の被参照型が,<導出表現>を指

定する<利用者定義型定義>によって定義されるならば,その参照型は,導出表現 (derived representation) を

もつ。参照型が利用者定義表現又は導出表現をもたないならば,その参照型は,システム定義表現 (system-

defined representation) をもつ。 

4.9.2 

参照を含む演算 

REF値を受け取り,そのREF値によって識別される格納場所の列中に格納される値を戻す演算が提供さ

れる(“6.21 <内参照演算>”参照)。REF値がどの格納場所も識別しないならば,おそらくかつて識別され

ていた格納場所が破壊されたために,ナル値が戻される。 

REF値を受け取り,被参照型の値を戻す演算が提供される。戻されるその値は,そのREF値によって識

別される格納場所の列の値から構成される(“6.23 <参照解決>”参照)。REF値を受け取り,被参照型の値

に関するSQL呼出しメソッドの呼出しによって得られる値を戻す演算も提供される。被参照型のその値

は,そのREF値によって識別される格納場所の列の値から構成される(“6.22 <メソッド参照>”参照)。 

4.10 集まり型 

4.10.1 集まり型の導入 

集まり (collection) は,それぞれの値がデータ型DTの値である0個以上の要素 (element) から成る複合

値とする。集まりCの要素がDTの値ならば,Cは,DTの集まりという。C中の要素の個数は,Cの基数 

43 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(cardinality) とする。“要素”という用語は,この規格では,これ以上定義しない。“集まり”という用語は,

総称で,いろいろな種類の集まりを包含し,それらのそれぞれに関連して,個別に,この規格で基本的な

型構成子及び演算子を定義する。この規格は,2種類の集まり型,配列及びマルチ集合を提供する。 

特定の<集まり型> CTは,キーワードKC(ARRAY又はMULTISETのいずれか)を特定のデータ型EDT

と組み合わせることによって指定する<データ型>とする。それに加えて,配列に対しては,省略可能な最

大基数を指定してもよい。CTの可能などの値のどの要素も,EDTの値とし,より具体的には,EDTの下

位型の値であることも許される。EDTをCTの要素型 (element type) と呼ぶ。KCは,CTの全ての値の種

類であるARRAY又はMULTISETのような集まりの種類を指定し,これによって,CTの値を演算するた

め又はCTの値を戻すために利用可能な演算子を決定する。 

EDTの型指示子をEDTNとする。CTの型指示子は,EDTN KCとする。 

集まり型記述子 (collection type descriptor) は,集まり型を記述する。CTに対する集まり型記述子は,次

の項目を含む。 

− CTの型指示子。 

− CTの要素型の記述子。 

− CTの集まりの種類,ARRAY又はMULTISETを示す標識。 

− CTが配列型ならば,CTの最大要素数。 

集まり型CT2がデータ型CT1の下位型である(等価的に,CT1がCT2の上位型である)ことは,CT1

がCT2と同じ種類の集まりで,かつ,CT2の要素型がCT1の要素型の下位型であることと同値とする。 

4.10.2 配列 

配列 (array) は,集まりAとし,その中の各要素がA中でただ一つの順序位置に関連付けられる。nが

Aの基数ならば,要素の順序位置pは,1 ≤ p ≤ nの範囲の整数とする。したがって,EDTがAの要素型な

らば,Aを1からnまでの範囲の整数のEDTへの関数とみなすことができる。 

配列の格納場所ASは,最大基数mをもつ。ASを占めている配列の基数nは,mを超えないように制約

される。 

配列型 (array type) は,<集まり型>とする。ATが要素型EDTをもつ配列型ならば,ATのどの値も,

EDTの配列とする。 

EDTの配列をA1及びA2とする。A1とA2とが同一であることは,A1とA2とが同じ基数nをもち, 

1 ≤ i ≤ nの範囲の全てのiに対して,A1中の順序位置iの要素がA2中の順序位置iの要素と同一であるこ

とと同値とする。 

4.10.3 マルチ集合 

マルチ集合は,順序付けられていない集まりとする。マルチ集合は,順序付けられていないので,マル

チ集合の個々の要素を参照するための順序位置はない。 

マルチ集合型は,<集まり型>とする。MTが要素型EDTをもつマルチ集合型ならば,MTのどの値も,

EDTのマルチ集合とする。 

EDTのマルチ集合をM1及びM2とする。M1とM2とが同一であることは,M1とM2とが同じ基数n

をもち,M1の各要素xに対して,x自体を含めてxと同一であるM1の要素の数が,xと同一であるM2

の要素の数と等しいことと同値とする。 

M1の基数をn1とし,M2の基数をn2とする。M1の各要素xに対して,x自体を含めてxと異ならな

いM1の要素の個数が,xと異ならないM2の要素の個数以下ならば,M1は,M2の部分マルチ集合とす

44 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る。 

4.10.4 集まりの比較及び代入 

二つの集まりが比較可能であることは,それらが同じ種類の集まり(ARRAY又はMULTISET)で,か

つ,それらの要素型が比較可能であることと同値とする。 

集まり型CT1の値が集まり型CT2の格納場所に代入可能であることは,CT1がCT2と同じ種類の集ま

り(ARRAY又はMULTISET)で,かつ,CT1の要素型がCT2の要素型に代入可能であることと同値とす

る。 

配列型は,定義された要素順序 (element order) をもつ。比較は,配列の要素順序によって定義される。

要素順序は,比較される配列からの対応する要素の対を定義する。配列の要素順序は,その要素の順序位

置によって暗に定義される。 

二つの配列C及びDの比較の場合には,それらの要素が要素順序で対にされて比較される。C = Dが真

であることは,C及びDが同じ基数をもち,要素の全ての対が等しいことと同値とする。 

比較可能な要素型の二つのマルチ集合CとDとが同じ基数Nをもち,かつ,全てのjに対して,CEj = 

DEjとなるような,Cの要素の列挙CEj,1 ≤ j ≤ N,及びDの要素の列挙DEj,1 ≤ j ≤ Nが存在するなら

ば,それらのマルチ集合CとDとは,等しい。 

4.10.5 配列を含む演算 

4.10.5.1 配列値に作用し,配列要素を戻す演算子 

<配列要素参照>は,配列内の指定された位置の配列要素を戻す演算とする。 

4.10.5.2 配列値に作用し,配列値を戻す演算子 

<配列連結>は,与えられた順序で配列値のオペランドを結合することによって作られる配列値を戻す演

算とする。 

<TRIM̲ARRAY関数>は,1番目の入力引数(配列値)から最後のn個の要素を取り除くことによって導

出される配列値を戻す演算とする。ここで,nは,2番目の入力引数の値とする。 

4.10.5.3 配列値に作用し,数を戻す演算子 

<基数式>は,配列の基数を戻す演算とする。 

<最大基数式>は,与えられた配列の宣言型の最大基数を真数値として戻す。 

4.10.6 マルチ集合を含む演算 

4.10.6.1 マルチ集合に作用し,マルチ集合要素を戻す演算子 

<マルチ集合要素参照>は,マルチ集合が一つの要素だけをもつならば,マルチ集合の要素の値を戻す演

算とする。 

4.10.6.2 マルチ集合に作用し,マルチ集合を戻す演算子 

<マルチ集合SET関数>は,マルチ集合から重複を取り除くことによって得られるマルチ集合を戻す演算

とする。 

MULTISET UNIONは,二つのマルチ集合の和集合を計算する演算子とする。重複を残すか又は重複を排

除するかのいずれかを,ALL又はDISTINCTを用いて指定する2種類がある。 

MULTISET INTERSECTは,二つのマルチ集合の共通部分を計算する演算子とする。ALL及びDISTINCT

の2種類がある。ALLを指定する演算子は,各値の実現値の個数がいずれかのオペランド中の各値の実現

値の最小の方の個数と同じ個数のその値の実現値を結果にする。DISTINCTを指定する演算子は,結果か

ら重複を取り除く。 

MULTISET EXCEPTは,二つのマルチ集合のマルチ差集合を計算する演算子とする。ALL及びDISTINCT

45 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の2種類がある。ALLを指定する演算子は,最初のオペランド中のある値の実現値の個数から2番目のオ

ペランド中のその値の実現値の個数を減じた数と等しい個数のその値の実現値を結果にする。DISTINCT

を指定する演算子は,結果から重複を取り除く。 

4.10.6.3 マルチ集合に作用し,数を戻す演算子 

<基数式>は,マルチ集合の基数を戻す演算とする。 

4.11 データ変換 

この細分箇条は,ISO/IEC 9075-14の“4.3 データ変換”によって修正される。 

式,FETCH操作,単一行SELECT操作,挿入,削除及び更新において,暗黙の型変換が発生することが

ある。陽な型変換は,CAST演算子を用いることによって指定できる。 

陽に指定するデータ変換 (data conversion) は,CAST演算子 (CAST operator) によって指定できる。CAST

演算子は,“6.13 <CAST指定>”の構文規則及び一般規則に従って,変換元データ型の値をどのように相手

データ型の値に変換するかを定義する。既定義データ型間及び構成型間のデータ変換は,この規格の規則

で規定する。利用者定義型と別のデータ型との間のデータ変換は,利用者定義型変換 (user-defined cast) に

よって定義する。 

14 利用者定義型変換は,宣言型が変換元データ型と同じ一つのSQLパラメタをもち,かつ,相手データ

型である結果データ型をもつ,型変換関数 (cast function) と呼ばれるSQL呼出し関数を識別する。型変換

関数の結果データ型の相手に値が代入されるときにはいつでも暗に呼び出されるように,その型変換関数

を随意に指定してもよい。このような型変換関数を,暗に呼出し可能な (implicitly invocable) 型変換関数と

呼ぶ。 

利用者定義型変換は,<利用者定義型変換定義>によって定義される。利用者定義型変換は,次の項目を

含む利用者定義型変換記述子をもつ。 

− 変換元データ型の名前。 

− 相手データ型の名前。 

− 型変換関数であるSQL呼出し関数の特定名。 

− 型変換関数が暗に呼出し可能かどうかを示す標識。 

宣言型TVの値Vが,宣言型TTの相手Tに代入されるとき,利用者定義の型変換関数UDCFが適切な

利用者定義の型変換関数 (appropriate user-defined cast function) であるということは,次の全てが真である

ことと同値とする。 

− UDCFが暗に呼出し可能であることをUDCFの記述子が示す。 

− UDCFの唯一のSQLパラメタPの宣言型DTPの型指示子がTVの型優先順序リスト中にある。 

− UDCFの結果データ型がTTである。 

− TVの型優先順位リスト中でDTPに優先する宣言型TQのSQLパラメタQをもつ,他のどの利用者定

義の型変換関数UDCQも,VをTに代入するための適切な利用者定義の型変換関数ではない。 

<SQL手続文> Sが適切な利用者定義の型変換関数UDCFに依存している (dependent on) ということは,

次の全てが真であることと同値とする。 

− Sが<SELECT文:単一行>,<INSERT文>,<UPDATE文:位置付け>,<UPDATE文:探索>又は<MERGE

文>である。 

− Sの実行の間に実行される格納代入又は取出し代入の操作の間にUDCFが呼び出され,かつ,Sの実

46 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

行の間に呼び出されるSQL呼出し関数の呼出しの間にUDCFが実行されない。 

4.12 定義域 

定義域 (domain) は,とり得る値の集合とする。定義域は,スキーマ中で定義され,<定義域名>によって

識別される。定義域の目的は,様々な操作によって実表の列中に正しい値の集合が格納できるように制約

することとする。 

定義域定義は,データ型を指定する。その定義域の正しい値を更に制限する<定義域制約>も指定しても

よく,陽に指定された値がない場合に用いるための値,すなわち,列の既定値を指定する<DEFAULT句>

も指定してもよい。 

定義域は,定義域記述子によって記述される。定義域記述子は,次の項目から成る。 

− 定義域の名前。 

− 定義域のデータ型のデータ型記述子。 

− あるならば,定義域の<既定値選択肢>の値。 

− あるならば,定義域の定義域制約の定義域制約記述子。 

4.13 列,フィールド及び属性 

この細分箇条は,ISO/IEC 9075-9の“4.9 列,フィールド及び属性”によって修正される。 

列 (column),フィールド (field) 及び属性 (attribute) という用語は,それぞれ,表,行型及び構造型の構

造上の構成要素を,類似した方法で参照する。表の構造が一つ以上の列から成るのと同様に,行型の構造

は,一つ以上のフィールドから成り,構造型の構造は,一つ以上の属性から成る。列,フィールド又は属

性かどうかにかかわらず,どの構造の要素も,主として,宣言型と対にされた名前とする。構造の要素は,

順序付けられる。同じ構造中の異なる位置にある要素は,同じ宣言型をもつことができる。構文規則は,

異なる順序位置の二つの要素が等価な名前をもつことを禁止することがある(特に,<SQLスキーマ文>に

よって定義されるとき)。等価な名前をもつ二つの要素が許されるとき,要素の名前は,曖昧になり,名前

によってどちらかの要素を参照しようとすると,構文誤りを引き起こす。構造の要素は,名前によって互

いに区別されるが,幾つかの環境では,(手近の目的のための)二つの構造の互換性は,同じ順序位置の要

素の各対の宣言型を考慮することによってだけ決定される。 

表(“4.15 表”参照)は,一つ以上の列に関して定義され,0行以上の行から成る。列は,名前及び宣言

型をもつ。表中の各行は,各列に対してただ一つの値をもつ。行中の各値は,対応する列の宣言型の値と

する。列は,更新可能 (updatable) か又は更新可能でない (not updatable) かのいずれかとする。 

注記37 宣言型は,ナル値,及びその宣言型の真下位型の値を含む。 

どの列も,その列の値がナル値であり得るかどうかを示すナル可能性特性 (nullability characteristic) を

もつ。ナル可能性特性は,ナル可能でないことが分かる (known not nullable) か又は潜在的にナル可能 

(possibly nullable) かのいずれかとする。 

実表Tの列をCとする。Cがナル可能でないことが分かる ということは,次のうちの少なくとも一つ

が真であることと同値とする。 

− 強制で,かつ,遅延可能でない少なくとも一つの制約NNCが存在し,Cに対する容易にナルでないこ

とが分かる条件を示す<ブール値式>である<探索条件>をその制約が単純に含む。 

− 遅延可能でない定義域制約をもつ定義域をCが基にし,VALUEに対する容易にナルでないことが分

かる条件を示す<ブール値式>である<探索条件>を単純に含む。 

− Cが,PRIMARY KEYである遅延可能でない一意性制約の一意列である。 

47 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− CがTの自己参照列である。 

− 何らかの追加の処理系定義の規則によって,<探索条件>“C IS NULL”がTの行に適用されるとき,

決して真になり得ないということをSQL処理系が導き出すことができる。 

注記38 “ナル可能でないことが分かる”及び“ナルでないことが分かる条件”という概念は,SQL

処理系が採用してもよいそのような追加規則の例である。SQL処理系がこれらの規則(及び,

場合によっては,他の規則)を採用するならば,SQL処理系は,機能T101“拡張ナル可能性

決定”の提供を主張してもよい。 

導出表の列のナル可能性特性は,“7.7 <結合表>”,“7.12 <問合せ指定>”及び“7.13 <問合せ式>”の構文

規則によって規定する。 

列Cは,列記述子によって記述される。列記述子は,次の項目を含む。 

− 列の名前。 

− 列の名前が処理系依存の名前かどうか。 

− 列が定義域を基にするならば,その定義域の名前。そうでなければ,Cの宣言型のデータ型記述子。 

− あるならば,Cの<既定値選択肢>の値。 

− Cのナル可能性特性。 

− Cを含む表内でのCの順序位置。 

− Cが更新可能かどうかを示す標識。 

− Cが実表の自己参照列かどうかを示す標識。 

− Cが識別列かどうかを示す標識。 

− Cが識別列ならば,値が常時生成されるか,既定生成されるかを示す標識。 

− Cが識別列ならば,Cの開始値 (start value) を含むCの内部順序数生成子の記述子。 

注記39 識別列,及び“開始値”の意味は,“4.15.11 識別列”で記述している。 

− Cが生成列かどうかを示す標識。 

− Cが生成列ならば,Cの生成式。 

注記40 生成列,及び“生成式”の意味は,“4.15.12 実列及び生成列”で記述している。 

− Cがシステム時刻期間開始列かどうかを示す標識。 

− Cがシステム時刻期間終了列かどうかを示す標識。 

− Cがシステム時刻期間開始列又はシステム時刻期間終了列ならば,値が常時生成されるかどうかを示

す標識。 

− Cが実表の列ならば,NOT NULLとして定義されたかどうかを示す標識,及びそうであるならば,関

連付けられる表制約定義の制約名。 

注記41 この標識及び関連付けられる制約名は,定義のためだけに存在し,情報スキーマ中の

COLUMNSビュー中に露出しない。 

属性Aは,属性記述子によって記述される。属性記述子は,次の項目を含む。 

− 属性の名前。 

− Aの宣言型のデータ型記述子。 

− Aを含む構造型内でのAの順序位置。 

− 暗に想定されるか又は陽に指定されるAの<属性既定値>の値。 

48 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− Aを定義する<利用者定義型定義>によって定義される構造型の名前 

フィールドFは,フィールド記述子によって記述される。フィールド記述子は,次の項目を含む。 

− フィールドの名前。 

− Fの宣言型のデータ型記述子。 

− Fを単純に含む行型内でのFの順序位置。 

4.14 期間 

4.14.1 期間の導入 

与えられた表に対する期間定義は,その表に対して定義された列名の対に期間名を関連付ける。期間定

義PDをもつ表Tに対して,期間名をPNとし,PD中に指定された1番目の列名をSTART,PD中に指定

された2番目の列名をENDとする。STARTをTのPN期間開始列 (period start column) と呼ぶ。ENDを

TのPN期間終了列 (period end column) と呼ぶ。START及びENDによって識別される列は,両方とも,

日時データ型で,かつ,ナル可能でないことが分からなければならない。さらに,START及びENDの宣

言型は,同一でなければならない。 

T中のどの行も,START列の値をPN期間開始値 (period start value) としてもち,END列の値をPN期

間終了値 (period end value) としてもつPN期間値 (period value) に関連付けられるとみなされる。行Rの

PN期間値は,STARTの値以上で,かつ,ENDの値未満の型DTの全ての値の集合とする。ここで,DT

は,STARTの宣言型とする。期間PNをもつ表Tに対して,与えられた行RのPN期間終了値がRのPN

期間開始値より大きいことを保証する制約が暗に想定される。 

期間は,期間記述子 (period descriptor) によって記述される。期間記述子は,次の項目を含む。 

− 期間の名前。 

− 期間開始列の名前。 

− 期間終了列の名前。 

− 期間名が<適用業務時刻期間名>ならば,暗に想定される期間制約の名前。 

表Tの表記述子が,期間名PNを含む期間記述子を含むならば,その期間記述子は,TのPN期間記述

子としても参照される。期間名がSYSTEM̲TIMEの期間は,システム時刻期間 (system-time period) とし

ても知られ,対応する期間記述子は,システム時刻期間記述子 (system-time period descriptor) としても知ら

れる。期間名がSYSTEM̲TIMEでない期間は,適用業務時刻期間 (application-time period) としても知ら

れ,対応する期間記述子は,適用業務時刻期間記述子 (application -time period descriptor) としても知られ

る。 

期間PNをもつ表T中の任意の二つの行をR1及びR2とする。R1のPN期間開始値をS1とし,R1の

PN期間終了値をE1とし,R2のPN期間開始値をS2とし,R2のPN期間終了値をE2とする。R1のPN

期間値がR2のPN期間値と重なる (overlap) ということは,(S1 < E2 AND E1 > S2) と同値とする。 

4.14.2 期間を含む演算 

<期間OVERLAPS述語>は,二つの期間が重なるかどうか,すなわち,少なくとも一つの値を共通にも

つかどうかを検査する。 

<期間EQUALS述語>は,二つの期間が同じ期間開始値及び期間終了値をもつかどうかを検査する。 

<期間CONTAINS述語>は,期間が日時値又は別の期間を含むかどうか,すなわち,1番目の期間が,そ

れぞれ,日時値又は2番目の期間に含まれる全ての値を含むかどうかを検査する。 

49 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<期間PRECEDES述語>は,期間が別の期間に先行するかどうか,すなわち,1番目の期間に含まれる全

ての値が2番目の期間の開始値未満であるかどうかを検査する。 

<期間SUCCEEDS述語>は,期間が別の期間に後続するかどうか,すなわち,1番目の期間に含まれる全

ての値が2番目の期間の終了値以上かどうかを検査する。 

<期間IMMEDIATELY PRECEDES述語>は,期間が別の期間に直に先行するかどうか,すなわち,1番目

の期間の終了値が2番目の期間の開始値と等しいかどうかを検査する。 

<期間IMMEDIATELY SUCCEEDS述語>は,期間が別の期間に直に後続するかどうか,すなわち,1番目

の期間の開始値が2番目の期間の終了値と等しいかどうかを検査する。 

4.15 表 

この細分箇条は,ISO/IEC 9075-4の“4.2 表”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“4.10 表”によって修正される。 

4.15.1 表の導入 

表は,0個以上の行の集まりとし,各行は,一つ以上の列値の並びとする。行の最特定型は,行型とす

る。与えられた表のどの行も,その表の行型 (row type) と呼ばれる同じ行型をもつ。表中のどの行のi番

目のフィールドの値も,その表中のその行のi番目の列の値とする。行は,表に挿入でき,表から削除で

きるデータの最小単位とする。 

表の次数,及びその表の各行の次数は,その表の列の個数とする。表中の行の個数は,その表の基数と

する。基数が0である表を,空 (empty) であるという。 

表は,実表,導出表又は過渡表のいずれかとする。 

4.15.2 実表 

この細分箇条は,ISO/IEC 9075-4の“4.2.1 実表”によって修正される。 

09 実表は,永続実表又は一時表のいずれかとする。 

永続実表は,通常永続実表又はシステムバージョン表のいずれかとする。 

通常実表は,通常永続実表又は一時表のいずれかとする。 

4.15.2.1 通常永続実表 

通常永続実表は,TEMPORARYもWITH SYSTEM VERSIONINGも指定しない<表定義>によって定義さ

れる名前付きの表とする。 

4.15.2.2 システムバージョン表 

システムバージョン表は,PERIOD SYSTEM̲TIMEを指定し,かつ,WITH SYSTEM VERSIONINGを指

定する<表定義>によって定義される名前付きの表とする。 

システムバージョン表の列は,システム時刻期間開始列 (system-time period start column) 及びシステム

時刻期間終了列 (system-time period end column) を含む。どの時点においても,システム時刻期間終了列の

データ型によって提供される最高値がその列に設定されている全ての行は,現在システム行 (current 

system row) として知られる。他の全ての行は,履歴システム行 (historical system row) として知られる。 

4.15.2.3 一時表 

この細分箇条は,ISO/IEC 9075-4の“4.2.1.1 一時表”によって修正される。 

一時表は,大域一時表,作成局所一時表,又は宣言局所一時表のいずれかとする。 

大域一時表は,GLOBAL TEMPORARYを指定する<表定義>によって定義される名前付きの表とする。

大域一時表は,SQLセション中で参照されるときにだけ,実効的に実体化される。大域一時表を参照する

各セションは,その大域一時表に対して異なる実現値(言い換えると,そのSQLセションに対してだけ可

50 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

視の行のマルチ集合)を実体化させる。すなわち,大域一時表の<表名>によって参照される行のマルチ集

合は,SQLセション間で共有することはできない。 

作成局所一時表は,LOCAL TEMPORARYを指定する<表定義>によって定義される名前付きの表とする。

作成局所一時表は,SQLセション中で参照されるときにだけ,実効的に実体化される。作成局所一時表を

参照する各SQLセション中の各SQLクライアントモジュールは,その作成局所一時表に対して異なる実

現値(言い換えると,そのSQLセション中のそのSQLクライアントモジュールに対してだけ可視の行の

マルチ集合)を実体化させる。すなわち,作成局所一時表の<表名>によって参照される行のマルチ集合は,

SQLセション間でも,一つのセション中で実行するSQLクライアントモジュール間でも,共有することは

できない。 

大域一時表又は作成局所一時表の定義は,スキーマ中に現れる。SQL言語中で,大域一時表又は作成局

所一時表の名前及び名前の有効範囲を,永続実表のそれらと区別することはできない。 

宣言局所一時表は,<一時表宣言>によって定義される名前付きの表とする。 

SQLクライアントモジュールの宣言局所一時表は,<SQLクライアントモジュール定義>中で定義され

た,宣言局所一時表とする。SQLクライアントモジュールの宣言局所一時表は,<一時表宣言>を含む<SQL

クライアントモジュール定義>中の任意の<外部呼出し手続>が実行される最初の時点に,実効的に実体化

され,そのSQLセションに対して存続する。SQLクライアントモジュールの宣言局所一時表を参照する各

SQLセション中の各SQLクライアントモジュールは,その宣言局所一時表に対して異なる実現値(言い換

えると,そのSQLセション中のそのSQLクライアントモジュールに対してだけ可視の行のマルチ集合)

を実体化させる。すなわち,SQLクライアントモジュールの宣言局所一時表の<表名>によって参照される

行のマルチ集合は,SQLセション間でも,SQLセション中で実行するSQLクライアントモジュール間で

も,共有することはできない。 

宣言局所一時表への全ての参照は,“MODULE.”によって修飾する。 

一時表の実体は,その表が実体化されたSQLセションの終了を越えて存続することはない。一時表は,

SQLセションの開始時点で実効的に空になる。SQLセションS1内で作成された一時表も,作成後は実効

的に空になる。WITH DATAを指定する<AS副問合せ句>が指定されるならば,S1内の一時表の実体は,

“11.3 <表定義>”の一般規則で規定するとおりに初期化される。 

4.15.3 導出表 

導出表は,<結合表>,<データ変更差分表>,<問合せ式>又は<表式>のような式の評価によって,一つ以

上の別の表から直接又は間接的に導出される表とする。<問合せ式>は,省略可能な<ORDER BY句>を含む

ことができる。<問合せ式>によって指定される表の行の順序付けは,<ORDER BY句>を直に含む<問合せ

式>に対してだけ保証される。 

<問合せ式>は,導出表の先頭から指定した個数の行を取り除くことによって導出表の基数を限定できる

<結果OFFSET句>を任意に含むこともできる。<問合せ式>が<ORDER BY句>及び<結果OFFSET句>の両

方を含むならば,導出表の行は,<ORDER BY句>に従って最初に並べ替えられ,その後,<問合せ式>によ

って生成された結果の先頭から<結果OFFSET句>で指定した個数の行を削除することによって限定され

る。<問合せ式>の評価の結果の基数が,<結果OFFSET句>によって指定された変位値未満ならば,導出表

は,空とする。 

<問合せ式>は,導出表の基数を限定できる<FETCH FIRST句>を任意に含むこともできる。<問合せ式>

が<ORDER BY句>及び<FETCH FIRST句>の両方を含むならば,導出表の行は,<ORDER BY句>に従って

最初に並べ替えられ,その後に<FETCH FIRST句>で指定した行数に限定される。<FETCH FIRST句>は,

51 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

この限定行数を正確な行数又は百分率のどちらで指定してもよい。さらに,WITH TIESを指定するならば,

保持された行と同位の行も結果中に保持される。<問合せ式>は,<結果OFFSET句>及び<FETCH FIRST句

>の両方を含んでもよく,その場合には,<結果OFFSET句>が最初に適用され,その後に<FETCH FIRST句

>が適用される。<問合せ式>の評価の結果の基数が,<FETCH FIRST句>によって指定された限定行数未満

ならば,<FETCH FIRST句>は,導出表に対してどんな効果も与えない。 

ビュー表は,<ビュー定義>によって定義される名前付きの導出表とする。ビュー表は,ビュー (view) と

もいう。実表及びビューは,<表名>によって識別される。完全修飾付きの形式で,実表及びビューの両方

に対して同じ<表名>を用いることはできない。 

ビューVの元の<問合せ式> OQE,及びOQEに含まれる<問合せ指定>,<表値構成子>,<明示表>又は<

問合せ式>を,Vのビュー構成要素 (view component) という。 

4.15.4 過渡表 

過渡表は,<問合せ式>の評価又はトリガの実行の間に暗に現れてもよい名前付きの表とする。過渡表は,

<問合せ式>の評価の間に現れるならば,<問合せ名>によって識別され,トリガの実行の間に現れるならば,

<遷移表名>によって識別される。このような過渡表は,<問合せ式>を含むSQL文を実行している間,又は

トリガを実行している間だけ存在する。 

4.15.5 表の一意識別 

この細分箇条は,ISO/IEC 9075-4の“4.2.2 表の一意識別”によって修正される。 

永続実表,大域一時表,作成局所一時表,又はSQLクライアントモジュールの宣言局所一時表の<表名

>は,次のとおりに,行の特定のマルチ集合を識別するために用いる。 

− 永続実表の<表名>は,行のマルチ集合を一意に識別する。 

− 大域一時表の<表名>は,SQLセション識別子とともに,行のマルチ集合を一意に識別する。 

− 作成局所一時表の<表名>は,SQLセション識別子及びSQLクライアントモジュール名とともに,行

のマルチ集合を一意に識別する。 

− 

04 SQLクライアントモジュールの宣言局所一時表の<表名>は,SQLセション識別子及びSQLクライ

アントモジュール名とともに,行のマルチ集合を一意に識別する。 

4.15.6 表更新可能性 

表は,更新可能 (updatable) か,更新可能でない (not updatable) かのいずれかとする。更新可能な表は,

少なくとも一つの更新可能な列 (updatable column) をもつ。全ての実表は,更新可能とし,実表のどの列

も,更新可能とする。導出表及び過渡表は,更新可能か又は更新可能でないかのいずれかとする。“7.6 <表

参照>”の構文規則が,導出表Tが更新可能かどうか,及びTのどの列が更新可能かを決定する。ビュー

を定義する導出表が更新可能ならば,そのビューは,更新可能とする。ビューを定義する導出表の列が更

新可能ならば,そのビューの対応する列は,更新可能とする。更新INSTEAD OFトリガがビューに対して

定義されているならば,そのビューは,トリガ更新可能 (trigger updatable) とする。削除INSTEAD OFト

リガがビューに対して定義されているならば,そのビューは,トリガ削除可能 (trigger deletable) とする。 

実現値生成不可の利用者定義型から導出されていない行型をもつ全ての実表も含めて,幾つかの更新可

能な表は,挿入可能 (insertable-into) でもある。過渡表は,挿入可能ではない。“7.6 <表参照>”の構文規則

が,導出表Tが挿入可能かどうかを決定する。ビューを定義する導出表が挿入可能ならば,そのビューは,

挿入可能とする。挿入INSTEAD OFトリガがビューに対して定義されているならば,そのビューは,トリ

ガ挿入可能 (trigger insertable-into) とする。 

表Tが更新可能か又はトリガ更新可能ならば,Tに対する更新操作は,制約しているアクセス規則及び

52 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則次第で許される。表Tが更新可能か又はトリガ削除可能ならば,Tに対する削除操作は,制約

しているアクセス規則及び適合性規則次第で許される。表Tが挿入可能か又はトリガ挿入可能ならば,T

に対する挿入操作は,制約しているアクセス規則及び適合性規則次第で許される。 

4.15.7 表記述子 

この細分箇条は,ISO/IEC 9075-9の“4.10.2 表記述子”によって修正される。 

09 表は,表記述子によって記述される。表記述子は,過渡表記述子,実表記述子,ビュー記述子,又は

(ビューでない導出表の対する)導出表記述子のいずれかとする。 

どの表記述子も,次の項目を含む。 

− 表中の各列の列記述子。 

− あるならば,その表に関連付けられた構造型の名前。 

− 表が挿入可能かどうかを示す標識。 

− 表が参照可能表かどうかを示す標識,及び自己参照列がシステム生成自己参照列か,利用者生成自己

参照列か又は導出自己参照列かを示す標識。 

− あるならば,直接上位表の名前。 

− 空かもしれない,直接下位表の名前のリスト。 

過渡表記述子は,過渡表を記述する。表記述子の構成要素に加えて,過渡表記述子は,次の項目を含む。 

− <問合せ式>に含まれる<WITHリスト要素>によって過渡表が定義されるならば,<問合せ名>。<トリ

ガ定義>によって過渡表が定義されるならば,<遷移表名>。 

実表記述子は,実表を記述する。表記述子の構成要素に加えて,実表記述子は,次の項目を含む。 

− 実表の名前。 

− 表が,通常永続実表か,システムバージョン表か,大域一時表か,作成局所一時表か又は宣言局所一

時表かを示す標識。 

− 表に対して定義された各期間の記述子。 

− 実表が大域一時表,作成局所一時表又は宣言局所一時表ならば,ON COMMIT PRESERVE ROWSが指

定されたか,又はON COMMIT DELETE ROWSが指定若しくは想定されたかを示す標識。 

− 表に対して指定された各表制約の記述子。 

− “4.19 関数従属性”の規則に従った関数従属性の空でない集合。 

− “4.20 候補キー”の規則に従った候補キーの空でない集合。 

− “4.19 関数従属性”の規則に従った,主キーを補足的に示すかもしれないし,示さないかもしれない

優先候補キー。 

導出表記述子は,導出表を記述する。表記述子の構成要素に加えて,導出表記述子は,次の項目を含む。 

− その表がどのように導出されるべきかを定義する<問合せ式>(導出表記述子がビュー記述子内に含ま

れるとき,これは,ビューの階層的な<問合せ式>として知られ,下位行をもつかもしれないビューの

行を見つけるために用いる。)。 

− 導出表が更新可能かどうかを示す標識。 

− 導出表が単純に更新可能かどうかを示す標識。 

ビュー記述子は,ビューを記述する。導出表記述子の構成要素に加えて,ビュー記述子は,次の項目を

53 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含む。 

− ビューの名前。 

− ビューがCHECK OPTIONをもつかどうかを示す標識。もつならば,CASCADEDとして適用されるの

か又はLOCALとして適用されるのかを示す標識。 

− ビューの元の<問合せ式>(この<問合せ式>は,下位行をもたないビューの行を見つけるために用い

る。)。 

− ビューの利用者指定の<問合せ式>。 

注記42 利用者指定の<問合せ式>は,参照型が導出表現をもつ参照可能ビューを除いて,元の<問合せ

式>と同一である(“11.32 <ビュー定義>”の一般規則参照。)。 

− ビューがトリガ更新可能かどうかを示す標識。 

− ビューがトリガ挿入可能かどうかを示す標識。 

− ビューがトリガ削除可能かどうかを示す標識。 

4.15.8 表間の関係 

この細分箇条は,ISO/IEC 9075-9の“4.10.3 表間の関係”によって修正される。 

単純に基となる表 (simply underlying table),基となる表 (underlying table),末端で基となる表 (leaf 

underlying table),一般に基となる表 (generally underlying table) 及び末端で一般に基となる表 (leaf generally 

underlying table) という用語は,導出表又はカーソルと他の表との間の関係を定義する。 

導出表の単純に基となる表は,“7.12 <問合せ指定>”及び“7.13 <問合せ式>”の構文規則で規定する。<

表名又は問合せ名>は,単純に基となる表をもたない。カーソルの単純に基となる表は,そのカーソルの結

果集合記述子に含まれる<カーソル指定>(又は,元祖カーソルに対しては,カーソル宣言記述子に含まれ

る<カーソル指定>)とする。 

導出表又はカーソルの基となる表は,その導出表又はカーソルの単純に基となる表,及びその導出表又

はカーソルの単純に基となる表の基となる表とする。 

導出表又はカーソルの末端で基となる表は,それ自体がどの基となる表ももたない,導出表又はカーソ

ルの基となる表とする。 

09 導出表又はカーソルの一般に基となる表は,その導出表又はカーソルの基となる表,及び導出表又は

カーソルの基となる<表名又は問合せ名> TORQNの各表に対して,次のとおりに定義されるTORQNの一

般に基となる表とする。 

− 

09 TORQNが実表を識別するか又はTORQNが<遷移表名>ならば,TORQNは,一般に基となる表をも

たない。 

− TORQNが<問合せ名>ならば,TORQNの一般に基となる表は,TORQNによって識別される<WITHリ

スト要素>の<問合せ式本体> QEB,及びQEBの一般に基となる表とする。 

− TORQNがビューVを識別するならば,TORQNの一般に基となる表は,Vのビュー記述子に含まれる

階層的な<問合せ式> QEV,及びQEVの一般に基となる表とする。 

導出表又はカーソルの末端で一般に基となる表は,それ自体がどの一般に基となる表ももたない,導出

表又はカーソルの一般に基となる表とする。 

4.15.9 参照可能表,下位表及び上位表 

構造型STから導出される行型をもつ表RTを型付き表 (typed table) と呼ぶ。実表又はビューだけが型

付き表であることができる。型付き表は,名前及び宣言型がSTの各属性に対応する列,並びにRTの自己

54 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

参照列であるもう一つの列REFCをもつ。REFCの<列名>をREFCNとする。REFCの宣言型は,必然的

にREF(ST) であり,REFCのナル可能性特性は,ナル可能でないことが分かる (known not nullable) とす

る。RTが実表ならば,表制約“UNIQUE(REFCN)”がRTの定義中で暗に想定される。型付き表を参照可

能表 (referenceable table) と呼ぶ。自己参照列は,更新できない。その値は,参照可能表への行の挿入の間

に決定される。システム生成自己参照列及び導出自己参照列の値は,参照可能表に行が挿入されるときに,

自動的に生成される。利用者生成自己参照列の値は,参照可能表に挿入されるべき候補行の部分として与

える。 

表Taが別の表Tbの直接下位表 (direct subtable) であることは,Taの<表定義>又は<ビュー定義>に含

まれる<下位表句>にTbの<表名>が含まれることと同値とする。Ta及びTbは両方とも,構造型を基にし

て作成されなければならず,Taの構造型は,Tbの構造型の直接下位型でなければならない。 

表Taが表Tbの下位表 (subtable) であることは,次のいずれかが真であることと同値とする。 

1) TaとTbとが名前付きの同じ表である。 

2) TaがTbの直接下位表である。 

3) TaがTcの直接下位表で,かつ,TcがTbの下位表であるような表Tcが存在する。 

表Tは,それ自体の下位表の一つとみなされる。それ自体を除くTの下位表をTの真下位表 (proper 

subtable) と呼ぶ。表は,真下位表としてそれ自体をもってはならない。 

表Taが表Tbの下位表ならば,TbをTaの上位表 (supertable) と呼ぶ。TaがTbの直接下位表ならば,

TbをTaの直接上位表 (direct supertable) と呼ぶ。他のどの表の下位表でもない表は,最上位表 (maximal 

supertable) と呼ぶ。 

最上位表をTaとし,Taの下位表をTとする。Taの全ての(Ta自体も含む)下位表の集合は,T又は

(等価的に)Taの下位表族 (subtable family) と呼ぶ。どの下位表族も,ただ一つの最上位表をもつ。 

末端の表 (leaf table) は,どの真下位表ももたない表とする。 

構造型STaの下位表Taの列で,STaの継承属性に対応する列を,継承列 (inherited column) と呼ぶ。Ta

の列で,STaの原定義属性に対応する列を,原定義列 (originally-defined column) と呼ぶ。 

TAの下位表をTBとする。<問合せ指定>“SELECT * FROM TA”中の<選択リスト>“*”によって暗に

想定される<値式>の並びをSLAとする。TBの値中のどの行RBに対しても,RAが<行副問合せ>“SELECT 

SLA FROM VALUES RRB”の結果であるようなただ一つの行RAがTAの値中に存在する。ここで,RRB

は,値がRBである<行値構成子>とする。RAを,RBのTA中の上位行 (superrow) と呼び,RBを,RAの

TB中の下位行 (subrow) と呼ぶ。TAが実表ならば,上位行と下位行との間の1対1対応が,TAの上位表

に対して指定されるべき一意性制約の要件によって保証される。TAがビューならば,このような1対1対

応は,TAの末端で一般に基となる表に対して指定されるべき一意性制約の要件によって保証される。 

利用者が下位表の定義中で表を利用するためには,その利用者は,その表に関するUNDER権限をもた

なければならない。表は,二つ以上の真下位表をもつことができる。同様に,表は,二つ以上の真上位表

をもつことができる。 

4.15.10 

表を含む演算 

表値は,<問合せ式>によって演算され,<問合せ式>によって戻される。<問合せ式>の構文は,表値を演

算し,表値を戻す様々な内部演算子を含む。特に,どの<問合せ式>も,一つ以上の表値を演算し,単一の

表値を戻す少なくとも一つの<FROM句>を実効的に含む。<FROM句>によって演算される表値は,<表参

照>によって指定される。 

55 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表Tを含む演算は,処理系依存の順序で各行を次々に参照しながらTの行の範囲を移動する範囲変数 

(range variable) RVを定義してもよい。したがって,RVへの各参照は,Tのただ一つの行を参照する。T

は,RVに関連付けられた表 (table associated with) という。 

<表参照>中で,被参照表の真下位表中の下位行を結果行から除くために,ONLYを指定することができ

る。 

<表参照>中で,<標本方法>及び<標本率>に依存して結果行の部分集合を戻すように,<標本句>を指定す

ることができる。<標本句>が<REPEATABLE句>を含むならば,処理系定義の幾つかの条件を満たすとい

う条件で,その<表参照>の繰返し実行は,与えられた<繰返し引数>に対して同一行をもつ結果表を戻す。 

SQLデータ変更文によって指定される幾つかの表更新操作は,適用可能なアクセス規則及び適合性規則

に従って,更新可能表及びトリガ更新可能表に関して利用できる。更新可能表T又はトリガ更新可能表T

の値は,Tに対して操作する最も最近実行されたSQLデータ変更文(“4.34.2 機能によって分類されたSQL

文”参照)の結果によって決定される。実表T又は導出表Tに対するSQLデータ変更文は,(T自体に対

する)一次的な効果 (primary effect) 及び0個以上の(必ずしもTに対してではない)二次的な効果 

(secondary effect) をもつ。Tがシステムバージョン表ならば,効果は,現在システム行に対応する行の部分

集合に制限される。ビュー表に対するSQLデータ変更文の効果は,“15.9 ビュー表からの行の削除の効果”,

“15.12 ビュー表への表の挿入の効果”及び“15.15 ビュー表中の行の置換えの効果”の一般規則で規定す

る。 

通常実表T又は導出表Tに対する<DELETE文:位置付け>の一次的な効果は,Tからただ一つの指定さ

れた行を削除することとする。通常実表T又は導出表Tに対する<DELETE文:探索>の一次的な効果は,

Tから0行以上の行を削除することとする。 

システムバージョン表Tに対する<DELETE文:位置付け>又は<DELETE文:探索>の一次的な効果は,

<DELETE文:位置付け>又は<DELETE文:探索>を実行するSQLトランザクションのトランザクション

時刻印の値をシステム時刻期間終了列に設定した行に,それぞれ,ただ一つの指定された行又は0行以上

の行を置き換えることとする。 

加えて,実表Tに対するFOR PORTION OFを指定した<DELETE文:探索>の一次的な効果は,Tから

削除される各行に対して,0行,1行又は2行の新しい行をTに挿入することとする。 

通常実表Tに対する<TRUNCATE TABLE文>の一次的な効果は,Tに対して指定されたどのトリガの実

行も引き起こさないで,Tから全ての行を削除することとする。 

通常実表T又は導出表Tに対する<UPDATE文:位置付け>の一次的な効果は,T中のただ一つの指定さ

れた行を,ある指定された行に置き換えることとする。通常実表T又は導出表Tに対する<UPDATE文:

探索>の一次的な効果は,T中の0行以上の行を置き換えることとする。 

システムバージョン表Tに対する<UPDATE文:位置付け>の一次的な効果は,ある指定された行のシス

テム時刻期間開始列に<UPDATE文:位置付け>を実行するSQLトランザクションのトランザクション時

刻印の値VTを設定し,かつ,システム時刻期間終了列にシステム時刻期間終了列の宣言型によって提供

される最大値を設定した行に,T中のただ一つの指定された行Rを置き換えて,それに続けて,システム

時刻期間終了列に値VTを設定した更新前のRの写しを挿入することとする。 

システムバージョン表Tに対する<UPDATE文:探索>の一次的な効果は,置き換えるべき各候補行Rに

対して,ある指定された行のシステム時刻期間開始列に<UPDATE文:探索>を実行するSQLトランザク

ションのトランザクション時刻印の値VTを設定し,かつ,システム時刻期間終了列にシステム時刻期間

終了列の宣言型によって提供される最大値を設定した行に,Rを置き換えて,それに続けて,システム時

56 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

刻期間終了列に値VTを設定した更新前のRの写しを挿入することとする。 

加えて,実表Tに対するFOR PORTION OFを指定した<UPDATE文:探索>の一次的な効果は,T中の

置き換えられる各行に対して,0行,1行又は2行の新しい行をTに挿入することとする。 

通常実表T又は導出表Tに対する<INSERT文>の一次的な効果は,指定された表中に含まれる0行以上

のそれぞれの行をTに挿入することとする。 

システムバージョン表Tに対する<INSERT文>の一次的な効果は,指定された表中に含まれる0行以上

のそれぞれの行のシステム時刻期間開始列に<INSERT文>を実行するSQLトランザクションのトランザク

ション時刻印の値を設定し,かつ,システム時刻期間終了列にシステム時刻期間終了列の宣言型によって

提供される最大値を設定した行を,Tに挿入することとする。 

通常実表T又は導出表Tに対する<MERGE文>の一次的な効果は,Tから0行以上の行を削除すること,

T中の0行以上の行を指定された行に置き換えること,及び/又は0行以上の指定された行をTに挿入す

ることとする。 

システムバージョン表Tに対する<MERGE文>の一次的な効果は,この細分箇条の7番目の段落で記述

したとおりに,T中の0行以上の行を削除すること,この細分箇条の12番目の段落で記述したとおりに,

T中の0行以上の行を指定された行に置き換えること,及び/又はこの細分箇条の15番目の段落で記述し

たとおりに,0行以上の指定された行をTに挿入することとする。 

それぞれの表更新操作は,実表T又は導出表Tに適用されるとき,様々な二次的な効果をもつことがあ

る。このような二次的な効果は,一次的な効果の変更及び取消しを含む。二次的な効果は,次の存在から

生じるかもしれない。 

− 値が二次的な効果の影響を受けるかもしれないT自体を除くTの基となる表。 

− <ビュー定義>にWITH CASCADED CHECK OPTIONを指定しない更新可能なビュー。 

− 結果としてTの基となる表を含む整合性制約によって参照される表に対する二次的な効果となるかも

しれないそのような制約に関して指定される波及動作。 

− 値がTに対する更新操作によって影響を受けるかもしれないTの真下位表及び真上位表。 

− T以外の更新可能な表に対する表更新操作を指定するかもしれないTの基となる表に対して指定され

るトリガ。 

4.15.11 

識別列 

実表BTの列は,一つ以下の識別列 (identity column) を任意に含むことができる。識別列の宣言型は,位

取り0の真数型,例えばINTEGER,又は元型が位取り0の真数型である個別型のいずれかとする。識別列

は,開始値 (start value),増分 (increment),最大値 (maximum value),最小値 (minimum value) 及び周期選

択肢 (cycle option) をもつ。識別列は,内部順序数生成子SGに関連付けられる。BTの識別列をICとす

る。行RがBTへの挿入のために提供されるとき,RがICに対応する列を含まないならば,SGをSEQUENCE

として,“9.25 順序数生成子の次値の生成”の一般規則を適用する。それらの一般規則の適用によって戻さ

れるRESULTをVとする。ICに対する値は,Vとする。識別列の定義は,GENERATED ALWAYS又は

GENERATED BY DEFAULTを指定してもよい。 

注記43 “開始値”,“増分”,“最大値”,“最小値”及び“周期選択肢”は,“4.22 順序数生成子”で定義

している。 

注記44 識別列に関連付けられる内部順序数生成子の概念は,この規格での定義のためだけに用いる。 

4.15.12 

実列及び生成列 

実表の列は,実列 (base column) 又は生成列 (generated column) のいずれかとする。実列は,生成列でな

57 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

い列とする。生成列は,<値式>である生成式 (generation expression) の評価によって値が決定される列と

し,その<値式>の宣言型が暗にその列の宣言型になる。生成式は,それが属する実表の実列を参照するこ

とができるが,他のSQLデータへのアクセスはできない。したがって,行R中の生成列に対応するフィー

ルドの値は,Rの0個以上の他のフィールドの値によって決定される。 

生成列GCは,その生成式中の<列参照>によって参照される各列に依存し,そのようなそれぞれの被参

照列は,GCのパラメタ列 (parametric column) とする。 

4.15.13 

グループ表 

グループ表 (grouped table) は,<GROUP BY句>の評価の間に導出されるグループの集合とする。グルー

プGは,どのグループ化列GCに対しても,ある行中のGCの値がGVと異ならないならば,各行中のGC

の値がGVである行の集まりとする。さらに,R1が,グループ表GTのグループG1中の行で,かつ,R2

が,どのグループ化列GCに対しても,R1中のGCの値がR2中のGCの値と異ならないようなGT中の

行ならば,R2は,G1中にある。GT中のどの行も,ただ一つのグループ中にある。グループを表とみなし

てもよい。集合関数は,グループに対して作用する。 

4.15.14 

ウィンドウ表 

ウィンドウ表 (windowed table) は,一つ以上のウィンドウを伴う表とする。ウィンドウ (window) は,<

表式>に関連付けられた過渡データ構造とする。ウィンドウは,<ウィンドウ定義>によって陽に定義され

るか,又は<句内ウィンドウ指定>によって暗に定義される。暗に定義されたウィンドウは,処理系依存の

ウィンドウ名をもつ。ウィンドウは,<ウィンドウ関数>の定義中で用いる行の集まりであるウィンドウ区

画及びウィンドウ枠を指定するために用いる。 

どのウィンドウも,<表式>の行のウィンドウ分割 (window partitioning) を定義する。ウィンドウ分割は,

列のリストによって指定する。ウィンドウ分割は,グループ表のグループの形成と類似している。しかし,

グループ表とは異なり,各行は,<表式>の結果中に保持される。行Rのウィンドウ区画 (window partition) 

は,ウィンドウ分割句中に列挙される全ての列に対して,Rと異ならない行R2の集まりとする。ウィンド

ウ分割句は,省略可能とする。省略されるならば,結果中の全ての行から成る単一のウィンドウ区画が存

在する。 

<表式>がグループ化され,ウィンドウももつならば,ウィンドウ区画が行のグループではなく<導出表>

の行から成るように,グループ化を<導出表>に分離する構文上の変換が存在する。 

ウィンドウは,ウィンドウによって定義される各ウィンドウ区画内の行のウィンドウ順序付け (window 

ordering) を定義してもよい。ウィンドウ区画内の行のウィンドウ順序付けは,<値式>及びそれに続く(昇

順のための)ASC又は(降順のための)DESCのリストによって指定する。さらに,各<値式>の順序付け

られた並び中でナル値が全てのナルでない値の前に現れるのが望ましいか又は後に現れるのが望ましいか

を示すために,NULLS FIRST又はNULLS LASTを指定してもよい。 

ウィンドウ順序付けグループ (window ordering group) は,ウィンドウ区画中の,ウィンドウ順序付けに

従って同位の行の最大集合とする。ウィンドウ順序付けグループ内の行の順序付けは,処理系依存とする

が,ウィンドウ区画のウィンドウ順序付けグループを全順序付けすることは,次のとおり可能である。

WOG1及びWOG2が,同じウィンドウ区画Pに含まれる二つのウィンドウ順序付けグループならば,WOG1

がWOG2に先行するということは,WOG1のある行がWOG2のある行に先行することと同値とする。 

任意に,ウィンドウは,各行Rに対してウィンドウ枠 (window frame) を定義してもよい。ウィンドウ枠

は,常に現在行と関連して定義される。ウィンドウ枠は,最大四つの次の構文要素によって指定する。 

− <ソートキー>の値に対する増減によって現在行から前方若しくは後方に変位させることによってウ

58 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ィンドウ枠の論理的な定義を示すためのRANGE,現在行を含むウィンドウ順序付けグループから(<

ソートキー>によって定義される)ウィンドウ順序付けグループの個数を前方若しくは後方に数える

ことによってウィンドウ枠の論理的な定義を示すためのGROUPS,又は現在行から前方若しくは後方

に行を数えることによってウィンドウ枠の物理的な定義を示すためのROWSの選択。 

− 開始行。これは,Rのウィンドウ区画の最初の行,現在行,又は現在行からの論理的若しくは物理的

な変位によって決定される任意の行であってもよい。 

− 終了行。これは,Rのウィンドウ区画の最後の行,現在行,又は現在行からの論理的若しくは物理的

な変位によって決定される任意の行であってもよい。 

− (開始行の前又は終了行の後にあることによって既に除外されていないならば,)現在行及び/又はそ

の同位行を除外するかどうかを示す<ウィンドウ枠除外>。 

ウィンドウは,次の項目を含むウィンドウ構造記述子 (window structure descriptor) によって記述される。 

− ウィンドウ名。 

− 任意に,順序付けウィンドウ名。すなわち,順序付けウィンドウ (ordering window) と呼ばれ,現在の

ウィンドウの分割及び順序付けを定義するために用いる別のウィンドウの名前。 

− ウィンドウ分割句。すなわち,現在の<ウィンドウ指定>中,又は順序付けウィンドウのウィンドウ記

述子中のいずれかで指定されているならば,<ウィンドウ区画句>。 

− ウィンドウ順序付け句。すなわち,現在の<ウィンドウ指定>中,又は順序付けウィンドウのウィンド

ウ記述子中のいずれかで指定されているならば,<ウィンドウ順序句>。 

− あるならば,ウィンドウ枠付け句。すなわち,<ウィンドウ枠句>。 

一般的に,二つの<ウィンドウ関数>は,独立して計算され,それらが同じデータ及び同じ<ソート指定リ

スト>を用いるとしても,それぞれが独自にデータの並べ替えを実行する。並べ替えは,半順序を指定して

もよいので,<ウィンドウ関数>の計算は,全順序ではない点で必然的に非決定的とする。それにもかかわ

らず,例えば,二つの移動集約が正確に同じ順序で区画の行を移動するような同じ順序付けを用いて二つ

の<ウィンドウ関数>が計算されることを利用者が望むかもしれない。次のいずれかが真ならば,二つの<

ウィンドウ関数>は,それらの行の(潜在的に非決定的な)同じウィンドウ順序付けを用いて計算される。 

− <ウィンドウ関数>が同じウィンドウ構造記述子を識別する。 

− <ウィンドウ関数>のウィンドウ構造記述子がウィンドウ分割句をもち,それらのウィンドウ分割句が

同じ個数の列参照から成り,出現順に対応するそれらの列参照の対が等価である。かつ,それらのウ

ィンドウ構造記述子が同じ個数の<ソートキー>のウィンドウ順序付け句をもち,それらの<ソートキ

ー>が全て列参照であり,出現順に対応するそれらの列参照の対が等価であり,対応する<ソート指定

>の対が,等価な<照合順名>を指定する<COLLATE句>,同じ<順序付け指定>(ASC又はDESC),及

び同じ<ナル順序付け>(NULLS FIRST又はNULLS LAST)を指定するか又は暗に想定する。 

− 一方の<ウィンドウ関数>のウィンドウ構造記述子が他方の<ウィンドウ関数>の順序付けウィンドウ

であるか,又は両方のウィンドウ構造記述子が同じ順序付けウィンドウを識別する。 

4.16 データ分析操作(表を含む) 

この細分箇条は,ISO/IEC 9075-14の“4.4 データ分析操作(表を含む)”によって修正される。 

4.16.1 データ分析操作の導入 

データ分析関数は,<表式>の結果中の多数の行から導出される値を戻す関数とする。データ分析関数を

59 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

呼び出してもよいのは,<問合せ指定>,<SELECT文:単一行>又は単純表問合せの一部としてだけで,か

つ,この後に示す幾つかの文脈の場合だけとする。データ分析関数は,次のうちの一つとする。 

− グループ表に対して呼び出され,グループ表のグループからグループ化操作又は集約関数を計算する

グループ関数。 

− ウィンドウ表に対して呼び出され,ウィンドウ表の各行に対して値を計算するウィンドウ関数。 

4.16.2 グループ関数 

グループ関数は,<問合せ指定>又は<SELECT文:単一行>の<選択リスト>,<HAVING句>又は<WINDOW

句>中にだけ現れてもよい。 

グループ関数は,次のうちの一つとする。 

− グループ化操作 (grouping operation)。 

− グループ集約関数 (group aggregate function)。 

グループ化操作は,GROUPING(<列参照>) という形式から成る。そのような呼出しの結果は,CUBE,

ROLLUP又はGROUPING SETを含むグループ化問合せの実行の間,値がその<列参照>による集約の結果

である行の場合は,1とし,そうでなければ,0とする。 

4.16.3 ウィンドウ関数 

ウィンドウ関数は,ウィンドウ表のウィンドウ構造記述子によって定義されたとおりに,与えられた行

に対する結果がその行のウィンドウ枠から導出される関数とする。ウィンドウ関数は,<問合せ指定>若し

くは<SELECT文:単一行>の<選択リスト>中,又は単純表問合せである<問合せ式>に単純に含まれる

<ORDER BY句>中にだけ現れてもよい。 

ウィンドウ関数は,次のうちの一つとする。 

− 順位関数。 

− 分布関数。 

− 行番号関数。 

− ウィンドウ集約関数。 

− NTILE関数。 

− LEAD関数。 

− LAG関数。 

− FIRST̲VALUE関数。 

− LAST̲VALUE関数。 

− NTH̲VALUE関数。 

順位関数は,ウィンドウ構造記述子によって指定されたそれらの行のウィンドウ順序付けに従って,同

じウィンドウ構造記述子によって定義されたとおりの行Rのウィンドウ区画内でのRの順位を計算する。

それらのウィンドウ区画内のウィンドウ順序付けに関して互いに異ならない行には,同じ順位が割り当て

られる。キーワードRANK及びDENSE̲RANKによって指定する2種類の順位がある。 

− RANKが指定されるならば,行Rの順位は,Rに先行し,かつ,Rの同位行でない行の個数に1を加

えた値として定義される。 

注記45 これは,ウィンドウ順序付けに関して二つ以上の行が異ならないならば,連続した順位の番

号付け中に1以上の隔たりがあることを意味する。 

60 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− DENSE̲RANKが指定されるならば,行Rの順位は,Rに先行する行及びRを含む行で,ウィンドウ

順序付けに関して異なる行の個数として定義される。 

注記46 これは,各ウィンドウ区画中で,行の連続した順位の番号付け中に隔たりがないことを意味

する。 

分布関数は,ウィンドウ構造記述子によって定義された行Rのウィンドウ区画内でのRの相対順位を計

算し,その相対順位を0.0と1.0との間の概数比として表す。キーワードPERCENT̲RANK及びCUME̲DIST

によって指定する2種類の相対順位がある。 

− PERCENT̲RANKが指定されるならば,行Rの相対順位は,(RK-1)/(NR-1) として定義される。ここ

で,RKは,RのRANKと定義し,NRは,Rのウィンドウ区画内の行の個数と定義する。 

− CUME̲DISTが指定されるならば,行Rの相対順位は,NP/NRとして定義される。ここで,NPは,

Rのウィンドウ区画のウィンドウ順序付けでRに先行するか又はRと同位の行の個数と定義し,NR

は,Rのウィンドウ区画内の行の個数と定義する。 

ROW̲NUMBER関数は,ウィンドウのウィンドウ順序付けに従って,そのウィンドウ区画内での,最初

の行を1として開始するその行の連続した行番号を計算する。 

ウィンドウ集約関数は,グループ表のグループではなく,行のウィンドウ枠に対して集約するという点

を除いて,グループ集約関数と同じ集約値(COUNT, SUM, AVGなど)を計算する。仮説集合関数は,ウ

ィンドウ集約関数としては許されない。 

ウィンドウ集約関数WAFの集約化引数は,<入れ子ウィンドウ関数>を含んでもよい。<入れ子ウィンド

ウ関数>には,<入れ子ROW̲NUMBER関数>及び<VALUE̲OF式AT行>の二つがある。<入れ子ウィンド

ウ関数>は,両方とも,特定の行を示すキーワードである<行マーカ>を用いる。<入れ子ウィンドウ関数>

を評価する特定の行をRとする。Rによって決定されるウィンドウ枠をFとし,Rを含むウィンドウ区画

をPとする。<行マーカ>は,次のとおりとする。 

− Pの最初の行を示すBEGIN̲PARTITION。 

− Fの最初の行を示すBEGIN̲FRAME。 

− Fの最後の行を示すEND̲ FRAME。 

− Pの最後の行を示すEND̲PARTITION。 

− 行Rを示すCURRENT̲ROW。 

− WAFの評価の間にFの最初の行から最後の行まで変動するF内の行を示すFRAME̲PARTITION。 

<入れ子ROW̲NUMBER関数>は,<行マーカ>のウィンドウ区画での行番号を戻す(ウィンドウ区画内

の行は,ウィンドウ順序付けに従って1から始まる連続した番号が付けられる。)。 

<VALUE̲OF式AT行>は,<行マーカ>に省略可能な変位を加えるか又は差し引くことによって示される

行に対して<値式>を評価する。<行マーカ>と加えるか又は差し引く変位とを組み合わせた結果が,ウィン

ドウ区画の外側になるならば,<VALUE̲OF式AT行>の値は,省略可能な引数の値か,又はこの引数が省

力された場合のナル値とする。 

NTILE関数は,位取り0の真数値nとして評価される<単純値指定>又は<動的パラメタ指定>を引数と

してとり,ウィンドウ構造記述子によって定義されるRのウィンドウ区画内の各行Rに対して,1からn

までの範囲の位取り0の真数値を計算する。 

LEAD関数及びLAG関数は,それぞれ,<値式> VE,<真数定数> OFFSET及び<値式> DEFAULTの三

61 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

つの引数をとる。ウィンドウ構造記述子によって定義される行Rのウィンドウ区画P内の各Rに対して,

LAG関数は,P内でRのOFFSET行前にある行に対して評価したVEの値を戻し,LEAD関数は,P内で

RのOFFSET行後にある行に対して評価したVEの値を戻す。DEFAULTの値は,(LAG関数に対して)P

内でRのOFFSET行前に対応する行がないか,又は(LEAD関数に対して)P内でRのOFFSET行後に

対応する行がないならば,結果として戻される。さらに,VEがナル値と評価されるP内の行を保持する

か又は取り除くかを示すために,RESPECT NULLS又はIGNORE NULLSを指定できる。 

FIRST̲VALUE関数及びLAST̲VALUE関数は,引数として任意の<値式> VEをとり,ウィンドウ表の各

行Rに対して,ウィンドウ構造記述子によって定義されるRのウィンドウ枠の最初の行(FIRST̲VALUE

関数の場合),又はRのウィンドウ枠の最後の行(LAST̲VALUE関数の場合)に対して評価したVEの値

を戻す。さらに,VEがナル値と評価される行を保持するか又は取り除くかを示すために,RESPECT NULLS

又はIGNORE NULLSを指定できる。 

NTH̲VALUE関数は,任意の<値式> VE,及び位取り0の真数値nとして評価される<単純値指定>又は

<動的パラメタ指定>を引数としてとり,ウィンドウ表の各行Rに対して,ウィンドウ構造記述子によって

定義されるRのウィンドウ枠の最初の行(FROM FIRSTが指定されるか又は暗に想定されるとき)又は最

後の行(FROM LASTが指定されるとき)からn番目の行に対して評価したVEの値を戻す。さらに,VE

がナル値と評価される行を保持するか又は取り除くかを示すために,RESPECT NULLS又はIGNORE 

NULLSを指定できる。 

4.16.4 集約関数 

この細分箇条は,ISO/IEC 9075-14の“4.4.1 集約関数”によって修正される。 

集約関数は,次のうちの一つによって定義される行の集約から結果が導出される関数とする。 

− グループ表のグループ化。この場合,集約関数は,グループ集約関数又は集合関数とし,各グループ

に対して,そのグループ中の全ての行を含む一つの集約がある。 

− 特定のウィンドウ構造記述子に関連するウィンドウ表の行Rのウィンドウ枠。この場合,集約関数は,

ウィンドウ集約関数とし,その集約は,ウィンドウ構造記述子によって定義されるとおりのRのウィ

ンドウ枠中の全ての行から成る。 

任意に,<FILTER句>によって指定する<探索条件>を満たす行だけを保持して,集約中の行の集まりを

ろ(濾)過してもよい。 

集約関数COUNT(*) の結果は,集約中の行の個数とする。 

他のどの集約関数も,単項グループ集約関数 (unary group aggregate function),2項グループ集約関数 

(binary group aggregate function),逆分布関数 (inverse distribution function) 又は仮説集合関数 (hypothetical 

set function) として分類してもよい。 

どの単項集約関数も,引数として任意の<値式>をとる。ほとんどの単項集約関数は,DISTINCT又はALL

のいずれかで任意に限定することができる。集約中の行でも,次の行は,集約される行から取り除かれる。 

− DISTINCTが指定されるならば,冗長な重複行。 

− <値式>がナル値と評価される全ての行。 

集約される行がないならば,COUNTの結果は,0とし,他のどの集約関数の結果も,ナル値とする。 

14 そうでなければ,(すなわち,少なくとも一つの行が集約されるならば,)集約関数の結果は,次によ

る。 

62 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− COUNT <値式>が指定されるならば,集約される行の個数。 

− SUMが指定されるならば,集約される各行に対して評価される<値式>の合計。 

− AVGが指定されるならば,集約される各行に対して評価される<値式>の平均。 

− MAXが指定されるならば,集約される各行に対して評価される<値式>の最大値。 

− MINが指定されるならば,集約される各行に対して評価される<値式>の最小値。 

− EVERYが指定されるならば,集約される全ての行に対して<値式>が真 (True) と評価されるならば,

真,そうでなければ,偽 (False)。 

− ANY又はSOMEが指定されるならば,集約される少なくとも一つの行に対して<値式>が真 と評価さ

れるならば,真,そうでなければ,偽。 

− VAR̲POPが指定されるならば,集約される各行に対して評価される<値式>の母集団分散で,集約さ

れる行の<値式>の平均からの<値式>の差の2乗和をその行数で除した値として定義される。 

− VAR̲SAMPが指定されるならば,集約される各行に対して評価される<値式>の標本分散で,集約され

る行の<値式>の平均からの<値式>の差の2乗和をその行数から1を減じた値で除した値として定義さ

れる。 

− STDDEV̲POPが指定されるならば,集約される各行に対して評価される<値式>の母集団標準偏差で,

母集団分散の平方根として定義される。 

− STDDEV̲SAMPが指定されるならば,集約される各行に対して評価される<値式>の標本標準偏差で,

標本分散の平方根として定義される。 

− ARRAY̲AGGが指定されるならば,集約される各行に対して評価される<値式>から形成される一つの

要素をもつ配列値。 

VAR̲POP,VAR̲SAMP,STDDEV̲POP又はSTDDEV̲SAMPに対しては,DISTINCTもALLも指定す

ることが許されない。これらの関数を計算するとき,冗長な重複行は,集約される行から取り除かれない。 

2項集約関数は,<従属変数式>及び<独立変数式>の1対の引数をとり,それらは,両方とも<数値式>と

する。どちらかの引数がナル値と評価されるどの行も,集約される行から取り除かれる。集約される行が

ないならば,REGR̲COUNTの結果は,0とし,他の2項集約関数は,ナル値になる。そうでなければ,計

算が行われ,その結果は,次のとおりとする。 

− REGR̲COUNTが指定されるならば,集約される行の個数。 

− COVAR̲POPが指定されるならば,母集団共分散で,集約される行の<従属変数式>のその平均からの

差に<独立変数式>のその平均からの差を乗じた積の合計を行数で除した値として定義される。 

− COVAR̲SAMPが指定されるならば,標本共分散で,集約される行の<従属変数式>のその平均からの

差に<独立変数式>のその平均からの差を乗じた積の合計を行数から1を減じた値で除した値として定

義される。 

− CORRが指定されるならば,相関係数で,母集団共分散を<独立変数式>の母集団標準偏差と<従属変

数式>の母集団標準偏差との積で除した比率として定義される。 

− REGR̲R2が指定されるならば,相関係数の2乗。 

− REGR̲SLOPEが指定されるならば,(<独立変数式>,<従属変数式>)の対によって決定される最小2

乗線形方程式の傾き。 

− REGR̲INTERCEPTが指定されるならば,(<独立変数式>,<従属変数式>)の対によって決定される最

小2乗線形方程式のy切片。 

63 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− REGR̲SXXが指定されるならば,<独立変数式>の2乗の合計。 

− REGR̲SYYが指定されるならば,<従属変数式>の2乗の合計。 

− REGR̲SXYが指定されるならば,<従属変数式>に<独立変数式>を乗じた積の合計。 

− REGR̲AVGXが指定されるならば,<独立変数式>の平均。 

− REGR̲AVGYが指定されるならば,<従属変数式>の平均。 

二つの逆分布関数PERCENTILE̲CONT及びPERCENTILE̲DISCがある。逆分布関数は,両方とも,引

数,及び値式の順序付けを指定する。引数の値は,0以上で,かつ,1以下であるのが望ましい。値式は,

集約される各行に対して評価され,ナル値が捨てられ,残っている行が順序付けられる。その計算は,次

によって決定する。 

− PERCENTILE̲CONTが指定されるならば,集約される行の総数に対する割合として扱われる引数によ

って示される連続した行の対を考えて,これらの行に対して値式を評価して値を内挿する。 

− PERCENTILE̲DISCが指定されるならば,ウィンドウ順序付けとして指定された値式の順序付けを用

いて,CUME̲DISTウィンドウ関数のウィンドウ区画として集約される行の集まりを扱って,累積分

布値が引数以上の最初の値式を戻す。 

仮説集合関数は,ウィンドウ関数RANK,DENSE̲RANK,PERCENT̲RANK及びCUME̲DISTと関連

があり,異なる構文をもつが,同じ名前を用いる。これらの関数は,引数A,及び値式VEの順序付けを

とる。VEは,集約される全ての行に対して評価される。値のこの集まりは,Aによって拡張される。結果

の集まりは,ウィンドウ順序付けがその値式の順序付けである対応するウィンドウ関数のウィンドウ区画

として扱われる。仮説集合関数の結果は,集まりにAを加えた,仮説“行 (row)”に対する同じ名前のウ

ィンドウ関数の値とする。 

4.17 決定論 

一般的に,操作が同一の入力値で繰り返されたとき,確実に同一の結果を計算するならば,その操作は,

決定的 (deterministic) とする。SQL呼出しルーチンに対しては,引数リスト中の値を入力とみなす。そう

でなければ,SQLデータ,及びそれらをアクセスするための権限の集合を入力とみなす。行の順序付けで

の違いは,処理系依存の振る舞いを規定する一般規則によって許されるとおり,決定論の議論に対して意

味があるとはみなさない。 

注記47 トランザクション隔離性水準,特にSERIALIZABLE以外のトランザクション隔離性水準は,決

定論に重大な影響を与える。しかし,(行又はページにロックをかけるというような)実装技術

を公に要求しないでその影響を明確に規定することが難しく,異なるSQL処理系のほとんどが

全く異なる方法でこの問題を確かに解決しているので,この規格では,この影響を扱わない。 

操作が決定的であると認識することは,難しい作業であり,この規格では,一般的に要求しない。SQL

呼出しルーチンは,ルーチンがDETERMINISTICであると宣言されるならば,決定的とみなす。すなわち,

SQL処理系は,ルーチンが決定的であることをSQL呼出しルーチンの定義者が正しく宣言したと信用す

る。他の操作に対しては,この規格では,操作が決定的であるとしてラベル付けしない。その代わりに,

幾つかの操作を“潜在的に非決定的”として識別する。<値式>,<表参照>,<表一次子>,<問合せ指定>,

<問合せ式>及び<SQL手続文>に関連した他の細分箇条で,特定の定義を見つけることができる。 

幾つかの<ブール値式>は,“回顧決定的”として識別される。回顧決定的な<ブール値式>は,ある時点で

真 (True) ならば,同一の権限の集合をもつ任意の利用者によって同一のSQLデータに対して再評価され

64 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

るとき,それ以降の全ての時点で真 になるという特性をもつ。正確な定義は,“6.35 <ブール値式>”で見

つかる。 

4.18 整合性制約 

4.18.1 整合性制約の概要 

整合性制約 (integrity constraint) は,一般的に制約として単純に参照され,実表中の値を制約することに

よってSQLデータの正しい状態を定義する。制約は,制約記述子によって記述される。制約は,表制約,

定義域制約又は表明のいずれかとし,それぞれ,表制約記述子,定義域制約記述子又は表明記述子によっ

て記述される。各制約記述子は,次の項目を含む。 

− 制約の名前。 

− 適用可能な<探索条件>。 

注記48 記述子に含まれる適用可能な<探索条件>は,実行することによって制約記述子を生じるSQL

文に含まれるかもしれない<探索条件>である必要はない。幾つかの場合には,与えられた<探

索条件>からそれを導出するが,そのSQL文の一般規則が,制約記述子に含まれるべき適用

可能な<探索条件>を規定する。例えば,表制約の構文は,その表の行に対する万能の限定が

暗に想定されることを許す。記述子に含まれる適用可能な<探索条件>中で,全ての種類の制

約の一様な扱いを許すために,その万能の限定が陽に行われる。 

− 制約が遅延可能かどうかを示す標識。 

− 初期制約モードが遅延 (deferred) か又は即時 (immediate) かを示す標識。 

どの整合性制約も,回顧決定的ではない<探索条件>を用いて定義してはならない。 

4.18.2 制約の検査 

どの制約も,遅延可能 (deferrable) か又は遅延可能でない (non-deferrable) かのいずれかとする。SQLト

ランザクション内で,どの制約も,制約モードをもつ。制約が遅延可能でないならば,その制約モードは,

常に即時 (immediate) とする。そうでなければ,即時又は遅延 (deferred) のいずれかとする。どの制約も,

各SQLトランザクションの開始時点及びその制約の定義直後のその制約の制約モードを指定する初期制

約モードをもつ。制約が遅延可能ならば,<SET CONSTRAINT MODE文>を実行することによって,(即時

から遅延に,又は遅延から即時に,)その制約モードを変更してもよい。 

表制約は,強制 (enforced) か,又は強制でない (not enforced) かのいずれかとする。定義域制約及び表

明は,常に強制とする。 

強制制約の検査は,現行SQLトランザクション内の制約モードに依存する。SQL文が実行されるときは

いつでも,その実行が影響を与えた結果として生じるSQLデータ及びスキーマの変更の後のある時点で,

制約が満たされるかどうかを調べるために,モードが即時であるどの強制制約も検査される。制約が満た

される (satisfied) ということは,その記述子に含まれる適用可能な<探索条件>が真 (True) 又は不定 

(Unknown) と評価されることと同値とする。いずれかの強制制約が満たされないならば,その文の実行の

結果として生じるSQLデータ又はスキーマのどの変更も取り消される(“13.4 <SQL手続文>”の一般規則

参照)。 

注記49 これは,異なるSQL文の実行の直接の結果又は間接の結果として実行されるSQL文を含む。

それは,制約モードへの即時の設定を陽に含むか又は暗に含む効果をもつ文も含む。 

<SET CONSTRAINT MODE文>の実行によって陽に設定するか,又は現行SQLトランザクションの最後

に暗に設定するかのいずれかで,制約モードに即時を設定することができる。 

65 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<COMMIT文>が実行されるとき,全ての強制制約が実効的に検査され,いずれかの強制制約が満たされ

ないならば,例外条件が引き起こされ,そのSQLトランザクションは,暗に想定される<ROLLBACK文>

によって終了する。 

制約の検査とは対照的に,参照制約によって指定される参照動作は,決して遅延しない。 

4.18.3 表制約 

4.18.3.1 表制約の導入 

表制約 (table constraint) は,実表記述子に記述子が含まれる制約とする。特定の実表に関連付けること

は,その表の行に対する万能の限定が暗に想定される便利な構文的簡略表現が許される。 

表制約は,一意性制約,参照制約又は表検査制約のいずれかとする。表制約は,表制約記述子によって

記述される。 

制約記述子の構成要素に加えて,表制約記述子は,次の項目を含む。 

− 制約が強制か又は強制でないかを示す標識。 

注記50 一意性制約は,常に強制である。表検査制約又は参照制約は,強制又は強制でないのいずれ

かであり得る。 

表制約記述子は,それぞれ,一意性制約記述子,参照制約記述子又は表検査制約記述子のいずれかとす

る。 

下位表の全ての行がその上位表の全ての行中に対応する上位行をもつとみなされるという事実によって,

実表Tに対して指定されるどの表制約も,暗にTの全ての下位表に関する制約とする。 

4.18.3.2 一意性制約 

表制約記述子の構成要素に加えて,一意性制約記述子は,次の項目を含む。 

− PRIMARY KEYで定義されたか,又はUNIQUEで定義されたかを示す標識。 

− <一意列リスト>中に指定された一意列 (unique column) の名前及び位置。 

− <WITHOUT OVERLAPS指定>が指定されるならば,指定された期間の名前。 

一意性制約がPRIMARY KEYで定義されたことを示す一意性制約記述子を実表Tの表記述子が含むな

らば,その一意性制約の列は,Tの主キー (primary key) を構成する。主キーをもつ表は,真上位表をもつ

ことができない。 

表Tに対して,<WITHOUT OVERLAPS指定>を含まない一意性制約が満たされるということは,一意列

中にナルでない同じ値をもつようなTの二つの行R1及びR2が存在しないことと同値とする。表Tの一

意性制約UCが<WITHOUT OVERLAPS指定> WOSを含むならば,WOSに含まれる<適用業務時刻期間名

>をATPNとする。UCが満たされるということは,一意列中にナルでない同じ値をもち,かつ,Tの二つ

の行R1及びR2のATPN期間値が重なるようなR1及びR2が存在しないことと同値とする。さらに,一

意性制約がPRIMARY KEYで定義されたならば,それは,指定された列中のどの値もナル値でないことを

要求する。 

4.18.3.3 参照制約 

表制約記述子の構成要素に加えて,参照制約記述子は,次の項目を含む。 

− <参照列>中に指定された参照列 (referencing column) の名前のリスト。 

− <被参照表及び列>中に指定された被参照表 (referenced table)。 

− <被参照表及び列>中に指定された被参照列 (referenced column) の名前のリスト。 

66 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− <参照PERIOD指定>が指定されるならば,指定された期間の名前。 

− <一致型>及び<参照被トリガ動作>。 

<一致型>の選択は,MATCH SIMPLE,MATCH PARTIAL及びMATCH FULLとする。MATCH SIMPLE

は,既定値とする。参照列が一つだけ(したがって,被参照列も一つだけ)ならば,これらの選択の間に

意味上の違いはない。全ての参照列がナル可能でないならば,これらの選択の間に意味上の違いはない。

参照列が二つ以上であり,それらの少なくとも一つがナル可能で,かつ,<参照PERIOD指定>が指定され

ないならば,各<一致型>は,次の意味をもつ。 

− MATCH SIMPLE: 少なくとも一つの参照列がナルならば,参照表の行は,制約検査を通過する。全

ての参照列がナルでないならば,行が制約検査を通過することは,全ての参照列と一致する被参照表

の行が存在することと同値とする。 

− MATCH PARTIAL: 全ての参照列がナルならば,参照表の行は,制約検査を通過する。少なくとも一

つの参照列がナルでないならば,行が制約検査を通過することは,全てのナルでない参照列と一致す

る被参照表の行が存在することと同値とする。 

− MATCH FULL: 全ての参照列がナルならば,参照表の行は,制約検査を通過する。全ての参照列が

ナルでないならば,行が制約検査を通過することは,全ての参照列と一致する被参照表の行が存在す

ることと同値とする。ある参照列がナルで,かつ,別の参照列がナルでないならば,参照表の行は,

制約検査に違反する。 

参照列が二つ以上であり,それらの少なくとも一つがナル可能で,かつ,<参照PERIOD指定>が指定さ

れるならば,<参照PERIOD指定>に含まれる<適用業務時刻期間名>をCATPNとし,<被参照PERIOD指

定>に含まれる<適用業務時刻期間名>をPATPNとする。各<一致型>は,次の意味をもつ。 

− MATCH SIMPLE: 少なくとも一つの参照列がナルならば,参照表の行は,制約検査を通過する。全

ての参照列がナルでないならば,参照表の行Rが制約検査を通過することは,被参照表の行の空でな

い集合S中の各行がRの全ての参照列と一致し,かつ,RのCATPN期間値がS中の行のPATPN期

間値の和集合の部分集合であるようなSが存在することと同値とする。 

− MATCH PARTIAL: 全ての参照列がナルならば,参照表の行は,制約検査を通過する。少なくとも一

つの参照列がナルでないならば,参照表の行Rが制約検査を通過することは,被参照表の行の空でな

い集合S中の各行がRの全てのナルでない参照列と一致し,かつ,RのCATPN期間値がS中の行の

PATPN期間値の和集合の部分集合であるようなSが存在することと同値とする。 

− MATCH FULL: 全ての参照列がナルならば,参照表の行は,制約検査を通過する。全ての参照列が

ナルでないならば,参照表の行Rが制約検査を通過することは,被参照表の行の空でない集合S中の

各行がRの全ての参照列と一致し,かつ,RのCATPN期間値がS中の行のPATPN期間値の和集合の

部分集合であるようなSが存在することと同値とする。ある参照列がナルで,かつ,別の参照列がナ

ルでないならば,参照表の行は,制約検査に違反する。 

注記51 <参照PERIOD指定>が指定される場合には,参照表中の与えられた行Rに対して,対応する

行が被参照表中に二つ以上存在しても,RのCATPN期間値中の与えられた任意の時点では,

高々一つの対応する行が被参照表中に存在する。 

参照列の名前のリスト及び被参照列の名前のリストの順序付けは,処理系定義とするが,対応する列の

名前は,各リスト中の対応する位置を占めなければならない。 

67 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表制約が参照制約の場合には,その表は,参照表 (referencing table) として参照される。参照制約の被参

照列 は,被参照表 のいずれかの一意性制約の一意列 でなければならない。<参照PERIOD指定>が指定

されるならば,被参照表の一意列を定義する一意性制約は,<WITHOUT OVERLAPS指定>を指定しなけれ

ばならない。 

参照表は,被参照表と同じ表でもよい。 

NO ACTIONを含まない<更新規則>は,参照更新動作 (referential update action) を指定する。NO ACTION

を含まない<削除規則>は,参照削除動作 (referential delete action) を指定する。参照更新動作及び参照削除

動作を,まとめて参照動作 (referential action) と呼ぶ。参照動作は,参照制約の検査の部分ではなく,その

前に実行される。参照制約を遅延させることは,その制約の<探索条件>(<MATCH述語>)の検査を遅延

させるが,参照制約の参照動作は,遅延させない。 

注記52 例えば,ON UPDATE CASCADEのような参照更新動作が指定されるならば,参照制約が遅延で

あっても,被参照表に対するどのUPDATE操作も,そのUPDATE操作の部分として参照表に波

及する。したがって,その参照制約は,UPDATE文によって違反にはなり得ない。一方,ON 

UPDATE SET DEFAULTは,参照列にその既定値が設定された後に一致する行が存在しないな

らば,参照制約の違反になり得る。さらに,参照表に関するINSERT操作及びUPDATE操作に

は,参照制約のどんな自動的な実行も伴わない。そのような制約の違反は,COMMIT時又はそ

の前に,参照制約が最終的に検査されるときに検出される。 

<更新規則>のための選択肢は,次による。 

− ON UPDATE CASCADE: 被参照表中の被参照列に対するどの変更も,参照表の一致行中の対応する

参照列に対して同じ変更を引き起こす。 

− ON UPDATE SET NULL: 被参照表中の被参照列に対するどの変更も,参照表の一致行中の対応する

参照列にナルを設定させる。 

− ON UPDATE SET DEFAULT: 被参照表中の被参照列に対するどの変更も,参照表の一致行中の対応

する参照列にその既定値を設定させる。 

− ON UPDATE RESTRICT: 一致行が存在するならば,被参照表中の被参照列に対するどの変更も禁止

される。 

− ON UPDATE NO ACTION(既定値): 参照更新動作がない。参照制約は,制約検査だけを指定する。 

注記53 制約検査が遅延でなくても,ON UPDATE RESTRICTは,ON UPDATE NO ACTIONよりも厳し

い条件である。ON UPDATE RESTRICTは,一致行が存在するならば,特定の行の更新を禁止す

る。ON UPDATE NO ACTIONは,更新されるべき行の集合が完全に処理されるまで,その制約

検査を実行しない。 

<削除規則>のための選択肢は,次による。 

− ON DELETE CASCADE: 被参照表の行が削除されるならば,参照表中の全ての一致行が削除される。 

− ON DELETE SET NULL: 被参照表の行が削除されるならば,参照表の全ての一致行中の全ての参照

列にナルが設定される。 

− ON DELETE SET DEFAULT: 被参照表の行が削除されるならば,参照表の全ての一致行中の全ての

参照列にその列の既定値が設定される。 

− ON DELETE RESTRICT: 参照表中に一致行をもつならば,被参照表の行の削除が禁止される。 

− ON DELETE NO ACTION(既定値): 参照削除動作がない。参照制約は,制約検査だけを指定する。 

68 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記54 参照制約が遅延でなくても,ON DELETE RESTRICTは,ON DELETE NO ACTIONよりも厳し

い条件である。ON DELETE RESTRICTは,一致行が存在するならば,特定の行の削除を禁止す

る。ON DELETE NO ACTIONは,削除されるべき行の集合が完全に処理されるまで,その制約

検査を実行しない。 

4.18.3.4 表検査制約 

表検査制約が満たされるということは,それが適用される表の全ての行に対して指定された<探索条件>

が真 (True) 又は不定 (Unknown) と評価されることと同値とする。 

注記55 その結果として,空の表は,それに適用される全ての表検査制約を満たす。 

4.18.4 定義域制約 

定義域制約は,定義域に対して指定される制約とする。この制約は,その定義域を基にする全ての列,

及びその定義域に型変換する全ての値に適用される。 

定義域制約は,定義域制約記述子によって記述される。制約記述子の構成要素に加えて,定義域制約記

述子は,次の項目を含む。 

− 定義域制約用途の<探索条件>を生成するためのテンプレートの<探索条件>。 

− 空であるかもしれない定義域制約用途の集合。 

定義域制約用途記述子 (domain constraint usage descriptor) は,<データ型又は定義域名>が<定義域名>で

ある<列定義>の評価によって暗に作成される。Cがそのような列で,Dがその<定義域名>によって識別さ

れる定義域ならば,Dに対して定義されるどの定義域制約DCも,C中の各値がDCを満たすという意味

の定義域制約用途を暗に想定する。 

表制約記述子の構成要素に加えて,定義域制約用途記述子は,次の項目を含む。 

− 適用可能な列の名前。 

− C中の各値がDCを満たすかどうかを評価する適用可能な<探索条件>。 

定義域制約がSQLデータによって満たされるということは,その定義域を基にするCという名前の列

をもつどの表Tに対しても,適切な定義域制約用途中に記録されている適用可能な<探索条件>が真 (True) 

又は不定 (Unknown) と評価されることと同値とする。 

定義域制約が<CAST指定>の結果によって満たされるということは,指定されたテンプレートの<探索

条件>中の<一般値指定> VALUEの各実現値をその<CAST指定>の結果で置き換えた<探索条件>が真 又は

不定 と評価されることと同値とする。 

4.18.5 表明 

表明は,記述子がどの表記述子にも含まれない独立スキーマ構成要素である制約とする。 

4.19 関数従属性 

この細分箇条は,ISO/IEC 9075-9の“4.11 関数従属性”によって修正される。 

4.19.1 関数従属性の規則及び表記法の概要 

この細分箇条は,ISO/IEC 9075-9の“4.11.1 関数従属性の規則及び表記法の概要”によって修正される。 

09 この細分箇条では,関数従属性 (functional dependency) を定義し,実表及び<問合せ式>中の関数従属

性及び候補キーを決定するために,規格に適合する処理系が従わなければならない規則の最小の集合を規

定する。 

この細分箇条で示したところでは,この細分箇条中の規則に,処理系定義の規則を自由に追加してもよ

69 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

い。 

任意の表をTとする。Tの全ての列から成る集合をCTとし,必ずしも共通要素をもたないわけではな

く,かつ,空であるかもしれない,CTの任意の部分集合をA及びBとする。 

Tの全ての可能な値に対して,A中のどの列に対しても異ならない任意の二つの行が,B中のどの列に

対しても異ならないならば,真になるという,T中のAに対するBの関数従属性を“T : A 

B”[“T中で,

Aは,Bを決定する (in T, A determines B)”又は“T中でBがAに関数従属である (B is functionally dependent 

on A in T)”と読む。]で示す。表Tが文脈から分かるとき,略記“A 

B”を用いてもよい。 

Yが表T中の関数従属性ならば,Xは,T中のYの決定子 (determinant) とする。 

T中の任意の二つの関数従属性をA 

B及びC 

Dとする。次の関数従属性も,T中の関数従属性であ

る。 

− A UNION (C DIFFERENCE B)  

 B UNION D 

− C UNION (A DIFFERENCE D)  

 B UNION D 

注記56 ここで,“UNION”は,和集合を示し,“DIFFERENCE”は,差集合を示す。 

これら二つの規則を,関数従属性の推論規則 (rules of deduction) と呼ぶ。 

どの表にも,関連する空でない関数従属性の集合がある。 

任意のXに対してX 

Xであるので,関数従属性の集合は,空ではない。この形式の関数従属性には,

YがXの部分集合のとき,X 

Yというような公理的な関数従属性がある。YがXの部分集合でないなら

ば,X 

Yは,公理的でない関数従属性とする。 

4.19.2 一般規則及び定義 

次の細分箇条では,列C2を参照する列参照(又は,列参照である<値式>)によって列C1が指定され,

表QTがC2の修飾する表ならば,C1を,QTのC2の対応物 (counterpart) とする。C1が,修飾する表QT1

のC2の対応物で,かつ,C2が,修飾する表QT2のC3の対応物ならば,C1は,QT2のC3の対応物とす

る。 

対応物の概念は,次に示すとおりに,列の集合に自然に一般化される。S1及びS2が列の集合で,S1の

各要素がS2の対応する要素の対応物であるような1対1対応がS1とS2との間にあるならば,S1は,S2

の対応物とする。 

次の細分箇条は,知られている関数従属性 (known functional dependency) の概念を再帰的に定義する。こ

れは,表とその表の列から成る二つの集合との間の3項関係とする。この関係は,表中の関数従属性がSQL

処理系に知られていることを表す。全ての公理的な関数従属性は,知られている関数従属性とする。さら

に,関数従属性の推論規則を用いて,知られている関数従属性から推論することができるどの関数従属性

も,知られている関数従属性とする。 

次の細分箇条は,(“Sは,BUC集合”のように,ここで,Sは,列の集合とする。)表の列の集合である

“BUC集合 (BUC-set)”の概念も再帰的に定義する。 

注記57 再帰の開始点が,実表の遅延可能でない一意性制約を構成するナルでないことが分かる列の集

合なので,“BUC”は,“実表一意性制約 (Base table Unique Constraint)”に対する頭字語である。 

BUC集合の概念は,BUC集合に対する次の推論規則で閉じている。S1及びS2が列の集合で,S1がS2

の部分集合で,S1 

S2で,かつ,S2がBUC集合ならば,S1も,BUC集合とする。 

注記58 BUC集合は,空であるかもしれず,その場合には,表中に高々一つの行がある。この場合は,

BUC集合のない表と区別する。 

70 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

BUC集合Sの全ての列がBT中に対応物をもち,かつ,Sの列の可能などの値に対しても,それらの列

中にそれらの値をもつ高々一つの行がBT中に存在するような関連する実表BTを,表Tの列から成るど

のBUC集合Sも,もたなければならないという条件で,SQL処理系は,BUC集合を決定するための追加

の規則を定義してもよい。 

次の細分箇条は,(“Sは,BPK集合”のように,ここでSは,列の集合とする。)表の列の集合である

“BPK集合 (BPK-set)”の概念も再帰的に定義する。どのBPK集合も,BUC集合とする。 

注記59 再帰の開始点が,実表の遅延可能でない主キー制約を構成するナルでないことが分かる列の集

合なので,“BPK”は“実表主キー (Base table Primary Key)”に対する頭字語である。 

BPK集合の概念は,BPK集合に対する次の推論規則で閉じている。S1及びS2が列の集合で,S1がS2

の部分集合で,S1 

S2で,かつ,S2がBPK集合ならば,S1も,BPK集合とする。 

注記60 BUC集合と同様に,BPK集合も,空であるかもしれない。 

全てのBPK集合SがBUC集合で,かつ,Sの全ての要素が,関連する実表BTの主キー中の列に対応

物をもつという条件で,SQL処理系は,BPK集合を決定するための追加の規則を定義してもよい。 

知られている関数従属性,BUC集合及びBPK集合を決定するための規則を用いる前に,全ての適用可

能な構文変換(例えば,*,CUBE又はROLLUPを取り除くこと)が適用されなければならない。 

次の細分箇条では,次に示すとおりに再帰的に定義される,<探索条件> SCのAND構成要素 (AND-

component) の概念を用いる。 

− SCが<ブールテスト> BTならば,SCのAND構成要素は,BTだけとする。 

− SCが<ブール因子> BFならば,SCのAND構成要素は,BFだけとする。 

− SCが“P AND Q”という形式の<ブール項>ならば,SCのAND構成要素は,PのAND構成要素及び

QのAND構成要素とする。 

− SCがORを指定する<ブール値式> BVEならば,SCのAND構成要素は,BVEだけとする。 

SCのAND構成要素をACとし,ここで,ACは,<比較演算子>が<等号演算子>の<比較述語>とする。

ACのオペランドである二つの<行値述語オペランド>をRVE1及びRVE2とする。RVE1及びRVE2の両方

とも,<行値構成子述語オペランド>であると仮定する。RVE1の次数をnとする。1 ≤ i ≤ nの各iに対し

て,RVE1及びRVE2のi番目の<共通値式>,<ブール述語オペランド>又は<行値構成子要素>を,それぞ

れ,RVEC1i及びRVEC2iとする。<比較述語>“RVEC1i=RVEC2i”を,SCの等値性AND構成要素 (equality 

AND-component) と呼ぶ。 

4.19.3 実表中の知られている関数従属性 

実表をTとし,Tの全ての列から成る集合をCTとする。 

Tの列の集合S1がTの一意性制約UC中に列挙される列の集合で,UCがPRIMARY KEYを指定し,か

つ,UCが遅延可能でないならば,S1は,BPK集合 とする。 

Tの列の集合S1がTの一意性制約UC中に列挙される列の集合で,UCが遅延可能ではなく,かつ,S1

のどの要素も,ナルでないことが分かるならば,S1は,BUC集合 とする。 

BUC集合であるようなUCLがTの列の集合ならば,UCL 

CTは,T中の知られている関数従属性 と

する。 

GCがTの生成列ならば,D 

GCは,T中の知られている関数従属性 とする。ここで,Dは,GCのパ

ラメタ列の集合とする。 

T中のその他の知られている関数従属性を処理系定義の規則が決定してもよい。 

71 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4.19.4 ビュー表中の知られている関数従属性 

ビュー表をVとし,Vの全ての列から成る集合をCTとする。 

場合: 

− Vが参照可能ビューならば,Vの自己参照列をSRCとする。Vは,BPK集合をもたず,VのBUC集

合は,{SRC}だけとし,{SRC} 

CTは,V中の知られている関数従属性とする。 

注記61 この知られている関数従属性は,Vの下位表が作成されても,有効なまま残る。 

− そうでなければ,Vの元の<問合せ式>をQEとする。QEのBPK集合のV中の各対応物は,VのBPK

集合とする。QEのBUC集合のV中の各対応物は,VのBUC集合とする。S1 

S2がQEの知られて

いる関数従属性であり,CS1がV中のS1の対応物で,かつ,CS2がV中のS2の対応物ならば,CS1 

CS2は,Vの知られている関数従属性とする。 

4.19.5 遷移表中の知られている関数従属性 

AFTERトリガTR中で定義される遷移表をTTとし,TRの当該表をTとする。TTのBPK集合,BUC

集合及び知られている関数従属性は,TのBPK集合,BUC集合及び知られている関数従属性と同じとす

る。 

4.19.6 <表値構成子>中の知られている関数従属性 

<表値構成子>の結果をRとし,Rの全ての列から成る集合をCRとする。 

処理系定義の規則によって決定される場合を除いて,Rの列のどの集合も,BPK集合でも,BUC集合で

もない。 

全ての公理的な関数従属性は,<表値構成子>の知られている関数従属性 とする。さらに,(例えば,<表

値構成子>の実際の値を検査することによって,)処理系定義の知られている関数従属性があってもよい。 

4.19.7 <結合表>中の知られている関数従属性 

<結合表> JTの1番目及び2番目の<表参照>によって識別される表をT1及びT2とする。JTの結果で

ある表をRとする。JTの結果の列の集合をCTとする。 

Rのどの列も,ある対応物をT1又はT2のいずれかの中にもつ。NATURALが指定されるか,又は<結

合指定>が<名前付き列結合>ならば,Rの幾つかの列は,T1及びT2の両方中に対応物をもってもよい。 

Rの列の集合SがBPK集合である対応物をT1又はT2中にもち,Sのどの要素も,ナルでないことが分

かり,かつ,S 

CTがRの知られている関数従属性 ならば,Sは,BPK集合 とする。 

Rの列の集合SがBUC集合である対応物をT1又はT2中にもち,Sのどの要素も,ナルでないことが

分かり,かつ,S 

CTがRの知られている関数従属性 ならば,Sは,BUC集合 とする。 

注記62 <結合表>中の知られている関数従属性に対する次の規則は,相互に排反ではない。知られてい

る関数従属性の集合は,前に示した推論規則も含めて,全ての適用可能な規則によって生成さ

れるこれらの従属性の和集合である。 

BがT1中の知られている関数従属性で,CAがR中のAの対応物で,かつ,CBがR中のBの対応

物ならば,次の条件のうちの一つが真のとき,CA 

CBは,R中の知られている関数従属性とする。 

− CROSS,INNER又はLEFTが指定される。 

− RIGHT又はFULLが指定され,かつ,次の条件のうちの少なくとも一つが真である。 

・ A中の少なくとも一つの列がナル可能でないことが分かる。 

・ A中の全ての列が結合分割列である。 

BがT2中の知られている関数従属性で,CAがR中のAの対応物で,かつ,CBがR中のBの対応

72 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

物ならば,次の条件のうちの一つが真のとき,CA 

CBは,R中の知られている関数従属性とする。 

− CROSS,INNER又はRIGHTが指定される。 

− LEFT又はFULLが指定され,かつ,次の条件のうちの少なくとも一つが真である。 

・ A中の少なくとも一つの列がナル可能でないことが分かる。 

・ A中の全ての列が結合分割列である。 

<結合条件>が指定され,APがその<探索条件>の等値性AND構成要素で,APの一方の比較オペランド

が列参照CRで,かつ,APの他方の比較オペランドが<定数>ならば,R中のCRの対応物をCRCとする。

空集合を {}で示す。次の条件のいずれかが真ならば,{} 

{CRC} は,R中の知られている関数従属性と

する。 

− INNERが指定される。 

− LEFTが指定され,かつ,CRがT1中の列への列参照である。 

− RIGHTが指定され,かつ,CRがT2中の列への列参照である。 

注記63 他方の比較オペランドが列参照を含まない決定的な式ならば,SQL処理系は,知られている関

数従属性として,{} 

{CRC} も認識することを選択してもよい。 

<結合条件>が指定され,APがその<探索条件>の等値性AND構成要素で,APの一方の比較オペランド

が列参照CRAで,かつ,APの他方の比較オペランドが列参照CRBならば,R中のCRA及びCRBの対応

物をCRAC及びCRBCとする。次の条件のいずれかが真ならば,{CRAC} 

{CRBC} は,R中の知られて

いる関数従属性とする。 

− INNERが指定される。 

− LEFTが指定され,かつ,CRAがT1中の列への列参照である。 

− RIGHTが指定され,かつ,CRAがT2中の列への列参照である。 

注記64 SQL処理系は,知られている関数従属性として,次の関数従属性も認識することを選択しても

よい。CRAがナル可能でないことが分かり,CRAがT1の列で,かつ,RIGHT又はFULLが指

定されるか,又はCRAがナル可能でないことが分かり,CRAがT2の列で,かつ,LEFT又は

FULLが指定されるならば,{CRAC} 

{CRBC}。 

注記65 一方の比較オペランドが同様な条件で列参照CRA1,...,CRANの決定的な式である場合,SQL

処理系は,{CRA1,...,CRAN} 

{CRBC} という形式の類似の,知られている関数従属性も認

識することを選択してもよい。 

NATURALが指定されるか,又は<名前付き列結合>を直に含む<結合指定>が指定されるならば,1から

Nまでの範囲のiに対して,対応する結合列の列名をCI,...,CNとする。次の<探索条件>をSCとする。 

( TN1.C1 = TN2.C1 ) 

AND 

. . . 

AND 

( TN1.CN = TN2.CN ) 

“7.7 <結合表>”の構文規則で定義する<選択リスト>をSLCC及びSLとする。<結合型>をJTとする。

表T1及びT2の露出する<表名又は問合せ名>又は<相関名>を,それぞれ,TN1及びTN2とする。次の<問

合せ式>の結果をIRとする。 

73 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SELECT SLCC, TN1.*, TN2.* 

FROM TN1 JT JOIN TN2 

     ON SC 

IRの追加の知られている関数従属性 として,次の関数従属性が認識される。 

− INNER又はLEFTが指定されるならば,1からNまでの範囲の全てのiに対して,{COALESCE (TN1.Ci,

TN2.Ci )} 

{TN1.Ci }。 

− INNER又はRIGHTが指定されるならば,1からNまでの範囲の全てのiに対して,{COALESCE 

(TN1.Ci,TN2.Ci )} 

{TN2.Ci }。 

Rの知られている関数従属性 は,次の導出表の知られている関数従属性とする。 

SELECT SL FROM IR 

4.19.8 <表一次子>中の知られている関数従属性 

<表一次子> TPの結果をRとする。RのBPK集合,BUC集合及び知られている関数従属性は,次のと

おりに決定される。 

場合: 

− TPが,<表名又は問合せ名> TQN,又は<表名又は問合せ名> TQNを含む<ONLY指定>を直に含むな

らば,TQNのBPK集合及びBUC集合の対応物は,それぞれ,RのBPK集合及びBUC集合とする。

BがTQNの結果中の知られている関数従属性で,かつ,AC及びBCが,それぞれ,A及びBの

対応物ならば,AC 

BCは,R中の知られている関数従属性 とする。 

− TPが<導出表>又は<横参照導出表> DTを直に含むならば,DTのBPK集合及びBUC集合の対応物

は,それぞれ,RのBPK集合及びBUC集合とする。A 

BがDTの結果中の知られている関数従属性

で,かつ,AC及びBCが,それぞれ,A及びBの対応物ならば,AC 

BCは,R中の知られている関

数従属性 とする。 

− TPが<集まり導出表> CDTを直に含み,WITH ORDINALITYが指定されるならば,添え字列 (ordinality 

column) の列名をOCとし,CDTの全ての列の列名から成る集合をCTとする。{OC} は,BPK集合

で,かつ,BUC集合とし,{OC} 

CTは,知られている関数従属性 とする。WITH ORDINALITYが

指定されないならば,これらの規則は,どのBPK集合も,BUC集合も,公理的でない知られている

関数従属性も識別しない。 

− TPが<表関数導出表>を直に含むならば,これらの規則は,どのBPK集合も,BUC集合も,公理的で

ない知られている関数従属性も識別しない。 

− TPが<データ変更差分表>を直に含むならば,TPに単純に含まれる<データ変更文>の<相手表>又は<

挿入相手>をTTとする。TTのBPK集合及びBUC集合の対応物は,それぞれ,RのBPK集合及び

BUC集合とする。A 

BがTTの結果中の知られている関数従属性で,かつ,AC及びBCが,それぞ

れ,A及びBの対応物ならば,AC 

BCは,R中の知られている関数従属性 とする。 

− TPが<括弧付き結合表>を直に含むならば,TPに単純に含まれる<結合表>をJTとする。JTのBPK集

合及びBUC集合の対応物は,それぞれ,RのBPK集合及びBUC集合とする。A 

BがJTの結果中

の知られている関数従属性で,かつ,AC及びBCが,それぞれ,A及びBの対応物ならば,AC 

BC

は,R中の知られている関数従属性 とする。 

4.19.9 <表因子>中の知られている関数従属性 

<表因子> TFの結果をRとする。TFに直に含まれる<表一次子>の結果をSとする。SのBPK集合及び

74 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

BUC集合の対応物は,それぞれ,RのBPK集合及びBUC集合とする。A 

BがS中の関数従属性で,か

つ,AC及びBCが,それぞれ,A及びBの対応物ならば,AC 

BCは,R中の知られている関数従属性 と

する。 

4.19.10 

<表参照>中の知られている関数従属性 

<表参照> TRの結果をRとする。RのBPK集合,BUC集合及び関数従属性は,次のとおりに決定され

る。 

場合: 

− TRが<表因子> TFを直に含むならば,TFのBPK集合及びBUC集合の対応物は,それぞれ,RのBPK

集合及びBUC集合とする。A 

BがTFの結果中の関数従属性で,かつ,AC及びBCが,それぞれ,

A及びBの対応物ならば,AC 

BCは,R中の知られている関数従属性 とする。 

− TRが<結合表> JTを直に含むならば,JTのBPK集合及びBUC集合の対応物は,それぞれ,RのBPK

集合及びBUC集合とする。A 

BがJTの結果中の関数従属性で,かつ,AC及びBCが,それぞれ,

A及びBの対応物ならば,AC 

BCは,R中の知られている関数従属性 とする。 

4.19.11 

<FROM句>の結果中の知られている関数従属性 

<FROM句> FCの結果をRとする。 

FC中に<表参照> TRが一つだけ存在するならば,TRのBPK集合及びBUC集合の対応物は,それぞれ,

FCのBPK集合及びBUC集合とする。そうでなければ,これらの規則は,FCの結果中のどのBPK集合

も,BUC集合も識別しない。 

TがFCの<表参照リスト>に直に含まれる<表参照>ならば,T中の全ての知られている関数従属性は,

R中の知られている関数従属性 とする。 

4.19.12 

<WHERE句>の結果中の知られている関数従属性 

<WHERE句>のオペランドである表をTとする。<WHERE句>の結果をRとする。R中の列の集合Sの

全ての要素がTR中に対応物をもち,TR中のSの対応物がBUC集合で,かつ,CRがRの全ての列の集

合であるとき,S 

CRであるような<表参照> TRが存在するならば,Sは,BUC集合 とする。さらに,S

の対応物がBPK集合ならば,Sは,BPK集合 とする。 

BがT中の知られている関数従属性ならば,A中に対応物をもつRの列の集合をACとし,B中に

対応物をもつRの列の集合をBCとする。AC 

BCは,R中の知られている関数従属性 とする。 

APが,<WHERE句>に単純に含まれる<探索条件>の等値性AND構成要素で,APの一方の比較オペラ

ンドが列参照CRで,かつ,APの他方の比較オペランドが<定数>ならば,R中のCRの対応物をCRCと

する。{} 

{CRC}は,R中の知られている関数従属性 とする。ここで,{}は,空集合を示す。 

注記66 他方の比較オペランドが列参照を含まない決定的な式ならば,SQL処理系は,知られている関

数従属性として,{} 

{CRC}も認識することを選択してもよい。 

APが,<WHERE句>に単純に含まれる<探索条件>の等値性AND構成要素で,APの一方の比較オペラ

ンドが列参照CRAで,かつ,APの他方の比較オペランドが列参照CRBならば,R中のCRA及びCRBの

対応物をCRAC及びCRBCとする。{CRBC} 

{CRAC}及び{CRAC} 

{CRBC}は,R中の知られている関

数従属性 とする。 

注記67 一方の比較オペランドが列参照CRA1,...,CRANを含む決定的な式で,かつ,他方の比較オペ

ランドが列参照CRBならば,SQL処理系は,{CRA1,...,CRAN} 

{CRBC}という形式の知ら

れている関数従属性も認識することを選択してもよい。 

4.19.13 

<GROUP BY句>の結果中の知られている関数従属性 

75 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<GROUP BY句>のオペランドである表をT1とし,<GROUP BY句>の結果をRとする。 

ROLLUP,CUBE及びGROUPING SETSを取り除くための全ての構文変換を適用した後に,<GROUP BY

句>の<グループ化列参照リスト>によって指定される列の集合をGとする。 

Rの列は,Rの任意の特定の行中に,Gの列を組み合わせたその行の値と関連するT1の行の部分集合を

何らかの形で示す値をもつ追加の列CI,及びGの列とする。 

Gのどの要素も,ナルでないことが分かる列への列参照ならば,Gは,RのBUC集合 とする。GがT1

の列のBPK集合の部分集合ならば,Gは,RのBPK集合とする。 

CIは,R中の知られている関数従属性 とする。 

注記68 Rに関連して指定される全ての<集合関数指定>は,必然的にCIの関数である。SFVCがそのよ

うな<集合関数指定>の結果を含む列を示すならば,CI 

SFVCが成り立ち,結果として,G 

SFVCは,SFVCを含む表中の知られている関数従属性 ということになる。 

4.19.14 

<HAVING句>の結果中の知られている関数従属性 

<HAVING句>のオペランドである表をT1とし,<HAVING句>に単純に含まれる<探索条件>をSCとし,

<HAVING句>の結果をRとする。 

SがRの列の集合で,かつ,T1中のSの対応物がBPK集合ならば,Sは,BPK集合 とする。T1中のS

の対応物がBUC集合ならば,Sは,BUC集合 とする。 

次の<問合せ式>中のどの知られている関数従属性も,R中の知られている関数従属性 とする。 

SELECT * FROM T1 WHERE SC 

4.19.15 

<問合せ指定>中の知られている関数従属性 

<問合せ指定> QSに単純に含まれる<表式>をTとし,<問合せ指定>の結果をRとする。 

<問合せ指定>の<選択リスト>をSLとする。 

次のとおりに,<選択リスト>に含まれる<値式>から生じる列を右側に拡張したTをT1とする。列参照

ではない<値式> VEがT1中の計算された列CCを指定する。T1中のどの行に対しても,CC中の値は,VE

の結果とする。 

Sのどの要素も,SL中で<アスタリスク>を用いて生じるか,又はSLに単純に含まれる<値式>としての

列参照の指定によって生じるようなRの列の集合をSとする。Sは,T及びT1中に対応物をもつ。T中の

Sの対応物がBPK集合ならば,Sは,BPK集合 とする。T中のSの対応物がBUC集合又はBPK集合な

らば,Sは,BUC集合 とする。 

BがT中の知られている関数従属性ならば,A 

Bは,T1中の知られている関数従属性 とする。 

<選択リスト>中の潜在的に非決定的でない<値式> VEによって指定される列をCCとする。 

修飾する問合せがQSである列参照であり,かつ,<集合関数指定>の集約化引数中に含まれないVEの

オペランドを,OP1,OP2,...とする。 

集約問合せがQSである<集合関数指定>をVEが含まないならば,{OP1,OP2,...} 

CCは,T1中の知

られている関数従属性 とする。 

集約問合せがQSである<集合関数指定>をVEが含むならば,Tのグループ化列の集合を{G1,...}とす

る。{G1,...,OP1,OP2,...} 

CCは,T1中の知られている関数従属性 とする。 

T1中の知られている関数従属性をC 

Dとする。Cの全ての列がR中に対応物をもつならば,R中に対

応物をもつDのそれらの列から成る集合をDRとする。C 

DRは,R中の知られている関数従属性 とす

る。 

4.19.16 

<問合せ式>中の知られている関数従属性 

76 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<WITH句>が指定され,かつ,RECURSIVEが指定されないならば,<WITHリスト>中の<問合せ名>に

よって識別される表のBPK集合,BUC集合及び知られている関数従属性 は,それぞれ,対応する<問合

せ式>のBPK集合,BUC集合及び知られている関数従属性と同じとする。RECURSIVEが指定されるなら

ば,BPK集合,BUC集合及び公理的でない知られている関数従属性は,処理系定義とする。 

<単純表>である<問合せ一次子>である<問合せ項>である<問合せ式>は,この箇条内の先行する細分箇

条での規定に含まれる。 

<問合せ式>がUNION,EXCEPT又はINTERSECTを指定するならば,左側及び右側のオペランドの表を

T1及びT2とし,その結果をRとする。Rの全ての列から成る集合をCRとする。 

Rの各列がT1中に対応物をもち,T2中に対応物をもつ。 

場合: 

− EXCEPTが指定されるならば,Rの列の集合SのT1中の対応物がBPK集合ならば,Sは,BPK集合 

とする。T1中のSの対応物がBUC集合ならば,Sは,BUC集合 とする。 

− UNIONが指定されるならば,BPK集合も,BUC集合も,存在しない。 

− INTERSECTが指定されるならば,Rの列の集合SのT1及びT2中の対応物のいずれかがBPK集合な

らば,Sは,BPK集合 とする。T1及びT2中のSの対応物のいずれかがBUC集合ならば,Sは,BUC

集合 とする。 

場合: 

− UNIONが指定されるならば,処理系定義の規則によって決定される全ての関数従属性は別として,T1

又はT2中の公理的でないどの関数従属性も,R中の知られている関数従属性ではない。 

− EXCEPTが指定されるならば,T1中の全ての知られている関数従属性は,R中の知られている関数従

属性 とする。 

− INTERSECTが指定されるならば,T1中の全ての知られている関数従属性,及びT2中の全ての知ら

れている関数従属性は,R中の知られている関数従属性 とする。 

注記69 その他の知られている関数従属性が処理系定義の規則に従って決定されてもよい。 

4.20 候補キー 

CTが表Tの全ての列から成り,T中の関数従属性CK 

CTが成り立ち,関数従属性CK1 

CTが成り立

つようなCKの真部分集合CK1がT中に存在しないならば,CKは,Tの候補キー (candidate key) とする。

CTのどの真部分集合も候補キーでないならば,CTが候補キーなので,候補キーの集合SCKは,空ではな

い。 

注記70 候補キーは,(列の)集合なので,したがって,SCKは,(列の)集合の集合である。 

候補キーCKがBUC集合か,又はTがグループ化表で,かつ,CKがTのグループ化列の集合の部分集

合ならば,CKは,強い候補キー (strong candidate key) とする。強い候補キーの集合をSSCKとする。 

PがSCKの要素で,かつ,PがBPK集合 であるようなPの集合をPCKとする。 

場合: 

− PCKが空でないならば,主キー (primary key) は,次のとおりにPCKから選ばれる。PCKがただ一つ

の要素をもつならば,その要素は,主キーとする。そうでなければ,この後に示す“最左側規則 (left-

most rule)”に従って,PCKの最も左側の要素が選ばれる。主キーは,優先候補キー (preferred candidate 

key) でもある。 

77 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− そうでなければ,主キーがなく,優先候補キーは,次のとおりに選ばれる。 

場合: 

・ SSCKがただ一つの要素をもつならば,それが優先候補キーとする。そうでなければ,SSCKが二つ

以上の要素をもつならば,この後に示す“最左側規則”に従って,SSCKの最も左側の要素が選ばれ

る。 

・ そうでなければ,SCKがただ一つの要素をもつならば,それが優先候補キーとする。そうでなけれ

ば,この後に示す“最左側規則”に従って,SCKの最も左側の要素が選ばれる。 

− “最左側規則”は,次による。 

・ この規則は,この規格の他の箇所で規定しているとおりの,表の列の順序を用いる。 

Tの列の二つの集合の最も左側を決定するために,最初に,各集合をその要素の列番号の順序で

リストにし,短い方のリストを長い方のリストの長さになるまで0で拡張する。それから,それぞ

れの順序付けられたリストの左側から始めて,各リスト中の同じ位置からの,列番号が等しくない

要素の対が見つかるまで先へ進む。この対の要素のより小さい番号を含むリストを,Tの列の二つ

の集合の最も左側として識別する。 

Tの列の三つ以上の集合の最も左側を決定するために,任意の二つの集合の最も左側を取り,そ

れから,残りの集合の一つとそれとを対にして,最も左側を取り,残りの集合がなくなるまで続け

る。 

4.21 SQLスキーマ 

この細分箇条は,ISO/IEC 9075-4の“4.3 SQLスキーマ”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“4.12 SQLスキーマ”によって修正される。 

04 SQLスキーマは,次の項目を含む永続記述子とする。 

− SQLスキーマの名前。 

− SQLスキーマの所有者の<認可識別子>。 

− SQLスキーマに対する既定文字集合の名前。 

− SQLスキーマに対するSQL呼出しルーチンのためのSQLパスを定義する<スキーマパス指定>。 

− SQLスキーマの全ての構成要素の記述子。 

この規格では,“スキーマ”という用語は,SQLスキーマの意味でだけ用いる。記述子によって記述され

る永続オブジェクトは,スキーマの<認可識別子>によって,所有され (owned by) る,又は作成され (created 

by) たという。構成要素の各記述子は,次のうちの一つとする。 

− 定義域記述子。 

− 実表記述子。 

− ビュー記述子。 

− 制約記述子。 

− トリガ記述子。 

− 権限記述子。 

− 文字集合記述子。 

− 照合順記述子。 

− 文字変換記述子。 

78 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 利用者定義型記述子。 

− ルーチン記述子。 

− 順序数生成子記述子。 

スキーマは,最初に,<スキーマ定義>を用いて作成され,その後,<SQLスキーマ文>の実行によって時

間の経過とともに徐々に修正されてもよい。<スキーマ名>は,カタログ内で一意とする。 

<スキーマ名>は,カタログを識別する<カタログ名>によって陽に修飾されるか又は暗に修飾される。 

09 実表及びビューは,<表名>によって識別される。<表名>は,<スキーマ名>,それに続く<ピリオド>,

及びそれに続く<識別子>から成る。<スキーマ名>は,<表名>によって識別される実表又はビューの表記述

子を含むスキーマを識別する。異なるスキーマ中で定義される実表及びビューの<表名>は,等価な<識別

子>をもつことができる。 

注記71 <識別子>の等価性は,“5.2 <トークン>及び<分離符号>”で定義している。 

<表名>の参照が<スキーマ名>を陽に含まないならば,特定の<スキーマ名>が暗に想定される。そのよう

な<表名>に関連付けられる特定の<スキーマ名>は,<表名>が現れる文脈に依存し,<スキーマ修飾付き名

前>の規則に従う。 

<ルーチン呼出し>に含まれるSQL呼出しルーチンの参照が<スキーマ名>を陽に含まないならば,SQL

呼出しルーチンは,スキーマのSQLパスから選択される。 

<SQLスキーマ文>を含むスキーマ (containing schema) は,そのSQL文によって作成又は操作されるオ

ブジェクトの名前に暗に含まれるか又は陽に含まれる<スキーマ名>によって識別されるスキーマとして

定義される。 

4.22 順序数生成子 

4.22.1 順序数生成子の一般記述 

順序数生成子 (sequence generator) は,連続する真数値を一つずつ生成するための機構とする。順序数生

成子は,外部順序数生成子 (external sequence generator) 又は内部順序数生成子 (internal sequence generator) 

のいずれかとする。外部順序数生成子が名前付きのスキーマオブジェクトであるのに対して,内部順序数

生成子は,別のスキーマオブジェクトの構成要素とする。順序数生成子は,位取り0の真数型でなければ

ならないデータ型,最小値,最大値,開始値,増分及び周期選択肢をもつ。 

順序数生成子の指定は,データ型,最小値,最大値,開始値,増分及び周期選択肢の指定を任意に含む

ことができる。 

順序数生成子が負の増分に関連付けられるならば,それは,降順順序数生成子 (descending sequence 

generator) とし,そうでなければ,昇順順序数生成子 (ascending sequence generator) とする。 

順序数生成子は,時刻とともに変化する現在基底値 (current base value) をもち,それは,順序数生成子

のデータ型の値とする。順序数生成子は,(現在基底値+ N * 増分)として表現できる最小値と最大値との

間の可能な全ての値から成る周期をもつ。ここで,Nは,負でない数とする。 

順序数生成子が作成されるとき,その現在基底値は,開始値で初期化される。その後,現在基底値には,

昇順順序数生成子に対して周期中の未発行の最小値が,又は降順順序数生成子に対して周期中の未発行の

最大値が設定される。 

順序数生成子が生成された後はいつでも,その現在基底値には,<順序数生成子変更文>によって,その

データ型の任意の値を設定することができる。 

順序数生成子の現在基底値の変更は,SQLトランザクションによって制御されない。したがって,SQL

79 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

トランザクションのコミット及びロールバックは,順序数生成子の現在基底値にどんな効果も与えない。 

順序数生成子は,順序数生成子記述子によって記述される。順序数生成子記述子は,次の項目を含む。 

− 外部順序数生成子に対しては,スキーマ修飾付き順序数生成子名であり,内部順序数生成子に対して

は,長さ0の文字列である順序数生成子名。 

− 順序数生成子に関連付けられたデータ型のデータ型記述子。 

− 順序数生成子の開始値。 

− 順序数生成子の最小値。 

− 順序数生成子の最大値。 

− 順序数生成子の増分。 

− 順序数生成子の周期選択肢。 

− 順序数生成子の現在基底値。 

4.22.2 順序数生成子を含む演算 

<次値式>が順序数生成子SGに適用されるとき,SGは,NにSGの増分を乗じた値をSGの現在基底値

に加えた値として表現できるような,SGの現行周期から取り出された値Vを発行する。ここで,Nは,

負でない数とする。 

このようにして,順序数生成子は,通常,その周期中の全ての値を発行し,これらの値は,(増分の符号

に依存して)増加又は減少の順序になるが,その一般的な順序付け内に,分離された順序付けられた値の

下位グループが発生してもよい。 

順序数生成子の周期が使い尽くされる(すなわち,基準に合致する値を発行できない)ならば,現在基

底値に,(SGが昇順順序数生成子ならば,)SGの最小値,又は(SGが降順順序数生成子ならば,)SGの最

大値が設定され,新しい周期が作成される。 

新しい周期が作成され,SGの記述子がNO CYCLEを含むならば,例外条件が引き起こされる。 

単一のSQL文内に同じ順序数生成子を指定する<次値式>が複数出現するならば,それらの全ての<次値

式>は,そのSQL文によって処理される各行に対して同じ値を戻す。 

4.23 SQLクライアントモジュール 

SQLクライアントモジュール (SQL-client module) は,SQL環境のオブジェクトとし,それは,外部呼出

し手続及び幾つかの記述子を含むことができる。SQLクライアントモジュールは,(SQLクライアントモ

ジュールの利用のために必要な権限の付与及び剝奪を含んでもよい)処理系定義の機構によって,作成さ

れ,破壊される。SQLクライアントモジュールは,SQLクライアントを含むSQL環境中に存在する。 

SQLクライアントモジュールSが,<モジュール認可識別子> MAIを含む<SQLクライアントモジュー

ル定義>によって定義されるならば,Sの所有者は,MAIとする。そうでなければ,Sは,所有者をもたな

い。 

SQLクライアントモジュールは,<SQLクライアントモジュール定義>によって指定することができる

(“13.1 <SQLクライアントモジュール定義>”参照)。 

SQLクライアントモジュールは,次の項目を含む。 

− あるならば,SQLクライアントモジュールの名前。 

− モジュールに含まれる外部呼出し手続を呼び出すことができる翻訳単位のホスト言語の名前。 

− あるならば,<モジュール認可識別子>。 

− <PREPARE文>又は<EXECUTE IMMEDIATE文>を含むSQLクライアントモジュール中の外部呼出し

80 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

手続の呼出しの結果として生じる被準備文の実行に対して,<モジュール認可識別子>を適用しなけれ

ばならないかどうかを示す標識。 

− <外部呼出し手続>,<一時表宣言>及び<カーソル宣言>に対する構文規則の適用で用いるためのSQL

クライアントモジュールの既定値。 

・ <スキーマ名>,又はそれがない場合には,<モジュール認可識別子>のいずれかによって指定され,

<外部呼出し手続>から外部呼出し手続を導出するときに,既定の<スキーマ名>として用いるための

スキーマの名前。 

・ あるならば,次の名前を修飾するために用いるSQLパス。 

− SQLクライアントモジュールに含まれる<ルーチン呼出し>に直に含まれる修飾なしの<ルーチン

名>。 

− SQLクライアントモジュールに含まれる<パス解決利用者定義型名>に直に含まれる修飾なしの<

利用者定義型名>。 

・ SQLクライアントモジュールのための一つ以上の文字集合に対する照合順をそれぞれが指定する0

個以上のSQLクライアントモジュール照合順 (SQL-client module collation) の名前。 

− 指定されるならば,<SQLクライアントモジュール定義>を表現するために用いる文字集合の名前。 

注記72 <モジュール文字集合指定>は,SQLクライアントモジュールに含まれるSQL言語に関して

どんな効果もなく,JIS X 3005:1995 (ISO/IEC 9075:1992) との互換性のためにだけ存在する。

SQLクライアントモジュールの文字集合を文書化するために用いてもよい。 

− 次に示すモジュール内容。 

・ 0個以上の一時表記述子。 

・ 0個以上のカーソル宣言記述子。 

・ 一つ以上の外部呼出し手続。 

翻訳単位は,一つ以上のサブプログラムから成り得る実行可能コードの断片とする。SQLクライアント

モジュールは,その実行の間,翻訳単位に関連付けられる。単一のSQLクライアントモジュールが複数の

翻訳単位に関連付けられてもよいし,複数のSQLクライアントモジュールが単一の翻訳単位に関連付けら

れてもよい。ある処理系定義の文の実行に対する可能な要件を含めて,この関連付けを指定する方法は,

処理系定義とする。同じ又は異なるプログラム言語で書かれた別の翻訳単位を,その翻訳単位が呼び出し

てもよい又は制御を移してもよいかどうかは,処理系定義とする。 

4.24 埋込み構文 

この細分箇条は,ISO/IEC 9075-10の“4.1 埋込み構文”によって修正される。 

10 <SQL埋込みホストプログラム>は,ホスト言語テキスト及びSQLテキストから成る翻訳単位とする。

ホスト言語テキストは,特定のプログラム言語の要件に適合する。SQLテキストは,この規格で定義する

とおりの,一つ以上の<埋込みSQL文>,及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなけれ

ばならない。これによって,データベース適用業務は,翻訳単位中にSQL文が直接埋め込まれる複合形態

で表現することができる。そのような複合翻訳単位は,次のものと等価なものとして定義される。 

− 外部呼出し手続及び宣言を含むSQLクライアントモジュール。 

− 各SQL文がSQLクライアントモジュール中の外部呼出し手続の呼出しに置き換えられ,そのような

SQL文に含まれる宣言がホスト言語中の宣言に適切に変換されたホスト言語の翻訳単位。 

81 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<SQL埋込みホストプログラム>が<埋込み認可宣言>を含むならば,それは,<SQL埋込みホストプログ

ラム>中の最初の文又は宣言でなければならない。<埋込み認可宣言>は,<外部呼出し手続>の手続又はサ

ブルーチンの呼出しに置き換えられないが,取り除かれ,<SQLクライアントモジュール定義>の<モジュ

ール認可句>に関連付けられた構文に置き換えられる。 

処理系は,SQL文を置き換えるために生成されるホスト言語及びホスト言語環境の要素の名前のために,

<SQL埋込みホストプログラム>中の名前空間の一部を予約してもよい。これには,手続,サブルーチン,

クラス及びホスト言語環境中のその他の資源の名前,並びにそれらの手続又はサブルーチンの呼出しを提

供するために必要なものとして生成されるかもしれないプログラム変数及び分岐ラベルのための名前が含

まれる。このような予約がなされるかどうか,及びこのような予約がなされるならば,その詳細は,処理

系定義とする。 

4.25 動的SQLの概念 

4.25.1 動的SQLの概要 

多くの場合,実行すべきSQL文は,<SQLクライアントモジュール定義>中に,又は埋込み構文を用い

て翻訳単位中に書くことができる。他の場合には,SQL文は,プログラムを書くときには分からず,プロ

グラムの実行中に生成される。 

SQL文の動的実行は,一般的に,異なる二つの方法で行うことができる。実行のために文を準備する 

(prepare) ことができ,その後,1回以上実行することができる。その文をもはや実行する必要がないとき,

<DEALLOCATE PREPARE文>を用いて解放する (release) ことができる。代わりに,1回だけ実行する必

要がある文は,準備段階なしで実行することができる。すなわち,即時実行する (execute immediately) こ

とができる(全てのSQL文を即時実行できるわけではない。)。 

被準備文が実行されるとき,それが所有者をもつならば,定義者の権利の下で実行される。そうでなけ

れば,呼出し元の権利の下で実行される。 

多くのSQL文は,(<SQLクライアントモジュール定義>中の<外部呼出し手続>に含まれる<SQL手続文

>中のホストパラメタ,又は<SQL埋込みホストプログラム>に含まれる<埋込みSQL文>中のホスト変数と

して,SQL文の静的実行で現れる)“パラメタ (parameter)”を用いて書くことができる。動的に実行され

るSQL文では,それらのパラメタは,動的パラメタ(<動的パラメタ指定>)と呼ばれ,SQL言語では,<

疑問符> (?) で表現する。 

多くの場合,動的実行のためにSQL文を生成する適用業務では,その文中で用いる動的パラメタのそれ

ぞれに要求される特性(例えば,<データ型>,<長さ>,<精度>,<位取り>など)が詳細に分かっている。

同様に,適用業務は,その文の実行によって戻される値の特性も詳細に分かっているかもしれない。しか

し,他の場合には,要求される詳細までは,これらの情報について分からないかもしれない。すなわち,

幾つかの場合には,適用業務が情報スキーマからその情報を突き止めることもできるが,他の場合(例え

ば,戻される値が,表中の列から単純に取り出されるのではなく,計算によって導出されるとき,又は動

的パラメタが用いられるとき)には,この情報は,実行のために文を準備する文脈以外では,一般に入手

できない。 

注記73 情報スキーマは,[ISO9075-11] で定義している。 

適用業務に必要な情報を提供するために,SQLは,被準備文を記述する (describe) ように,適用業務が

SQLサーバに要求することを可能にしている。文の記述は,入力動的パラメタの個数及びそれらのデータ

型の情報を識別する[入力を記述する (describe input)]か,又は出力動的パラメタ若しくは戻されるべき

値の個数及びそれらのデータ型の情報を識別する[出力を記述する (describe output)]。文の記述は,既に

82 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

示したSQL記述子領域中に格納される。 

全てではないが多くの<SQL文>は,動的に準備し,実行することができる。 

注記74 動的に準備し,実行してもよい文の完全なリストは,“4.34.7 準備可能及び即時実行可能なSQL

文”で定義している。 

幾つかの“設定文 (set statements)”(<SET CATALOG文>,<SET SCHEMA文>,<SET NAMES文>及び

<SET PATH文>)は,準備若しくは即時実行されるか,又は直接起動される他のSQL文に適用される既定

の情報(それぞれ,カタログ名,スキーマ名,文字集合及びSQLパス)を設定する以外のどんな効果もな

い。 

<準備可能文>の準備又は即時実行によって引き起こされる構文誤り及びアクセス規則違反は,その文が 

(<PREPARE文>によって)準備されるとき,又は(<EXECUTE文>又は<EXECUTE IMMEDIATE文>によ

って)実行されるときに発見される。そのような違反は,例外条件の引起しによって示される。 

入力動的パラメタを記述するとき,入力動的パラメタの個数は,この規格の構文規則中で定義されるど

の構文上の変換よりも前のSQL文中の<動的パラメタ指定>の個数とする。準備されたSQL文を実行する

とき,実効的に複製された入力動的パラメタの全ての実現値には,その入力動的パラメタに与えられた同

じ値が設定される。 

4.25.2 動的SQL文及び記述子領域 

<EXECUTE IMMEDIATE文>は,SQL文の1回の準備及び実行のために用いることができる。<PREPARE

文>は,生成したSQL文をその後の実行のために準備するために用いる。<DEALLOCATE PREPARE文>

は,<PREPARE文>によって準備されたSQL文を解放するために用いる。被準備文のための入力動的パラ

メタの記述は,<入力DESCRIBE文>の実行によって得ることができる。<動的SELECT文>又は<動的単一

行SELECT文>の結果列の記述は,<出力DESCRIBE文>の実行によって得ることができる。<動的SELECT

文>でも<動的単一行 SELECT文>でもない文の出力動的パラメタの記述は,<出力DESCRIBE文>の実行

によって得ることができる。 

<動的SELECT文>以外の文に対しては,プログラムが書かれたときにそのように書かれたかのように,

被準備文にパラメタを関連付けて,それを実行するために,<EXECUTE文>を用いる。<動的SELECT文>

に対しては,<動的カーソル宣言>によって,準備された<カーソル指定>が宣言動的カーソルに関連付けら

れるか,又は<拡張動的カーソル割当て文>によって,準備された<カーソル指定>が拡張動的カーソルに関

連付けられる。<動的OPEN文>によって,動的カーソルを開くことができ,動的パラメタをその動的カー

ソルに関連付けることができる。開いている動的カーソルに関する操作は,“4.33.2 カーソルの操作及びカ

ーソルを用いる操作”に示す。 

被準備文の入力動的パラメタ及び出力動的パラメタ,並びに<動的FETCH文>の結果又は準備された<動

的単一行SELECT文>の実行の結果として得られる値のためのインタフェースは,動的パラメタ若しくは

埋込み変数のリスト,又はSQL記述子領域のどちらであってもよい。SQL記述子領域は,一つ以上の項目

記述子領域,及びそれらの項目記述子領域の個数のためのフィールドCOUNTを含むヘッダから成る。SQL

記述子領域のヘッダは,“20.1 SQL記述子領域の記述”の表23“SQL記述子領域のヘッダ中で用いる<キー

ワード>のデータ型”中のフィールドから成る。各項目記述子領域は,“20.1 SQL記述子領域の記述”の表

24“SQL項目記述子領域中で用いる<キーワード>のデータ型”で規定するフィールドから成る。SQL記述

子領域は,<ALLOCATE DESCRIPTOR文>,<DEALLOCATE DESCRIPTOR文>,<SET DESCRIPTOR文>及

び<GET DESCRIPTOR文>を通じて,システムによって割り当てられ,維持される。 

動的SQLオブジェクトを参照するために,2種類の識別子,すなわち,拡張名 (extended name) 及び非

83 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

拡張名 (non-extended name) を用いる。拡張名は,パラメタ又は変数に代入された<識別子>とし,それが識

別するオブジェクトは,そのパラメタ又は変数を参照することによって間接的に参照される。非拡張名は,

単なる<識別子>とし,それが識別するオブジェクトは,SQL文中でその<識別子>を直接用いることによっ

て参照される。 

SQL記述子領域,動的文及び動的カーソルは,非拡張名又は拡張名のいずれかによって識別することが

できる。 

二つの拡張名は,先行する<空白>及び後続する<空白>を取り除いたそれらの値が,“5.2 <トークン>及び

<分離符号>”中の<識別子>の比較規則に従って等価であるならば,等価とする。 

拡張名の有効範囲 (scope) は,大域 (global) 又は局所 (local) のいずれかとし,それが識別するオブジ

ェクトが生成された実行時文脈によって決定される。 

大域拡張名GENの有効範囲は,SQLセションとする。すなわち,GENは,それが識別するオブジェク

トOが存在する間,そのSQLセション中で実行されるどのSQL文でも,Oを参照するために用いること

ができる。 

局所拡張名LENの有効範囲は,LENによって識別されるオブジェクトOが生成されるときに実行され

ている外部呼出し手続を含むSQLクライアントモジュールMとする。すなわち,LENは,Oが存在する

間,M中の外部呼出し手続によって同じSQLセション中で実行されるどのSQL文でも,Oを参照するた

めに用いることができる。 

非拡張名の有効範囲は,それを定義するSQL文を含む<SQLクライアントモジュール定義>とする。 

注記75 非拡張名の名前空間は,拡張名の名前空間とは違う。 

外部呼出し手続,SQL呼出しルーチン又はトリガ動作E中の<PREPARE文>の実行の結果として生じる

被準備文をPRPとする。次の場合には,PRPは,所有者をもたない。 

− Eが,安全保護特性がINVOKEDのSQL呼出しルーチンである。 

− Eが,所有者をもたないか又はFOR STATRIC ONLYが指定されたSQLクライアントモジュールに含

まれる外部呼出し手続である。 

そうでなければ,PRPの所有者は,Eの所有者とする。 

4.26 SQLの直接起動 

SQLの直接起動は,<直接SQL文>として知られている直接SQL文を実行するための機構とする。SQL

の直接起動では,<直接SQL文>の起動方法,<直接SQL文>の実行の結果として生じる条件を引き起こす

方法,<直接SQL文>の実行の結果として生じる診断情報をアクセスする方法,及びそれらの結果を戻す方

法は,処理系定義とする。 

4.27 外部呼出し手続 

外部呼出し手続は,SQL文から成り,ホスト言語の翻訳単位から呼び出すことができる。ホスト言語は,

外部呼出し手続を含むSQLクライアントモジュールの<LANGUAGE句>によって指定される。 

4.28 SQL呼出しルーチン 

4.28.1 SQL呼出しルーチンの概要 

この細分箇条は,ISO/IEC 9075-4の“4.4.1 SQL呼出しルーチンの概要”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“4.2.1 SQL呼出しルーチンの概要”によって修正される。 

SQL呼出しルーチン (SQL-invoked routine) は,SQL呼出し手続又はSQL呼出し関数とする。SQL呼出

しルーチンは,少なくとも,ルーチン名,0個以上のSQLパラメタ,及びルーチン本体から成る。 

84 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

04 SQL呼出しルーチンは,SQLスキーマの要素とし,スキーマレベルルーチン (schema-level routine) と

呼ぶ。 

利用者定義型UDTを作成した<利用者定義型定義>の実行の間にSQL呼出しルーチンSRが作成される

か,又は<属性定義追加>を指定する<型変更文>の実行の間にSRが作成されるならば,SRは,UDTに依

存している (dependent) という。利用者定義型に依存しているSQL呼出しルーチンは,<ルーチン変更文>

によって修正することができず,<ルーチン削除文>によって破壊することができない。それは,<データ型

削除文>によって暗に破壊される。 

SQL呼出し手続 (SQL-invoked procedure) は,SQLの<CALL文>から呼び出されるSQL呼出しルーチン

とする。SQL呼出し手続は,入力SQLパラメタ,出力SQLパラメタ,及び入力SQLパラメタと出力SQL

パラメタとの両方であるSQLパラメタ(以下,入出力SQLパラメタと呼ぶ。)をもってもよい。出力SQL

パラメタではない入力SQLパラメタに既定値を関連付けてもよい。SQL呼出し手続の形式は,<SQL呼出

し手続>によって規定する(“11.60 <SQL呼出しルーチン>”参照。)。 

SQL呼出し手続が呼び出されるときに新しい保存点水準を確立して,実行されたルーチン本体から戻る

ときにそれを破壊することを要求するように,SQL呼出し手続を随意に指定してもよい。保存点を取らな

い代替手段は,OLD SAVEPOINT LEVELで直接指定することもできる。SQL呼出し関数が呼び出されると

きは,新しい保存点水準が常に確立される。保存点水準は,“4.36.2 保存点”に記述している。 

SQL呼出し関数 (SQL-invoked function) は,その呼出しが値を戻すSQL呼出しルーチンとする。SQL呼

出し関数のどのパラメタも,入力SQLパラメタとし,そのうちの一つが結果SQLパラメタを示してもよ

い。SQL呼出し関数の形式は,<SQL呼出し関数>によって規定する(“11.60 <SQL呼出しルーチン>”参

照。)。SQL呼出し関数は,型保持関数 (type-preserving function) であってもよい。型保持関数は,結果SQL

パラメタをもつSQL呼出し関数とする。型保持関数の呼出しのナルでない結果の最特定型は,その関数の

結果SQLパラメタを置き換える引数の値の最特定型と互換でなければならない。 

SQL呼出しメソッド (SQL-invoked method) は,<メソッド指定指示子>によって指定されるSQL呼出し

関数とする(“11.60 <SQL呼出しルーチン>”参照)。3種類のSQL呼出しメソッド,すなわち,SQL呼出

し構成メソッド (SQL-invoked constructor method),インスタンスSQL呼出しメソッド (instance SQL-invoked 

method) 及び静的SQL呼出しメソッド (static SQL-invoked method) がある。全てのSQL呼出しメソッドが

利用者定義型に関連付けられ,その利用者定義型は,そのメソッドの型 (type of the method) としても知ら

れている。SQL呼出しメソッドの<メソッド特性>は,そのメソッドの型の<利用者定義型定義>に含まれる

<メソッド指定>によって指定される。インスタンスSQL呼出しメソッド及びSQL呼出し構成メソッドは,

両方とも,次の条件を満たす。 

− 当該パラメタ (subject parameter) と呼ばれる最初のパラメタが,利用者定義型の宣言型をもつ。当該

パラメタの型がそのメソッドの型である。当該パラメタ以外のパラメタは,付加的なパラメタ 

(additional parameter) と呼ぶ。 

− メソッドの記述子がその当該パラメタのデータ型の記述子と同じスキーマ中にある。 

SQL呼出し構成メソッドは,さらに,次の条件も満たす。 

− <メソッド名>が,そのメソッドの型の利用者定義型記述子に含まれる<利用者定義型名>に単純に含ま

れる<被修飾識別子>と等価である。 

13 静的SQL呼出しメソッドは,次の条件を満たす。 

85 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− メソッドが当該パラメタをもたない。メソッドにパラメタがあるならば,その最初のパラメタが他の

どのパラメタとも異なって扱われない。 

− メソッドの記述子がそのメソッドの構造型の記述子と同じスキーマ中にある。この型(又はこの型の

いずれかの下位型)の名前が,メソッドが呼び出されるべきときに,そのメソッドの名前とともに常

に指定される。 

SQL呼出しメソッドでないSQL呼出し関数は,SQL呼出し通常関数 (SQL-invoked regular function) とす

る。SQL呼出し通常関数は,<関数指定>によって指定される(“11.60 <SQL呼出しルーチン>”参照)。 

ナル呼出し関数 (null-call function) は,その入力引数のいずれかがナル値ならば,ナル値を戻すように定

義されるSQL呼出し関数とする。ナル呼出し関数は,<ナル呼出し句>に“RETURNS NULL ON NULL INPUT”

を指定するSQL呼出し関数とする。 

4.28.2 SQL呼出しルーチンの性質 

この細分箇条は,ISO/IEC 9075-13の“4.2.2 SQL呼出しルーチンの性質”によって修正される。 

SQL呼出しルーチンは,SQLルーチン (SQL routine) であっても,外部ルーチン (external routine) であ

ってもよい。SQLルーチンは,<LANGUAGE句>にSQLを指定するSQL呼出しルーチンとする。SQLル

ーチンの<ルーチン本体>は,<SQL手続文>とする。<ルーチン本体>を形成する<SQL手続文>は,<SQLコ

ネクション文>と,<SAVEPOINT文>,<RELEASE SAVEPOINT文>,又は<SAVEPOINT句>を指定する

<ROLLBACK文>以外の<SQLトランザクション文>とを除いて,<SQL制御文>を含むどのSQL文であっ

てもよい。 

13 外部ルーチンは,<LANGUAGE句>にSQLを指定しないルーチンとする。外部ルーチンの<ルーチン

本体>は,SQL以外のいずれかのプログラム言語で書かれているプログラムを<外部ルーチン名>が識別す

る<外部本体参照>とする。<外部ルーチン名>によって識別されるプログラムは,<SQLコネクション文>,

又は<SAVEPOINT文>,<RELEASE SAVEPOINT文>,若しくは<SAVEPOINT句>を指定する<ROLLBACK

文>以外の<SQLトランザクション文>を実行してはならない。 

SQL呼出しルーチンは,SQL呼出しルーチンの特定名 (specific name) と呼ばれる<特定名>によって一

意に識別される。 

13 SQL呼出しルーチンは,それらの形式によって呼出し方法が異なる。SQL呼出し手続は,<CALL文>

によって呼び出される。SQL呼出し通常関数は,<ルーチン呼出し>によって呼び出される。インスタンス

SQL呼出しメソッドは,<メソッド呼出し>によって呼び出されるが,SQL呼出し構成メソッドは,<NEW

指定>によって呼び出され,静的SQL呼出しメソッドは,<静的メソッド呼出し>によって呼び出される。

SQL呼出しルーチンの呼出しは,SQL呼出しルーチンの<ルーチン名>を指定し,そのSQL呼出しルーチ

ンの<SQLパラメタ宣言>に対応する引数値の並びを与える。引数値の並びは,位置又は引数名のいずれか

によって渡すことができる。呼出しの当該ルーチン (subject routine) は,<ルーチン呼出し>によって呼び

出されてもよいSQL呼出しルーチンとする。<ルーチン呼出し>の当該ルーチンの選択後に,SQL引数が

評価され,実行されるSQL呼出しルーチンが選択される。当該ルーチンがインスタンスSQL呼出しメソ

ッドならば,実行されるSQL呼出しルーチンが当該ルーチンの置換メソッドの集合から選択される(“置

換メソッドの集合”という用語は,“10.4 <ルーチン呼出し>”の一般規則で定義している。)。選択される置

換メソッドは,当該パラメタの宣言型の型指示子が,当該パラメタに対応するSQL引数の値の最特定型の

型優先順序リスト中で,他のどの置換メソッドの当該パラメタの宣言型の型指示子よりも先行する当該パ

ラメタをもつ置換メソッドとする(“10.4 <ルーチン呼出し>”の一般規則参照。)。当該ルーチンがSQL呼

86 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

出しメソッドでないならば,実行されるSQL呼出しルーチンは,その当該ルーチンとする。実行のための

SQL呼出しルーチンの選択後に,DEFAULTを指定しないSQL引数の値がそのSQL呼出しルーチンの対

応するSQLパラメタに代入され,SQL引数が与えられないか又は対応するSQL引数がDEFAULTを指定

するSQL呼出しルーチンのSQLパラメタには,既定値が代入される。その後,そのルーチンの<ルーチン

本体>が実行される。SQL呼出しルーチンがSQLルーチンならば,<ルーチン本体>は,<SQL手続文>の一

般規則に従って実行される<SQL手続文>とする。SQL呼出しルーチンが外部ルーチンならば,<ルーチン

本体>は,SQL以外のいずれかのプログラム言語で書かれ,そのホスト言語の規則に従って実行されるプ

ログラムを識別する。 

SQL呼出しルーチンの<ルーチン本体>は,常に,そのSQL呼出しルーチンを呼び出したSQLセション

と同じSQLセションの下で実行される。<ルーチン本体>の実行前に,現行SQLセションのための新しい

文脈が作成され,現行の文脈の値は,保存される。<ルーチン本体>の実行が完了すると,現行SQLセショ

ンの元の文脈が復元される。 

13 SQL呼出しルーチンが外部ルーチンならば,<ルーチン本体>の実行前に,実効的SQLパラメタリス

トが構成される。実効的SQLパラメタリストは,SQL呼出しルーチンのパラメタ受渡し様式に依存して異

なる項目をもつ。実効的SQLパラメタリスト中の各項目の値は,“10.4 <ルーチン呼出し>”の一般規則に

従って設定され,“13.5 データ型対応”の規則に従って<ルーチン本体>によって識別されるプログラムに

渡される。そのプログラムの実行後,SQL呼出しルーチンのパラメタ受渡し様式がSQLならば,SQL処

理系は,出力パラメタ(があるならば,出力パラメタ)の値,プログラムから戻される値(があるならば,

その値),SQLSTATEの値,及びメッセージテキスト(があるならば,そのメッセージテキスト)の値を,

プログラムによって実効的SQLパラメタリストに代入される値から得る。SQL呼出しルーチンのパラメ

タ受渡し様式がGENERALならば,そのような値は,処理系定義の方法で得られる。 

異なるSQL呼出しルーチンが等価な<ルーチン名>をもってもよい。同じスキーマ中のどの二つのSQL

呼出し関数も,同じ署名をもつことは許されない。同じスキーマ中のどの二つのSQL呼出し手続も,同じ

名前及び同じパラメタ数をもつことは許されない。当該ルーチン決定は,<ルーチン名>及び<SQL引数リ

スト>を指定して与えられる<ルーチン呼出し>に対して,その当該ルーチンを選ぶための過程とする。SQL

呼出し関数のための当該ルーチン決定は,SQL呼出し関数の呼出しに対する全ての引数(すなわち,当該

ルーチン決定の時点で型が分かっていない<動的パラメタ指定>ではない全ての引数)の最特定型を左から

右への順序で考慮する。引数の最特定型とパラメタの宣言型とが正確に一致しない場合,最も近い一致を

決定するために型優先順序リストを用いる(“9.6 当該ルーチン決定”参照。)。 

<ルーチン呼出し>がビューの元の<問合せ式>,検査制約若しくは表明の<探索条件>,トリガの<被トリ

ガ動作>,又は<SQL呼出しルーチン>に含まれるならば,その呼出しに対する当該ルーチンは,ビューが

作成される時点,検査制約が定義される時点,表明が作成される時点,トリガが作成される時点,又はSQL

呼出しルーチンが作成される時点で決定される。<ルーチン呼出し>がビューVの階層的な<問合せ式>に含

まれるならば,その呼出しに対する当該ルーチンは,元の<問合せ式>が<ルーチン呼出し>を含むVの下位

ビューSVが作成される時点で決定される。当該ルーチンがSQL呼出し手続,SQL呼出し通常関数又は静

的SQL呼出しメソッドならば,ビューが利用されるとき,検査制約若しくは表明が評価されるとき,トリ

ガが実行されるとき,又はSQL呼出しルーチンが呼び出されるときはいつも,同じSQL呼出しルーチン

が実行される。当該ルーチンがインスタンスSQL呼出しメソッドならば,ビューが利用されるとき,検査

制約若しくは表明が評価されるとき,トリガが実行されるとき,又はSQL呼出しルーチンが呼び出される

たびに,当該パラメタに対応するSQL引数の評価の結果として得られる値の最特定型に基づいて,実行さ

87 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

れるSQL呼出しルーチンが決定される(“10.4 <ルーチン呼出し>”の一般規則を参照。)。 

SQLルーチンの<ルーチン本体>中の全ての<識別子鎖>は,SQLルーチンが作成される時点で,基底及び

基底の指示対象を識別するために解決される。このようにして,SQLルーチンが呼び出されるときはいつ

も,同じ列及び同じSQLパラメタが参照される。 

SQL呼出しルーチンは,決定的 (deterministic) 又は潜在的に非決定的 (possibly non-deterministic) のいず

れかとする。決定的なSQL呼出し関数は,与えられたSQL引数値のリストに対して,常に同一の戻り値

を戻す。決定的なSQL呼出し手続は,与えられたSQL引数値のリストに対して,出力及び入出力SQLパ

ラメタに常に同一の値を戻す。SQL呼出しルーチンが同一のSQL引数値のリストで呼び出されるとき,同

一でない結果を生じるかもしれないならば,そのSQL呼出しルーチンは,潜在的に非決定的とする。 

外部ルーチンは,SQLを潜在的に含まない (does not possibly contain SQL) か,SQLを潜在的に含む 

(possibly contains SQL) か,SQLデータを潜在的に読む (possibly read SQL-data) か,又はSQLデータを潜

在的に修正する (possibly modify SQL-data)。SQLを潜在的に含むか,SQLデータを潜在的に読むか,又は

SQLデータを潜在的に修正する外部ルーチンだけが,呼び出されている間にSQL文を実行してもよい。

SQLデータを潜在的に読むか,又はSQLデータを潜在的に修正するSQL呼出しルーチンだけが,呼び出

されている間にSQLデータを読んでもよい。SQLデータを潜在的に修正するSQL呼出しルーチンだけが,

呼び出されている間にSQLデータを修正してもよい。 

SQL呼出しルーチンは,ルーチン認可識別子 (routine authorization identifier) をもち,それは,SQL呼出

しルーチンが作成される時点でそのSQL呼出しルーチンを含むスキーマの所有者の(直接的又は間接的

に)認可識別子とする。 

4.28.3 SQL呼出しルーチンの実行 

この細分箇条は,ISO/IEC 9075-4の“4.2.2 SQL呼出しルーチンの実行”によって修正される。 

SQL呼出しルーチンが呼び出されると,<ルーチン本体>が実行される前に,現行のSQLセション文脈

の写しがスタックに押し込まれ,幾つかの値が修正される(“10.4 <ルーチン呼出し>”の一般規則参照)。

認可スタックの扱いは,“4.35.1.1 SQLセション認可識別子”に記述している。 

04 SQL呼出しルーチンは,ルーチンSQLパス (routine SQL-path) をもち,それは,SQL呼出しルーチン

を含むSQLスキーマ,現行SQLセション,又はSQL呼出しルーチンを含むSQLクライアントモジュー

ルから継承される。 

外部ルーチンであるSQL呼出しルーチンは,外部ルーチンSQLパス (external routine SQL-path) ももち,

それは,外部ルーチンのルーチン本体によって識別される外部プログラム中に含まれる<SQLクライアン

トモジュール定義>の<モジュールパス指定>があるならば,その<モジュールパス指定>から導出される。

その<SQLクライアントモジュール定義>が<モジュールパス指定>を指定しないならば,外部ルーチンSQL

パスは,処理系定義のSQLパスとする。現行SQLセション中で準備される<準備可能文>,又は<直接SQL

文>に<ルーチン呼出し>が含まれるならば,<ルーチン名>が<スキーマ名>を含まない<ルーチン呼出し>の

当該ルーチンの探索順序を決定するために,SQLルーチン及び外部ルーチンの両方に対して,現行SQLセ

ションのSQLパスが用いられる。現行SQLセション中で準備される<準備可能文>にも,<直接SQL文>に

も,<ルーチン呼出し>が含まれないならば,<ルーチン名>が<スキーマ名>を含まない<ルーチン呼出し>の

当該ルーチンの探索順序を決定するために,SQLルーチンは,ルーチンSQLパスを用いる。現行SQLセ

ション中で準備される<準備可能文>にも,<直接SQL文>にも,<ルーチン呼出し>が含まれないならば,<

ルーチン名>が<スキーマ名>を含まない<ルーチン呼出し>の当該ルーチンの探索順序を決定するために,

外部ルーチンは,外部ルーチンSQLパスを用いる。 

88 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4.28.4 ルーチン記述子 

この細分箇条は,ISO/IEC 9075-4の“4.4.3 ルーチン記述子”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“4.5.1 ルーチン記述子”によって修正される。 

04 SQL呼出しルーチンは,ルーチン記述子 (routine descriptor) によって記述される。ルーチン記述子は,

次の項目を含む。 

− SQL呼出しルーチンのルーチン名。 

− SQL呼出しルーチンの特定名。 

− SQL呼出しルーチンのルーチン認可識別子。 

− SQL呼出しルーチンのルーチンSQLパス。 

− SQL呼出しルーチンの本体を書いている言語の名前。 

− SQL呼出しルーチンの各SQLパラメタに対して,次の項目。 

・ 指定されているならば,<SQLパラメタ名>。 

・ <データ型>。 

・ 順序位置。 

・ SQLパラメタが入力SQLパラメタか,出力SQLパラメタか又は入出力SQLパラメタかを示す標

識。 

・ SQLパラメタが既定値をもつかどうかを示す標識,及びもつならば,<パラメタ既定値>。 

− SQL呼出しルーチンがSQL呼出し関数か又はSQL呼出し手続かを示す標識。 

− SQL呼出しルーチンがSQL呼出し手続ならば,戻り結果集合の最大個数。 

− SQL呼出しルーチンが決定的か又は潜在的に非決定的かを示す標識。 

− SQL呼出しルーチンがSQLデータを潜在的に修正するか,SQLデータを潜在的に読むか,SQLを潜

在的に含むか又はSQLを潜在的に含まないかを示す標識。 

− SQL呼出しルーチンがSQL呼出し関数ならば,次の項目。 

・ SQL呼出し関数の<戻りデータ型>。 

・ <戻りデータ型>が<位置付け子標識>を単純に含むならば,戻り値が位置付け子であることを示す標

識。 

・ SQL呼出し関数が型保持関数かどうかを示す標識。 

・ SQL呼出し関数が変異関数かどうかを示す標識。 

・ SQL呼出し関数が型保持関数ならば,どのパラメタが結果パラメタかを示す標識。 

・ SQL呼出し関数がナル呼出し関数かどうかを示す標識。 

・ SQL呼出し関数がSQL呼出しメソッドかどうかを示す標識。 

− 作成時刻印。 

− 最終変更時刻印。 

− SQL呼出しルーチンがSQLルーチンならば,次の項目。 

・ SQL呼出しルーチンのSQLルーチン本体。 

・ SQLルーチンのSQL安全保護特性。 

− SQL呼出しルーチンが外部ルーチンならば,次の項目。 

・ 外部ルーチンの外部ルーチン名。 

・ 外部ルーチンの<パラメタ様式>。 

・ 外部ルーチンが<結果型変換>を指定するならば,それが<結果型変換>を指定することを示す標識及

89 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

び<結果型変換>中に指定される<データ型>。<結果型変換>が<位置付け子標識>を含むならば,<結

果型変換>中に指定される<データ型>が位置付け子標識をもつことを示す標識。 

・ 外部ルーチンの外部安全保護特性。 

・ 外部ルーチンの外部ルーチンSQLパス。 

・ 外部ルーチンの実効的SQLパラメタリスト。 

・ 関連付けられたFROM-SQL関数FSFがある全てのSQLパラメタに対して,FSFの特定名。 

・ 関連付けられたTO-SQL関数TSFがある全てのSQLパラメタに対して,TSFの特定名。 

・ SQL呼出しルーチンが外部関数で,かつ,その結果に関連付けられたTO-SQL関数TRFがあるな

らば,TRFの特定名。 

・ <SQLパラメタ宣言>が<位置付け子標識>を含む全てのSQLパラメタに対して,SQLパラメタが位

置付け子パラメタであることを示す標識。 

− SQL呼出しルーチンを含むスキーマのスキーマ名。 

− SQL呼出しルーチンがSQL呼出しメソッドならば,次の項目。 

・ 対応するメソッド指定記述子を含む記述子をもつ利用者定義型の名前。 

・ STATICが指定されたかどうかを示す標識。 

− ルーチンがスキーマレベルルーチンかどうかを示す標識。 

− SQL呼出しルーチンが利用者定義型に依存しているかどうかを示す標識。 

− SQL呼出しルーチンが呼び出されたときに,新しい保存点水準を確立することを要求するかどうかを

示す標識。 

4.28.5 SQL呼出し手続によって戻される結果集合 

この細分箇条は,ISO/IEC 9075-3の“4.5.1 SQL呼出し手続によって戻される結果集合”によって修正さ

れる。 

SQL呼出し手続SIP1の呼出しは,結果集合並びRSSを生じさせるかもしれない。RSSは,SIP1によっ

て開かれ,SIP1が終了するときに開いたままになっているWITH RETURNカーソルの結果集合から成り,

それらの結果集合は,SIP1の実行中に作成される順序で並べられる。 

注記76 SIP1の実行中に同じカーソルが2回以上開かれるならば,問題になっている結果集合が先に開

いて作成されたものと同一であっても,結果集合を作成するとみなされるのは,最後に開いた

ものである。 

RSSは,<受取りカーソル割当て文>を実行することによって,SIP1の呼出し元INVが受取りカーソル

を通して利用可能とする。SIP1がSQL呼出し手続SIP2によって呼び出されるならば,INVは,SIP2と

する。SIP1が外部呼出し手続EIPによって呼び出されるならば,INVは,EIPを含むSQLクライアント

モジュールとする。RSS自体を呼出し元INVに戻してもよいかどうかは,処理系定義とする。 

注記77 例えば,SIP1を呼び出すSQL呼出し手続SIP3を呼び出す<CALL文>を外部呼出し手続EIPが

実行するならば,SIP3がEIPに制御を戻すか,又はSIP3が戻る前にSIP3によるSIP1の別の

呼出しが与えられるまで,SIP1によって戻される結果集合並びRSSは,SIP3が利用可能であ

る。RSS中の任意の特定のカーソルCをSIP3がEIPに戻してよいかどうかは,処理系定義で

ある。 

INVによるSIP1の呼出しは,INVによるSIP1の以前の呼出しによって生じたかもしれない既存の結果

集合並びを破壊する。INVが終了するとき,INVが利用可能な全ての結果集合並びが破壊される。 

戻り結果集合は,構成行 (constituent row) と呼ばれる行の並び,及び初期カーソル位置 (initial cursor 

90 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

position) を含む。結果集合の全ての行は,結果集合の行型 (row type) と呼ばれる同じ行型とする。結果集

合の次数 (degree) は,結果集合の行型中の列の個数とする。結果集合中の行の個数は,その結果集合の基

数 (cardinality) とする。 

RSS中の各戻り結果集合RSの構成行及び初期カーソル位置は,SIP1がINVに戻るときに決定される。

RSに対するWITH RETURNカーソルCがスクロール可能ならば,RSの構成行は,SIP1が終了するとき

に存在するとおりのCの結果集合の行とする。そうでなければ,その構成行は,Cの現在カーソル位置に

先行する行が除外されることを除いて,スクロール可能カーソルと同じとする。Cがスクロール可能なら

ば,RSの初期カーソル位置は,SIP1が終了するときのCの位置とする。そうでなければ,RSの初期カー

ソル位置は,最初の行の前とする。 

注記78 SIP1が終了するときに存在するとおりのCの結果集合は,例えば,SIP1が終了する前に,

<DELETE文:位置付け>又は<UPDATE文:位置付け>がSIP1によって実行されるならば,Cが

開かれたときに生成されたものとは異なるかもしれない。 

結果集合並びを形成するかもしれない戻り結果集合の最大個数は,SIP1を定義する<SQL呼出しルーチ

ン>に含まれる<戻り結果集合特性>によって指定される。SIP1が戻るときに開いたままであるWITH 

RETURNカーソルの実際の個数が,<戻り結果集合特性>中で指定される戻り結果集合の最大個数を超える

ならば,警告条件が引き起こされる。その最大個数を超える位置にある結果集合が戻されるかどうかは,

処理系依存とする。 

03 結果集合は,結果集合記述子によって記述される。結果集合記述子 (result set descriptor) は,次の項

目を含む。 

− <カーソル指定>。 

− 行の並び。 

− 行の並び内の位置(行の前,行の上又は最後の行の後)。 

− 操作上の特性。 

・ 操作上の感度特性(SENSITIVE,INSENSITIVE又はASENSITIVEのいずれか)。 

・ 操作上のスクロール可能性特性(SCROLL又はNO SCROLLのいずれか)。 

・ 操作上の保持可能性特性(WITH HOLD又はWITHOUT HOLDのいずれか)。 

・ 操作上の戻り可能性特性(WITH RETURN又はWITHOUT RETURNのいずれか)。 

− 操作上の保持可能性特性がWITH HOLDで,かつ,位置が行の上ならば,最後の<COMMIT文>以降に

<FETCH文>又は<動的FETCH文>が発行されたかどうかを示す標識。 

4.29 SQLパス 

この細分箇条は,ISO/IEC 9075-4の“4.5 SQLパス”によって修正される。 

SQLパス (SQL-path) は,次のうちのいずれかのための探索順序を決定する一つ以上の<スキーマ>のリ

ストとする。 

− <ルーチン名>が<スキーマ名>を含まない<ルーチン呼出し>の当該ルーチン。 

− <パス解決利用者定義型名>が<スキーマ名>を含まないときの利用者定義型。 

04 CURRENT̲PATHによって指定される値は,現行SQLセションのSQLパスの値とする。<ルーチン呼

出し>が,<EXECUTE IMMEDIATE文>か若しくは<PREPARE文>のいずれかによって現行SQLセション中

で準備される<準備可能文>に含まれるか,又は直接起動される<直接SQL文>に含まれるとき,<スキーマ

名>を含まない<ルーチン名>をもつ<ルーチン呼出し>の当該ルーチンを探すために,このSQLパスが用い

91 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

られる。SQLスキーマの定義には,<ルーチン呼出し>が<スキーマ定義>に含まれるときに,<スキーマ名

>を含まない<ルーチン名>をもつ<ルーチン呼出し>の当該ルーチンを探すために用いるSQLパスを指定す

る。 

4.30 ホストパラメタ 

4.30.1 ホストパラメタの概要 

ホストパラメタ (host parameter) は,<ホストパラメタ宣言>によって,<外部呼出し手続>中で宣言され

る。ホストパラメタは,<外部呼出し手続>の呼出し中で対応する引数の値を受け取るか又は与えるかのい

ずれかとする。 

<ホストパラメタ宣言>は,それに対応する引数のホスト言語の型に対応付ける,ホストパラメタの値の

<データ型>を指定する。標識パラメタを用いなければ,ホストパラメタは,ナルではあり得ない。 

4.30.2 状態パラメタ 

この細分箇条は,ISO/IEC 9075-4の“4.6.1 状態パラメタ”によって修正される。 

SQLSTATEホストパラメタは,状態パラメタ (status parameter) とする。その値には,<外部呼出し手続>

の呼出しが正常に終了したか,又は<外部呼出し手続>の実行中に例外条件が引き起こされたかのいずれか

を示す状態コードが設定される。 

<外部呼出し手続>は,SQLSTATEホストパラメタを指定しなければならない。SQLSTATEホストパラメ

タは,文字列のホストパラメタとし,それに対する例外値は,“24 状態コード”で規定する。 

ある条件が引き起こされ,その条件が引き起こされたことに関連する効果以外に,文がどんな効果もも

たない(すなわち,終了条件でない)ならば,その条件を例外条件 (exception condition) 又は例外 (exception) 

という。ある条件が引き起こされ,その条件が引き起こされたことに関連する効果以外の効果を文がもつ

ことが許される[成功終了 (successful completion),警告 (warning) 又はデータなし (no data) のSQLSTATE

クラスコードに対応する。]ならば,その条件を終了条件 (completion condition) という。 

<SQL手続文>の実行中に,例外条件又は終了条件が引き起こされてもよい。<SQL手続文>が終了すると

き,条件のうちの一つが有効な条件になる。有効な条件が例外条件ならば,有効な例外条件と呼ぶ。有効

な条件が終了条件ならば,有効な終了条件と呼ぶ。 

終了条件警告 は,概して,その効果が正しいが,それらの効果について利用者に警告する理由がある終

了として定義される。それは,この規格で規定する条件だけでなく,処理系定義の条件に対しても,引き

起こされる。終了条件データなし は,特別な意味をもち,空の結果を示すために用いる。終了条件成功終

了 は,警告 にもデータなし にも対応しない終了条件を示すものとして定義される。これは,SQLSTATE

サブクラスが警告性のない処理系定義の情報を提供する条件を含む。 

戻されるべき状態パラメタ値を選択するために,トランザクションロールバックのための例外条件は,

文の失敗のための例外条件よりも優先される。同様に,終了条件データなし は,終了条件警告 よりも優

先され,終了条件警告 は,終了条件成功終了 よりも優先される。全ての例外条件は,全ての終了条件よ

りも優先される。SQLSTATEに代入される値は,これらの優先順序の要件に従わなければならない。 

4.30.3 データパラメタ 

データパラメタ (data parameter) は,ホストプログラムとSQL処理系との間で交換されるデータの値を

受け取るか又は与えるために用いるホストパラメタとする。 

4.30.4 標識パラメタ 

標識パラメタ (indicator parameter) は,他のホストパラメタの直後に続けて指定する整数のホストパラメ

タとする。その主な用途は,他のホストパラメタが受け取るか又は与える値がナル値かどうか示すことと

92 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

する。標識ホストパラメタは,他の標識ホストパラメタの直後に続けることはできない。 

標識パラメタの別の用途は,ホストプログラムとSQL処理系との間で受け渡される間に,ホストパラメ

タ又はホスト変数の中で,データ列データの切捨てが発生したかどうかを示すこととする。ナルでないデ

ータ列の値が受け渡され,相手の長さが代入元の値全体を受け取るのに十分ならば,標識パラメタ又は標

識変数には,切捨てが発生しなかったことを示すために,0が設定される。しかし,相手の長さが不十分な

らば,標識パラメタ又は標識変数には,切捨てが発生したこと,及び代入元の値の文字又はオクテットの

適切な単位での本来の長さを示すために,代入元の値の(文字又はオクテットの適切な単位での)長さが

設定される。 

4.30.5 位置付け子 

ホストパラメタ,ホスト変数,外部ルーチンのSQLパラメタ,又は外部関数によって戻される値は,AS 

LOCATORを指定することによって,位置付け子 (locator) であることを指定してもよい。位置付け子は,

SQLデータではなく,SQLデータの実現値を参照するために用いることができるSQLセションオブジェ

クトとする。位置付け子は,長大オブジェクト位置付け子,利用者定義型位置付け子,配列位置付け子又

はマルチ集合位置付け子のいずれかとする。 

長大オブジェクト位置付け子は,次のいずれかとする。 

− 値が長大オブジェクト2進オクテット列を識別する2進オクテット長大オブジェクト位置付け子。 

− 値が長大オブジェクト文字列を識別する文字長大オブジェクト位置付け子。 

− 値が長大オブジェクト各国文字列を識別する各国文字長大オブジェクト位置付け子。 

利用者定義型位置付け子は,位置付け子指定によって指定される利用者定義型の値を識別する。配列位

置付け子は,位置付け子指定によって指定される配列型の値を識別する。マルチ集合位置付け子は,位置

付け子指定によって指定されるマルチ集合型の値を識別する。 

2進オクテット長大オブジェクト型,文字長大オブジェクト型,利用者定義型,配列型又はマルチ集合

型の格納場所の値が,対応する型の位置付け子に代入されるとき,処理系依存の4オクテットの整数値が

生成され,その相手に代入される。位置付け子の値は,対応する型の値を一意に識別する。 

位置付け子は,有効 (valid) 又は無効 (invalid) のいずれかであってもよい。さらに,位置付け子として

指定されるホストパラメタ又はホスト変数は,保持可能位置付け子 (holdable locator) であることを指定し

てもよい。位置付け子が最初に作成されるとき,有効というマークが付けられ,適用可能ならば,保持可

能でないというマークが付けられる。位置付け子を指定する<HOLD LOCATOR文>は,その位置付け子を

保持可能にするために,明確に,その位置付け子が作成されたSQLトランザクションが終了する前に実行

しなければならない。 

保持可能でない位置付け子は,陽に無効にされるということがない限り,位置付け子が生成されたトラ

ンザクションが終了するまで,有効のままとする。保持可能でない位置付け子は,<FREE LOCATOR文>が

実行されるか,又はその位置付け子の生成よりも前に確立された保存点を識別する<SAVEPOINT句>を指

定する<ROLLBACK文>が実行されるときはいつも,無効になる。無効な位置付け子にアクセスすると,

例外条件が引き起こされることになる。 

保持可能な位置付け子は,それが生成されたSQLトランザクションの終了を越えて,有効のままであっ

てもよい。保持可能な位置付け子は,その位置付け子を識別する<FREE LOCATOR文>が実行されるか,又

はその位置付け子が生成されたSQLトランザクション若しくは後続のいずれかのSQLトランザクション

がロールバックされるときはいつも,無効になる。SQLセションの終了時に有効のままである全ての位置

93 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

付け子は,そのSQLセションが終了するときに,無効というマークが付けられる。 

4.31 診断領域 

この細分箇条は,ISO/IEC 9075-4の“4.7 診断領域”によって修正される。 

診断領域 (diagnostics area) は,SQL文が実行されたときに,終了条件及び例外条件の情報が格納される

場所とする。SQLセションに関連付けられる診断領域は,そのSQLセションの診断領域スタック 

(diagnostics area stack) を形成する。定義のために,このスタック中の診断領域には,1から始まる連続し

た番号が付けられているものとみなす。JIS X 3005-1 [ISO9075-1] の“4.2.3.1 SQLクライアント”で示すと

おり,もう一つの診断領域がSQLクライアントによって維持される。 

診断領域スタックに関する二つの操作を,定義のためだけに,この規格で規定する。診断領域スタック

に押し込むこと (pushing) は,新しい1番目の診断領域を実効的に作成し,スタック中の既存の全ての診

断領域の順序位置を1ずつ増加させることとする。新しい1番目の診断領域の内容は,最初は,古い(現

在2番目の)ものの内容の写しとする。診断領域スタックから取り出すこと (popping) は,スタック中の

1番目の診断領域を実効的に破壊し,残りの全ての診断領域の順序位置を1ずつ減少させることとする。

診断領域スタック中の診断領域の最大数は,処理系依存とする。 

各診断領域は,文領域 (statement area),及び一つ以上の条件領域 (condition area) の並びから成り,条件

領域のそれぞれは,特定の任意の時点で,占有 (occupied) されるか又は空き (vacant) であるかのいずれか

とする。条件領域のそれぞれが空きのとき,診断領域は,空 (empty) とする。診断領域を空にすること 

(emptying) は,この状態をもたらす。文領域は,名前付きの文情報項目 (statement information item) の集ま

りから成る。条件領域は,名前付きの条件情報項目 (condition information item) の集まりから成る。 

文情報項目は,条件が引き起こされるときに実行されている最も内側のSQL文についての情報を与え

る。条件情報項目は,その条件自体についての情報を与える。文情報項目及び条件情報項目の名前及びデ

ータ型は,表30“<GET DIAGNOSTICS文>で用いるための<文情報項目名>”及び表31“<GET DIAGNOSTICS

文>で用いるための<条件情報項目名>”で規定する。それらの意味は,“23.1 <GET DIAGNOSTICS文>”の

一般規則で規定する。 

<SQL診断文>でない任意の<SQL手続文>の実行の開始時に,1番目の診断領域が空にされる。処理系は,

この診断領域中の空きの条件領域に,SQLSTATEによって通知される終了条件又は例外条件についての情

報を格納する。別の条件が引き起こされるならば,これらの条件によって条件領域が更に占有されること

になる範囲は,処理系定義とする。 

<SQL診断文>を含む<外部呼出し手続>は,SQLSTATEによってその文の終了条件又は例外条件を示すコ

ードを戻すが,必ずしも空きの条件領域が占有されることになるとは限らない。 

診断領域ごとの条件領域の個数は,条件領域限界 (condition area limit) として参照する。SQLエージェ

ントは,<SET TRANSACTION文>で条件領域限界を設定してもよい。SQLエージェントが条件領域限界を

指定しないならば,条件領域限界は,処理系依存とするが,少なくとも一つの条件領域がなければならな

い。SQL処理系は,存在する条件領域よりも少ない条件についての情報をこの領域に格納してもよい。診

断領域中の1番目の条件領域が常にSQLSTATE値で指定される条件に対応することを除いて,診断領域に

格納される条件についての情報の順序は,処理系依存とする。 

<GET DIAGNOSTICS文>は,1番目の診断領域内での順序位置によって条件領域を参照し,占有された

条件領域から情報を得るために用いる。 

4.32 ホスト言語 

この規格では,ホスト言語 (host language) と呼ばれる幾つかの特定のプログラム言語で書かれたプログ

94 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ラムから<外部呼出し手続>が呼び出されるときの,SQLクライアントモジュール中のそれらの<外部呼出

し手続>の動作を規定する。“PLNプログラム (PLN program)”という用語は,“2 引用規格”で特定される

そのホスト言語の規定に適合するプログラムを参照する。ここで,PLNは,ホスト言語の名前とする。 

この規格では,SQL言語を埋め込まなければ,いずれかの特定の同じプログラム言語の規格に適合する

プログラム中に,SQL言語を埋め込むことを可能にするための機構を規定する。 

注記79 SQLとJavaプログラム言語との間のインタフェースは,[ISO9075-10] 及び [ISO9075-13] で定

義している。 

多くのSQLデータ型とほとんどのホスト言語のデータ型との間に明白な対応付けがあるが,これは,全

てのSQLデータ型に対してでも,全てのホスト言語に対してでもない。 

プログラム言語とのインタフェースをとるために,データ型DATE,TIME,TIMESTAMP及びINTERVAL

は,それらのプログラム言語の文字列から,又はそれらのプログラム言語の文字列に,<CAST指定>を用

いて変換しなければならない。プログラム言語規格が将来進化して,これらの四つのSQLデータ型に対応

するデータ型を提供することを期待する。その後,それらの対応するデータ型の利用可能性を反映するた

めに,この規格を改正することになる。 

データ型CHARACTER,CHARACTER VARYING及びCHARACTER LARGE OBJECTも,プログラム言

語の文字列に対応付けられる。しかし,プログラム言語で利用可能な機能は,SQLで利用可能な機能と同

じ能力を提供しないので,文字データを交換する特定の形式に関して,ホストプログラムとSQLとの間の

取決めがなければならない。この取決めのための明確な構文は,この規格で規定する。 

標準プログラム言語C及びCOBOLに対しては,BOOLEAN値をホスト言語の整数変数に対応付ける。

標準プログラム言語ADA,Fortran,PASCAL及びPL/Iに対しては,BOOLEAN変数が直接提供される。 

プログラム言語とのインタフェースのために,データ型ARRAYは,位置付け子(“4.30.5 位置付け子”

参照)に変換しなければならない。 

プログラム言語とのインタフェースのために,データ型MULTISETは,位置付け子(“4.30.5 位置付け

子”参照)に変換しなければならない。 

プログラム言語とのインタフェースのために,利用者定義型は,位置付け子(“4.30.5 位置付け子”参照)

で操作するか,又はホスト言語への定義された対応付けがある別のSQLデータ型に変換(“4.7.6 利用者定

義型のための変換”参照)しなければならない。 

4.33 カーソル 

4.33.1 カーソルの一般記述 

この細分箇条は,ISO/IEC 9075-3の“4.6.1 カーソルの一般記述”によって修正される。 

この細分箇条は,ISO/IEC 9075-4の“4.9.1 カーソルの一般記述”によって修正される。 

カーソル (cursor) は,表の行を1行ずつ処理する(例えば,ホストプログラム言語に戻す)ための機構

とする。 

04 カーソルは,<カーソル宣言>,<動的カーソル宣言>,<拡張動的カーソル割当て文>又は<受取りカー

ソル割当て文>によって指定する。<カーソル宣言>によって指定されるカーソルは,元祖カーソル (standing 

cursor) とする。<動的カーソル宣言>によって指定されるカーソルは,宣言動的カーソル (declared dynamic 

cursor) とする。<拡張動的カーソル割当て文>によって指定されるカーソルは,拡張動的カーソル (extended 

dynamic cursor) とする。拡張動的カーソルは,その拡張名が大域ならば,大域 (global) とする。そうでな

ければ,拡張動的カーソルは,局所 (local) とする。<受取りカーソル割当て文>によって指定されるカー

ソルは,受取りカーソル (received cursor) とする。動的カーソル (dynamic cursor) は,宣言動的カーソル,

background image

95 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

拡張動的カーソル又は受取りカーソルのいずれかとする。 

03 04 宣言カーソル (declared cursor) は,元祖カーソル,宣言動的カーソル又は受取りカーソルのいずれ

かとする。宣言カーソルは,<カーソル名>をもつ。<カーソル宣言>,<動的カーソル宣言>又は<受取りカ

ーソル割当て文>は,<SQLクライアントモジュール定義>の<モジュール内容>に直に含まれる。<カーソル

名>の有効範囲は,それを含む最も内側の<SQLクライアントモジュール定義> Mに含まれるどの<SQLス

キーマ文>も除くMとする。 

どのカーソルにも,関連付けられたカーソル宣言がある。宣言カーソルに対して,カーソル宣言は,そ

のカーソルの<カーソル宣言>,<動的カーソル宣言>又は<受取りカーソル割当て文>によって指定される。

拡張動的カーソルに対して,カーソル宣言は,<拡張動的カーソル割当て文>によって暗に作成される。 

03 04 カーソル宣言は,カーソル宣言記述子によって記述される。カーソル宣言記述子 (cursor declaration 

descriptor) は,次の項目を含む。 

− 

03 カーソルの種類(元祖カーソル,宣言動的カーソル,拡張動的カーソル又は受取りカーソル)。 

− 

04 カーソルの出所。 

・ カーソルが宣言カーソル又は局所拡張動的カーソルならば,SQLクライアントモジュールを示す標

識。 

・ そうでなければ,SQLセション識別子。 

− 

03 カーソルの名前。 

・ カーソルが宣言カーソルならば,<カーソル名>。 

・ 

03 そうでなければ,拡張名及びその有効範囲(GLOBAL又はLOCAL)。 

− 

03 カーソルの起源。 

・ カーソルが元祖カーソルならば,<カーソル宣言>に含まれる<カーソル指定>。 

・ カーソルが宣言動的カーソルならば,<動的カーソル宣言>に含まれる<文名>。 

・ カーソルが拡張動的カーソルならば,拡張文名によって指定される被準備文。 

・ 

03 カーソルが受取りカーソルならば,そのカーソルの<特定ルーチン指示子>。 

− カーソルの宣言特性。 

・ カーソルの宣言感度特性(SENSITIVE,INSENSITIVE又はASENSITIVEのいずれか)。 

・ カーソルの宣言スクロール可能性特性(SCROLL又はNO SCROLLのいずれか)。 

・ カーソルの宣言保持可能性特性(WITH HOLD又はWITHOUT HOLDのいずれか)。 

・ カーソルの宣言戻り可能性特性(WITH RETURN又はWITHOUT RETURNのいずれか)。 

カーソル宣言記述子は,カーソルの種類,出所及び名前の組合せによって識別される。 

カーソルは,カーソル実現値記述子によって記述される。カーソル実現値記述子 (cursor instance 

descriptor) は,次の項目を含む。 

− カーソル宣言記述子。 

− SQLセション識別子。 

− カーソルの状態(開いているか又は閉じているかのいずれか)。 

− カーソルが開いているならば,そのカーソルの結果集合記述子。 

カーソル実現値記述子は,それのカーソル宣言記述子及びSQLセション識別子によって識別される。 

“宣言 (declaration)”又は“実現値 (instance)”のいずれによっても修飾しない“カーソル (cursor)”とい

96 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

う用語は,カーソル実現値記述子を参照する。 

<SQLクライアントモジュール定義>中のどの<カーソル宣言>に対しても,カーソル宣言記述子は,SQL

クライアントモジュールに含まれ,SQLクライアントモジュールと同じ時点で,実効的に作成され,破壊

される。元祖カーソルに対するカーソル実現値記述子は,そのSQLクライアントモジュールの外部呼出し

手続が呼び出されるときに実効的に作成される。そのカーソル実現値記述子は,SQLセションの終了時に

破壊される。 

<SQLクライアントモジュール定義>中のどの<動的宣言カーソル>に対しても,カーソル宣言記述子は,

SQLクライアントモジュールに含まれ,SQLクライアントモジュールと同じ時点で,実効的に作成され,

破壊される。宣言動的カーソルに対するカーソル実現値記述子は,そのSQLクライアントモジュールの外

部呼出し手続が呼び出されるときに実効的に作成され,宣言動的カーソルが基にする被準備文を解放する

<DEALLOCATE PREPARE文>が実行されるときに破壊される。そのカーソル実現値記述子は,(より前に

破壊されていないならば,)SQLセションの終了時にも破壊される。 

拡張動的カーソル(すなわち,そのカーソル宣言記述子及びカーソル実現値記述子の両方)は,<拡張動

的カーソル割当て文>がSQLセション内で実行されるときに実効的に作成され,そのSQLセションが終了

するとき,又は拡張動的カーソルが基にする被準備文を解放する<DEALLOCATE PREPARE文>が実行され

るときに破壊される。 

<SQLクライアントモジュール定義>中のどの<受取りカーソル割当て文>に対しても,カーソル宣言記述

子は,SQLクライアントモジュールに含まれ,SQLクライアントモジュールと同じ時点で,実効的に作成

され,破壊される。受取りカーソルに対するカーソル実現値記述子は,<受取りカーソル割当て文>がSQL

セション内で実行されるときに実効的に作成され,そのSQLセションが終了するときに破壊される。 

カーソル実現値記述子は,開いている状態にあるか,又は閉じている状態にあるかのいずれかとする。

カーソルの最初の状態は,閉じている状態とする。元祖カーソルは,<OPEN文>によって開いている状態

になり,<CLOSE文>又は<ROLLBACK文>によって閉じている状態に戻る。宣言動的カーソルは,<動的

OPEN文>によって開いている状態になり,<動的CLOSE文>によって閉じている状態に戻る。拡張動的カ

ーソルは,<動的OPEN文>によって開いている状態になり,<動的CLOSE文>によって閉じている状態に

戻る。受取りカーソルは,<受取りカーソル割当て文>によって開いている状態になり,<動的CLOSE文>

によって結果集合並び中の次の結果集合に進められる。結果集合並び中の最後の結果集合が処理された後,

受取りカーソルは,<動的CLOSE文>によって閉じている状態になる。受取りカーソルが開いている間に,

それが関連付けられているSQL呼出し手続が再び呼び出されるときにも,受取りカーソルは,閉じている

状態になる。保持可能カーソルとして定義されなかった開いているカーソルは,<COMMIT文>によっても

閉じられる(受取りカーソルの場合,受取りカーソルの現在の結果集合が保持可能でないならば,

<COMMIT文>によって,結果集合並び中に次の結果集合があるときには,その結果集合に関して受取りカ

ーソルが開かれる。)。 

開いている状態のカーソルは,結果集合,及びその結果集合の順序付けに対する位置を識別する。カー

ソルの<カーソル指定>が<ORDER BY句>を単純に含まないか,又は行の順序を完全に指定しない<ORDER 

BY句>を単純に含むならば,結果集合の行は,<ORDER BY句>が順序を指定する範囲でだけ定義される

順序をもち,その他の順序は,処理系依存とする。 

注記80 “結果集合”の定義は,“3.1.6 第2部で規定する定義”で与えられる。 

カーソルの順序付けが<ORDER BY句>によって定義されないとき,二つの行の相対位置は,処理系依存

とする。カーソルの順序付けが<ORDER BY句>によって部分的に決定されるとき,二つの行の相対位置は,

97 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<ORDER BY句>によってだけ決定される。<ORDER BY句>を評価して,二つの行が等しい値をもつなら

ば,それらの行の相対位置は,処理系依存とする。 

結果集合の<カーソル指定>が<ORDER BY句>を単純に含むカーソルは,順序付けられたカーソル 

(ordered cursor) とする。 

カーソルは,更新可能 (updatable) か又は更新可能でない (not updatable) かのいずれかとする。受取り

カーソルは,更新可能でない。他の種類のカーソルに対しては,カーソルの結果集合記述子の<カーソル指

定>にFOR UPDATE OFが含まれるか,又はカーソルによって識別される<カーソル指定> CSが,単純に更

新可能な<問合せ指定>で,CSにFOR READ ONLYが含まれないで,カーソルが順序付けられていなくて,

かつ,カーソルがスクロール可能でないならば,そのカーソルは,更新可能とする。そうでなければ,そ

のカーソルは,更新可能でない。更新及び削除の操作は,アクセス規則の制約に従って,更新可能なカー

ソルに対して許される。 

開いている状態にあるカーソルの位置は,ある行の前,ある行の上,又は最後の行の後のいずれかとす

る。カーソルが行の上にあるならば,その行は,カーソルの現在行とする。カーソルは,結果集合の行の

並びが空であっても,その結果集合の最初の行の前又は最後の行の後にあってもよい。カーソルが最初に

開かれるとき,カーソルの位置は,最初の行の前とする。 

カーソル宣言記述子及び結果集合記述子には,四つの特性,すなわち,感度特性(SENSITIVE,

INSENSITIVE又はASENSITIVEのいずれか),スクロール可能性特性(SCROLL又はNO SCROLLのいず

れか),保持可能性特性(WITH HOLD又はWITHOUT HOLDのいずれか)及び戻り可能性特性(WITH 

RETURN又はWITHOUT RETURN)がある。その四つの宣言カーソル特性には,それぞれ,<カーソル宣

言>,<動的カーソル宣言>又は<拡張動的カーソル割当て文>に含まれる<カーソル特性>の陽に指定される

か又は暗に想定される<カーソル感度>,<カーソルスクロール可能性>,<カーソル保持可能性>及び<カー

ソル戻り可能性>が設定される。受取りカーソルに対する宣言カーソル特性は,ASENSITIVE,NO SCROLL,

WITHOUT HOLD及びWITHOUT RETURNとする。 

カーソルが開かれるとき,四つの宣言カーソル特性が,結果集合記述子の操作上の特性に写される。宣

言動的カーソル又は拡張動的カーソルの場合には,そのカーソルの<カーソル指定>である被準備文の陽に

指定された<カーソル属性の並び>によって指定されたとおりに,操作上の特性が修正される。受取りカー

ソルの場合には,操作上の感度特性,操作上のスクロール可能性特性及び操作上の保持可能性特性には,

結果集合を作成したSQL呼出し手続によって確立されたそれらの値が保存され,操作上の戻り可能性特性

は,処理系定義とする。 

操作上の感度特性がSENSITIVEのカーソルは,敏感 (sensitive) であるという。操作上の感度特性が

INSENSITIVEのカーソルは,鈍感 (insensitive) であるという。操作上の感度特性がASENSITIVEのカーソ

ルは,処理依存感度 (asensitive) であるという。 

操作上のスクロール可能性特性がSCROLLのカーソルは,スクロール可能 (scrollable) であるという。 

操作上の保持可能性特性がWITH HOLDのカーソルは,保持可能 (holdable) であるという。 

操作上の戻り可能性特性がWITH RETURNのカーソルは,WITH RETURN (with-return) カーソルである

という。 

新しいSQLトランザクションが開始されるとき,開いている状態のまま保持された保持可能カーソル

は,その位置を維持する。しかし,保持可能カーソルが元祖カーソルならば,<UPDATE文:位置付け>又

は<DELETE文:位置付け>が,新しいSQLトランザクション中でその元祖カーソルを参照する前に,その

元祖カーソルに対して<FETCH文>を発行しなければならない(そうでなければ,例外条件が引き起こされ

98 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る。)。保持可能カーソルが動的カーソルならば,<動的UPDATE文:位置付け>,<動的DELETE文:位置

付け>,<準備可能動的UPDATE文:位置付け>又は<準備可能動的DELETE文:位置付け>が,新しいSQL

トランザクション中でその動的カーソルを参照する前に,その動的カーソルに対して<動的FETCH文>を

発行しなければならない(そうでなければ,例外条件が引き起こされる。)。 

元祖カーソルの次の様相,すなわち,順序付けられているかどうか,更新可能であるかどうか,基とな

る表,感度特性,スクロール可能性特性,保持可能性特性及び戻り可能性特性は,そのカーソル宣言記述

子中の<カーソル指定>から決定することができる。したがって,元祖カーソルのこれらの様相に関する用

語は,例えば,構文規則,アクセス規則,適合性規則中のカーソル宣言記述子にも適用してもよい。 

4.33.2 カーソルの操作及びカーソルを用いる操作 

<FETCH文>は,元祖カーソルのもつ順序付けでの指定された行の上に,開いている元祖カーソルを位置

付けて,その行の列の値を取り出す。<UPDATE文:位置付け>は,元祖カーソルの現在行を更新する。

<DELETE文:位置付け>は,元祖カーソルの現在行を削除する。 

<動的FETCH文>は,動的カーソルのもつ順序付けでの指定された行の上に,開いている動的カーソル

を位置付けて,その行の列の値を取り出す。<動的UPDATE文:位置付け>は,動的カーソルの現在行を更

新する。<動的DELETE文:位置付け>は,動的カーソルの現在行を削除する。<準備可能動的DELETE文:

位置付け>は,文の正確な形式が実行時まで分からないときに,動的カーソルによって行を削除するために

用いる。<準備可能動的UPDATE文:位置付け>は,文の正確な形式が実行時まで分からないときに,動的

カーソルによって行を更新するために用いる。 

位置付けDELETE文 (positioned delete statement) は,<DELETE文:位置付け>,<動的DELETE文:位

置付け>又は<準備可能動的DELETE文:位置付け>のSQL文とする。 

位置付けUPDATE文 (positioned update statement) は,<UPDATE文:位置付け>,<動的UPDATE文:位

置付け>又は<準備可能動的UPDATE文:位置付け>のSQL文とする。 

カーソルを識別するSQL文の実行中に誤りが発生するならば,陽に定義されている場合を除いて,その

カーソルの位置又は状態に与える影響があるならば,それは,処理系依存とする。 

カーソルを識別するSQL文の実行中に終了条件が引き起こされるならば,その開いているカーソルを識

別するどの特定のSQL文に終了条件が戻されるかは,処理系依存とする。 

次の段落は,カーソルの操作上の感度特性に関する問題を議論するために用いる幾つかの用語を定義す

る。 

SQLデータの変更がカーソルCRに対して独立 (independent) であるということは,CRで位置付けられ

る<UPDATE文:位置付け>又は<DELETE文:位置付け>によってその変更がなされないことと同値とする。 

SQLデータの変更がCRに対して著しい (significant) ということは,その変更がCRに対して独立で,

CRが開かれる前にその変更がコミットされたならば,CRの結果集合記述子中の行の並びが何らかの点で

異なる原因となることと同値とする。 

SQLデータの変更がCRに対して可視 (visible) であるということは,CRの結果集合記述子の行の並び

SRに行を挿入するか,SRから行を削除するか,SRの行の列の値を変更するか,又はSRの行を再び順序

付けることによって,その変更がSRに影響を与えることと同値とする。 

カーソルが開いており,そのカーソルを開いたSQLトランザクションがSQLデータに著しい変更を行

うならば,そのカーソルが閉じられる前に,そのカーソルに対してその変更が可視であるかどうかは,次

のとおりに決定される。 

− カーソルが鈍感ならば,著しい変更は,可視ではない。 

99 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− カーソルが敏感ならば,著しい変更は,可視とする。 

− カーソルが処理依存感度ならば,著しい変更の可視性は,処理系依存とする。 

保持可能カーソルがSQLトランザクションTの間に開かれており,後続SQLトランザクションに対し

てそのカーソルが開いている状態のまま保持されるならば,(T,又はそのカーソルが開いている状態のま

ま保持されるいずれかの後続SQLトランザクションによって)SQLデータに対して行われた著しい変更

が,そのカーソルが閉じられる前に,後続SQLトランザクション中のそのカーソルに対して可視であるか

どうかは,次のとおりに決定される。 

− カーソルが鈍感ならば,著しい変更は,可視ではない。 

− カーソルが敏感ならば,著しい変更の可視性は,処理系定義とする。 

− カーソルが処理依存感度ならば,著しい変更の可視性は,処理系依存とする。 

CRがWITH RETURNカーソルならば,CRの結果集合記述子に含まれる<カーソル指定>は,戻り結果

集合を定義する。WITH RETURNカーソルがSQL呼出し手続中で宣言され,その手続から呼出し元に制御

が戻るときに開いている状態にあるならば,そのWITH RETURNカーソルは,それを生成する手続の呼出

し元がアクセスできる戻り結果集合を生成する。 

注記81 “戻り結果集合”及び“WITH RETURNカーソル”の定義は,“3.1.6 第2部で規定する定義”

で与えられる。 

4.34 SQL文 

4.34.1 SQL文の種類 

この細分箇条は,ISO/IEC 9075-4の“4.10.1 SQL文の種類”によって修正される。 

SQL文は,JIS X 3005 (ISO/IEC 9075) 規格群の各規格で規定する形式及び構文規則に適合する文字列と

する。ほとんどのSQL文は,SQLクライアントモジュール中で,実行のために準備し,実行することがで

きる。この場合には,SQLクライアントモジュールが作成されるときにそれらが準備され,それらを含む

外部呼出し手続が呼び出されるときに実行される(“4.23 SQLクライアントモジュール”参照)。 

ほとんどのSQL文は,その他の方法でも,実行のために準備し,実行することができる。それらの方法

は,次による。 

− SQL埋込みホストプログラム中。この場合には,SQL埋込みホストプログラムが前処理されるときに,

それらが準備される(“4.24 埋込み構文”参照)。 

− 動的SQL文を用いることによって準備し,実行する方法(それらの動的SQL文自体は,SQLクライ

アントモジュール又はSQL埋込みホストプログラム中で実行される。“4.25 動的SQLの概念”参照)。 

− 直接起動。この場合には,実行前に,それらが実効的に即時準備される(“4.26 SQLの直接起動”参

照)。 

この規格では,少なくとも次の六つの方法でSQL文を分類する。 

− 永続オブジェクト,すなわち,SQLデータ,SQLクライアントモジュール及びスキーマであっても,

SQLセション及び他のSQL文のような過渡オブジェクトであっても,SQLオブジェクトに与える効

果による分類。 

− SQLトランザクションを開始するかどうか,又はSQLトランザクションが動作中でないときに実行

できるか若しくは実行しなければならないかどうかによる分類。 

− SQLデータを潜在的に読むか,又はSQLデータを潜在的に修正するかどうかによる分類。 

100 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 埋め込んでもよいかどうかによる分類。 

− 動的に準備し,実行してもよいかどうかによる分類。 

− 直接実行してもよいかどうかによる分類。 

この規格は,これらの分類項目のいずれかに入る追加の処理系定義の文をSQL処理系が提供することを

許す。それら文の分類は,処理系定義なので,この細分箇条でそれらの文についてこれ以上言及しない。 

SQL文の主要な種類は,次のとおりとする。 

− SQLスキーマ文。 

− SQLデータ文。 

− SQLトランザクション文。 

− SQL制御文。 

− SQLコネクション文。 

− SQLセション文。 

− SQL診断文。 

− 動的SQL文。 

− SQL埋込み例外宣言。 

4.34.2 機能によって分類されたSQL文 

4.34.2.1 SQLスキーマ文 

この細分箇条は,ISO/IEC 9075-4の“4.10.2.1 SQLスキーマ文”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“4.13.1.1 SQLスキーマ文”によって修正される。 

次のSQL文は,SQLスキーマ文とする。 

− <スキーマ定義>。 

− <スキーマ削除文>。 

− <定義域定義>。 

− <定義域削除文>。 

− <表定義>。 

− <表削除文>。 

− <ビュー定義>。 

− <ビュー削除文>。 

− <表明定義>。 

− <表明削除文>。 

− <表変更文>。 

− <定義域変更文>。 

− <GRANT権限文>。 

− <REVOKE文>。 

− <文字集合定義>。 

− <文字集合削除文>。 

− <照合順定義>。 

− <照合順削除文>。 

− <文字変換定義>。 

101 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− <文字変換削除文>。 

− <トリガ定義>。 

− <トリガ削除文>。 

− <利用者定義型定義>。 

− <型変更文>。 

− <データ型削除文>。 

− <利用者定義順序付け定義>。 

− <利用者定義順序付け削除文>。 

− <利用者定義型変換定義>。 

− <利用者定義型変換削除文>。 

− <変換定義>。 

− <変換変更文>。 

− <変換削除文>。 

− <スキーマルーチン>。 

− <ルーチン変更文>。 

− <ルーチン削除文>。 

− <順序数生成子定義>。 

− <順序数生成子変更文>。 

− <順序数生成子削除文>。 

− <役割定義>。 

− <GRANT役割文>。 

− <役割削除文>。 

4.34.2.2 SQLデータ文 

次のSQL文は,SQLデータ文とする。 

− <一時表宣言>。 

− (<データ変更差分表>を含まない)<カーソル宣言>。 

− <OPEN文>。 

− <CLOSE文>。 

− <FETCH文>。 

− (<データ変更差分表>を含まない)<SELECT文:単一行>。 

− <FREE LOCATOR文>。 

− <HOLD LOCATOR文>。 

− <動的カーソル宣言>。 

− <拡張動的カーソル割当て文>。 

− <受取りカーソル割当て文>。 

− <動的SELECT文>。 

− <動的OPEN文>。 

− <動的CLOSE文>。 

− <動的FETCH文>。 

− (<データ変更差分表>を含まない)<直接SELECT文:複数行>。 

102 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− (<データ変更差分表>を含まない)<動的単一行SELECT文>。 

− 全てのSQLデータ変更文。 

4.34.2.3 SQLデータ変更文 

次のSQL文は,SQLデータ変更文とする。 

− <INSERT文>。 

− <DELETE文:探索>。 

− <DELETE文:位置付け>。 

− <UPDATE文:探索>。 

− <UPDATE文:位置付け>。 

− <MERGE文>。 

− <TRUNCATE TABLE文>。 

− (<データ変更差分表>を含む)<カーソル宣言>。 

− (<データ変更差分表>を含む)<SELECT文:単一行>。 

− <動的DELETE文:位置付け>。 

− <準備可能動的DELETE文:位置付け>。 

− <動的UPDATE文:位置付け>。 

− <準備可能動的UPDATE文:位置付け>。 

− (<データ変更差分表>を含む)<直接SELECT文:複数行>。 

− (<データ変更差分表>を含む)<動的単一行SELECT文>。 

4.34.2.4 SQLトランザクション文 

次のSQL文は,SQLトランザクション文とする。 

− <START TRANSACTION文>。 

− <SET TRANSACTION文>。 

− <SET CONSTRAINTS MODE文>。 

− <COMMIT文>。 

− <ROLLBACK文>。 

− <SAVEPOINT文>。 

− <RELEASE SAVEPOINT文>。 

4.34.2.5 SQLコネクション文 

次のSQL文は,SQLコネクション文とする。 

− <CONNECT文>。 

− <SET CONNECTION文>。 

− <DISCONNECT文>。 

4.34.2.6 SQL制御文 

この細分箇条は,ISO/IEC 9075-4の“4.10.2.2 SQL制御文”によって修正される。 

次のSQL文は,SQL制御文とする。 

− <CALL文>。 

− <RETURN文>。 

4.34.2.7 SQLセション文 

この細分箇条は,ISO/IEC 9075-9の“4.13.1.2 SQLセション文”によって修正される。 

103 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

この細分箇条は,ISO/IEC 9075-14の“4.6.1.1 SQLセション文”によって修正される。 

次のSQL文は,SQLセション文とする。 

− <SET SESSION CHARACTERISTICS文>。 

− <セション利用者識別子設定文>。 

− <SET ROLE文>。 

− <地方時刻帯設定文>。 

− <SET CATALOG文>。 

− <SET SCHEMA文>。 

− <SET NAMES文>。 

− <SET PATH文>。 

− <SET TRANSFORM GROUP文>。 

− <セション照合順設定文>。 

4.34.2.8 SQL診断文 

この細分箇条は,ISO/IEC 9075-4の“4.10.2.4 SQL診断文”によって修正される。 

次のSQL文は,SQL診断文とする。 

− <GET DIAGNOSTICS文>。 

4.34.2.9 動的SQL文 

次のSQL文は,動的SQL文とする。 

− <EXECUTE IMMEDIATE文>。 

− <ALLOCATE DESCRIPTOR文>。 

− <DEALLOCATE DESCRIPTOR文>。 

− <GET DESCRIPTOR文>。 

− <SET DESCRIPTOR文>。 

− <PREPARE文>。 

− <DEALLOCATE PREPARE文>。 

− <入力DESCRIBE文>。 

− <出力DESCRIBE文>。 

− <EXECUTE文>。 

4.34.2.10 

SQL埋込み例外宣言 

次のSQL文は,SQL埋込み例外宣言とする。 

− <埋込み例外宣言>。 

4.34.3 SQL文及びSQLデータアクセス指示 

幾つかのSQL文は,SQLデータを潜在的に読む (possibly read SQL-data) SQL文,又はSQLデータを潜

在的に修正する (possibly modify SQL-data) SQL文のいずれかとして分類してもよい。与えられたSQL文

は,高々一つのそのような種類に属する。 

次のSQL文は,SQLデータを潜在的に読む。 

− SQLデータ変更文,<FREE LOCATOR文>及び<HOLD LOCATOR文>以外のSQLデータ文。 

− <問合せ式>を含むSQL文で,かつ,SQLデータを潜在的に修正するSQL文ではないSQL文。 

− SQLデータを潜在的に修正する当該ルーチンがなく,SQLデータを潜在的に読む当該ルーチンが少な

くとも一つはある<ルーチン呼出し>を含むSQL文。 

104 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

次のSQL文は,SQLデータを潜在的に修正する。 

− SQLスキーマ文。 

− SQLデータ変更文。 

− SQLデータを潜在的に修正する当該ルーチンが少なくとも一つはある<ルーチン呼出し>を含むSQL

文。 

− <データ変更差分表>を含むSQL文。 

注記82 先行する細別中の最後の項目は,この規格中では冗長であるが,この規格群の他の規格,特に,

第4部では,冗長ではない。 

4.34.4 SQL文及びトランザクション状態 

この細分箇条は,ISO/IEC 9075-4の“4.10.3 SQL文及びトランザクション状態”によって修正される。 

次のSQL文は,トランザクション開始SQL文とする。すなわち,現行SQLトランザクションがなく,

かつ,この種類のSQL文が実行されるならば,通常,そのSQL文の実行が進行する前に,SQLトランザ

クションが開始される。 

− 全てのSQLスキーマ文。 

− 次のSQLトランザクション文。 

・ <START TRANSACTION文>。 

・ <SAVEPOINT文>。 

・ <COMMIT文>。 

・ <ROLLBACK文>。 

− 次のSQLデータ文。 

・ <OPEN文>。 

・ <CLOSE文>。 

・ <FETCH文>。 

・ <SELECT文:単一行>。 

・ <INSERT文>。 

・ <DELETE文:探索>。 

・ <DELETE文:位置付け>。 

・ <UPDATE文:探索>。 

・ <UPDATE文:位置付け>。 

・ <MERGE文>。 

・ <TRUNCATE TABLE文>。 

・ <拡張動的カーソル割当て文>。 

・ <受取りカーソル割当て文>。 

・ <動的OPEN文>。 

・ <動的CLOSE文>。 

・ <動的FETCH文>。 

・ <直接SELECT文:複数行>。 

・ <動的単一行SELECT文>。 

・ <動的DELETE文:位置付け>。 

105 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

・ <準備可能動的DELETE文:位置付け>。 

・ <動的UPDATE文:位置付け>。 

・ <準備可能動的UPDATE文:位置付け>。 

・ <FREE LOCATOR文>。 

・ <HOLD LOCATOR文>。 

− 次の動的SQL文。 

・ <入力DESCRIBE文>。 

・ <出力DESCRIBE文>。 

・ <ALLOCATE DESCRIPTOR文>。 

・ <DEALLOCATE DESCRIPTOR文>。 

・ <GET DESCRIPTOR文>。 

・ <SET DESCRIPTOR文>。 

・ <DEALLOCATE PREPARE文>。 

<START TRANSACTION文>を除いて,トランザクション開始SQL文が実行されるとき,現行SQLトラ

ンザクションが存在しないならば,どのトランザクション開始SQL文も,SQLトランザクションを暗に開

始する。その場合,SQLトランザクションを開始するSQL文の実行は,開始されるSQLトランザクショ

ンに含まれる。<START TRANSACTION文>の場合には,SQLトランザクションの開始は,そのSQL文自

体の実行の一次的な効果とする。 

<PREPARE文>がトランザクションを開始するかどうかは,<PREPARE文>が実行される時点の,その文

によって参照される<SQL文変数>の内容に依存する。<EXECUTE IMMEDIATE文>がトランザクションを

開始するかどうかは,<EXECUTE IMMEDIATE文>が実行される時点の,その文によって参照される<SQL

文変数>の内容に依存する。<EXECUTE文>がトランザクションを開始するかどうかは,<EXECUTE文>に

よって参照される被準備文が準備された時点の,<PREPARE文>によって参照される<SQL文変数>の内容

に依存する。それぞれの場合に,<SQL文変数>の内容が<START TRANSACTION文>以外のトランザクシ

ョン開始SQL文であったならば,<PREPARE文>,<EXECUTE IMMEDIATE文>又は<EXECUTE文>は,

トランザクション開始文として扱われる。そうでなければ,それは,トランザクション開始文として扱わ

れない。 

次のSQL文は,トランザクション開始SQL文ではない。すなわち,この種類のSQL文が実行されても,

SQLトランザクションの存在又は非存在に影響を与えない。 

− <START TRANSACTION文>,<SAVEPOINT文>,<COMMIT文>及び<ROLLBACK文>を除く全ての

SQLトランザクション文。 

− 全てのSQLコネクション文。 

− 全てのSQLセション文。 

− 全てのSQL診断文。 

− SQL埋込み例外宣言。 

− 次のSQLデータ文。 

・ <一時表宣言>。 

・ <カーソル宣言>。 

・ <動的カーソル宣言>。 

106 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

・ <動的SELECT文>。 

次のSQL文は,潜在的なトランザクション開始SQL文とする。 

− <RETURN文>。 

− <CALL文>。 

<SQL制御文>が<問合せ式>の評価を引き起こし,現行SQLトランザクションが存在しないならば, 

<問合せ式>の評価の前にSQLトランザクションが開始される。 

4.34.5 SQL文の基本単位性及び文実行文脈 

この細分箇条は,ISO/IEC 9075-4の“4.10.4 SQL文の基本単位性及び文実行文脈”によって修正される。 

幾つかのSQL制御文及び幾つかのSQLトランザクション文以外の全てのSQL文の実行は,回復に関し

て基本単位とする。そのようなSQL文を基本単位のSQL文 (atomic SQL-statement) と呼ぶ。基本単位の

SQL文ではないSQL文を基本単位でないSQL文 (non-atomic SQL statement) と呼ぶ。 

次のSQL文は,基本単位でないSQL文とする。 

− <CALL文>。 

− <EXECUTE文>。 

− <EXECUTE IMMEDIATE文>。 

− <COMMIT文>。 

− <RETURN文>。 

− <ROLLBACK文>。 

− <SAVEPOINT文>。 

その他の全てのSQL文は,基本単位のSQL文とする。 

文実行文脈は,基本単位 (atomic) か又は基本単位でない (non-atomic) かのいずれかとする。 

基本単位でないSQL文の実行によって生じる文実行文脈は,基本単位でない実行文脈 (non-atomic 

execution context) とする。 

基本単位のSQL文の実行によって生じる文実行文脈は,基本単位の実行文脈 (atomic execution context) 

とする。 

一つの実行文脈内で,別の実行文脈が動作中になってもよい。この後者の実行文脈を,前者より新しい

実行文脈 (more recent execution context) という。実行文脈ECより新しい実行文脈が存在しないならば,

ECは,最も新しい実行文脈 (most recent execution context) という。 

基本単位の実行文脈AECより新しい基本単位の実行文脈が存在しないならば,AECは,最も新しい基

本単位の実行文脈 (most recent atomic execution context) とする。 

SQLトランザクションは,基本単位の実行文脈内で,陽に終了させることができない。基本単位のSQL

文の実行が不成功ならば,SQL文によってなされたSQLデータ又はスキーマに対する変更は,取り消され

る。 

4.34.6 埋込み可能なSQL文 

この細分箇条は,ISO/IEC 9075-4の“4.10.5 埋込み可能なSQL文”によって修正される。 

次のSQL文は,SQL埋込みホストプログラム中に埋込み可能とし,<SQLクライアントモジュール定義

>中の<外部呼出し手続>中の<SQL手続文>であってもよい。 

− 全てのSQLスキーマ文。 

107 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 全てのSQLトランザクション文。 

− 全てのSQLコネクション文。 

− 全てのSQLセション文。 

− 全ての動的SQL文。 

− 全てのSQL診断文。 

− 次のSQLデータ文。 

・ <拡張動的カーソル割当て文>。 

・ <受取りカーソル割当て文>。 

・ <OPEN文>。 

・ <動的OPEN文>。 

・ <CLOSE文>。 

・ <動的CLOSE文>。 

・ <FETCH文>。 

・ <動的FETCH文>。 

・ <SELECT文:単一行>。 

・ <INSERT文>。 

・ <DELETE文:探索>。 

・ <DELETE文:位置付け>。 

・ <動的DELETE文:位置付け>。 

・ <UPDATE文:探索>。 

・ <UPDATE文:位置付け>。 

・ <MERGE文>。 

・ <TRUNCATE TABLE文>。 

・ <動的UPDATE文:位置付け>。 

・ <HOLD LOCATOR文>。 

・ <FREE LOCATOR文>。 

− 次のSQL制御文。 

・ <CALL文>。 

・ <RETURN文>。 

次のSQL文は,SQL埋込みホストプログラム中に埋込み可能とし,<SQLクライアントモジュール定義

>中に現れてもよいが,<外部呼出し手続>中に現れてはならない。 

− <一時表宣言>。 

− <カーソル宣言>。 

− <動的カーソル宣言>。 

次のSQL文は,SQL埋込みホストプログラム中に埋込み可能とするが,<SQLクライアントモジュール

定義>中に現れてはならない。 

− SQL埋込み例外宣言。 

108 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

したがって,次のSQLデータ文は,SQL埋込みホストプログラム中に埋込み可能ではなく,<SQLクラ

イアントモジュール定義>中に現れてはならないし,<SQLクライアントモジュール定義>中の<外部呼出し

手続>中の<SQL手続文>であってもならない。 

− <動的SELECT文>。 

− <動的単一行SELECT文>。 

− <直接SELECT文:複数行>。 

− <準備可能動的DELETE文:位置付け>。 

− <準備可能動的UPDATE文:位置付け>。 

4.34.7 準備可能及び即時実行可能なSQL文 

この細分箇条は,ISO/IEC 9075-4の“4.10.6 準備可能及び即時実行可能なSQL文”によって修正される。 

次のSQL文は,準備可能とする。 

− 全てのSQLスキーマ文。 

− 全てのSQLトランザクション文。 

− 全てのSQLセション文。 

− 次のSQLデータ文。 

・ <DELETE文:探索>。 

・ <動的SELECT文>。 

・ <動的単一行SELECT文>。 

・ <INSERT文>。 

・ <UPDATE文:探索>。 

・ <TRUNCATE TABLE文>。 

・ <MERGE文>。 

・ <準備可能動的DELETE文:位置付け>。 

・ <準備可能動的UPDATE文:位置付け>。 

・ <準備可能処理系定義文>。 

・ <HOLD LOCATOR文>。 

・ <FREE LOCATOR文>。 

− 次のSQL制御文。 

・ <CALL文>。 

したがって,次のSQL文は,準備可能でない。 

− 全てのSQLコネクション文。 

− 全ての動的SQL文。 

− 全てのSQL診断文。 

− SQL埋込み例外宣言。 

− 次のSQLデータ文。 

・ <拡張動的カーソル割当て文>。 

・ <受取りカーソル割当て文>。 

・ <OPEN文>。 

・ <動的OPEN文>。 

109 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

・ <CLOSE文>。 

・ <動的CLOSE文>。 

・ <FETCH文>。 

・ <動的FETCH文>。 

・ <SELECT文:単一行>。 

・ <DELETE文:位置付け>。 

・ <動的DELETE文:位置付け>。 

・ <UPDATE文:位置付け>。 

・ <動的UPDATE文:位置付け>。 

・ <直接SELECT文:複数行>。 

・ <一時表宣言>。 

・ <カーソル宣言>。 

・ <動的カーソル宣言>。 

− 次のSQL制御文。 

・ <RETURN文>。 

次の文を除いて,準備可能などのSQL文も,即時実行することができる。 

− <動的SELECT文>。 

− <動的単一行SELECT文>。 

4.34.8 直接実行可能なSQL文 

この細分箇条は,ISO/IEC 9075-4の“4.10.7 直接実行可能なSQL文”によって修正される。 

次のSQL文は,直接実行してもよい。 

− 全てのSQLスキーマ文。 

− 全てのSQLトランザクション文。 

− 全てのSQLコネクション文。 

− 全てのSQLセション文。 

− 次のSQLデータ文。 

・ <一時表宣言>。 

・ <直接SELECT文:複数行>。 

・ <INSERT文>。 

・ <DELETE文:探索>。 

・ <UPDATE文:探索>。 

・ <TRUNCATE TABLE文>。 

・ <MERGE文>。 

− 次のSQL制御文。 

・ <CALL文>。 

・ <RETURN文>。 

したがって,次のSQL文は,直接実行してはならない。 

− 全ての動的SQL文。 

110 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 全てのSQL診断文。 

− SQL埋込み例外宣言。 

− 次のSQLデータ文。 

・ <カーソル宣言>。 

・ <動的カーソル宣言>。 

・ <拡張動的カーソル割当て文>。 

・ <受取りカーソル割当て文>。 

・ <OPEN文>。 

・ <動的OPEN文>。 

・ <CLOSE文>。 

・ <動的CLOSE文>。 

・ <FETCH文>。 

・ <動的FETCH文>。 

・ <SELECT文:単一行>。 

・ <動的SELECT文>。 

・ <動的単一行SELECT文>。 

・ <DELETE文:位置付け>。 

・ <動的DELETE文:位置付け>。 

・ <準備可能動的DELETE文:位置付け>。 

・ <UPDATE文:位置付け>。 

・ <動的UPDATE文:位置付け>。 

・ <準備可能動的UPDATE文:位置付け>。 

− <FREE LOCATOR文>。 

− <HOLD LOCATOR文>。 

4.35 基本安全保護モデル 

4.35.1 認可識別子 

認可識別子は,権限の集合を識別する。認可識別子は,利用者識別子又は役割名のいずれかとする。利

用者識別子は,SQL処理系の利用者を表現する。オペレーティングシステム利用者への利用者識別子のど

んな対応付けも,処理系定義とする。役割名は,役割を表現する。 

4.35.1.1 SQLセション認可識別子 

SQLセションは,SQLセション利用者識別子 (SQL-session user identifier) と呼ばれる利用者識別子をも

つ。SQLセションが開始されるとき,そのセションが<CONNECT文>を用いて開始されない限り,SQLセ

ション利用者識別子は,処理系定義の方法で決定される。SQLセション利用者識別子の値は,決してナル

値であってはならない。SQLセション利用者識別子は,SESSION̲USERを用いることによって決定するこ

とができる。 

SQLセション文脈は,時刻とともに変化するセルの並びを含み,そのセルの並びは,認可スタック 

(authorization stack) として知られ,その認可スタックの各セルは,利用者識別子,役割名,又はその両方

のいずれかを含む。このスタックは,“後入れ先出し方式 (last-in, first-out)”の規律を用いて維持され,最

上部セルだけが実効的に可視となる。SQLセションが開始されるとき,<CONNECT文>が陽に又は暗に実

111 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

行されることによって,SQLセション利用者識別子 (SQL-session user identifier) として知られている利用

者識別子だけを含む一つのセルで認可スタックが初期化される。SQLセション役割名 (SQL-session role 

name) として知られている役割名は,その後に追加されてもよい。 

外部呼出し手続,SQL呼出しルーチン,被トリガ動作,被準備文又は直接実行される文をEとする。E

が呼出されるとき,最上部セルの写しが認可スタックに押し込まれる。Eの呼出しが定義者の権利の下に

あるならば,最上部セルの内容は,Eの所有者の認可識別子で置き換えられる。Eの実行が完了すると,

最上部セルが取り除かれる。 

現行SQLセション文脈の認可スタック中の最上部セルの内容は,各SQL文の実行のための権限を決定

する。このセル中に,利用者識別子があるならば,その利用者識別子は,現行利用者識別子 (current user 

identifier) として知られ,役割名があるならば,その役割名は,現行役割名 (current role name) として知ら

れている。それらは,それぞれ,CURRENT̲USER及びCURRENT̲ROLEを用いて決定されてもよい。 

与えられた時点に,現行利用者識別子又は現行役割名が存在しなくてもよいが,少なくとも一方又は他

方が常に存在する。 

注記83 PUBLICに付与された権限は,SQL環境中の全ての<認可識別子>に対して利用可能である。 

<セション利用者識別子設定文>は,現行利用者識別子及びSQLセション利用者識別子の値を変更する。

<SET ROLE文>は,現行役割名の値を変更する。 

現行認可識別子 (current authorization identifier) という用語は,認可スタックの最上部セル中の認可識別

子を示す。 

4.35.1.2 SQLクライアントモジュール認可識別子 

<SQLクライアントモジュール定義>が<モジュール認可識別子> MAIを含むならば,MAIは,対応する

SQLクライアントモジュールMの所有者とし,M中の各外部呼出し手続の実行のために現行認可識別子

として用いられる。Mが所有者をもたないならば,M中の各外部呼出し手続の実行のために,SQLセショ

ンの現行利用者識別子及び現行役割名が,それぞれ,現行利用者識別子及び現行役割名として用いられる。 

4.35.1.3 SQLスキーマ認可識別子 

どのスキーマも,<スキーマ定義> SDからスキーマの作成時点に決定される所有者をもつ。その所有者

は,次による。 

場合: 

− SDが<スキーマ認可識別子> SAIを単純に含むならば,SAIとする。 

− SDが<モジュール認可識別子> MAIを含む<SQLクライアントモジュール定義>に単純に含まれるな

らば,MAIとする。 

− そうでなければ,SQLセション利用者識別子とする。 

4.35.2 権限 

この細分箇条は,ISO/IEC 9075-4の“4.11.1 権限”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“4.14.1 権限”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“4.10 権限”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“4.7.1 権限”によって修正される。 

04 09 13 14 権限は,指定されたオブジェクトに対して,指定された<認可識別子>によって実行されるべき,

与えられた種類の<動作>を認可する。そのオブジェクトは,次のうちのいずれかとする。 

− 実表。 

112 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− ビュー。 

− ビュー構成要素。 

− 列。 

− 定義域。 

− 文字集合。 

− 照合順。 

− 文字変換。 

− 利用者定義型。 

− 表/メソッド対。 

− SQL呼出しルーチン。 

− 順序数生成子。 

各権限は,権限記述子 (privilege descriptor) によって表現される。権限記述子は,次の項目を含む。 

− 権限が付与されるオブジェクトの識別。 

− 権限の権限付与者の<認可識別子>。 

− 権限の権限受領者の<認可識別子>。 

− 権限が許す<動作>の識別。 

− 権限が付与可能かどうかを示す標識。 

− 権限にWITH HIERARCHY OPTIONが指定されたかどうかを示す標識。 

指定することができる<動作>は,次の動作とする。 

− INSERT 

− INSERT(<列名リスト>) 

− UPDATE 

− UPDATE(<列名リスト>) 

− DELETE 

− SELECT 

− SELECT(<列名リスト>) 

− SELECT(<権限メソッドリスト>) 

− REFERENCES 

− REFERENCES(<列名リスト>) 

− USAGE 

− UNDER 

− TRIGGER 

− EXECUTE 

INSERT,UPDATE,DELETE,SELECT,TRIGGER又はREFERENCESの<動作>をもつ権限記述子は,

表権限記述子 (table privilege descriptor) と呼ばれ,その権限記述子によって識別される表又はビュー構成

要素に関する権限の存在を識別する。表権限記述子がビュー構成要素を識別するならば,その権限記述子

をビュー構成要素表権限記述子 (view component table previlege descriptor) と呼ぶ。 

SELECT(<列名リスト>),INSERT(<列名リスト>),UPDATE(<列名リスト>)又はREFERENCES(<

113 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

列名リスト>)の<動作>をもつ権限記述子は,列権限記述子 (column privilege descriptor) と呼ばれ,その権

限記述子によって識別される表又はビュー構成要素の列に関する権限の存在を識別する。列権限記述子が

ビュー構成要素を識別するならば,その権限記述子をビュー構成要素列権限記述子 (view component column 

previlege descriptor) と呼ぶ。 

SELECT(<権限メソッドリスト>)の<動作>をもつ権限記述子は,表/メソッド権限記述子 (table/method 

privilege descriptor) と呼ばれ,その権限記述子によって識別される表の構造型のメソッドに関する権限の

存在を識別する。 

表権限記述子は,(<動作>がDELETEでない限り,)<動作>によって識別される権限が,その表にその後

追加される全ての列に関して,その権限付与者によって,その権限受領者に自動的に付与されることを指

定する。 

09 13 14 USAGEの<動作>をもつ権限記述子は,USAGE権限記述子 (usage privilege descriptor) と呼ばれ,

次の種類のいずれかのオブジェクトに関する権限を記述する。 

− 定義域。 

− 利用者定義型。 

− 文字集合。 

− 照合順。 

− 文字変換。 

− 順序数生成子。 

UNDERの<動作>をもつ権限記述子は,UNDER権限記述子 (under privilege descriptor) と呼ばれ,その

権限記述子によって識別される構造型に関する権限の存在を識別する。 

EXECUTEの<動作>をもつ権限記述子は,EXECUTE権限記述子 (execute privilege descriptor) と呼ばれ,

その権限記述子によって識別されるSQL呼出しルーチンに関する権限の存在を識別する。 

付与可能な権限は,<GRANT権限文>によって付与されてもよい権限とする。<GRANT権限文>のWITH 

GRANT OPTIONは,権限の受領者を識別する<認可識別子>が(権限付与者として振る舞って,)その権限

を他の利用者に付与してもよいかどうかを指定する。 

オブジェクトの所有者のための権限を表現する権限記述子は,特別な付与者の値“̲SYSTEM”をもつ。

この値は,オブジェクトの所有者に適用する全ての権限に対して情報スキーマ中に反映される。 

注記84 情報スキーマは,[ISO9075-11] で定義している。 

与えられたスキーマ<利用者識別子>又はスキーマ<役割名>によって所有されるスキーマは,別の<認可

識別子>(権限受領者)に付与された権限を記述する権限記述子を含んでもよい。付与された権限は,現行

スキーマ中で定義されたオブジェクトに適用される。 

直接SQL文は,常に,呼出し元の権利の下で実行される。 

ビュー権限依存記述子 (view privilege dependency descriptor) は,支援権限記述子 (supporting privilege 

descriptor) 及び従属権限記述子 (dependent privilege descriptor) と呼ばれる二つの権限記述子を含む記述子

とする。ビュー権限依存記述子は,ビュー又はビューの列のINSERT,UPDATE又はDELETE権限が別の

権限に直接依存していることを記録する。 

4.35.3 役割 

役割名によって識別される役割は,利用者のように,権限及び別の役割の潜在的な権限受領者及び権限

付与者とする。さらに,利用者のように,役割は,スキーマ及びその他のオブジェクトを所有することも

114 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

できる。 

役割は,<役割定義>を実行することによって作成され,<役割削除文>を実行することによって破壊され

る。 

役割は,<GRANT役割文>を実行することによって一つ以上の認可識別子に付与され,このようにして,

その役割の全ての権限を権限受領者に与えることになる。認可識別子Aに役割を付与することを(Aに対

する)役割認可 (role authorization) と呼ぶ。 

役割名Rをもつ役割の権限は,権限受領者がRの権限の集合と,Rに対する役割認可によって定義され

る役割名の権限の集合との和集合とする。役割認可の循環は,禁止されている。 

役割Rに対する<GRANT役割文>のWITH ADMIN OPTIONは,各権限受領者が別の権限受領者にRを

付与してもよいこと,別の権限受領者からRを剝奪してもよいこと,及びRを破壊してもよいことを指定

する。 

各役割認可は,役割認可記述子 (role authorization descriptor) によって記述される。役割認可記述子は,

次の項目を含む。 

− 役割の役割名。 

− 権限付与者の認可識別子。 

− 権限受領者の認可識別子。 

− 役割認可が付与可能かどうかを示す標識。 

4.35.4 安全保護モデル定義 

役割名がRで,かつ,権限受領者がPUBLIC若しくは認可識別子A,又はAに適用可能な役割である役

割認可記述子が存在するならば,役割Rは,認可識別子Aに適用可能 (applicable for) とする。 

権限Pの権限受領者がPUBLIC若しくは認可識別子A,又はAに適用可能な役割ならば,権限Pは,認

可識別子Aに適用可能 とする。 

注記85 “に適用可能 (applicable for)”は,永続オブジェクト間の永続的な関係である。したがって,そ

れは,どのSQLセションにも全く依存しない。 

認可識別子が現行利用者識別子,現行役割名,又は現行役割名に適用可能な役割名ならば,その認可識

別子が与えられた (enabled) とする。 

与えられた認可識別子に権限Pが適用可能ならば,権限Pは,現行 (current) とする。 

注記86 “与えられた”及び“現行”は,現行SQLセション文脈の(過渡)要素に適用される。 

4.36 SQLトランザクション 

4.36.1 SQLトランザクションの一般記述 

SQLトランザクション (SQL-transaction) (トランザクション)は,回復に関しての基本単位であるSQL

文の実行の並びとする。これらの操作は,一つ以上の翻訳単位及びSQLクライアントモジュールによって

実行される。SQLトランザクションを構成する操作は,SQLの直接起動によって実行してもよい。 

SQLスキーマ文の実行と同じSQLトランザクション内に,SQLデータ文の実行が存在してもよいかど

うかは,処理系定義とする。同じSQLトランザクション内に存在してもよいならば,どの開いているカー

ソル又は遅延制約に与える効果も,処理系定義とする。処理系定義の制限,要件及び条件を追加してもよ

い。そのようないずれかの制限,要件又は条件に違反するならば,処理系定義の例外条件,又は処理系定

義のサブクラスコードをもつ終了条件 警告 (warning) が引き起こされる。 

SQLスキーマ文の動的実行と同じSQLトランザクション内に,<SQL動的データ文>の動的実行が存在

してもよいかどうかは,処理系定義とする。同じSQLトランザクション内に存在してもよいならば,どの

115 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

開いているカーソル,準備された動的文,又は遅延制約に与える効果も,処理系定義とする。処理系定義

の制限,要件及び条件を追加してもよい。そのようないずれかの制限,要件又は条件に違反するならば,

処理系定義の例外条件,又は処理系定義のサブクラスコードをもつ終了条件 警告 が引き起こされる。 

SQLトランザクションのSQL文を実行する各SQLクライアントモジュールは,そのSQLトランザクシ

ョンに関連付けられる。SQLトランザクションのSQL文を実行するSQLの各直接起動は,そのSQLトラ

ンザクションに関連付けられる。現在動作中のSQLトランザクションが存在しないとき,トランザクショ

ン開始<直接SQL文>を実行することになるSQLの直接起動によって,SQLトランザクションが開始され

る。現在動作中のSQLトランザクションがなく,トランザクション開始 (transaction-initiating) SQL文を実

行することになる<外部呼出し手続>が呼び出されるとき,SQLトランザクションが開始される。SQLトラ

ンザクションは,<COMMIT文>又は<ROLLBACK文>によって終了する。SQLトランザクションが

<COMMIT文>の実行の成功によって終了するならば,そのSQLトランザクションによってなされたSQL

データ又はスキーマに対する全ての変更が永続化され,全ての並行SQLトランザクション及び後続のSQL

トランザクションに対してアクセス可能となる。SQLトランザクションが<ROLLBACK文>によって終了

するか又は<COMMIT文>の実行の失敗によって終了するならば,そのSQLトランザクションによってな

されたSQLデータ又はスキーマに対する全ての変更は,取り消される。コミットされた変更を取り消すこ

とはできない。<COMMIT文>の実行が試みられるが,幾つかの例外条件が引き起こされるならば,その

SQLトランザクションによってなされたSQLデータ又はスキーマに対する変更が取り消されるか又は永

続化されるかは,不定とする。 

4.36.2 保存点 

SQLトランザクションは,保存点 (savepoint) を用いて,部分的にロールバックしてもよい。<SAVEPOINT

文>が実行されるときに,保存点及びその<保存点名>がSQLトランザクション内に確立される。 

SQLトランザクションは,一つ以上の保存点水準 (savepoint level) をもち,そのうちのただ一つの保存

点水準は,現行保存点水準 (current savepoint level) とする。新しい保存点水準 (new savepoint level) NSLが

確立されるとき,現行保存点水準CSLが現行ではなくなり,NSLが現行になるというように,SQLトラン

ザクションの保存点水準は,入れ子になる。NSLが破壊され (destroyed) るとき,CSLが再び現行になる。 

動作中のSQLトランザクションが存在しないときでも,SQLセションSS中に保存点水準が存在し,

SQLトランザクションがSS中で開始されるとき,この保存点水準が現行の保存点水準のまま残る。 

保存点SPは,ただ一つの保存点水準,すなわち,SPが確立されるときに現行である保存点水準に存在

する。 

<ROLLBACK文>が保存点SSを参照するならば,SSの確立に後続するSQLデータ又はスキーマに対す

る全ての変更が取り消され,SSが確立された後に確立された全ての保存点が破壊される。 

注記87 SQLトランザクションは,SSを確立した<SAVEPOINT文>の実行直後の状態に実効的に回復さ

れる。 

保存点水準SPLに存在する保存点は,SPLが破壊されるときに破壊される。現行保存点水準中の保存点

SSの保存点名を指定する<RELEASE SAVEPOINT文>が実行されるとき,SS,及びSSが確立された後に確

立された全ての保存点が破壊される。保存点は,その名前を指定する<SAVEPOINT文>を実行することに

よって,保存点水準内で同じ名前をもつ別の保存点に置き換えてもよい。 

診断領域の内容,SQL記述子領域の内容,及び被準備文の状態に,<保存点指定子>を参照する

<ROLLBACK文>が影響を与えるかどうか,又はどのように影響を与えるかは,処理系定義とする。 

4.36.3 SQLトランザクションの特性 

116 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

この細分箇条は,ISO/IEC 9075-9の“4.15.1 SQLトランザクションの特性”によって修正される。 

SQLトランザクションは,各整合性制約に対して,制約モード (constraint mode) をもつ。SQLトランザ

クション中の整合性制約に対する制約モードは,“4.18 整合性制約”で規定する。 

09 SQLトランザクションは,読込み専用 (read-only) 又は読み書き可能 (read-write) のいずれかのトラン

ザクションアクセスモード (transaction access mode) をもつ。トランザクションアクセスモードは,SQLト

ランザクションの開始前に<SET TRANSACTION文>によって陽に設定してもよいし,SQLトランザクシ

ョンを開始する<START TRANSACTION文>を用いて陽に設定してもよい。そうでなければ,トランザク

ションアクセスモードには,各SQLトランザクションが始まる前に,SQLセションの既定トランザクショ

ンアクセスモードが暗に設定される。<SET SESSION CHARACTERISTICS文>によってSQLセションの既

定トランザクションアクセスモードが設定されていなかったならば,そのSQLセションの既定トランザク

ションアクセスモードは,読み書き可能 とする。読込み専用 という用語は,ビュー表及び永続実表に対

してだけ適用する。 

SQLトランザクションは,条件領域限界 (condition area limit) をもち,その条件領域限界は,このSQL

トランザクション中で一つのSQL文を実行している間に診断領域中に格納できる条件の最大数を指定す

る正の整数とする。 

SQLトランザクションは,処理系定義の時刻印型の値であるトランザクション時刻印 (transaction 

timestamp) をもち,その値は,このSQLトランザクション中のSQLデータ変更文の実行によって修正さ

れる行があるならば,それらの行のシステム時刻期間開始列及びシステム時刻期間終了列の値を設定する

ために用いる。トランザクション時刻印は,そのトランザクション中でいずれかのSQLデータ変更文が実

行される前にSQL処理系によって設定され,一度設定されると,そのSQLトランザクションの間,変更

されないでそのままとする。 

異なるSQLエージェントによって開始され,同じSQLデータ又はスキーマをアクセスし,かつ,時刻

で重なり合うSQLトランザクションは,並行SQLトランザクション (concurrent SQL-transaction) とする。 

4.36.4 SQLトランザクションの隔離性水準 

SQLトランザクションは,READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ又は

SERIALIZABLEのトランザクション隔離性水準 (transaction isolation level) をもつ。SQLトランザクショ

ンのトランザクション隔離性水準は,そのSQLトランザクション中のSQLデータ又はスキーマに関する

操作が,並行SQLトランザクション中のSQLデータ又はスキーマに関する操作に,影響を受ける度合い

及び影響を与える可能性のある度合いを定義する。SQLセション内の前のSQLトランザクションからい

ずれかのカーソルが開いている状態で保持されるときには,そのSQLトランザクションのトランザクショ

ン隔離性水準は,既定で,前のSQLトランザクションのトランザクション隔離性水準とする。開いている

状態で保持されているカーソルが存在しないか,又はこれがSQLセション内の最初のSQLトランザクシ

ョンならば,トランザクション隔離性水準は,既定でSERIALIZABLEとする。トランザクション隔離性水

準は,SQLトランザクションの開始前の<SET TRANSACTION文>によって,又はSQLトランザクション

を開始する<START TRANSACTION文>を用いることによって,陽に設定することができる。トランザク

ション隔離性水準が陽に設定されないならば,各SQLトランザクションが始まる前に,そのSQLセショ

ンの既定トランザクション隔離性水準が暗に設定される。<SET SESSION CHARACTERISTICS文>によっ

てSQLセションの既定トランザクション隔離性水準が設定されていなかったならば,SQLセションの既

定トランザクション隔離性水準は,SERIALIZABLEとする。 

SQLトランザクションの開始後及びその終了前の<SET TRANSACTION文>の実行は,禁止されている。

background image

117 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SQLトランザクションの開始前に<SET TRANSACTION文>を実行して,その<SET TRANSACTION文>の

実行後に開始される単一のSQLトランザクションのトランザクションアクセスモード,トランザクション

隔離性水準及び条件領域限界を設定する。SQLトランザクションの開始前に複数の<SET TRANSACTION

文>が実行されるならば,そのような最後の文が,そのSQLトランザクションに対して実効的な設定を行

う文とする。それらの動作は,累積しない。 

トランザクション隔離性水準SERIALIZABLEの並行SQLトランザクションの実行は,直列化可能 

(serializable) であることが保証される。直列化可能な実行とは,並行実行中のSQLトランザクションの操

作の実行によって,これらの同じSQLトランザクションの,ある直列実行と同じ効果を生じる実行と定義

する。直列実行とは,次のSQLトランザクションが開始する前に各SQLトランザクションが完了する実

行とする。 

トランザクション隔離性水準は,並行SQLトランザクションの実行中に発生し得る現象の種類を指定す

る。次の現象があり得る。 

1) P1[“汚れのある読出し (Dirty read)”]:SQLトランザクションT1が行を修正する。その後,T1が

COMMITを実行する前に,SQLトランザクションT2がその行を読む。その後,T1がROLLBACK

を実行するならば,T2は,コミットされておらず,したがって,存在しなかったとみなされるかも

しれない行を読んだことになる。 

2) P2[“繰返し不可能読出し (Non-repeatable read)”]:SQLトランザクションT1が行を読む。その後,

SQLトランザクションT2がその行を修正又は削除し,COMMITを実行する。その後,T1がその行

を再び読もうとするならば,修正された値を受け取るか又はその行が削除されたことを知るかもし

れない。 

3) P3[“幻 (Phantom)”]:ある<探索条件>を満たす行の集合NをSQLトランザクションT1が読む。

その後,SQLトランザクションT1が用いた<探索条件>を満たす一つ以上の行を生成するSQL文

を,SQLトランザクションT2が実行する。その後,SQLトランザクションT1が同じ<探索条件>

で最初の読込みを繰り返すならば,異なる行の集まりを得ることになる。 

四つのトランザクション隔離性水準は,各SQLトランザクションが完全に実行されるか又は全く実行さ

れないかのいずれかであること,及びどの更新も失われないことを保証する。トランザクション隔離性水

準は,現象P1,P2及びP3に関して異なる。表8“SQLトランザクション隔離性水準及び三つの現象”は,

与えられたトランザクション隔離性水準で,発生し得る現象,及び発生し得ない現象を規定する。 

03 表8−SQLトランザクション隔離性水準及び三つの現象 

水準 

P1 

P2 

P3 

READ UNCOMMITTED 

発生し得る 

発生し得る 

発生し得る 

READ COMMITTED 

発生し得ない 

発生し得る 

発生し得る 

REPEATABLE READ 

発生し得ない 

発生し得ない 

発生し得る 

SERIALIZABLE 

発生し得ない 

発生し得ない 

発生し得ない 

注記88 トランザクション隔離性水準SERIALIZABLEで実行するSQLトランザクションに

対するこれらの現象の排除は,そのようなトランザクションが直列化可能であるこ
との要件の結果である。 

SQLセション中のSQLトランザクションによってなされるSQLデータ又はスキーマの変更は,同じ

SQLセション中のそのSQLトランザクション,及びトランザクション隔離性水準READ UNCOMMITTED

118 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の別のSQLトランザクション又は別のSQLセション中の同じSQLトランザクションによって知られても

よいが,前者のSQLトランザクションが<COMMIT文>によって終了するまでは,トランザクション隔離

性水準READ COMMITTED,REPEATABLE READ又はSERIALIZABLEの別のSQLトランザクションに

よって知られることはあり得ない。 

SQLトランザクションのトランザクション隔離性水準にかかわらず,SQL文の実行のために行われるス

キーマ定義の暗黙の読込み,整合性制約の検査,及び参照制約に関連付けられた参照動作の実行の間に,

現象P1,P2及びP3が発生してはならない。暗に読み込まれるスキーマ定義は,処理系依存とする。これ

は,そのSQLトランザクションのトランザクション隔離性水準で実行され,陽に指定される,情報スキー

マ中の表からの行の読込みには,影響を与えない。 

注記89 情報スキーマは,[ISO9075-11] で定義している。 

4.36.5 暗黙ロールバック 

二つ以上の並行SQLトランザクションの直列化可能性を保証できないことをSQL処理系が検知したと

き,SQL処理系によって<ROLLBACK文>の実行が暗に開始されてもよい。この誤りが発生すると,例外

条件:トランザクションロールバック (transaction rollback) − 直列化失敗 (serialization failure) が引き起

こされる。 

回復不可能な誤りをSQL処理系が検知したときに,SQL処理系によって<ROLLBACK文>の実行が暗に

開始されてもよい。このような誤りが発生すると,処理系定義のサブクラスコードをもつ例外条件:トラ

ンザクションロールバック が引き起こされる。 

現行SQLコネクションの喪失をSQL処理系が検知したとき,<ROLLBACK文>の実行が暗に開始され

てもよい(“4.37 SQLコネクション”参照)。 

4.36.6 SQLトランザクション中のSQL文の効果 

SQLトランザクション内でのSQL文の実行は,そのSQL文の一般規則,“11.8 <参照制約定義>”の一般

規則,“11.49 <トリガ定義>”の一般規則,及び“11.60 <SQL呼出しルーチン>”の一般規則で規定する効

果以外には,SQLデータ又はスキーマにどんな効果も与えない。直列化可能な実行に加えて,これは,次

の効果を除いて,トランザクション隔離性水準SERIALIZABLEのSQLトランザクション内で,全ての読

出し操作が繰返し可能であることを意味する。 

1) そのSQLトランザクション自体によって陽になされたSQLデータ又はスキーマの変更及びその変

更内容による効果。 

2) 外部呼出し手続に与えられるSQLパラメタ値の違いによる効果。 

3) CURRENT̲DATE及びCURRENT̲USERのような時刻とともに変化するシステム変数の参照による

効果。 

4.36.7 全体トランザクション 

幾つかの環境(例えば,遠隔データベースアクセス)では,SQLトランザクションは,SQLエージェン

ト以外のエージェントによって制御される全体トランザクションの部分であり得る。全体トランザクショ

ンは,異なる資源管理系を含んでもよく,SQL処理系は,単にそのような管理系の一つにすぎない。その

ような環境では,全体トランザクションは,その別エージェントによって終了させられなければならない。

言い換えると,その別エージェントは,全体トランザクションの順序立った終了を調整するために,SQL

(のCOMMIT又はROLLBACK)とは異なるインタフェースによってSQL処理系と交信してもよい。SQL

トランザクションがSQLエージェント以外のエージェントによって制御される全体トランザクションの

部分であり,SQL処理系によって<ROLLBACK文>が暗に開始されるならば,SQL処理系は,その全体ト

119 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ランザクションを終了させるために,その別エージェントと交信する。そのようなエージェントとSQL処

理系との間のインタフェースの規定は,この規格の適用範囲外とする。しかし,SQLトランザクションの

意味は,次に定義する意味と同じであることに注意することが重要である。 

− SQLエージェント以外のエージェントが,SQL処理系に対して,SQLトランザクションをロールバッ

クすることを要求すると,“17.8 <ROLLBACK文>”の一般規則が実行される。 

− そのようなエージェントがSQL処理系に対して,SQLトランザクションをコミットすることを要求

すると,“17.7 <COMMIT文>”の一般規則が実行される。全体トランザクションの順序立った終了を

保証するために,このコミット操作は,適用業務から見えない幾つかのフェーズで処理してもよい。

このとき,“17.7 <COMMIT文>”の全ての一般規則が単一のフェーズで実行される必要はない。 

しかし,そのような環境中でも,SQLエージェントは,SQLトランザクションモデルに特有な[読込み

専用 (read-only) 又は読み書き可能 (read-write),トランザクション隔離性水準及び制約モードのような]

特性を設定するために,SQLサーバと直接交信する。 

二つ以上のSQLサーバに影響を与えるSQLトランザクションが提供されるかどうかは,処理系定義と

する。そのようなSQLトランザクションが提供されるならば,単一のSQLサーバに影響を与える各SQL

トランザクションの部分を,分岐トランザクション (branch transaction),又はSQLトランザクションの分

岐と呼ぶ。そのようなSQLトランザクションが提供されるならば,それらは,一般的に,全て同じ特性(制

約モードだけでなく,トランザクションアクセスモード,条件領域限界及びトランザクション隔離性水準)

をもつ。しかし,SET LOCAL TRANSACTION文を用いて,一つのSQLサーバでそのようなSQLトラン

ザクションの幾つかの特性を変更することができる。SET LOCAL TRANSACTION文がトランザクション

開始SQL文の前にSQLサーバで実行されるならば,そのSQLサーバでSQLトランザクションのその分

岐 (branch) の特性を設定してもよい。 

SQLトランザクションの分岐の特性は,そのSQLトランザクションの特性によって,全体的に制限され

る。 

− SQLトランザクションが読み書き可能ならば,そのSQLトランザクションの分岐は,読み書き可能又

は読込み専用であってもよい。SQLトランザクションが読込み専用ならば,そのSQLトランザクショ

ンの分岐は,読込み専用でなければならない。 

− SQLトランザクションがREAD UNCOMMITTEDのトランザクション隔離性水準をもつならば,その

SQLトランザクションの分岐は,READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ

又はSERIALIZABLEのトランザクション隔離性水準をもってもよい。 

SQLトランザクションがREAD COMMITTEDのトランザクション隔離性水準をもつならば,その

SQLトランザクションの分岐は,READ COMMITTED,REPEATABLE READ又はSERIALIZABLEの

トランザクション隔離性水準をもたなければならない。 

SQLトランザクションがREPEATABLE READのトランザクション隔離性水準をもつならば,その

SQLトランザクションの分岐は,REPEATABLE READ又はSERIALIZABLEのトランザクション隔離

性水準をもたなければならない。 

SQLトランザクションがSERIALIZABLEのトランザクション隔離性水準をもつならば,そのSQL

トランザクションの分岐は,SERIALIZABLEのトランザクション隔離性水準をもたなければならない。 

− SQLトランザクションの分岐の条件領域限界は,そのSQLトランザクションの条件領域限界と常に

同じとする。SET LOCAL TRANSACTIONは,条件領域限界を指定してはならない。 

120 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

全体トランザクションの部分でないSQLトランザクションは,<COMMIT文>及び<ROLLBACK文>の

実行によって終了する。それらの文がAND CHAINを指定するならば,それらは,さらに,各整合性制約

の制約モードがその既定のモード[遅延 (deferred) 又は即時 (immediate)]に戻ることを除いて,終了した

ばかりのSQLトランザクションと同じ特性をもつ新しいSQLトランザクションを開始する。 

4.37 SQLコネクション 

SQLコネクション (SQL-connection) は,SQLクライアントとSQLサーバとの間のアソシエーションと

する。SQLコネクションは,<SQLサーバ名>を用いて目的のSQLサーバを識別する<CONNECT文>によ

って確立され,名前付けられてもよい。<コネクション名>は,値が<識別子>である<単純値指定>として指

定される。二つの<コネクション名>は,それらの値の先行する<空白>及び後続の<空白>を除いた値が,“5.2 

<トークン>及び<分離符号>”中の<識別子>の比較に対する規則に従って等価ならば,同じSQLコネクシ

ョンを識別する。SQLサーバにアクセスし,SQLセションを作成するために必要な,SQLサーバの位置,

同一性及び通信プロトコルを決定するために,SQL処理系がどのように<SQLサーバ名>を用いるかは,処

理系定義とする。 

SQLトランザクションを開始するか又は要求するSQL文がSQLコネクションによってそのSQLサーバ

で実行されたならば,そのSQLコネクションは,現行SQLトランザクションの間,動作中SQLコネクシ

ョン (active SQL-connection) とする。 

SQLコネクションは,現行 (current) 又は休眠 (dormant) のいずれかとする。最も新しく暗に実行され

たか若しくは陽に実行した<CONNECT文>又は最も新しく実行された<SET CONNECTION文>によって確

立されたSQLコネクションが終了していないならば,そのSQLコネクションは,現行SQLコネクション 

(current SQL-connection) とする。そうでなければ,現行SQLコネクションは,存在しない。現行コネクシ

ョンでない既存のSQLコネクションは,休眠SQLコネクション (dormant SQL-connection) とする。 

SQL処理系は,どのSQL文の実行中でも,現行SQLコネクションの喪失を検知してもよい。そのよう

なコネクションの失敗が検知されると,例外条件:トランザクションロールバック (transaction rollback) − 

文終了不明 (statement completion unknown) が引き起こされる。この例外条件は,その文のためにSQLサー

バ中で実行される動作の結果がSQLエージェントに分からないことを示す。 

同様に,SQL処理系は,<COMMIT文>の実行中に,現行SQLコネクションの喪失を検知してもよい。

そのようなコネクションの失敗が検知されると,例外条件:コネクション例外 (connection exception) − ト

ランザクション解決不明 (transaction resolution unknown) が引き起こされる。この例外条件は,そのSQLト

ランザクションがコミットを成功したのか,ロールバックしたのか,又は動作中のままであるのかを,SQL

処理系が確かめることができないことを示す。 

利用者は,<CONNECT文>を実行することによって,SQLエージェントに関連付けられたSQLクライ

アントと特定のSQLサーバとの間のSQLコネクションを開始してもよい。そうでなければ,<外部呼出し

手続>が呼び出され,現行であるSQLコネクションがないとき,SQLクライアントと処理系定義の既定

SQLサーバとの間のSQLコネクションが開始される。処理系定義の既定SQLサーバに関連付けられる

SQLコネクションを既定SQLコネクション (default SQL-connection) と呼ぶ。SQLコネクションは,

<DISCONNECT文>を実行することによって終了するか,若しくは最後の動作中のSQLクライアントモジ

ュール内の<外部呼出し手続>の最後の呼出しに続いて終了するか,又はSQLの直接起動による<直接SQL

文>の最後の実行によって終了するかのいずれかとする。<外部呼出し手続>の呼出しが,最後の動作中の

SQLクライアントモジュール内の最後の呼出しかどうかを,SQL処理系が決定するための機構及び規則,

121 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

並びにSQLの直接起動が<直接SQL文>の最後の実行かどうかをSQL処理系が決定するための機構及び規

則は,処理系定義とする。 

SQL処理系は,少なくとも一つのSQLコネクションを提供しなければならず,SQL処理系によって選

ばれる結合時点にSQLサーバが識別されることを要求してもよい。SQL処理系が二つ以上の並行SQLコ

ネクションを許すならば,SQLエージェントは,二つ以上のSQLサーバと接続し,<SET CONNECTION

文>を実行することによって,SQLサーバを選択してもよい。 

4.38 SQLセション 

4.38.1 SQLセションの一般記述 

この細分箇条は,ISO/IEC 9075-4の“4.12.1 SQLセションの一般記述”によって修正される。 

SQLセション (SQL-session) は,単一SQLエージェントからの単一利用者か,又はSQLの直接起動か

のいずれかによって呼び出される連続したSQL文の並びの実行にまたがる。SQLセション中のどの一つ

の時点でも,この並び中のただ一つのSQL文が実行されており,それを実行文 (executing statement) とい

う。幾つかの場合には,実行文ESは,ESの直接の結果として,連続したSQL文の入れ子になった並びを

実行する。その間,これらのうちのただ一つのSQL文も,実行文とし,同様に,更に入れ子になった並び

の実行を次々と無制限に含んでいくかもしれない。実行文ESの直接の結果として実行される文がないよ

うなESを,SQLセションの最も内側の実行文 (innermost executing statement) と呼ぶ。 

SQLセションは,SQLコネクションに関連付けられる。既定SQLコネクションに関連付けられるSQL

セションを既定SQLセション (default SQL-session) と呼ぶ。SQLセションは,現行 (current) 又は休眠 

(dormant) のいずれかとする。現行SQLセション (current SQL-session) は,現行SQLコネクションに関連

付けられたSQLセションとする。休眠SQLセション (dormant SQL-session) は,休眠SQLコネクションに

関連付けられたSQLセションとする。 

SQLセション内で,SQLクライアントモジュールの宣言局所一時表は,<SQLクライアントモジュール

定義>に含まれる<一時表宣言>によって実効的に作成される。SQLクライアントモジュールの宣言局所一

時表は,それらを宣言したSQLクライアントモジュール中の<外部呼出し手続>の呼出しによってだけア

クセス可能とする。SQLクライアントモジュールの宣言局所一時表の定義は,そのSQLセションが終了す

るまで永続する。 

SQLセション内で,2進オクテット長大オブジェクト位置付け子,文字長大オブジェクト位置付け子,

利用者定義型位置付け子,配列位置付け子又はマルチ集合位置付け子として指定されるホストパラメタ,

ホスト変数,又は外部ルーチンのSQLパラメタに,それぞれ,2進オクテット長大オブジェクト型,文字

長大オブジェクト型,利用者定義型,配列型又はマルチ集合型の値が代入されるとき,位置付け子が実効

的に作成される。これらの位置付け子は,SQLセション文脈の部分とする。位置付け子は,有効か又は無

効かのいずれかであってもよい。SQLセションの終了時に有効のままである全ての位置付け子は,そのSQL

セションが終了するときに,無効というマークが付けられる。位置付け子であるホスト変数は,保持可能 

(holdable) でも,保持可能でない (nonholdable) でもよい。 

4.38.2 SQLセションの識別 

SQLセションは,処理系依存の一意なSQLセション識別子をもつ。このSQLセション識別子は,他の

どの並行SQLセションのSQLセション識別子とも異なる。SQLセション識別子は,SQLセション内の大

域一時表,作成局所一時表又は宣言局所一時表の実現値を含む処理系定義のスキーマを実効的に定義する

ために用いられる。 

SQLセションは,<CONNECT文>の実行が成功した結果として開始され,<CONNECT文>は,その

122 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<CONNECT文>に含まれる暗に想定されるか又は陽に指定される<コネクション利用者名>の値を,最初の

SQLセション利用者識別子として設定する。 

SQLセションは,最初は,SQLセション役割名をもたない。 

SQLセションは,原時刻帯時差及び現行既定時刻帯時差をもち,それらは,データ型INTERVAL HOUR 

TO MINUTEの値とする。原時刻帯時差及び現行既定時刻帯時差の両方に,同じ処理系定義の値が最初に

設定される。現行既定時刻帯時差は,<地方時刻帯設定文>の実行の成功によって後で変更することができ

る。原時刻帯時差は,変更できない。現行既定時刻帯時差に原時刻帯時差と等しい値を設定することもで

きる。 

SQLセションは,既定カタログ名をもち,その既定カタログ名は,<準備可能文>が<EXECUTE 

IMMEDIATE文>若しくは<PREPARE文>のいずれかによって現行SQLセション中で準備されるときにそ

の<準備可能文>に含まれるか,又は<直接SQL文>が直接起動されるときにその<直接SQL文>に含まれる

修飾なし<スキーマ名>を実効的に修飾するために用いる。既定カタログ名には,処理系定義の値が最初に

設定されるが,<SET CATALOG文>又は<SET SCHEMA文>の実行の成功によって後で変更することがで

きる。SQLセションの既定カタログ名は,<一般値指定>のCURRENT̲CATALOGを用いて決定してもよ

い。 

SQLセションは,既定の修飾なしスキーマ名をもち,その既定の修飾なしスキーマ名は,<準備可能文>

が<EXECUTE IMMEDIATE文>若しくは<PREPARE文>のいずれかによって現行SQLセション中で準備さ

れるときにその<準備可能文>に含まれるか,又は<直接SQL文>が直接起動されるときにその<直接SQL

文>に含まれる修飾なしの<スキーマ修飾付き名前>を実効的に修飾するために用いる。既定の修飾なしス

キーマ名には,処理系定義の値が最初に設定されるが,<SET SCHEMA文>の実行の成功によって後で変更

することができる。SQLセションの既定の修飾なしスキーマ名は,<一般値指定>のCURRENT̲SCHEMA

を用いて決定してもよい。 

4.38.3 SQLセション特性 

この細分箇条は,ISO/IEC 9075-9の“4.16.1 SQLセション特性”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“4.8.1 SQLセション特性”によって修正される。 

SQLセションは,SQLパスをもち,そのSQLパスは,<準備可能文>が<EXECUTE IMMEDIATE文>若し

くは<PREPARE文>のいずれかによって現行SQLセション中で準備されるときにその<準備可能文>に含ま

れるか,又は<直接SQL文>が直接起動されるときにその<直接SQL文>に含まれる<ルーチン呼出し>に直

に含まれる修飾なし<ルーチン名>を実効的に修飾するために用いる。SQLパスには,処理系定義の値が最

初に設定されるが,<SET PATH文>の実行の成功によって後で変更することができる。 

SQLパスを定義するテキストは,<一般値指定>のCURRENT̲PATHを用いて参照することができる。 

SQLセションは,既定変換グループ名,及び利用者定義型名と変換グループ名との一つ以上の対をもち,

その対は,<準備可能文>が<EXECUTE IMMEDIATE文>若しくは<PREPARE文>のいずれかによって現行

SQLセション中で準備されるときにその<準備可能文>中で参照されるか,又は<直接SQL文>が直接起動

されるときにその<直接SQL文>中で参照されるどの利用者定義型に対しても,変換関数のグループを識

別するために用いる。与えられた利用者定義型名に対する変換グループ名には,処理系定義の値が最初に

設定されるが,<SET TRANSFORM GROUP文>の実行の成功によって後で変更することができる。 

SQLセションに関連付けられる変換グループ名を定義するテキストは,二つの機構を用いて参照するこ

とができる。すなわち,それらは,指定されたデータ型に関連付けられた変換グループの名前として評価

される<一般値指定>“CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE <パス解決利用者定義型名>”,及び型

123 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

特定の変換グループが指定されていない全ての型に関連付けられる変換グループの名前として評価される

<一般値指定>“CURRENT̲DEFAULT̲TRANSFORM̲GROUP”とする。 

SQLセションは,既定文字集合名をもち,その既定文字集合名は,<準備可能文>が<EXECUTE 

IMMEDIATE文>若しくは<PREPARE文>のいずれかによって現行SQLセション中で準備されるときに<準

備可能文>を表現するか,又は<直接SQL文>が直接起動されるときにその<直接SQL文>を表現するため

の文字集合を識別するために用いる。既定文字集合名には,処理系定義の値が最初に設定されるが,<SET 

NAMES文>の実行の成功によって後で変更することができる。 

14 SQL処理系に知られている各文字集合に対して,SQLセションは,その文字集合に対する高々一つの

SQLセション照合順をもち,そのSQLセション照合順は,“9.15 照合順決定”の規則を適用するときに用

いる。SQLセションの開始時には,SQLセション照合順がない。文字集合に対するSQLセション照合順

は,<セション照合順設定文>の実行の成功によって設定又は変更することができる。 

SQLセションは,最初に偽 (False) が設定される当該表制限フラグ (subject table restriction flag),及び

SQLセションが開始するときに空のリストが設定される制限当該表名リスト (restricted subject table name 

list) をもつ。FINALを指定する<結果選択肢>を含む<データ変更差分表> DCDTの評価の開始で,当該表

制限フラグに真 (True) が設定され,DCDTに直に含まれる<データ変更文>の当該表の名前が制限当該表

名リストに追加される。DCDTの評価後,DCDTに直に含まれる<データ変更文>の当該表の名前が制限当

該表名リストから削除される。制限当該表名リストが空になるならば,当該表制限フラグに偽 が設定され

る 

SQLエージェントによって実行されるSQL文がSQL呼出しルーチンの呼出しを引き起こすとすぐに,

SQL呼出しルーチンは,動作中 (active) となり,その呼出しの実行が完了すると,動作中ではなくなる。 

SQLセション中はいつでも,SQLを含むこと (containing SQL) は,許される (permitted) 又は許されな

い (not permitted) という。同様に,SQLデータを読むこと (reading SQL-data) は,許される 又は許されな

い といい,SQLデータを修正すること (modifying SQL-data) は,許される 又は許されない という。 

SQLセションは,持続特性 (enduring characteristics) をもつ。SQLセションの持続特性は,最初は,対

応するSQLセション特性の既定値と同じとする。持続特性は,一つ以上の持続特性を指定する<SET 

SESSION CHARACTERISTICS文>の実行の成功によって変更される。<SET SESSION CHARACTERISTICS

文>中で指定されない持続特性は,その文の実行の成功によって何ら変更されない。 

SQLセションは,次の持続特性をもつ。 

− 持続トランザクション特性 (enduring transaction characteristics) 

それぞれの持続特性は,SQLセション中のいつでも,適切な<SET SESSION CHARACTERISTICS文>を

実行することによって変更することができる。 

14 SQLセションは,SQLセションが休眠にされるとき保存され,SQLセションが動作中にされるときに

元に戻される文脈のスタックをもつ。このスタック中の各文脈は,次の項目を含む。 

− SQLセション識別子。 

− 認可スタック。 

− SQLセション利用者識別子。 

− 現行のトランザクションアクセスモード。 

− 現行のトランザクション隔離性水準。 

− 現行のSQL診断領域スタック及びその内容,並びに現行の条件領域限界。 

124 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− SQL処理系に知られている各文字集合に対して,あるならば,SQLセション照合順。 

− 原時刻帯時差。 

− 現行既定時刻帯時差。 

− 現行SQLセションのSQLパスの値。 

− SQLパスを定義するテキスト。 

− SQLセションでアクセス可能な一時表の全ての実現値の識別体。 

− 各整合性制約の現行制約モード。 

− SQLセションでアクセス可能な開いている全てのカーソルのカーソル実現値記述子。 

− SQLセションでアクセス可能な全ての有効な位置付け子の値の集合。 

− 現行既定カタログ名。 

− 現行既定修飾なしスキーマ名。 

− 現行既定文字集合名。 

− 現行SQLセション中で準備され,解放されていない全ての被準備文。 

− 全ての動的SQL記述子領域の内容。 

− 既定変換グループ名を定義するテキスト。 

− 利用者によって陽に設定された,各利用者定義型に対する利用者定義型名と変換グループ名との対を

定義するテキスト。 

− 現在利用可能なそれぞれの結果集合並びRSS,並びにRSSを生じさせた呼出しに対するSQL呼出し

手続SIPの特定名及びSIPの呼出し元の名前。 

注記90 結果集合並びは,“4.28.5 SQL呼出し手続によって戻される結果集合”で定義している。 

− 当該表制限フラグ。 

− 制限当該表名リスト。 

− 文実行文脈 (statement execution context)。 

− ルーチン実行文脈 (routine execution context)。 

− 0個以上のトリガ実行文脈 (trigger execution context)。 

注記91 先行する細別中の“現行 (current)”という語の使用は,動作中のSQLセションになるであろう

SQLセション中の現行の値ではなく,休眠になるべきSQLセション中の現行の値を意味する。 

4.38.4 SQLセション文脈管理 

SQLセション文脈のスタックがある。SQLセションが開始するとき,このスタックに一つのセルがある。

各<ルーチン呼出し>に対して,追加のSQLセション文脈がスタックに押し込まれ,<ルーチン呼出し>が

実行を完了するときに取り除かれる。新しいSQLセション文脈NSSCが作成されるときの,それの特性の

幾つかは,SQLセション文脈のスタックのNSSCの直下のSQLセション文脈中の対応する特性の写しと

し,他の特性には,処理系定義の値が設定される。 

各SQLセション文脈内には,SQLセション利用者識別子 (SQL-session user identifier) と呼ばれる特性が

あり,それの値は,<値指定>のSESSION̲USERを用いて確かめることができる。最初のSQLセションが

利用者識別子を指定する<CONNECT文>で開始されるならば,SESSION̲USERの値は,その利用者識別子

とし,そうでなければ,最初のSQLセション文脈のSESSION̲USERの値は,処理系定義とする。 

各SQLセション文脈は,“認可スタック (authorization stack) ”を含む。認可スタックの各セルは,利用

者識別子及び役割名の対とする。SQLセション文脈が作成されるときはいつでも,それの認可スタックの

基が,利用者識別子に対してSQLセション利用者識別子で,役割名に対してナル値で初期化される。 

125 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<値指定>のCURRENT̲USER及びCURRENT̲ROLEは,SQLセション文脈のスタックの最上部にある

認可スタックの最上部の利用者識別子及び役割名を識別する。<値指定>のSESSION̲USERは,最後のSQL

セション文脈中のSQLセション利用者識別子の値とする。 

<外部呼出し手続>の呼出しは,認可スタックにセルを押し込む。<外部呼出し手続>が呼出し元の権利を

用いて呼び出されるならば,新しいセルは,それの下のセルの写しとする。それが定義者の権利を用いて

呼び出されるならば,新しいセルには,モジュールの認可句から,それが与える利用者識別子又は役割名

のいずれかが取り込まれ,他方にナル値が設定される。 

<外部呼出し手続>が終了すると,<外部呼出し手続>のその呼出しのために押し込まれた認可スタックの

セルが,認可スタックから取り除かれる。 

<セション利用者識別子設定文>は,最後のSQLセション文脈中のSQLセション利用者識別子を変更し,

認可スタックの全てのセルの利用者識別子にSESSION̲USERと等しい値を設定し,認可スタックの全て

のセルの役割名にナル値を設定する。 

<SET ROLE文>は,最後のSQLセション文脈中の認可スタック最上部の役割名を変更するが,利用者識

別子を変更しない。 

4.38.5 実行文脈 

実行文脈は,SQL文を呼び出している間にときどき関連するかもしれない幾つかの特殊な環境に適応す

るために,SQLセションの文脈を補う。実行文脈は,文実行文脈,トリガ実行文脈又はルーチン実行文脈

のいずれかとする。文実行文脈 (statement execution context),ルーチン実行文脈 (routine execution context),

及び0個以上のトリガ実行文脈 (trigger execution context) が常に存在する。幾つかのSQL文に対して,文

実行文脈は,常に基本単位 (atomic) とし,他のSQL文に対して,常に又はときどき,基本単位ではない。

ルーチン実行文脈は,基本単位か又は基本単位でないかのいずれかとする。どのトリガ実行文脈も,基本

単位とする。文実行文脈は,“4.34.5 SQL文の基本単位性及び文実行文脈”で,ルーチン実行文脈は,“4.38.6 

ルーチン実行文脈”で,トリガ実行文脈は,“4.39.2 トリガ実行”で規定する。 

4.38.6 ルーチン実行文脈 

ルーチン実行文脈は,次の項目から成る。 

− SQL呼出しルーチンが動作中であるかどうかに関する標識。 

− SQL呼出しルーチンの実行中に,SQL文があるならば,どんなSQL文が許されるかを識別するSQL

データアクセス指示。SQLデータアクセス指示は,次のいずれかとする。SQLを潜在的に含まない,

SQLを潜在的に含む,SQLデータを潜在的に読む,又はSQLデータを潜在的に修正する。 

− 動作中のSQL呼出しルーチンの識別。 

− 動作中のSQL呼出しルーチンがSQLルーチンならば,ルーチンSQLパスから導出され,動作中の

SQL呼出しルーチンが外部ルーチンならば,外部ルーチンSQLパスから導出されるルーチンSQLパ

ス。 

SQLエージェントによって実行されるSQL文がSQL呼出しルーチンの呼出しを引き起こすとすぐに,

SQL呼出しルーチンは,動作中となり,その呼出しの実行が完了すると,動作中でなくなる。 

SQLエージェントがSQL呼出しルーチンの呼出しを引き起こすと,現行SQLセションに対して新しい

文脈が作成され,現行の文脈の値が保存される。そのSQL呼出しルーチンの実行が完了すると,現行SQL

セションの元の文脈が復元され,幾つかのSQLセション属性が再設定される。 

SQL呼出しルーチンが動作中であることをSQLセションのルーチン実行文脈が示すならば,SQLセシ

126 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ョンのルーチン実行文脈に含まれるルーチンSQLパスが,<準備可能文>又は<直接SQL文>に含まれる<

ルーチン呼出し>に直に含まれる修飾なし<ルーチン名>を実効的に修飾するために用いられる。 

4.39 トリガ 

4.39.1 トリガの一般記述 

トリガ (trigger) は,与えられたオブジェクトに対して与えられた操作が行われるごとに,与えられた動

作を行うための指定とする。その動作は,被トリガ動作 (triggered action) として知られていて,<SQL手

続文>又は<SQL手続文>のリストとする。そのオブジェクトは,永続実表又はビュー表のいずれかとし,

トリガの当該表 (subject table) として知られている。その操作は,トリガ事象 (trigger event) として知られ

ていて,行の集まりの削除,挿入又は置換えのいずれかとする。 

被トリガ動作は,指定されたトリガ動作時期 (trigger action time) のBEFORE,INSTEAD OF又はAFTER

に従って,トリガの契機となる事象の直前,その事象の代わり,又はその事象の直後のいずれかに行われ

ることが指定される。トリガは,そのトリガ動作時期に従って,BEFOREトリガ (BEFORE trigger),

INSTEAD OFトリガ (INSTEAD OF trigger) 又はAFTERトリガ (AFTER trigger) とする。 

トリガは,そのトリガ事象の性質に従って,削除トリガ (delete trigger),挿入トリガ (insert trigger) 又は

更新トリガ (update trigger) のいずれかとする。 

削除トリガで,かつ,INSTEAD OFトリガであるトリガは,削除INSTEAD OFトリガ (delete INSTEAD 

OF trigger) とする。挿入トリガで,かつ,INSTEAD OFトリガであるトリガは,挿入INSTEAD OFトリ

ガ (insert INSTEAD OF trigger) とする。更新トリガで,かつ,INSTEAD OFトリガであるトリガは,更新

INSTEAD OFトリガ (update INSTEAD OF trigger) とする。 

どのトリガ事象も,あるSQLデータ変更文の実行の結果として発生する。その結果は,例えば,SQLデ

ータ変更文が実表に対して操作する<INSERT文>のときのように直接的であるかもしれないし,例えば,

次の場合のように間接的であるかもしれない。 

− SQLデータ変更文が<MERGE文>の場合。 

− 参照動作がCASCADE,SET NULL又はSET DEFAULTである外部キーの被参照表に対して,SQLデ

ータ変更文が操作する場合。 

− SQLデータ変更文がビュー表に対して操作する場合。 

被トリガ動作には,トリガ事象を発生させるSQLデータ変更文を含むことが許される。 

削除されるか,挿入されるか又は置き換えられる行の集まりは,遷移表 (transition table) として知られ

ている。削除トリガには,遷移旧表 (old transition table) として知られているたった一つの遷移表がある。

挿入トリガには,遷移新表 (new transition table) として知られているたった一つの遷移表がある。更新ト

リガには,遷移旧表(置き換えられる行)及び遷移新表(置換行)の両方があり,これらの二つの表は,

同じ基数をもつ。 

トリガの“遷移表”への参照は,更新トリガの場合は曖昧であるが,このような参照がこの規格に現れ

るときにはいつでも,二つの遷移表のうちのどちらにそれが適用されるかは,重要ではない。 

トリガが文レベルトリガ (statement-level trigger) の場合で,トリガ事象が発生したときに1回だけ行わ

れるか,又はトリガが行レベルトリガ (row-level trigger) の場合で,トリガ事象が発生したときに遷移表の

各行に対して1回行われるかのいずれかを,被トリガ動作に指定することができる。 

被トリガ動作が事象の前に行われるように指定されており,トリガが行レベルトリガで,かつ,遷移新

表があるならば,その動作は,直後に行われ得る操作の効果を変更することになる効果をもつ文を含むこ

127 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とができる。 

特殊変数が遷移表中のデータを被トリガ動作で利用可能にする。文レベルトリガでは,その変数は,値

が遷移表である変数とする。行レベルトリガでは,その変数は,遷移変数 (transition variable) として知ら

れている範囲変数とする。遷移表の各行が被トリガ動作のただ1回の実行を引き起こし,その行を遷移変

数に代入しながら,遷移変数は,遷移表の行の範囲を移動する。遷移変数は,それが行の範囲を移動する

遷移表に依存して,遷移旧変数 (old transition variable) 又は遷移新変数 (new transition variable) のいずれ

かとする。 

遷移新表及び遷移旧表の二つの遷移表があるとき,遷移新表の各行は,遷移旧表のただ一つの行に適用

された更新操作によって導出される行とする。したがって,二つの表の行の間には,1対1対応がある。

しかし,この対応は,行レベルトリガに対してだけ可視とし,そのトリガの各呼出しは,遷移旧変数及び

遷移新変数の両方にアクセスすることができ,遷移新変数は,遷移旧変数中の行にその更新操作を適用し

た結果を表現する。 

トリガは,<トリガ定義>によって定義され,その<トリガ定義>には,そのトリガの名前,当該表,トリ

ガ事象,トリガ動作時期,文レベルか又は行レベルか,遷移表又は遷移変数を参照するために必要な名前,

及び被トリガ動作を指定する。 

被トリガ動作は,発生するトリガ事象の直前,その事象の代わり,又はその事象の直後に(行レベルト

リガの場合で,影響を受ける行ごとに1回か,又は文レベルトリガの場合で,トリガ事象全体に対し1回

かのいずれか)実行される<被トリガSQL文>とする。被トリガ動作の実行は,更に別の被トリガ動作のト

リガ契機になるかもしれない。あるトリガのトリガ事象を引き起こす効果をもつ<SQL手続文>の実行を被

トリガ動作が引き起こすならば,被トリガ動作の実行が,更に別の被トリガ動作のトリガ契機になる。 

トリガは,トリガ記述子によって記述される。トリガ記述子は,次の項目を含む。 

− トリガの名前。 

− 当該表の名前。 

− トリガ動作時期 (BEFORE,INSTEAD OF又はAFTER)。 

− トリガ事象 (INSERT,DELETE又はUPDATE)。 

− トリガが文レベルトリガか又は行レベルトリガか。 

− 遷移旧変数名,遷移新変数名,遷移旧表名又は遷移新表名。 

− 被トリガ動作。 

− トリガ事象に対する(空かもしれない)トリガ列リスト。 

− 被トリガ動作の被トリガ動作列集合。 

− トリガの作成時刻印。 

トリガの集合の実行順序 (order of execution) は,最も古いトリガが最初に実行されるというように,そ

れらの記述子中の作成時刻印の値の昇順とする。一つ以上のトリガが同じ時刻印の値をもつならば,それ

らの実行の相対的な順序は,処理系定義とする。 

被トリガ動作は,常に,そのトリガを含むスキーマの所有者の認可の下で実行される。 

4.39.2 トリガ実行 

SQL文Sの実行中に,0個以上のトリガ実行文脈 (trigger execution context) が存在し,どの時点でも,

それらのうちの二つ以上が動作中 (active) になることはない。Sに対する一般規則で要求されるときに,

要求されるとおりに,トリガ実行文脈TECiが生成され,動作中になり,動作中でなくなり,破壊される。 

128 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

TECiが動作中の間に,新しいトリガ実行文脈TECjを生成することをSに対する一般規則が要求するな

らば,TECjは,動作中のトリガ実行文脈としてTECiに取って代わる。TECjが破壊されると,TECiが再

び動作中になる。 

Sの実行が完了する前に別のSQL文Tを実行することをSに対する一般規則が指定し,かつ,新しいト

リガ実行文脈を生成させることをTに対する一般規則が要求するとき,複数のトリガ実行文脈が存在する。 

トリガ実行文脈は,状態変更 (state changes) の集合から成る。トリガ実行文脈内で,各状態変更は,ト

リガ事象,当該表及び列リスト (column list) によって一意に識別される。トリガ事象は,DELETE,INSERT

又はUPDATEであり得る。 

状態変更SCは,次の項目から成る。 

− 遷移の集合 (set of transitions)。 

− トリガ事象。 

− 当該表。 

− 列リスト。 

− SCに対して実行されるとみなされる (considered as executed) 文レベルトリガの集合(最初は,空)。 

− それぞれの行レベルトリガがSC中の行の集合と対にされ,その行の集合に対して実行されるとみな

される行レベルトリガの集合。 

何が遷移を構成するかは,そのトリガ事象に依存する。トリガ事象がDELETEならば,遷移は,遷移旧

表中の1行とする。トリガ事象がINSERTならば,遷移は,遷移新表中の1行とする。トリガ事象がUPDATE

ならば,遷移は,遷移新表中の行NRと対にされた遷移旧表中の行ORとし,NRは,ORに対する指定さ

れた更新操作を適用することによって導出される行とする。OR及びNRは,それぞれ,遷移の古い行 (old 

row) 及び新しい行 (new row) とする。 

(与えられたトリガ実行文脈中の)状態変更SCに対して実行されるとみなされる文レベルトリガは,

その後SCに対して実行されない。 

行レベルトリガRLTがSC中のある行Rに対して実行されるとみなされるならば,RLTは,その後Rに

対して実行されない。 

SQLデータ変更文の実行の結果をSQL更新操作 (SQL-update operation) と呼ぶことは,その結果が,あ

る状態変更中に少なくとも一つの遷移を発生させることと同値とする。 

トリガ事象がUPDATE又はDELETEならば,(空かもしれない)遷移旧表が存在する。遷移旧表は,当

該表中で更新されるか,又は当該表から削除されるべき各行の写しから成る。トリガ事象がUPDATE又は

INSERTならば,(空かもしれない)遷移新表が存在する。遷移新表は,当該表中の行を更新した結果とし

て生じるか,又は当該表中に挿入されるべき各行の写しから成る。 

<被トリガ動作>は,<トリガ定義>中に<被トリガ動作>のために<遷移旧表名>が指定されるときに限り,

遷移旧表を参照してもよく,<トリガ定義>中に<被トリガ動作>のために<遷移新表名>が指定されるときに

限り,遷移新表を参照してもよい。 

行レベルトリガの<被トリガ動作>は,<トリガ定義>中に<被トリガ動作>のために<遷移旧変数名>が指

定されるときに限り,遷移旧表の行の範囲を移動する範囲変数を参照してもよい。同様に,行レベルトリ

ガの<被トリガ動作>は,<トリガ定義>中に<被トリガ動作>のために<遷移新変数名>が指定されるときに

限り,遷移新表の行の範囲を移動する範囲変数を参照してもよい。遷移変数名又は遷移表名の有効範囲は,

それを指定する<トリガ定義>の<被トリガ動作>に含まれる<SQLスキーマ文>を除いて,その<被トリガ動

129 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

作>とする。 

SQLデータ変更文の実行によってトリガ実行文脈TECiが生成されるとき,TECi中の状態変更の集合

SSCiは,空とする。SSCi中の状態変更をSCi,jとする。SCi,jのトリガ事象(DELETE,INSERT又はUPDATE)

をTEとする。SCi,jの当該表をSTとする。 

TEがINSERT又はDELETEならば,空集合である一つの要素だけから成る集合をPSCとする。 

TEがUPDATEならば,次による。 

− SSCiによって更新されている列のリストをCLとする。 

− CL中の列を識別する列名の集合をOCとする。 

− 空集合,及びOC中の少なくとも一つの列をもつSTの列名の集合の全ての部分集合から成る集合を

PSCとする。 

PSC中の要素の個数をPSCNとする。1からPSCNまでの範囲のjに対して,SCi,jに対応する状態変更

をSSCiがまだ含んでいないという条件で,TE,ST,及びPSC中のj番目の要素によって識別される状態

変更SCi,jがSSCiに追加される。“15.7 実表からの行の削除の効果”,“15.10 実表への表の挿入の効果”及

び“15.13 実表中の行の置換えの効果”の一般規則で規定するとおりに,SCi,jに遷移が追加される。 

SSCi中に状態変更SCi,jが発生するとき,一つ以上のトリガがSCi,jによって活性化され (activated by) 

る。トリガTRがSCi,jによって活性化されるということは,TRの当該表がSCi,jの当該表で,TRのトリ

ガ事象がSCi,jのトリガ事象で,かつ,TRのトリガ列リスト中に列挙された列名の集合がSCi,j中に列挙

された列名の集合と等価であることと同値とする。 

注記92 トリガ列リストは,TRの記述子に含まれる。トリガ事象がDELETE又はINSERTならば,トリ

ガ列リストは,空である。トリガ事象がUPDATEでも,TRを定義した<トリガ定義>の<トリガ

事象>が<トリガ列リスト>を指定しないならば,この場合も,トリガ列リストは,空である。 

TECi中の各状態変更SCi,jに対して,SCi,jによって活性化されるBEFOREトリガは,それらのトリガ

契機の事象が実行される前に実行される。それらのトリガ契機の事象が実行された後に,TECiの状態変更

SCi,jによって活性化されるAFTERトリガが実行される。 

行レベルトリガに対する<トリガ定義>に含まれる<被トリガ動作>は,遷移旧変数及び遷移新変数の列を

参照することができる。このような参照は,<列参照>として指定することができ,その<列参照>は,それ

らの参照がBEFORE行レベルトリガの被トリガ動作中で遷移新変数の列を参照するときには,<相手指定

>及び<単純相手指定>であってもよい。 

注記93 そのような<列参照>を<代入相手>([ISO9075-4] 参照)として用いることによって,BEFOREト

リガの被トリガ動作は,あるSQLデータ変更文に指定された効果とは異なる効果をその文にも

たせることができる。 

被トリガ動作の<被トリガSQL文> TSSの実行が成功しないとき,例外条件が引き起こされ,TSSを実

行する原因となったSQL文は,SQLデータ又はスキーマにどんな効果も与えない。 

4.40 クライアントサーバ処理 

この細分箇条は,ISO/IEC 9075-3 の“4.7クライアントサーバ処理”によって修正される。 

SQLエージェントが動作中のとき,そのSQLエージェントは,ある処理系定義の方法で,単一のSQL

クライアントに結合されている。そのSQLクライアントは,SQLエージェントによる外部呼出し手続の最

初の呼出しに対して,陽に指定されるか又は暗に想定される<SQLコネクション文>を処理する。そのSQL

クライアントは,直接又は場合によってはRDAのような別のエージェントを介して,一つ以上のSQLサ

130 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ーバと通信する。SQLセションは,SQLエージェント,SQLクライアント,及び単一のSQLサーバを含

む。 

SQLエージェントに関連付けられるSQLクライアントモジュールは,そのSQLエージェントに関連付

けられるSQLクライアントを含むSQL環境中に存在する。 

<SQLコネクション文>又は<SQL診断文>を含む,呼び出された<外部呼出し手続>及び<直接SQL文>は,

SQLクライアントによって処理される。<CONNECT文>又は<SET CONNECTION文>の実行の成功に続い

て,SQLエージェントに関連付けられるSQLクライアントモジュールは,SQLサーバ中の処理系依存の

<SQLクライアントモジュール名>で実効的に実体化される。その他の呼び出された<外部呼出し手続>及び

<直接SQL文>は,SQLサーバによって処理される。 

<SQL手続文>が<SQL診断文>を単純に含む<外部呼出し手続>のSQLエージェントによる呼出しは,

SQLクライアントに関連付けられる診断領域スタック中の指定された診断領域から情報を取り出す。SQL

サーバによる<SQL手続文>の実行に続いて,SQLクライアント中のそのSQLエージェントの診断領域ス

タック中に処理系依存の方法で診断情報が渡される。SQLクライアントによって提供される文字レパート

リとSQLサーバによって提供される文字レパートリとの間の非互換性の診断情報への影響は,処理系依存

とする。 

語彙要素 

5.1 

<SQL終端文字> 

この細分箇条は,ISO/IEC 9075-10の“5.1 <SQL終端文字>”によって修正される。 

機能 

<SQL終端文字> (<SQL terminal character>) は,SQL言語の終端記号及びデータ列の要素を定義する。 

形式 

<SQL終端文字> ::= 

  <SQL言語文字> 

<SQL言語文字> ::= 

  <単純ラテン文字> 

| <数字> 

| <SQL特殊文字> 

<単純ラテン文字> ::= 

  <単純ラテン大文字> 

| <単純ラテン小文字> 

<単純ラテン大文字> ::= 

  A | B | C | D | E | F | G | H | I | J | K | L | M | N | O 

| P | Q | R | S | T | U | V | W | X | Y | Z 

<単純ラテン小文字> ::= 

  a | b | c | d | e | f | g | h | i | j | k | l | m | n | o 

| p | q | r | s | t | u | v | w | x | y | z 

<数字> ::= 

  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 

10 <SQL特殊文字> ::= 

131 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <空白> 

| <2重引用符> 

| <パーセント> 

| <アンパサンド> 

| <引用符> 

| <左括弧> 

| <右括弧> 

| <アスタリスク> 

| <正符号> 

| <コンマ> 

| <負符号> 

| <ピリオド> 

| <斜線> 

| <コロン> 

| <セミコロン> 

| <小なり演算子> 

| <等号演算子> 

| <大なり演算子> 

| <疑問符> 

| <左角括弧> 

| <右角括弧> 

| <サーカムフレックス> 

| <下線文字> 

| <垂直棒> 

| <左波括弧> 

| <右波括弧> 

<空白> ::= 

  !! 構文規則参照。 

<2重引用符> ::= 

  " 

<パーセント> ::= 

  % 

<アンパサンド> ::= 

  & 

<引用符> ::= 

  ' 

<左括弧> ::= 

  ( 

<右括弧> ::= 

  ) 

132 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<アスタリスク> ::= 

  * 

<正符号> ::= 

  + 

<コンマ> ::= 

  , 

<負符号> ::= 

  - 

<ピリオド> ::= 

  . 

<斜線> ::= 

  / 

<逆斜線> ::= 

  \ 

<コロン> ::= 

  : 

<セミコロン> ::= 

  ; 

<小なり演算子> ::= 

  < 

<等号演算子> ::= 

  = 

<大なり演算子> ::= 

  > 

<疑問符> ::= 

  ? 

<左角括弧又は3文字表記> ::= 

  <左角括弧> 

| <左角括弧3文字表記> 

<右角括弧又は3文字表記> ::= 

  <右角括弧> 

| <右角括弧3文字表記> 

<左角括弧> ::= 

  [ 

<左角括弧3文字表記> ::= 

  ??( 

<右角括弧> ::= 

  ] 

<右角括弧3文字表記> ::= 

  ??) 

133 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<サーカムフレックス> ::= 

  ^ 

<下線文字> ::= 

  ̲ 

<垂直棒> ::= 

  | 

<左波括弧> ::= 

  { 

<右波括弧> ::= 

  } 

構文規則 

1) どの文字集合も,U+0020と等価な<空白>文字を含まなければならない。 

アクセス規則 

なし。 

一般規則 

1) <単純ラテン大文字>に含まれる記号と<単純ラテン小文字>に含まれる記号との間には,1対1対応

があり,全てのiに対して,<単純ラテン大文字>のi番目の代替手段として定義される記号が,<単

純ラテン小文字>のi番目の代替手段として定義される記号に対応する。 

適合性規則 

なし。 

5.2 

<トークン>及び<分離符号> 

この細分箇条は,ISO/IEC 9075-4の“5.1 <トークン>及び<分離記号>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“5.1 <トークン>及び<分離記号>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“5.2 <トークン>及び<分離記号>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“5.1 <トークン>及び<分離記号>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“5.1 <トークン>及び<分離記号>”によって修正される。 

機能 

<トークン>及び<分離符号> (<token> and <separator>) は,SQL言語に関与する語彙単位(トークン及び

分離符号)を規定する。 

形式 

<トークン> ::= 

  <非区切りトークン> 

| <区切りトークン> 

<非区切りトークン> ::= 

  <通常識別子> 

| <キーワード> 

| <符号なし数定数> 

| <各国文字列定数> 

| <2進オクテット列定数> 

| <長大オブジェクト長トークン> 

134 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <Unicode区切り識別子> 

| <Unicode文字列定数> 

| <SQL言語識別子> 

<通常識別子> ::= 

  <識別子本体> 

<識別子本体> ::= 

  <識別子開始> [ <識別子部分>... ] 

<識別子部分> ::= 

  <識別子開始> 

| <識別子拡張> 

<識別子開始> ::= 

  !! 構文規則参照。 

<識別子拡張> ::= 

  !! 構文規則参照。 

<長大オブジェクト長トークン> ::= 

  <数字>... <乗数> 

<乗数> ::= 

  K 

| M 

| G 

| T 

| P 

<区切り識別子> ::= 

  <2重引用符> <区切り識別子本体> <2重引用符> 

<区切り識別子本体> ::= 

  <区切り識別子部分>... 

<区切り識別子部分> ::= 

  <非2重引用符文字> 

| <2重引用表現> 

<Unicode区切り識別子> ::= 

  U<アンパサンド><2重引用符> <Unicode区切り本体> <2重引用符> 

      <Unicodeエスケープ指定子> 

<Unicodeエスケープ指定子> ::= 

  [ UESCAPE <引用符><Unicodeエスケープ文字><引用符> ] 

<Unicode区切り本体> ::= 

  <Unicode識別子部分>... 

<Unicode識別子部分> ::= 

  <区切り識別子部分> 

| <Unicodeエスケープ値> 

<Unicodeエスケープ値> ::= 

135 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <Unicode 4桁エスケープ値> 

| <Unicode 6桁エスケープ値> 

| <Unicode文字エスケープ値> 

<Unicode 4桁エスケープ値> ::= 

  <Unicodeエスケープ文字><ヘキシット><ヘキシット><ヘキシット><ヘキシット> 

<Unicode 6桁エスケープ値> ::= 

  <Unicodeエスケープ文字><正符号> 

      <ヘキシット><ヘキシット><ヘキシット><ヘキシット><ヘキシット><ヘキシット> 

<Unicode文字エスケープ値> ::= 

  <Unicodeエスケープ文字><Unicodeエスケープ文字> 

<Unicodeエスケープ文字> ::= 

  !! 構文規則参照。 

<非2重引用符文字> ::= 

  !! 構文規則参照。 

<2重引用表現> ::= 

  "" !! 二つの連続する2重引用符文字 

<区切りトークン> ::= 

  <文字列定数> 

| <日付データ列> 

| <時刻データ列> 

| <時刻印データ列> 

| <時間隔データ列> 

| <区切り識別子> 

| <SQL特殊文字> 

| <不等号演算子> 

| <以上演算子> 

| <以下演算子> 

| <連結演算子> 

| <右矢印> 

| <左角括弧3文字表記> 

| <右角括弧3文字表記> 

| <2重コロン> 

| <2重ピリオド> 

| <名前付き引数代入トークン> 

<不等号演算子> ::= 

  <> 

<以上演算子> ::= 

  >= 

<以下演算子> ::= 

  <= 

136 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<連結演算子> ::= 

  || 

<右矢印> ::= 

  -> 

<2重コロン> ::= 

  :: 

<2重ピリオド> ::= 

  .. 

<名前付き引数代入トークン> ::= 

  => 

<分離符号> ::= 

  { <注釈> | <空白類> }... 

<空白類> ::= 

  !! 構文規則参照。 

10 <注釈> ::= 

  <単純注釈> 

| <囲み注釈> 

<単純注釈> ::= 

  <単純注釈導入子> [ <注釈文字>... ] <改行> 

<単純注釈導入子> ::= 

  <負符号><負符号> 

<囲み注釈> ::= 

  <囲み注釈導入子> 

      <囲み注釈内容> 

      <囲み注釈終了子> 

<囲み注釈導入子> ::= 

  /* 

<囲み注釈終了子> ::= 

  */ 

<囲み注釈内容> ::= 

  [ { <注釈文字> | <分離符号> }... ] !! 構文規則参照。 

<注釈文字> ::= 

  <非引用文字> 

| <引用符> 

<改行> ::= 

  !! 構文規則参照。 

<キーワード> ::= 

  <予約語> 

| <非予約語> 

04 09 13 14 <非予約語> ::= 

137 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

     A | ABSOLUTE | ACTION | ADA | ADD | ADMIN | AFTER | ALWAYS | ASC 

   | ASSERTION | ASSIGNMENT | ATTRIBUTE | ATTRIBUTES 

   | BEFORE | BERNOULLI | BREADTH 

   | C | CASCADE | CATALOG | CATALOG̲NAME | CHAIN | CHARACTER̲SET̲CATALOG 

   | CHARACTER̲SET̲NAME | CHARACTER̲SET̲SCHEMA | CHARACTERISTICS | CHARACTERS 

   | CLASS̲ORIGIN | COBOL | COLLATION | COLLATION̲CATALOG | COLLATION̲NAME | 

COLLATION̲SCHEMA 

   | COLUMN̲NAME | COMMAND̲FUNCTION | COMMAND̲FUNCTION̲CODE | COMMITTED 

   | CONDITION̲NUMBER | CONNECTION | CONNECTION̲NAME | CONSTRAINT̲CATALOG | 

CONSTRAINT̲NAME 

   | CONSTRAINT̲SCHEMA | CONSTRAINTS | CONSTRUCTOR | CONTINUE | CURSOR̲NAME 

   | DATA | DATETIME̲INTERVAL̲CODE | DATETIME̲INTERVAL̲PRECISION | DEFAULTS | DEFERRABLE 

   | DEFERRED | DEFINED | DEFINER | DEGREE | DEPTH | DERIVED | DESC | DESCRIPTOR 

   | DIAGNOSTICS | DISPATCH | DOMAIN | DYNAMIC̲FUNCTION | DYNAMIC̲FUNCTION̲CODE 

   | ENFORCED | EXCLUDE | EXCLUDING | EXPRESSION 

   | FINAL | FIRST | FLAG | FOLLOWING | FORTRAN | FOUND 

   | G | GENERAL | GENERATED | GO | GOTO | GRANTED 

   | HIERARCHY 

   | IGNORE | IMMEDIATE | IMMEDIATELY | IMPLEMENTATION | INCLUDING | INCREMENT | 

INITIALLY 

   | INPUT | INSTANCE | INSTANTIABLE | INSTEAD | INVOKER | ISOLATION 

   | K | KEY | KEY̲MEMBER | KEY̲TYPE 

   | LAST | LENGTH | LEVEL | LOCATOR 

   | M | MAP | MATCHED | MAXVALUE | MESSAGE̲LENGTH | MESSAGE̲OCTET̲LENGTH 

   | MESSAGE̲TEXT | MINVALUE | MORE | MUMPS 

   | NAME | NAMES | NESTING | NEXT | NFC | NFD | NFKC | NFKD 

   | NORMALIZED | NULLABLE | NULLS | NUMBER 

   | OBJECT | OCTETS | OPTION | OPTIONS | ORDERING | ORDINALITY | OTHERS 

   | OUTPUT | OVERRIDING 

   | P | PAD | PARAMETER̲MODE | PARAMETER̲NAME | PARAMETER̲ORDINAL̲POSITION 

   | PARAMETER̲SPECIFIC̲CATALOG | PARAMETER̲SPECIFIC̲NAME | PARAMETER̲SPECIFIC̲SCHEMA 

   | PARTIAL | PASCAL | PATH | PLACING | PLI | PRECEDING | PRESERVE | PRIOR 

138 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

   | PRIVILEGES | PUBLIC 

   | READ | RELATIVE | REPEATABLE | RESPECT | RESTART | RESTRICT | RETURNED̲CARDINALITY 

   | RETURNED̲LENGTH | RETURNED̲OCTET̲LENGTH | RETURNED̲SQLSTATE | ROLE 

   | ROUTINE | ROUTINE̲CATALOG | ROUTINE̲NAME | ROUTINE̲SCHEMA | ROW̲COUNT 

   | SCALE | SCHEMA | SCHEMA̲NAME | SCOPE̲CATALOG | SCOPE̲NAME | SCOPE̲SCHEMA 

   | SECTION | SECURITY | SELF | SEQUENCE | SERIALIZABLE | SERVER̲NAME | SESSION 

   | SETS | SIMPLE | SIZE | SOURCE | SPACE | SPECIFIC̲NAME | STATE | STATEMENT 

   | STRUCTURE | STYLE | SUBCLASS̲ORIGIN 

   | T | TABLE̲NAME | TEMPORARY | TIES | TOP̲LEVEL̲COUNT | TRANSACTION 

   | TRANSACTION̲ACTIVE | TRANSACTIONS̲COMMITTED | TRANSACTIONS̲ROLLED̲BACK 

   | TRANSFORM | TRANSFORMS | TRIGGER̲CATALOG | TRIGGER̲NAME | TRIGGER̲SCHEMA | TYPE 

   | UNBOUNDED | UNCOMMITTED | UNDER | UNNAMED | USAGE | USER̲DEFINED̲TYPE̲CATALOG 

   | USER̲DEFINED̲TYPE̲CODE | USER̲DEFINED̲TYPE̲NAME | USER̲DEFINED̲TYPE̲SCHEMA 

   | VIEW 

   | WORK | WRITE 

   | ZONE 

04 09 13 14 <予約語> ::= 

     ABS | ALL | ALLOCATE | ALTER | AND | ANY | ARE | ARRAY | ARRAY̲AGG 

   | ARRAY̲MAX̲CARDINALITY | AS | ASENSITIVE | ASYMMETRIC | AT | ATOMIC | AUTHORIZATION 

   | AVG 

   | BEGIN | BEGIN̲FRAME | BEGIN̲PARTITION | BETWEEN | BIGINT | BINARY 

   | BLOB | BOOLEAN | BOTH | BY 

   | CALL | CALLED | CARDINALITY | CASCADED | CASE | CAST | CEIL | CEILING 

   | CHAR | CHAR̲LENGTH | CHARACTER | CHARACTER̲LENGTH | CHECK | CLOB | CLOSE 

   | COALESCE | COLLATE | COLLECT | COLUMN | COMMIT | CONDITION | CONNECT 

   | CONSTRAINT | CONTAINS | CONVERT | CORR | CORRESPONDING | COUNT | COVAR̲POP 

   | COVAR̲SAMP | CREATE | CROSS | CUBE | CUME̲DIST | CURRENT | CURRENT̲CATALOG 

   | CURRENT̲DATE | CURRENT̲DEFAULT̲TRANSFORM̲GROUP | CURRENT̲PATH | CURRENT̲ROLE 

   | CURRENT̲ROW | CURRENT̲SCHEMA | CURRENT̲TIME | CURRENT̲TIMESTAMP 

   | CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE | CURRENT̲USER | CURSOR | CYCLE 

   | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT | DELETE 

   | DENSE̲RANK | DEREF | DESCRIBE | DETERMINISTIC | DISCONNECT | DISTINCT 

   | DOUBLE | DROP | DYNAMIC 

   | EACH | ELEMENT | ELSE | END | END̲FRAME | END̲PARTITION | END-EXEC 

139 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

   | EQUALS | ESCAPE | EVERY | EXCEPT | EXEC | EXECUTE | EXISTS | EXP 

   | EXTERNAL | EXTRACT 

   | FALSE | FETCH | FILTER | FIRST̲VALUE | FLOAT | FLOOR | FOR | FOREIGN 

   | FRAME̲ROW | FREE | FROM | FULL | FUNCTION | FUSION 

   | GET | GLOBAL | GRANT | GROUP | GROUPING | GROUPS 

   | HAVING | HOLD | HOUR 

   | IDENTITY | IN | INDICATOR | INNER | INOUT | INSENSITIVE | INSERT 

   | INT | INTEGER | INTERSECT | INTERSECTION | INTERVAL | INTO | IS 

   | JOIN 

   | LAG | LANGUAGE | LARGE | LAST̲VALUE | LATERAL | LEAD | LEADING | LEFT 

   | LIKE | LIKE̲REGEX | LN | LOCAL | LOCALTIME | LOCALTIMESTAMP | LOWER 

   | MATCH | MAX | MEMBER | MERGE | METHOD | MIN | MINUTE 

   | MOD | MODIFIES | MODULE | MONTH | MULTISET 

   | NATIONAL | NATURAL | NCHAR | NCLOB | NEW | NO | NONE | NORMALIZE | NOT 

   | NTH̲VALUE | NTILE | NULL | NULLIF | NUMERIC 

   | OCTET̲LENGTH | OCCURRENCES̲REGEX | OF | OFFSET | OLD | ON | ONLY | OPEN 

   | OR | ORDER | OUT | OUTER | OVER | OVERLAPS | OVERLAY 

   | PARAMETER | PARTITION | PERCENT | PERCENT̲RANK | PERCENTILE̲CONT 

   | PERCENTILE̲DISC | PERIOD | PORTION | POSITION | POSITION̲REGEX | POWER | PRECEDES 

   | PRECISION | PREPARE | PRIMARY | PROCEDURE 

   | RANGE | RANK | READS | REAL | RECURSIVE | REF | REFERENCES | REFERENCING 

   | REGR̲AVGX | REGR̲AVGY | REGR̲COUNT | REGR̲INTERCEPT | REGR̲R2 | REGR̲SLOPE 

   | REGR̲SXX | REGR̲SXY | REGR̲SYY | RELEASE | RESULT | RETURN | RETURNS 

   | REVOKE | RIGHT | ROLLBACK | ROLLUP | ROW | ROW̲NUMBER | ROWS 

   | SAVEPOINT | SCOPE | SCROLL | SEARCH | SECOND | SELECT 

   | SENSITIVE | SESSION̲USER | SET | SIMILAR | SMALLINT | SOME | SPECIFIC 

   | SPECIFICTYPE | SQL | SQLEXCEPTION | SQLSTATE | SQLWARNING | SQRT | START 

   | STATIC | STDDEV̲POP | STDDEV̲SAMP | SUBMULTISET | SUBSTRING | SUBSTRING̲REGEX 

   | SUCCEEDS| SUM | SYMMETRIC | SYSTEM | SYSTEM̲TIME | SYSTEM̲USER 

   | TABLE | TABLESAMPLE | THEN | TIME | TIMESTAMP | TIMEZONE̲HOUR | TIMEZONE̲MINUTE 

   | TO | TRAILING | TRANSLATE | TRANSLATE̲REGEX | TRANSLATION | TREAT 

   | TRIGGER | TRIM | TRIM̲ARRAY | TRUE | TRUNCATE 

140 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

   | UESCAPE | UNION | UNIQUE | UNKNOWN | UNNEST | UPDATE | UPPER | USER | USING 

   | VALUE | VALUES | VALUE̲OF | VAR̲POP | VAR̲SAMP | VARBINARY 

   | VARCHAR | VARYING | VERSIONING 

   | WHEN | WHENEVER | WHERE | WIDTH̲BUCKET | WINDOW | WITH | WITHIN | WITHOUT 

   | YEAR 

構文規則 

1) <識別子開始>は,Unicode一般カテゴリクラス“Lu”,“Ll”,“Lt”,“Lm”,“Lo”又は“Nl”中のい

ずれかの文字とする。 

注記94 Unicode一般カテゴリクラス“Lu”,“Ll”,“Lt”,“Lm”,“Lo”及び“Nl”は,それぞれ,

大文字 (upper-case letter),小文字 (lower-case letter),タイトル文字 (title-case letter),修飾文

字 (modifier letter),その他の文字 (other letter) 及び文字数字 (letter number) のUnicode文

字に割り当てられている。 

2) <識別子拡張>は,U+00B7の“Middle Dot(中点)”又はUnicode一般カテゴリクラス“Mn”,“Mc”,

“Nd”,“Pc”又は“Cf”のいずれかの文字とする。 

注記95 Unicode一般カテゴリクラス“Mn”,“Mc”,“Nd”,“Pc”及び“Cf”は,それぞれ,文字送

りなし記号 (nonspacing mark),文字送り付き組合せ記号 (spacing combining mark),10進数

字 (decimal number),連結用句読記号 (connector punctuation) 及び書式制御符号 (formatting 

code) のUnicode文字に割り当てられている。 

3) <空白類>は,“3.1.6 第2部で規定する定義”で規定する空白類の定義をそれぞれが満たす文字の

連続する任意の並びとする。 

4) <改行>は,処理系定義の行端標識とする。 

注記96 <改行>は,一般的には,U+000A[“Line Feed(改行)”]及び/又はU+000D[“Carriage Return

(復帰)”]で表現される。しかし,この表現は,JIS X 3005 (ISO/IEC 9075) 規格群では,

必須ではない。 

5) <2進オクテット列定数>,<時刻印データ列>及び<時間隔データ列>に陽に含まれる<空白>文字を除

いて,<文字列定数>,<各国文字列定数>,<Unicode文字列定数>,<区切り識別子>又は<Unicode区

切り識別子>以外の<トークン>は,<空白>文字又はその他の<分離符号>を含んではならない。 

6) <非2重引用符文字>は,<2重引用符>以外のソース言語文字集合のいずれかの文字とする。 

注記97 “ソース言語文字集合”は,JIS X 3005-1 [ISO9075-1] の“4.8.1 ホスト言語”で定義して

いる。 

7) どの<トークン>の後に<分離符号>を続けてもよい。<非区切りトークン>の後には,<区切りトーク

ン>又は<分離符号>を続けなければならない。 

注記98 形式が<非区切りトークン>の後に<区切りトークン>を続けることを許さないならば,その

<非区切りトークン>の後には,<分離符号>を続けなければならない。 

8) <単純注釈導入子>の<負符号>を分離する<分離符号>は,あってはならない。 

9) <長大オブジェクト長トークン>のどの二つの<数字>を分離する<分離符号>も,<数字>と<乗数>と

を分離する<分離符号>も,あってはならない。 

10) <囲み注釈内容>内で,どの<分離符号>も介在しないで<アスタリスク>が直後に続くどの<斜線>も,

141 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<囲み注釈>である<分離符号>の<囲み注釈導入子>とみなさなければならない。 

注記99 規格に適合するプログラムは,<囲み注釈>内に<単純注釈>を挿入しないほうがよい。なぜ

ならば,そのような<単純注釈>が,同じ<単純注釈>内に先行する文字の並び“/*”なしで,

“*/”を含むならば,その<単純注釈>を含む<囲み注釈>を早々と終了させてしまうからで

ある。 

11) <注釈>の一つ以上の実現値を含むSQLテキストは,<注釈>を<改行>に置き換えた同じSQLテキス

トと等価とする。 

12) <通常識別子>中で,<識別子部分>の個数は,128未満でなければならない。 

13) <区切り識別子>の<区切り識別子本体>は,128個を超える<区切り識別子部分>を含んではならない。 

14) <Unicode区切り識別子>中で,'U'と<アンパサンド>との間にも,<アンパサンド>と<2重引用符>と

の間にも,<分離符号>があってはならない。 

15) <Unicode区切り識別子>中で,導入子の 'U' は,( 'U' のような)大文字又は( 'u' のような)小文

字のどちらで表現してもよい。 

16) <Unicodeエスケープ文字>は,<ヘキシット>,<正符号>,<引用符>,<2重引用符>又は<空白類>以

外のソース言語文字集合中の単一の文字でなければならない。 

17) ソース言語文字集合が<逆斜線>を含むならば,<逆斜線>をDECとする。そうでなければ,<ヘキシ

ット>,<正符号>,<引用符>,<2重引用符>又は<空白類>ではないソース言語文字集合中の処理系

定義の文字をDECとする。 

18) <Unicodeエスケープ指定子>が<Unicodeエスケープ文字>を含まないならば,“UESCAPE <引用符> 

DEC <引用符>”が暗に想定される。 

19) <Unicodeエスケープ値>中で,<Unicodeエスケープ文字>と最初の<ヘキシット>との間にも,どの<

ヘキシット>間にも,<分離符号>があってはならない。 

20) <Unicode区切り識別子>の<Unicode区切り本体>は,128個を超える<Unicode識別子部分>を含んで

はならない。 

21) <Unicode 4桁エスケープ値>の '<Unicodeエスケープ文字> xyzw' は,U+xyzwで指定されるUnicode

符号位置の文字と等価とする。 

22) <Unicode 6桁エスケープ値>の '<Unicodeエスケープ文字>+xyzwrs' は,U+xyzwrsで指定される

Unicode符号位置の文字と等価とする。 

注記100 6ヘキシット表記法は,JIS X 0221 [ISO10646] で定義しているUCS-4表記法を採用し,

値が常に0の先行する二つのヘキシットを取り除くことによって導出される。 

23) <Unicode文字エスケープ値>は,<Unicodeエスケープ文字>の単一の実現値と等価とする。 

24) どの<識別子本体> IBに対しても,ただ一つの対応する大文字小文字標準形式 (case-normal form) 

CNFがある。CNFは,次のとおりに,IBから導出される<識別子本体>とする。 

IBの文字数をnとする。1からnまでの範囲のiに対して,IBのi番目の文字Miは,次のとおり

に,CNFの対応する1文字又は複数文字に文字変換される。 

場合: 

a) Miが小文字又はタイトル文字で,それに対して等価な大文字である並びUがUnicodeで定義さ

れているならば,Uの文字数をjとする。CNFの次のj文字は,Uとする。 

b) そうでなければ,CNFの次の文字は,Miとする。 

25) <通常識別子>の<識別子本体>の大文字小文字標準形式は,識別子の等価性の決定,定義スキーマ及

142 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

び情報スキーマ中での表現,診断領域中での表現などの目的で用いる。 

注記101 情報スキーマ及び定義スキーマは,[ISO9075-11] で定義している。 

注記102 大文字の等価なものがないどの小文字も,その小文字の形式のまま残る。 

26) <通常識別子>の大文字小文字標準形式は,SQL̲IDENTIFIERの<文字集合指定>を指定する<文字列

定数>の繰返しとして扱って,“8.2 <比較述語>”の比較規則に従って,(全ての小文字を,対応する

大文字である1文字又は複数文字に置き換えた)どの<予約語>とも等しくてはならない。 

27) 二つの<通常識別子>は,SQL̲IDENTIFIERで,かつ,大文字小文字を区別する処理系定義の照合順

IDCの<文字集合指定>を指定する<文字列定数>の繰返しとみなして,“8.2 <比較述語>”の比較規則

に従って,それらの<識別子本体>の大文字小文字標準形式が等しいと比較されるならば,等価とす

る。 

28) <通常識別子>と<区切り識別子>とは,SQL̲IDENTIFIERで,かつ,IDCの<文字集合指定>を指定す

る<文字列定数>の繰返しとみなして,“8.2 <比較述語>”の比較規則に従って,(出現する全ての<引

用符>を<引用表現>で置き換えて,出現する全ての<2重引用表現>を<2重引用符>で置き換えた)<

通常識別子>の<識別子本体>の大文字小文字標準形式と<区切り識別子>の<区切り識別子本体>とが

等しいと比較されるならば,等価とする。 

29) 二つの<区切り識別子>は,SQL̲IDENTIFIERで,かつ,大文字小文字を区別する処理系定義の照合

順の<文字集合指定>を指定する<文字列定数>の繰返しとみなして,“8.2 <比較述語>”の比較規則に

従って,それらの<区切り識別子本体>が等しいと比較されるならば,等価とする。 

30) 二つの<Unicode区切り識別子>は,SQL̲IDENTIFIERで,かつ,大文字小文字を区別する処理系定

義の照合順の<文字集合指定>を指定する<文字列定数>の繰返しとみなして,“8.2 <比較述語>”の比

較規則に従って,それらの<Unicode区切り本体>が等しいと比較されるならば,等価とする。 

31) <Unicode区切り識別子>と<区切り識別子>とは,それぞれ,SQL̲IDENTIFIERで,かつ,大文字小

文字を区別する処理系定義の照合順の<文字集合指定>を指定する<文字列定数>の繰返しとみなし

て,“8.2 <比較述語>”の比較規則に従って,それらの<Unicode区切り本体>と<区切り識別子本体>

とが等しいと比較されるならば,等価とする。 

32) <通常識別子>と<Unicode区切り識別子>とは,SQL̲IDENTIFIERで,かつ,大文字小文字を区別す

る処理系定義の照合順の<文字集合指定>を指定する<文字列定数>の繰返しとみなして,“8.2 <比較

述語>”の比較規則に従って,<通常識別子>の<識別子本体>の大文字小文字標準形式と<Unicode区

切り識別子>の<Unicode区切り本体>とが等しいと比較されるならば,等価とする。 

33) <キーワード>を識別するために,候補の<キーワード>に含まれるどの<単純ラテン小文字>も,対応

する<単純ラテン大文字>として実効的に扱わなければならない。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能F391“長い識別子”なしでは,<通常識別子>中で,<識別子部分>の個数は,18未満でなけれ

ばならない。 

2) 機能F391“長い識別子”なしでは,<区切り識別子>の<区切り識別子本体>は,18個を超える<区切

り識別子部分>を含んではならない。 

143 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記103 規格に適合するSQL処理系によって提供される全ての文字集合が,この細分箇条の構文

規則で識別される<識別子開始>及び<識別子部分>に関連する全ての文字を必ずしも含

むわけではない。この細分箇条の構文規則で識別されるどの文字も,SQLクライアント

モジュールに対して用いるか又はSQLデータ中で用いる文字集合にその文字が属して

いない限り,<識別子開始>又は<識別子部分>中で提供することを,規格に適合するどの

SQL処理系にも要求してはならない。 

3) 機能T351“囲み注釈”なしでは,適合するSQL言語は,<囲み注釈>を含んではならない。 

4) 機能F392 “識別子中のUnicodeエスケープ”なしでは,適合するSQL言語は,<Unicode区切り識

別子>を含んではならない。 

5) 機能T043“乗数T”なしでは,適合するSQL言語中で,<乗数>は,Tであってはならない。 

6) 機能T044“乗数P”なしでは,適合するSQL言語中で,<乗数>は,Pであってはならない。 

5.3 

<定数> 

機能 

<定数> (<literal>) は,ナルでない値を指定する。 

形式 

<定数> ::= 

  <符号付き数定数> 

| <一般定数> 

<符号なし定数> ::= 

  <符号なし数定数> 

| <一般定数> 

<一般定数> ::= 

  <文字列定数> 

| <各国文字列定数> 

| <Unicode文字列定数> 

| <2進オクテット列定数> 

| <日時定数> 

| <時間隔定数> 

| <ブール定数> 

<文字列定数> ::= 

  [ <導入子><文字集合指定> ] 

      <引用符> [ <文字表現>... ] <引用符> 

      [ { <分離符号> <引用符> [ <文字表現>... ] <引用符> }... ] 

<導入子> ::= 

  <下線文字> 

<文字表現> ::= 

  <非引用文字> 

| <引用表現> 

<非引用文字> ::= 

  !! 構文規則参照。 

144 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<引用表現> ::= 

  <引用符><引用符> 

<各国文字列定数> ::= 

  N <引用符> [ <文字表現>... ] 

      <引用符> [ { <分離符号> <引用符> [ <文字表現>... ] <引用符> }... ] 

<Unicode文字列定数> ::= 

  [ <導入子><文字集合指定> ] 

      U<アンパサンド><引用符> [ <Unicode表現>... ] <引用符> 

      [ { <分離符号> <引用符> [ <Unicode表現>... ] <引用符> }... ] 

      <Unicodeエスケープ指定子> 

<Unicode表現> ::= 

  <文字表現> 

| <Unicodeエスケープ値> 

<2進オクテット列定数> ::= 

  X <引用符> [ <空白>... ] [ { <ヘキシット> [ <空白>... ] 

  

  <ヘキシット> [ <空白>... ] }... ] <引用符> 

      [ { <分離符号> <引用符> [ <空白>... ] [ { <ヘキシット> [ <空白>... ] 

      <ヘキシット> [ <空白>... ] }... ] <引用符> }... ] 

<ヘキシット> ::= 

  <数字> | A | B | C | D | E | F | a | b | c | d | e | f 

<符号付き数定数> ::= 

  [ <符号> ] <符号なし数定数> 

<符号なし数定数> ::= 

  <真数定数> 

| <概数定数> 

<真数定数> ::= 

  <符号なし整数> [ <ピリオド> [ <符号なし整数> ] ] 

| <ピリオド> <符号なし整数> 

<符号> ::= 

  <正符号> 

| <負符号> 

<概数定数> ::= 

  <仮数> E <指数> 

<仮数> ::= 

  <真数定数> 

<指数> ::= 

  <符号付き整数> 

<符号付き整数> ::= 

  [ <符号> ] <符号なし整数> 

<符号なし整数> ::= 

145 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <数字>... 

<日時定数> ::= 

  <日付定数> 

| <時刻定数> 

| <時刻印定数> 

<日付定数> ::= 

  DATE <日付データ列> 

<時刻定数> ::= 

  TIME <時刻データ列> 

<時刻印定数> ::= 

  TIMESTAMP <時刻印データ列> 

<日付データ列> ::= 

  <引用符> <引用符なし日付データ列> <引用符> 

<時刻データ列> ::= 

  <引用符> <引用符なし時刻データ列> <引用符> 

<時刻印データ列> ::= 

  <引用符> <引用符なし時刻印データ列> <引用符> 

<時刻帯時間隔> ::= 

  <符号> <時> <コロン> <分> 

<日付値> ::= 

  <年> <負符号> <月> <負符号> <日> 

<時刻値> ::= 

  <時> <コロン> <分> <コロン> <秒> 

<時間隔定数> ::= 

  INTERVAL [ <符号> ] <時間隔データ列> <時間隔修飾子> 

<時間隔データ列> ::= 

  <引用符> <引用符なし時間隔データ列> <引用符> 

<引用符なし日付データ列> ::= 

  <日付値> 

<引用符なし時刻データ列> ::= 

  <時刻値> [ <時刻帯時間隔> ] 

<引用符なし時刻印データ列> ::= 

  <引用符なし日付データ列> <空白> <引用符なし時刻データ列> 

<引用符なし時間隔データ列> ::= 

  [ <符号> ] { <年月定数> | <日時刻定数> } 

<年月定数> ::= 

  <年> [ <負符号> <月> ] 

| <月> 

<日時刻定数> ::= 

  <日時刻時間隔> 

146 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <時刻時間隔> 

<日時刻時間隔> ::= 

  <日> [ <空白> <時> [ <コロン> <分> 

      [ <コロン> <秒> ] ] ] 

<時刻時間隔> ::= 

  <時> [ <コロン> <分> [ <コロン> <秒> ] ] 

| <分> [ <コロン> <秒> ] 

| <秒> 

<年> ::= 

  <日時値> 

<月> ::= 

  <日時値> 

<日> ::= 

  <日時値> 

<時> ::= 

  <日時値> 

<分> ::= 

  <日時値> 

<秒> ::= 

  <整数秒値> [ <ピリオド> [ <小数秒> ] ] 

<整数秒値> ::= 

  <符号なし整数> 

<小数秒> ::= 

  <符号なし整数> 

<日時値> ::= 

  <符号なし整数> 

<ブール定数> ::= 

  TRUE 

| FALSE 

| UNKNOWN 

構文規則 

1) <文字列定数>又は<各国文字列定数>中で,次の並び 

<引用符> <文字表現>... <引用符><分離符号> 

<引用符> <文字表現>... <引用符> 

は,次の並びと等価とする。 

<引用符> <文字表現>... <文字表現>... <引用符> 

注記104 等価な並び中の<文字表現>は,元の<文字列定数>中と相対的に同じ順序で並んでいる。 

2) <Unicode文字列定数>中で,次の並び 

<引用符> <Unicode表現>... <引用符> 

<分離符号> <引用符> <Unicode表現>... <引用符> 

147 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

は,次の並びと等価とする。 

<引用符> <Unicode表現>... <Unicode表現>... <引用符> 

3) <Unicode文字列定数>中で,導入子の'U'は,('U'のような)大文字又は('u'のような)小文字のどち

らで表現してもよい。 

4) <2進オクテット列定数>中で,次の並び 

<引用符> [ <空白>... ] { <ヘキシット> [ <空白>... ] 

<ヘキシット> [ <空白>... ] }... <引用符> 

は,次の並びと等価とする。 

<引用符> { <ヘキシット> <ヘキシット> }... <引用符> 

注記105 等価な並び中の<ヘキシット>は,元の<2進オクテット列定数>中と相対的に同じ順序で

並んでいる。 

5) <2進オクテット列定数>中で,次の並び 

<引用符> { <ヘキシット> <ヘキシット> }... <引用符> <分離符号> 

<引用符> { <ヘキシット> <ヘキシット> }... <引用符> 

は,次の並びと等価とする。 

<引用符> { <ヘキシット> <ヘキシット> }... { <ヘキシット> <ヘキシット> }... 

<引用符> 

注記106 等価な並び中の<ヘキシット>は,元の<2進オクテット列定数>中と相対的に同じ順序で

並んでいる。 

6) <2進オクテット列定数>中で,導入子の'X'は,('X'のような)大文字又は('x'のような)小文字のど

ちらで表現してもよい。 

7) <文字列定数>,<各国文字列定数>,<Unicode文字列定数>又は<2進オクテット列定数>中では,<分

離符号>は,<改行>を含まなければならない。 

8) <各国文字列定数>は,“N”を“<導入子><文字集合指定>”に置き換えた<文字列定数>と等価とす

る。ここで,“<文字集合指定>”は,処理系定義の<文字集合名>とする。 

9) <各国文字列定数>中で,導入子の'N'は,('N'のような)大文字又は('n'のような)小文字のどちらで

表現してもよい。 

10) “<導入子><文字集合指定>”を指定する<Unicode文字列定数>中で,<導入子>と<文字集合指定>と

の間に<分離符号>があってはならない。 

11) <Unicode文字列定数>中で,“U”と<アンパサンド>との間にも,<アンパサンド>と<引用符>との間

にも,<分離符号>があってはならない。 

12) “<導入子><文字集合指定>”を指定する<Unicode文字列定数>の文字集合は,<文字集合指定>によ

って指定される文字集合とする。“<導入子><文字集合指定>”を指定しない<Unicode文字列定数>の

文字集合は,<Unicode文字列定数>を含むSQLクライアントモジュールの文字集合とする。 

13) <Unicode文字列定数>は,どの<Unicodeエスケープ値>も,等価なUnicode文字に置き換えられた<

文字列定数>と等価とする。<Unicode文字列定数>に含まれる文字の集合は,<Unicode文字列定数>

の文字集合に完全に含まれなければならない。 

注記107 “完全に含まれる”の要件は,<Unicodeエスケープ値>の,等価なUnicode文字への置換

えの後に適用する。 

14) 各<文字表現>は,ソース言語文字集合の文字とする。<文字列定数>の値は,ソース言語文字集合中

148 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の文字列として見て,<文字列定数>又は<各国文字列定数>の暗に想定されるか又は陽に指定される

文字集合の文字列と等価でなければならない。 

注記108 “ソース言語文字集合”は,JIS X 3005-1 [ISO9075-1] の“4.8.1 ホスト言語”で定義し

ている。 

15) <非引用文字>は,次のうちのいずれかとする。 

a) ソース言語文字集合の,<引用符>以外の任意の文字。 

b) <文字集合指定>によって識別されるか,又は“N”によって暗に想定される文字集合中の,<引用

符>以外の任意の文字。 

16) 場合: 

a) <文字集合指定>が<文字列定数>中に指定されないならば,<文字列定数>に含まれる文字の集合は,

<文字列定数>を含む<SQLクライアントモジュール定義>の文字集合に完全に含まれなければな

らない。 

b) そうでなければ,<導入子>と<文字集合指定>との間に<分離符号>があってはならず,<文字列定

数>に含まれる文字の集合は,<文字集合指定>によって指定される文字集合に完全に含まれなけ

ればならない。 

17) <文字列定数>の宣言型は,固定長文字列とする。<文字列定数>の長さは,それが含む<文字表現>の

個数とする。<文字列定数>に含まれる各<引用表現>は,<文字列定数>の値及び長さの両方において,

単一の<引用符>を表現する。<引用表現>に含まれる二つの<引用符>は,どんな<分離符号>によって

も分離してはならない。 

注記109 0の<文字長>をもつCHARACTERの<データ型>を宣言することが許されなくても,<文

字列定数>は,長さ0の文字列であること(すなわち,文字を含まないこと)を認めてい

る。 

18) <文字列定数>の文字集合は,次の文字集合とする。 

場合: 

a) <文字列定数>が<文字集合指定>を指定するならば,その<文字集合指定>によって指定される文字

集合。 

b) そうでなければ,<文字列定数>を含むSQLクライアントモジュールの文字集合。 

19) <文字列定数>の宣言型照合順は,文字集合照合順とし,照合順起源は,暗黙 (implicit) とする。 

20) <2進オクテット列定数>の宣言型が固定長2進オクテット列型か,可変長2進オクテット列型か,

又は長大オブジェクト2進オクテット列型かは,処理系定義とする。定数中に現れる各<ヘキシット

>は,ビットの四つ組と等価とする。すなわち,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E及

びFは,それぞれ,0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,

1100,1101,1110及び1111として解釈される。<ヘキシット> a,b,c,d,e及びfは,それぞれ,

<ヘキシット> A,B,C,D,E及びFと同じ値をもつ。 

21) <ピリオド>なしの<真数定数>は,最後の<数字>に続く暗に想定される<ピリオド>をもつ。 

22) <真数定数> ENLの宣言型は,<ピリオド>の右側の<数字>の個数である位取りをもつ処理系定義の

真数型とする。ENLの値を正確に表現できる真数型が存在しなければならない。 

23) <概数定数> ANLの宣言型は,処理系定義の概数型とする。ANLの値は,概数型によって表現でき

る最大値を超えてはならないし,最小値未満であってもならない。 

注記110 

したがって,<概数定数>の構文誤りは,“上位桁あふれ (overflow)”として一般に知られ

149 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ているものだけである。すなわち,SQL処理系が内部的に表現できる桁数を超える有効

桁の指定に対しても,SQL処理系の内部表現中に正確に等価なものがない値の指定に対

しても,構文誤りが存在しない[“下位桁あふれ (underflow)”,すなわち,SQL処理系の

内部表現での最も近い表現が0E0である0に非常に近い0でない値を指定することは,

後者の条件の特殊な場合で,構文誤りではない。]。 

24) <概数定数>中で,指数標識'E'は,('E'のような)大文字又は('e'のような)小文字のどちらで表現し

てもよい。 

25) <日付定数>の宣言型は,DATEとする。 

26) <時刻帯時間隔>を指定しない<時刻定数>の宣言型は,TIME(P) WITHOUT TIME ZONEとする。こ

こで,Pは,<小数秒>が指定されるならば,その中の数字の個数とし,そうでなければ,0とする。

<時刻帯時間隔>を指定する<時刻定数>の宣言型は,TIME(P) WITH TIME ZONEとする。ここで,P

は,<小数秒>が指定されるならば,その中の数字の個数とし,そうでなければ,0とする。 

27) <時刻帯時間隔>を指定しない<時刻印定数>の宣言型は,TIMESTAMP(P) WITHOUT TIME ZONEと

する。ここで,Pは,<小数秒>が指定されるならば,その中の数字の個数とし,そうでなければ,

0とする。<時刻帯時間隔>を指定する<時刻印定数>の宣言型は,TIMESTAMP(P) WITH TIME ZONE

とする。ここで,Pは,<小数秒>が指定されるならば,その中の数字の個数とし,そうでなければ,

0とする。 

28) <時刻帯時間隔>が指定されないならば,日時データ型の実効的な<時刻帯時間隔>は,SQLセション

の現行既定時刻帯時差とする。 

29) <年>,<月>,<日>,<時>,<分>又は<秒>のいずれかを日時構成要素 (datetime component) とする。 

30) <時間隔修飾子>によって指定される<時間隔定数>の精度中の<基本日時フィールド>の個数をNと

する。 

定義している<時間隔定数>は,N個の日時構成要素を含まなければならない。 

<時間隔修飾子>で指定される<時間隔定数>の宣言型は,<時間隔修飾子>をもつINTERVALとす

る。 

各日時構成要素は,<時間隔修飾子>によって指定される精度をもたなければならない。 

31) <日時定数>内で,<年>は,四つの数字を含まなければならない。<整数秒値>及び他の日時構成要素

は,<小数秒>を除いて,それぞれ,二つの数字を含まなければならない。 

32) <日時定数>の定義内で,<日時値>は,グレゴリオ暦 (Gregorian calendar) に従った日付及び時刻に対

する自然な規則に制約される。 

33) <時間隔定数>の定義内で,<日時値>は,グレゴリオ暦に従った時間隔に対する自然な規則に制約さ

れる。 

34) <年月定数>を含む<時間隔定数>の定義内で,<時間隔修飾子>は,DAY,HOUR,MINUTE又は

SECONDを指定してはならない。<日時刻定数>を含む<時間隔定数>の定義内で,<時間隔修飾子>

は,YEAR又はMONTHを指定してはならない。 

35) <日時定数>の定義内で,<時刻帯時間隔>の値は,‒14:00から+14:00までの範囲内になければならな

い。 

アクセス規則 

なし。 

一般規則 

150 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <文字列定数>の値は,それが含む<文字表現>の並びを,ソース言語文字集合から<文字列定数>の暗

に想定されるか又は陽に指定される文字集合に文字変換した結果とする。 

2) <文字列定数> USの文字レパートリがUCSならば,その値は,NORMALIZE(US) によって置き換

えられる。 

3) <真数定数>に含まれるときを除いて,<符号なし整数>の値は,<符号なし整数>を構成する<数字>の

文字列への,位取り10進表記法 (positional decimal notation) の通常の数学的解釈の適用によって決

定される数値とする。 

4) <真数定数>の値は,<真数定数>を構成する元の文字の並びへの,位取り10進表記法の通常の数学

的解釈の適用によって決定される数値とする。 

5) <概数定数>をANLとする。ANLの宣言型をANDTとする。ANLの<仮数>によって表現される真数

値と,ANLの<指数>によって表現される真数値で数10をべき乗することによって得られる数との

積をANVとする。ANVがANDTの要素ならば,ANLの値は,ANVとする。そうでなければ,ANL

の値は,丸め又は切捨てによってANVから得られるANDTの要素とする。 

6) <符号付き数定数>又は<時間隔定数>中の<符号>は,単項算術演算子とする。単項算術演算子+ 及び 

‒ は,それぞれ,単項プラス及び単項マイナスを指定する。<符号付き数定数>又は<時間隔定数>中

に,単項プラスも,単項マイナスも,指定されないか,又は単項プラスが指定されるならば,その

定数は,正の値とする。<符号付き数定数>又は<時間隔定数>中に単項マイナスが指定されるならば,

その定数は,負の値とする。<時間隔定数>中で可能な両方の位置に<符号>が指定されるならば,そ

の定数の符号は,複数の符号演算子の通常の数学的解釈によって決定される。 

7) <小数秒>に含まれる<符号なし整数>の整数値をVとし,<小数秒>中の数字の個数をNとする。<小

数秒>の結果の値は,次のとおりに実効的に決定される。 

場合: 

a) <日時定数>の定義内で<小数秒>が指定されるならば,<小数秒>の実効的な値は,V * 10‒N秒とす

る。 

b) <時間隔定数>の定義内で<小数秒>が指定されるならば,<時間隔修飾子>中に指定される<時間隔

小数秒精度>をMとする。 

場合: 

i) 

N < Mならば,V * 10M‒NをV1とする。<小数秒>の実効的な値は,V1 * 10‒M秒とする。 

ii) N > Mならば,V/10N‒Mの商の整数部分をV2とする。<小数秒>の実効的な値は,V2 * 10‒M秒

とする。 

iii) そうでなければ,<小数秒>の実効的な値は,V * 10‒M秒とする。 

8) <日時定数>又は<時間隔定数>中のi番目の日時構成要素は,<日時定数>又は<時間隔定数>中のi番

目の<基本日時フィールド>に,その日時構成要素の値を代入する。 

9) <時刻帯時間隔>が指定されるならば,<時刻定数>及び<時刻印定数>中の時刻及び時刻印の値は,指

定された時刻帯で日時を表現する。 

10) <日付値>が指定されるならば,それは,グレゴリオ暦の日付として解釈される。<時刻値>が指定さ

れるならば,それは,日の中の時刻として解釈される。<時刻帯時間隔>を無視した<日時定数>の値

をDVとする。 

場合: 

a) <時刻帯時間隔>が指定されるならば,<時刻帯時間隔>によって示される時間隔の値をTZ1とす

151 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る。<日時定数>の値は,時刻帯時差TZIをもち,DV ‒ TZIとする。 

b) そうでなければ,<日時定数>の値は,DVとする。 

注記111 

<時刻帯時間隔>が指定されるならば,<時刻定数>又は<時刻印定数>は,指定された時刻

帯時差をもつ地方時刻として解釈される。しかし,それは,元の時刻帯時差を保持しな

がら,UTCに実効的に変換される。 

<時刻帯時間隔>が指定されないならば,時刻帯時差についての想定は行われない。し

かし,後続する処理の間に時刻帯時差が要求されると,SQLセションの現行既定時刻帯

時差がその時点で適用されることになる。 

11) <ブール定数>の真理値は,TRUEが指定されるならば,真 (True) とし,FALSEが指定されるなら

ば,偽 (False) とし,UNKNOWNが指定されるならば,不定 (Unknown) とする。 

注記112 

ブールデータ型のナル値は,不定 の真理値と等価である(“4.5 ブール型”参照)。 

適合性規則 

1) 機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール定数>を含んではなら

ない。 

2) 機能F555“拡張秒精度”なしでは,適合するSQL言語中で,<時刻印定数>に含まれる<小数秒>で

ある<符号なし整数>は,6個を超える<数字>を含んではならない。 

3) 機能F555“拡張秒精度”なしでは,適合するSQL言語中で,<時刻定数>は,<小数秒>を含んでは

ならない。 

4) 機能F421“各国文字”なしでは,適合するSQL言語は,<各国文字列定数>を含んではならない。 

5) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔定数>を含んではな

らない。 

6) 機能F271“複合文字定数”なしでは,適合するSQL言語中で,<文字列定数>は,<文字表現>のた

だ一つの繰返しを含まなければならない(すなわち,それは,“<引用符> [ <文字表現>... ] <引用符

>”のただ一つの並びを含まなければならない。)。 

7) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<時刻帯時間隔>を含んではならない。 

8) 機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”なしで

は,適合するSQL言語は,<2進オクテット列定数>を含んではならない。 

9) 機能T023“複合2進オクテット定数”なしでは,適合するSQL言語中で,<2進オクテット列定数

>は,“<引用符> [ { <ヘキシット> <ヘキシット> }... ] <引用符>”のただ一つの繰返しを含まなけれ

ばならない。 

10) 機能T024“2進オクテット定数中の空白”なしでは,適合するSQL言語中で,<2進オクテット列

定数>は,<空白>を含んではならない。 

11) 機能F393“定数中のUnicodeエスケープ”なしでは,適合するSQL言語は,<Unicode文字列定数>

を含んではならない。 

5.4 

名前及び識別子 

この細分箇条は,ISO/IEC 9075-4の“5.2 名前及び識別子”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“5.2 名前及び識別子”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“5.2 名前及び識別子”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“5.2 名前及び識別子”によって修正される。 

機能 

152 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

名前及び識別子 (Names and identifiers) は,名前を指定する。 

形式 

<識別子> ::= 

  <実識別子> 

<実識別子> ::= 

  <通常識別子> 

| <区切り識別子> 

| <Unicode区切り識別子> 

<SQL言語識別子> ::= 

  <SQL言語識別子開始> [ <SQL言語識別子部分>... ] 

<SQL言語識別子開始> ::= 

  <単純ラテン文字> 

<SQL言語識別子部分> ::= 

  <単純ラテン文字> 

| <数字> 

| <下線文字> 

<認可識別子> ::= 

  <役割名> 

| <利用者識別子> 

<表名> ::= 

  <局所又はスキーマ修飾付き名前> 

<定義域名> ::= 

  <スキーマ修飾付き名前> 

<スキーマ名> ::= 

  [ <カタログ名> <ピリオド> ] <修飾なしスキーマ名> 

<修飾なしスキーマ名> ::= 

  <識別子> 

<カタログ名> ::= 

  <識別子> 

<スキーマ修飾付き名前> ::= 

  [ <スキーマ名> <ピリオド> ] <被修飾識別子> 

<局所又はスキーマ修飾付き名前> ::= 

  [ <局所又はスキーマ修飾子> <ピリオド> ] <被修飾識別子> 

<局所又はスキーマ修飾子> ::= 

  <スキーマ名> 

| <局所修飾子> 

<被修飾識別子> ::= 

  <識別子> 

<列名> ::= 

  <識別子> 

153 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<相関名> ::= 

  <識別子> 

<問合せ名> ::= 

  <識別子> 

<SQLクライアントモジュール名> ::= 

  <識別子> 

<手続名> ::= 

  <識別子> 

<スキーマ修飾付きルーチン名> ::= 

  <スキーマ修飾付き名前> 

<メソッド名> ::= 

  <識別子> 

<特定名> ::= 

  <スキーマ修飾付き名前> 

<カーソル名> ::= 

  <局所修飾付き名前> 

<局所修飾付き名前> ::= 

  [ <局所修飾子> <ピリオド> ] <被修飾識別子> 

<局所修飾子> ::= 

  MODULE 

<ホストパラメタ名> ::= 

  <コロン> <識別子> 

<SQLパラメタ名> ::= 

  <識別子> 

<制約名> ::= 

  <スキーマ修飾付き名前> 

<外部ルーチン名> ::= 

  <識別子> 

| <文字列定数> 

<トリガ名> ::= 

  <スキーマ修飾付き名前> 

<照合順名> ::= 

  <スキーマ修飾付き名前> 

<文字集合名> ::= 

  [ <スキーマ名> <ピリオド> ] <SQL言語識別子> 

<文字変換名> ::= 

  <スキーマ修飾付き名前> 

<符号変換名> ::= 

  <スキーマ修飾付き名前> 

<スキーマ解決利用者定義型名> ::= 

154 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <利用者定義型名> 

<利用者定義型名> ::= 

  [ <スキーマ名> <ピリオド> ] <被修飾識別子> 

<属性名> ::= 

  <識別子> 

<フィールド名> ::= 

  <識別子> 

<保存点名> ::= 

  <識別子> 

<順序数生成子名> ::= 

  <スキーマ修飾付き名前> 

<役割名> ::= 

  <識別子> 

<利用者識別子> ::= 

  <識別子> 

<コネクション名> ::= 

  <単純値指定> 

<SQLサーバ名> ::= 

  <単純値指定> 

<コネクション利用者名> ::= 

  <単純値指定> 

<SQL文名> ::= 

  <文名> 

| <拡張文名> 

<文名> ::= 

  <識別子> 

<拡張文名> ::= 

  [ <有効範囲選択肢> ] <単純値指定> 

<動的カーソル名> ::= 

  <カーソル名> 

| <拡張カーソル名> 

<拡張カーソル名> ::= 

  [ <有効範囲選択肢> ] <単純値指定> 

<記述子名> ::= 

  <非拡張記述子名> 

| <拡張記述子名> 

<非拡張記述子名> ::= 

  <識別子> 

<拡張記述子名> ::= 

  [ <有効範囲選択肢> ] <単純値指定> 

background image

155 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<有効範囲選択肢> ::= 

  GLOBAL 

| LOCAL 

<ウィンドウ名> ::= 

  <識別子> 

構文規則 

1) <SQL言語識別子>中で,<SQL言語識別子部分>の個数は,128未満でなければならない。 

2) <SQL言語識別子>は,小文字であるどの文字も,対応する大文字である1文字又は複数文字に置き

換えた<SQL言語識別子>と等価とする。この扱いは,等価性の決定,情報スキーマ及び定義スキー

マ中での表現,診断領域中での表現,並びに類似の利用を含む。 

注記113 

情報スキーマ及び定義スキーマは,[ISO9075-11] で定義している。 

3) SQL̲IDENTIFIERの<文字集合指定>を指定する<文字列定数>の繰返しとして扱われる(小文字であ

るどの文字も,対応する大文字である1文字又は複数文字に置き換えた)<SQL言語識別子>は,“8.2 

<比較述語>”の比較規則に従って,SQL̲IDENTIFIERの<文字集合指定>を指定する<文字列定数>の

繰返しとして扱われる(小文字であるどの文字も,対応する大文字である1文字又は複数文字に置

き換えた)どの<予約語>とも等しくてはならない。 

注記114 

JIS X 3005 (ISO/IEC 9075) 規格群又はその改正で規定するどの<キーワード>も,<下線

文字>で終了してはならないことを意図している。 

4) <局所又はスキーマ修飾付き名前>が<局所又はスキーマ修飾子>を含まないならば,次による。 

場合: 

a) 

04 <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備され

る<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>を介在しないで<局所又

はスキーマ修飾付き名前>が含まれるならば,SQLセションの既定の<修飾なしスキーマ名>が暗

に想定される。 

b) 

04 <局所又はスキーマ修飾付き名前>が<スキーマ定義>に含まれるならば,<スキーマ定義>中で指

定されるか又は暗に想定される<スキーマ名>が暗に想定される。 

c) そうでなければ,SQLクライアントモジュールに対して指定されるか又は暗に想定される<スキ

ーマ名>が暗に想定される。 

5) <被修飾識別子> QI及び<局所又はスキーマ修飾子> LSQをもつ<表名>をTNとする。 

場合: 

a) 

04 LSQが“MODULE”ならば,TNは,<SQLクライアントモジュール定義> Mに含まれなければ

ならず,Mの<モジュール内容>は,QIと等価な<被修飾識別子>を<表名>がもつ<一時表宣言> TT

を含まなければならない。 

b) そうでなければ,LSQは,QIと等価な<被修飾識別子>を<表名>がもつ<表定義>又は<ビュー定義

>を含むスキーマを識別する<スキーマ名>でなければならない。 

6) <被修飾識別子> QIをもつ<カーソル名> CNが<局所修飾子>を含まないならば,<局所修飾子> 

MODULEが暗に想定される。 

7) 

04 <カーソル名>をCNとする。CNは,<カーソル名>がCNである<カーソル宣言>又は<動的カーソ

ル宣言>を含む<モジュール内容>をもつ<SQLクライアントモジュール定義>に,<SQLスキーマ文>

を介在しないで含まれなければならない。 

156 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

8) 

04 <被修飾識別子> QIをもつ<利用者定義型名> UDTNが指定されるならば,次による。 

場合: 

a) UDTNが<パス解決利用者定義型名>に単純に含まれるならば,次による。 

場合: 

i) 

UDTNが<スキーマ名> SNを含むならば,SNによって識別されるスキーマは,利用者定義型

UDTの<被修飾識別子>がQIと等価であるようなUDTの記述子を含んでいなければならない。

UDTは,UDTNによって識別される利用者定義型とする。 

ii) そうでなければ,次による。 

1) 場合: 

A) <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備

される<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>を介在しな

いでUDTNが含まれるならば,現行SQLセションのSQLパスをDPとする。 

B) <スキーマ定義>にUDTNが含まれるならば,その<スキーマ定義>のSQLパスをDPとす

る。 

C) そうでなければ,UDTNを含む<SQLクライアントモジュール定義>のSQLパスをDPと

する。 

2) DP中の<スキーマ名>の個数をNとする。DP中のi番目の<スキーマ名>をSi,1 ≤ i ≤ Nとす

る。 

3) 利用者定義型Tの<被修飾識別子>がQIと等価であるようなSi,1 ≤ i ≤ Nによって識別され

るスキーマ中の全てのTを含む集合を,当該型の集合 (set of subject types) とする。当該型の

集合中に少なくとも一つの型が存在しなければならない。 

4) UDT2の利用者定義型記述子を含むスキーマの<スキーマ名>が,UDTの利用者定義型記述子

を含むスキーマを識別する<スキーマ名>にDP中で先行する他のどの型UDT2も存在しない

ような当該型の集合中に含まれる利用者定義型をUDTとする。UDTNは,UDTを識別する。 

5) UDTNの暗に想定される<スキーマ名>は,UDTの利用者定義型記述子を含むスキーマの<ス

キーマ名>とする。 

b) UDTNが<スキーマ解決利用者定義型名>に単純に含まれ,かつ,UDTNが<スキーマ名>を含まな

いならば,次による。 

場合: 

i) 

<EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備され

る<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>を介在しないでUDTN

が含まれるならば,UDTNの暗に想定される<スキーマ名>は,SQLセションの既定の<修飾な

しスキーマ名>とする。 

ii) <スキーマ定義>にUDTNが含まれるならば,UDTNの暗に想定される<スキーマ名>は,<スキ

ーマ定義>中で指定されるか又は暗に想定される<スキーマ名>とする。 

iii) そうでなければ,UDTNの暗に想定される<スキーマ名>は,<SQLクライアントモジュール定

義>中で指定されるか又は暗に想定される<スキーマ名>とする。 

9) 二つの<利用者定義型名>が等価であることは,<スキーマ名>が暗に想定されるか又は陽に指定され

るかにかかわらず,それらが等価な<被修飾識別子>をもち,かつ,等価な<スキーマ名>をもつこと

と同値とする。 

157 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

10) 11 どの<修飾なしスキーマ名>も,DEFINITION̲SCHEMAを指定してはならない。 

11) <符号変換名>が<スキーマ名>を指定しないならば,INFORMATION̲SCHEMAが暗に想定される。

そうでなければ,INFORMATION̲SCHEMAを指定しなければならない。 

12) <文字集合名>が<スキーマ名>を指定しないならば,次による。 

場合: 

a) <文字集合名>が次の指定に直に含まれないならば,<スキーマ名> INFORMATION̲SCHEMAが暗

に想定される。 

i) 

<文字集合定義>。 

ii) <文字集合削除文>。 

b) そうでなければ,次による。 

場合: 

i) 

<EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備され

る<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>を介在しないで<文字

集合名>が含まれるならば,SQLセションの既定の<修飾なしスキーマ名>が暗に想定される。 

ii) <文字集合名>が<スキーマ定義>に含まれるならば,<スキーマ定義>中で指定されるか又は暗に

想定される<スキーマ名>が暗に想定される。 

iii) そうでなければ,<SQLクライアントモジュール定義>に対して指定されるか又は暗に想定され

る<スキーマ名>が暗に想定される。 

13) <符号変換名>以外の<スキーマ修飾付き名前> SQNが<スキーマ名>を含まないならば,次による。 

場合: 

a) 次のいずれかが真ならば,<スキーマ名> INFORMATION̲SCHEMAが暗に想定される。 

i) 

<照合順定義>又は<照合順削除文>に直に含まれない<照合順名>に,SQNが直に含まれる。 

ii) <文字変換定義>又は<文字変換削除文>に直に含まれない<文字変換名>に,SQNが直に含まれ

る。 

b) <表定義>又は<表変更文>に含まれる<制約名>に,SQNが直に含まれるならば,<表定義>又は<表

変更文>によって識別される表の<表名>の陽に指定されるか又は暗に想定される<スキーマ名>が

暗に想定される。 

c) <定義域定義>又は<定義域変更文>に含まれる<制約名>に,SQNが直に含まれるならば,<定義域

定義>又は<定義域変更文>によって識別される定義域の<定義域名>の陽に指定されるか又は暗に

想定される<スキーマ名>が暗に想定される。 

d) そうでなければ,次による。 

場合: 

i) 

04 <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備さ

れる<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>を介在しないでSQN

が含まれるならば,SQLセションの既定の<修飾なしスキーマ名>が暗に想定される。 

ii) 

04 SQNが<スキーマ定義>に含まれるならば,<スキーマ定義>中で指定されるか又は暗に想定さ

れる<スキーマ名>が暗に想定される。 

iii) そうでなければ,<SQLクライアントモジュール定義>に対して指定されるか又は暗に想定され

る<スキーマ名>が暗に想定される。 

14) 11 <スキーマ名>が<カタログ名>を含まないならば,次による。 

158 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備される

<準備可能文>,又は直接起動される<直接SQL文>に,<修飾なしスキーマ名>が含まれるならば,

SQLセションの既定カタログ名が暗に想定される。 

b) <モジュール認可句>に<修飾なしスキーマ名>が含まれるならば,処理系定義の<カタログ名>が暗

に想定される。 

c) <スキーマ名句>以外で<スキーマ定義>に<修飾なしスキーマ名>が含まれるならば,<スキーマ名

句>中で指定されるか又は暗に想定される<カタログ名>が暗に想定される。 

d) <スキーマ名句>に<修飾なしスキーマ名>が含まれるならば,次による。 

場合: 

i) 

<スキーマ名句>が<SQLクライアントモジュール定義>に含まれるならば,<モジュール認可句

>に含まれる陽に指定されるか又は暗に想定される<カタログ名>が暗に想定される。 

ii) そうでなければ,処理系定義の<カタログ名>が暗に想定される。 

e) そうでなければ,<モジュール認可句>に含まれる陽に指定されるか又は暗に想定される<カタロ

グ名>が暗に想定される。 

15) 二つの<スキーマ修飾付き名前>が等価であることは,<スキーマ名>が暗に想定されるか又は陽に指

定されるかにかかわらず,それらの<被修飾識別子>が等価で,かつ,それらの<スキーマ名>が等価

であることと同値とする。 

16) 二つの<局所又はスキーマ修飾付き名前>が等価であることは,それらの<被修飾識別子>が等価で,

かつ,それらの両方がMODULEを指定するか又はそれらの両方が等価な<スキーマ名>を指定若し

くは暗に想定するかのいずれかであることと同値とする。 

17) 二つの<文字集合名>が等価であることは,<スキーマ名>が暗に想定されるか又は陽に指定されるか

にかかわらず,それらの<SQL言語識別子>が等価で,かつ,それらの<スキーマ名>が等価であるこ

とと同値とする。 

18) 13 二つの<スキーマ名>が等価であることは,<カタログ名>が暗に想定されるか又は陽に指定される

かにかかわらず,それらの<修飾なしスキーマ名>が等価で,かつ,それらの<カタログ名>が等価で

あることと同値とする。 

19) <相関名>である<識別子>は,特定の有効範囲内の表に関連付けられる。 

注記115 

<相関名>の有効範囲は,“7.6 <表参照>”,“11.49 <トリガ定義>”及び他の箇所の構文規

則で定義している。有効範囲は,入れ子になってもよい。異なる有効範囲中では,等価

な<識別子>である<相関名>は,異なる表に関連付けられてもよく,同じ表に関連付けら

れてもよい。 

20) どの<認可識別子>も,“PUBLIC”を指定してはならない。 

21) 正しい<認可識別子>である<識別子>は,処理系定義とする。 

22) 正しい<カタログ名>である<識別子>は,処理系定義とする。 

23) <SQLサーバ名>,<コネクション名>及び<コネクション利用者名>の宣言型は,処理系定義の文字集

合をもつ文字列でなければならず,128オクテット以下のオクテット長でなければならない。 

24) <拡張文名>又は<拡張カーソル名>の<単純値指定>は,<定数>であってはならない。 

25) <拡張文名>又は<拡張カーソル名>が<SQLパラメタ参照>を含むならば,陽に指定される<有効範囲

選択肢>も含まなければならない。 

159 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

26) <拡張文名>の<単純値指定>の宣言型は,処理系定義の文字集合をもつ文字列でなければならず,128

オクテット以下のオクテット長でなければならない。 

27) <拡張カーソル名>の<単純値指定>の宣言型は,処理系定義の文字集合をもつ文字列でなければなら

ず,128オクテット以下のオクテット長でなければならない。 

28) <拡張記述子名>の<単純値指定>の宣言型は,処理系定義の文字集合をもつ文字列でなければならず,

128オクテット以下のオクテット長でなければならない。 

29) <拡張記述子名>,<拡張文名>又は<拡張カーソル名>中で,<有効範囲選択肢>が指定されないならば,

LOCALの<有効範囲選択肢>が暗に想定される。<有効範囲選択肢>が<SQLスキーマ文>に含まれる

ならば,LOCALを含んではならない。 

30) 04 <SQLパラメタ参照>を識別し,かつ,<有効範囲選択肢>を指定しない<拡張記述子名>を<記述子

名>が含むならば,その<SQLパラメタ参照>は,<記述子名>に対する値を与えるために用いられる。 

注記116 

前の規則は,<SQLパラメタ参照>である<拡張記述子名>と,<識別子>である<非拡張記

述子名>との間の曖昧さをなくし,<SQLパラメタ参照>を優先する。 

アクセス規則 

なし。 

一般規則 

1) <表名>は,表を識別する。 

2) その有効範囲内で,<相関名>は,表を識別する。 

3) その有効範囲内で,<問合せ名>は,関連付けられる<問合せ式本体>によって定義されるか又は戻さ

れる表を識別する。 

4) <列名>は,列を識別する。 

5) <定義域名>は,定義域を識別する。 

6) <認可識別子>は,権限の集合を識別する。 

7) <SQLクライアントモジュール名>は,SQLクライアントモジュールを識別する。 

8) <スキーマ修飾付きルーチン名>は,SQL呼出しルーチンを識別する。 

9) <メソッド名>は,SQL呼出しメソッドMを識別し,その記述子は,Mの型である利用者定義型の

記述子を含むスキーマに含まれる。 

10) <特定名>は,SQL呼出しルーチンを識別する。 

11) <カーソル名>は,元祖カーソル,宣言動的カーソル又は受取りカーソルを識別する。 

12) <ホストパラメタ名>は,ホストパラメタを識別する。 

13) <SQLパラメタ名>は,SQLパラメタを識別する。 

14) <外部ルーチン名>は,外部ルーチンを識別する。 

15) <トリガ名>は,トリガを識別する。 

16) <制約名>は,表制約,定義域制約又は表明を識別する。 

17) <カタログ名>は,カタログを識別する。 

18) <スキーマ名>は,スキーマを識別する。 

19) <照合順名>は,照合順を識別する。 

20) <文字集合名>は,文字集合を識別する。 

21) <文字変換名>は,文字文字変換を識別する。 

22) <符号変換名>は,符号変換を識別する。全ての<符号変換名>は,処理系定義とする。 

160 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

23) <コネクション名>は,SQLコネクションを識別する。 

24) <利用者定義型名>は,利用者定義型を識別する。 

25) <属性名>は,構造型の属性を識別する。 

26) <保存点名>は,保存点を識別する。<保存点名>の有効範囲は,それが定義されたSQLトランザクシ

ョンとする。 

27) <順序数生成子名>は,順序数生成子を識別する。 

28) <フィールド名>は,フィールドを識別する。 

29) <役割名>は,役割を識別する。 

30) <利用者識別子>は,利用者を識別する。 

31) 実行時点での値がVである<拡張文名> ESN1を含む<PREPARE文> PS1を実行することによって,

SQLセションSS中で被準備文PSXが作成されるならば,それが存在している限り,実行時点での

<拡張文名> ESN2の値がVで,かつ,ESN2の<有効範囲選択肢>がESN1の<有効範囲選択肢>と同

じとき,SS中で実行される<SQL手続文> PS2中のESN2によってPSXを識別することができる。

ESN1の<有効範囲選択肢>がLOCALならば,PS1と同じ<SQLクライアントモジュール定義>にPS2

が含まれるときに限り,ESN2は,PSXを識別する。 

注記117 

“実行時点での値”は,“20.6 <PREPARE文>”の一般規則で定義している。 

32) 場合: 

a) <カーソル名>である<動的カーソル名>は,<動的SQL文>中の宣言動的カーソルを識別する非拡

張名とする。 

b) <動的カーソル名>が<拡張カーソル名>ならば,<拡張カーソル名>に単純に含まれる<単純値指定

>の値は,<動的SQL文>中の拡張動的カーソルを識別する拡張名とする。 

注記118 

非拡張名の有効範囲は,“4.25.2 動的SQL文及び記述子領域”で定義している。 

33) <文名>は,<PREPARE文>の実行によって作成される被準備文を識別する非拡張名とする。 

34) <非拡張記述子名>は,<ALLOCATE DESCRIPTOR文>の実行によって作成されるSQL記述子領域を

識別する非拡張名とする。 

35) 実行時点での値がVである<拡張文名> ESN1を含む<拡張動的カーソル割当て文> ACSを実行する

ことによって,SQLセションSS中で拡張動的カーソルCSRが作成されるならば,それが存在して

いる限り,実行時点での<拡張文名> ESN2の値がVで,かつ,ESN2の<有効範囲選択肢>がESN1

の<有効範囲選択肢>と同じとき,SS中で実行される<SQL手続文> PS2中のESN2によってCSRを

識別することができる。ESN1の<有効範囲選択肢>がLOCALならば,ACSと同じ<SQLクライアン

トモジュール定義>にPS2が含まれるときに限り,ESN2は,CSRを識別する。 

注記119 

“実行時点での値”は,“20.15 <拡張動的カーソル割当て文>”の一般規則で定義してい

る。 

36) 実行時点での値がVである<拡張記述子名> ESN1を含む<ALLOCATE DESCRIPTOR文> ADSを実

行することによって,SQLセションSS中でSQL記述子領域SDAが作成されるならば,それが存

在している限り,実行時点での<拡張記述子名> ESN2の値がVで,かつ,ESN2の<有効範囲選択肢

>がESN1の<有効範囲選択肢>と同じとき,SS中で実行される<SQL手続文> PS2中のESN2によっ

てSDAを識別することができる。ESN1の<有効範囲選択肢>がLOCALならば,ADSと同じ<SQL

クライアントモジュール定義>にPS2が含まれるときに限り,ESN2は,SDAを識別する。 

注記120 “実行時点での値”は,“20.2 <ALLOCATE DESCRIPTOR文>”の一般規則で定義してい

161 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る。 

37) <ウィンドウ名>は,ウィンドウを識別する。 

適合性規則 

1) 機能T271“保存点”なしでは,適合するSQL言語は,<保存点名>を含んではならない。 

2) 機能T331“基本役割”なしでは,適合するSQL言語は,<役割名>を含んではならない。 

3) 機能T121“問合せ式中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語は,<問合せ

名>を含んではならない。 

4) 機能S023“基本構造型”なしでは,適合するSQL言語は,<属性名>を含んではならない。 

5) 機能T051“行型”なしでは,適合するSQL言語は,<フィールド名>を含んではならない。 

6) 機能F651“カタログ名修飾子”なしでは,適合するSQL言語は,<カタログ名>を含んではならな

い。 

7) 機能F771“コネクション管理”なしでは,適合するSQL言語は,陽に指定される<コネクション名

>を含んではならない。 

8) 機能F690“照合順提供”なしでは,適合するSQL言語は,<照合順名>を含んではならない。 

9) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字変換名>を含んではならない。 

10) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<符号変換名>を含んではならない。 

11) 機能F821“局所表参照”なしでは,適合するSQL言語は,<局所修飾子>を含む<局所又はスキーマ

修飾子>を含んではならない。 

12) 機能F251“定義域提供”なしでは,適合するSQL言語は,<定義域名>を含んではならない。 

13) 機能F491“制約管理”なしでは,適合するSQL言語は,<制約名>を含んではならない。 

14) 機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<文字集合名>を含んではならな

い。 

15) 機能T601“局所カーソル参照”なしでは,適合するSQL言語中で,<カーソル名>は,<局所修飾子

>を含んではならない。 

16) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<拡張文名>又は<拡張カーソル名>を

含んではならない。 

17) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<SQL文名>を含んではならない。 

18) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的カーソル名>を含んではならな

い。 

19) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<記述子名>を含んではならない。 

20) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ名>を含んではならな

い。 

21) 機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子名>を含んではな

らない。 

22) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<定数>又は<非拡張記述子名>でない

<記述子名>を含んではならない。 

23) 機能B035“非拡張記述子名”なしでは,適合するSQL言語は,<非拡張記述子名>である<記述子名

>を含んではならない。 

スカラ式 

162 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6.1 

<データ型> 

この細分箇条は,ISO/IEC 9075-9の“6.1 <データ型>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“6.1 <データ型>”によって修正される。 

機能 

<データ型> (<data type>) は,データ型を指定する。 

形式 

<データ型> ::= 

  <既定義型> 

| <行型> 

| <パス解決利用者定義型名> 

| <参照型> 

| <集まり型> 

09 14 <既定義型> ::= 

  <文字列型> [ CHARACTER SET <文字集合指定> ] 

    [ <COLLATE句> ] 

| <各国文字列型> [ <COLLATE句> ] 

| <2進オクテット列型> 

| <数型> 

| <ブール型> 

| <日時型> 

| <時間隔型> 

<文字列型> ::= 

  CHARACTER [ <左括弧> <文字長> <右括弧> ] 

| CHAR [ <左括弧> <文字長> <右括弧> ] 

| CHARACTER VARYING <左括弧> <文字長> <右括弧> 

| CHAR VARYING <左括弧> <文字長> <右括弧> 

| VARCHAR <左括弧> <文字長> <右括弧> 

| <文字長大オブジェクト型> 

<文字長大オブジェクト型> ::= 

  CHARACTER LARGE OBJECT [ <左括弧> <文字長大オブジェクト長> <右括弧> ] 

| CHAR LARGE OBJECT [ <左括弧> <文字長大オブジェクト長> <右括弧> ] 

| CLOB [ <左括弧> <文字長大オブジェクト長> <右括弧> ] 

<各国文字列型> ::= 

  NATIONAL CHARACTER [ <左括弧> <文字長> <右括弧> ] 

| NATIONAL CHAR [ <左括弧> <文字長> <右括弧> ] 

| NCHAR [ <左括弧> <文字長> <右括弧> ] 

| NATIONAL CHARACTER VARYING <左括弧> <文字長> <右括弧> 

| NATIONAL CHAR VARYING <左括弧> <文字長> <右括弧> 

| NCHAR VARYING <左括弧> <文字長> <右括弧> 

| <各国文字長大オブジェクト型> 

163 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<各国文字長大オブジェクト型> ::= 

  NATIONAL CHARACTER LARGE OBJECT [ <左括弧> <文字長大オブジェクト長> <右括弧> ] 

| NCHAR LARGE OBJECT [ <左括弧> <文字長大オブジェクト長> <右括弧> ] 

| NCLOB [ <左括弧> <文字長大オブジェクト長> <右括弧> ] 

<2進オクテット列型> ::= 

  BINARY [ <左括弧> <長さ> <右括弧> ] 

| BINARY VARYING <左括弧> <長さ> <右括弧> 

| VARBINARY <左括弧> <長さ> <右括弧> 

| <長大オブジェクト2進オクテット列型> 

<長大オブジェクト2進オクテット列型> ::= 

  BINARY LARGE OBJECT [ <左括弧> <長大オブジェクト長> <右括弧> ] 

| BLOB [ <左括弧> <長大オブジェクト長> <右括弧> ] 

<数型> ::= 

  <真数型> 

| <概数型> 

<真数型> ::= 

  NUMERIC [ <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧> ] 

| DECIMAL [ <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧> ] 

| DEC [ <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧> ] 

| SMALLINT 

| INTEGER 

| INT 

| BIGINT 

<概数型> ::= 

  FLOAT [ <左括弧> <精度> <右括弧> ] 

| REAL 

| DOUBLE PRECISION 

<長さ> ::= 

 <符号なし整数> 

<文字長> ::= 

 <長さ> [ <文字長単位> ] 

<長大オブジェクト長> ::= 

  <長さ> [ <乗数> ] 

| <長大オブジェクト長トークン> 

<文字長大オブジェクト長> ::= 

 <長大オブジェクト長> [ <文字長単位> ] 

<文字長単位> ::= 

  CHARACTERS 

| OCTETS 

<精度> ::= 

164 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

 <符号なし整数> 

<位取り> ::= 

 <符号なし整数> 

<ブール型> ::= 

 BOOLEAN 

<日時型> ::= 

  DATE 

| TIME [ <左括弧> <時刻精度> <右括弧> ] [ <WITH又はWITHOUT TIME ZONE> ] 

| TIMESTAMP [ <左括弧> <時刻印精度> <右括弧> ] 

   [ <WITH又はWITHOUT TIME ZONE> ] 

<WITH又はWITHOUT TIME ZONE> ::= 

  WITH TIME ZONE 

| WITHOUT TIME ZONE 

<時刻精度> ::= 

 <時刻小数秒精度> 

<時刻印精度> ::= 

 <時刻小数秒精度> 

<時刻小数秒精度> ::= 

 <符号なし整数> 

<時間隔型> ::= 

 INTERVAL <時間隔修飾子> 

<行型> ::= 

 ROW <行型本体> 

<行型本体> ::= 

 <左括弧> <フィールド定義> [ { <コンマ> <フィールド定義> }... ] <右括弧> 

<参照型> ::= 

 REF <左括弧> <被参照型> <右括弧> [ <SCOPE句> ] 

<SCOPE句> ::= 

 SCOPE <表名> 

<被参照型> ::= 

 <パス解決利用者定義型名> 

<パス解決利用者定義型名> ::= 

 <利用者定義型名> 

<集まり型> ::= 

  <配列型> 

| <マルチ集合型> 

<配列型> ::= 

 <データ型> ARRAY 

  [ <左角括弧又は3文字表記> <最大基数> <右角括弧又は3文字表記> ] 

<最大基数> ::= 

165 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

 <符号なし整数> 

<マルチ集合型> ::= 

 <データ型> MULTISET 

構文規則 

1) CHARは,CHARACTERと等価とする。DECは,DECIMALと等価とする。INTは,INTEGERと

等価とする。VARCHARは,CHARACTER VARYINGと等価とする。NCHARは,NATIONAL 

CHARACTERと等価とする。CLOBは,CHARACTER LARGE OBJECTと等価とする。NCLOBは,

NATIONAL CHARACTER LARGE OBJECTと等価とする。VARBINARYは,BINARY VARYINGと

等価とする。BLOBは,BINARY LARGE OBJECTと等価とする。 

2) “NATIONAL CHARACTER”は,“CHARACTER SET CSN”の指定をもつ対応する<文字列型>と等

価とする。ここで,“CSN”は,処理系定義の<文字集合名>とする。 

3) <文字列型>が指定されるならば,その結果として生じる文字列型の照合順起源は,暗黙 (implicit) と

する。 

場合: 

a) <COLLATE句>が指定されるならば,それによって指定される照合順は,その文字列型の陽に指

定されるか又は暗に想定される文字集合CSに適用可能でなければならない。その照合順は,そ

の文字列型の宣言型照合順とする。 

b) そうでなければ,CSの文字集合照合順は,その文字列型の宣言型照合順とする。 

4) <長さ>の値は,0より大きくなければならない。 

5) <長さ>が省略されるならば,1の<長さ>が暗に想定される。 

6) <文字長単位>が指定されるならば,その文字列型の陽に指定されるか又は暗に想定される文字集合

の文字レパートリは,UCSでなければならない。 

7) <文字長> CLが指定され,CLが<文字長単位>を含まないならば,CHARACTERSが暗に想定され

る。 

8) <長大オブジェクト長>が省略されるならば,処理系定義の<長大オブジェクト長>が暗に想定される。 

9) <長大オブジェクト長> LOLの数値は,次のとおりに決定される。 

場合: 

a) LOLが<符号なし整数>を直に含み,<乗数>を直に含まないならば,<長大オブジェクト長>の数値

は,指定された<符号なし整数>の数値とする。 

b) LOLが<長大オブジェクト長トークン>を直に含むか,又は<符号なし整数>及び<乗数>を直に含

むならば,指定された<符号なし整数>の値,又は<符号なし整数>として解釈される<長大オブジ

ェクト長トークン>の<数字>の並びの数値をDとする。LOLの数値は,DとMSとの乗算の結果

として得られる数値とする。ここで,MSは,次による。 

i) 

<乗数>がKならば,1,024。 

ii) <乗数>がMならば,1,048,576。 

iii) <乗数>がGならば,1,073,741,824。 

iv) <乗数>がTならば,1,099,511,627,776。 

v) <乗数>がPならば,1,125,899,906,842,624。 

10) LOLは,0より大きくなければならない。 

11) <文字長大オブジェクト長> CLOLの数値は,CLOLに含まれる<長大オブジェクト長>の数値とする。 

166 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

12) CHARACTERは,データ型の文字列を指定する。 

13) 文字列中の文字は,1から数える。 

14) 場合: 

a) 陽に指定されるか又は暗に想定される<文字長単位>がCHARACTERならば,次による。 

場合: 

i) 

<文字列型>中にVARYINGも,LARGE OBJECTも,指定されないならば,その文字列の文字単

位での長さは,固定とし,<長さ>の値とする。 

ii) <文字列型>中にVARYINGが指定されるならば,その文字列の文字単位での長さは,可変とし,

0の最小長と<長さ>の値の最大長とをもつ。 

iii) <文字列型>中にLARGE OBJECTが指定されるならば,その文字列の文字単位での長さは,可

変とし,0の最小長と<長大オブジェクト長>の値の最大長とをもつ。 

b) そうでなければ,次による。 

i) 

<文字列型>中にVARYINGも,LARGE OBJECTも,指定されないならば,その文字列のオクテ

ット単位での長さは,固定とし,<長さ>の値とする。 

ii) <文字列型>中にVARYINGが指定されるならば,その文字列のオクテット単位での長さは,可

変とし,0の最小長と<長さ>の値の最大長とをもつ。 

iii) <文字列型>中にLARGE OBJECTが指定されるならば,その文字列のオクテット単位での長さ

は,可変とし,0の最小長と<長大オブジェクト長>の値の最大長とをもつ。 

15) <長さ>及び<長大オブジェクト長>の最大値は,処理系定義とする。<長さ>も,<長大オブジェクト

長>も,それらに対応する最大値を超えてはならない。 

16) <文字列型>が<定義域定義>又は<列定義>に含まれず,CHARACTER SETが指定されないならば,

少なくとも<SQL言語文字>中の全ての文字を含む処理系定義の文字集合を指定する処理系定義の<

文字集合指定>が暗に想定される。 

注記121 “11.34 <定義域定義>”及び“11.4 <列定義>”が,それぞれ,<定義域定義>又は<列定義

>に<文字列型>が含まれるときの結果を規定する。 

17) BINARYは,データ型の2進オクテット列を指定する。 

18) 2進オクテット列中のオクテットは,1から数える。 

19) 場合: 

a) <2進オクテット列型>中にVARYINGも,LARGE OBJECTも,指定されないならば,その2進オ

クテット列のオクテット単位での長さは,固定とし,<長さ>の値とする。 

b) <2進オクテット列型>中にVARYINGが指定されるならば,その2進オクテット列のオクテット

単位での長さは,可変とし,0の最小長と<長さ>の値の最大長とをもつ。 

c) <2進オクテット列型>中にLARGE OBJECTが指定されるならば,その2進オクテット列のオク

テット単位での長さは,可変とし,0の最小長と<長大オブジェクト長>の値の最大長とをもつ。 

20) <精度>が省略されるならば,処理系定義の<精度>が暗に想定される。 

21) <精度>の値は,0より大きくなければならない。 

22) <位取り>が省略されるならば,0の<位取り>が暗に想定される。 

23) <真数型>が<位取り>を含むならば,<位取り>の値は,その<真数型>に含まれる<精度>の値を超えて

はならない。 

24) 各真数型ENTに対して,次のような(ENT自体でもよい)ENTの標準形 (normal form) として知

167 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

られている処理系定義の真数型ENNF(ENT) が存在する。 

a) ENNF(ENT) のデータ型の名前がDECでも,INTでもない。 

b) ENNF(DEC) のデータ型の名前がENNF(DECIMAL) のデータ型の名前と同じである。 

c) ENNF(INT) のデータ型の名前がENNF(INTEGER) のデータ型の名前と同じである。 

d) ENNF(ENT) の精度,位取り及び基数が,それぞれ,ENTの精度,位取り及び基数と同じである。 

e) ENNF(ENNF(ENT)) がENNF(ENT) と同じである。 

25) 真数型DECIMAL及びNUMERICに対して,次による。 

a) <精度>の最大値は,処理系定義とする。<精度>は,この最大値を超えてはならない。 

b) <位取り>の最大値は,処理系定義とする。<位取り>は,この最大値を超えてはならない。 

26) NUMERICは,データ型の真数を指定し,<精度>及び<位取り>によって指定される10進の精度及

び位取りをもつ。 

27) 14 DECIMALは,データ型の真数を指定し,<位取り>によって指定される10進の位取りと,指定さ

れた<精度>の値以上の処理系定義の10進精度とをもつ。 

28) SMALLINT,INTEGER及びBIGINTは,データ型の真数を指定し,0の位取り,及び2進又は10進

の精度をもつ。2進精度か10進精度かの選択は,処理系定義とするが,三つの全てのデータ型に対

して同じ基数が選択されなければならない。SMALLINTの精度は,INTEGERの精度以下でなけれ

ばならず,BIGINTの精度は,INTEGERの精度以上でなければならない。 

29) 14 FLOATは,データ型の概数を指定し,指定された<精度>の値以上の2進精度をもつ。<精度>の最

大値は,処理系定義とする。<精度>は,この最大値を超えてはならない。 

30) REALは,データ型の概数を指定し,処理系定義の精度をもつ。 

31) DOUBLE PRECISIONは,データ型の概数を指定し,REALの処理系定義の精度より大きい処理系定

義の精度をもつ。 

32) <概数型> FLOAT,REAL及びDOUBLE PRECISIONに対して,指数の最大値及び最小値は,処理系

定義とする。 

33) 各概数型ANTに対して,次のような(ANT自体でもよい)ANTの標準形 として知られている処理

系定義の概数型ANNF(ANT) が存在する。 

a) ANNF(ANT) の精度がANTの精度と同じである。 

b) ANNF(ANNF(ANT)) がANNF(ANT) と同じである。 

34) <時刻精度>が指定されないならば,0が暗に想定される。<時刻印精度>が指定されないならば,6が

暗に想定される。 

35) <WITH又はWITHOUT TIME ZONE>が指定されないならば,WITHOUT TIME ZONEが暗に想定さ

れる。 

36) <時刻精度>の最大値及び<時刻印精度>の最大値は,6未満ではない処理系定義の同じ値でなければ

ならない。<時刻精度>及び<時刻印精度>の値は,その最大値を超えてはならない。 

37) 03 DATEの長さは,位置単位で10とする。TIME WITHOUT TIME ZONEの長さは,位置単位で,8

に<時刻小数秒精度>を加え,<時刻小数秒精度>が0よりも大きいならば,更に1を加えた値とする。

TIME WITH TIME ZONEの長さは,位置単位で,14に<時刻小数秒精度>を加え,<時刻小数秒精度

>が0よりも大きいならば,更に1を加えた値とする。TIMESTAMP WITHOUT TIME ZONEの長さ

は,位置単位で,19に<時刻小数秒精度>を加え,<時刻小数秒精度>が0よりも大きいならば,更に

1を加えた値とする。TIMESTAMP WITH TIME ZONEの長さは,位置単位で,25に<時刻小数秒精

168 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

度>を加え,<時刻小数秒精度>が0よりも大きいならば,更に1を加えた値とする。 

38) <開始フィールド>及び<終了フィールド>が両方とも,YEARか若しくはMONTHのいずれかである

か,又は<単一日時フィールド>がYEAR若しくはMONTHである<時間隔修飾子>を指定する<時間

隔型>は,年月時間隔 (year-month interval) 型とする。年月時間隔型ではない<時間隔型>は,日時刻

時間隔 (day-time interval) 型とする。 

注記122 時間隔データ型の長さは,“10.1 <時間隔修飾子>”の一般規則で規定している。 

39) 時間隔データ型のi番目の値は,i番目の<基本日時フィールド>に対応する。 

40) <データ型>が<参照型>ならば,次の条件のうちの少なくとも一つが真でなければならない。 

a) 利用者定義型名が,<被参照型>に単純に含まれる<利用者定義型名> UDTNである利用者定義型

記述子が存在する。UDTNは,構造型を識別しなければならない。 

b) <参照型>が<利用者定義型定義> UDTDの<メンバリスト>に含まれ,かつ,<被参照型>に単純に

含まれる<パス解決利用者定義型名>が,UDTDに含まれる<スキーマ解決利用者定義型名>と等価

である。 

41) <SCOPE句>に含まれる<表名>は,参照可能表を識別しなければならず,その表の構造型は,UDTN

でなければならない。 

42) <SCOPE句>中で指定される<表名> STNは,参照型の有効範囲を識別する。この有効範囲は,STN

によって識別される表中の全ての行から成る。 

43) <配列型> ATは,配列型 (array type) を指定する。ATに直に含まれる<データ型>は,配列型の要素

型 (element type) とする。ATに直に含まれる<最大基数>は,データ型ATの格納場所の最大基数 

(maximum cardinality) とする。最大基数が指定されないならば,処理系定義の最大基数が暗に想定さ

れる。 

44) <マルチ集合型> MTは,マルチ集合型 (multiset type) を指定する。MTに直に含まれる<データ型>

は,マルチ集合型の要素型 とする。 

45) <行型>は,行型を指定する。 

46) BOOLEANは,ブール型を指定する。 

47) <データ型> DT1が<データ型> DT2に含まれるならば,DT1の最上位データ型 (root data type) は,

DT1を含む最も外側の<データ型>とする。 

アクセス規則 

1) <利用者定義型名>,<参照型>,<行型>又は<集まり型> TYが指定され,かつ,TYが利用者定義型

UDTに用途依存ならば,次による。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,TYが<SQLスキーマ

文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>に適用可

能な権限は,UDTに関するUSAGE権限を含まなければならない。 

b) そうでなければ,現行の権限は,UDTに関するUSAGE権限を含まなければならない。 

一般規則 

1) 指定又は操作の結果が文字列値になり,その値の文字のいずれかがその宣言型の文字集合中にない

ならば,例外条件:データ例外 (data exception) − 文字がレパートリ中にない (character not in 

repertoire) が引き起こされる。 

2) UCSの文字レパートリを文字集合がもつ文字列型の項目が非文字の符号位置を含むことになる指定

background image

169 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

又は操作を試みるならば,例外条件:データ例外 − UCS文字列中に非文字 (noncharacter in UCS 

string) が引き起こされる。 

3) CHARACTERS以外の<文字長単位>が指定されるならば,<長さ>の値の,文字数への変換は,処理

系定義とする。 

4) <日時型>に対して,次による。 

場合: 

a) DATEが指定されるならば,そのデータ型は,<基本日時フィールド>の年,月及び日を含む。 

b) TIMEが指定されるならば,そのデータ型は,<基本日時フィールド>の時,分及び秒を含む。 

c) TIMESTAMPが指定されるならば,そのデータ型は,<基本日時フィールド>の年,月,日,時,

分及び秒を含む。 

d) WITH TIME ZONEが指定されるならば,そのデータ型は,時刻帯日時フィールドを含む。 

注記123 <日時型>のナルでない値の範囲内では,時刻帯時間隔の値は,-14:00から+14:00まで

の範囲中の値である。時刻帯時間隔の範囲は,自然の法則によってではなく,政府機

関の政治的決定によって制御されるので,多くの読者が予期する範囲よりも大きい。 

注記124 <日時型>は,上記の規則によって規定しているフィールド以外のフィールドを含まない。 

5) <日時型>に対して,陽に指定されるか又は暗に想定される<時刻精度>又は<時刻印精度>である<時

刻小数秒精度>は,SECOND <基本日時フィールド>中の小数点に続く10進桁数を定義する。 

6) 表9“日時フィールドの正しい値”は,日時値中の<基本日時フィールド>の値に関する制約を規定

する。TIMEZONE̲HOUR及びTIMEZONE̲MINUTEの値は,両方とも負の値でないか,又は両方と

も正の値でないかのいずれかとする。 

表9−日時フィールドの正しい値 

キーワード 

日時フィールドの正しい値 

YEAR 

0001〜9999 

MONTH 

01〜12 

DAY 

1〜31の範囲内。ただし,グレゴリオ暦での整形式の日付に対する規則に従い,MONTHフィ
ールド及びYEARフィールドの値によって更に制約される。 

HOUR 

00〜23 

MINUTE 

00〜59 

SECOND 

00〜61.9(N)。ここで,“9(N)”は,N個の数字“9”の並びを示し,Nは,<時刻小数秒精度>
によって指定される桁数を示す。 

TIMEZONE̲HOUR 

-14〜14 

TIMEZONE̲MINUTE 

-59〜59 

注記125 TIMEZONE̲HOURの値が-14か又は14のいずれかのとき,TIMEZONE̲MINUTEの値は,00に制限され

る。 

注記126 日時データ型は,グレゴリオ形式での日付を0001-01-01 CEから9999-12-31 CEまでの日付の範囲で格納す

ることを許す。SECONDの範囲は,最大二つの“うるう秒”を許す。うるう秒又は暦中の不連続点を含む
時間隔算術演算は,処理系定義の結果を生成する。 

7) 時間隔の値は,0,正の値又は負の値であってもよい。 

8) 時間隔データ型内の<基本日時フィールド>の値は,次のとおり制約される。 

a) 最初の<基本日時フィールド>に対応する値は,高々N桁の整数とする。ここで,Nは,<時間隔先

行フィールド精度>とする。 

b) 表10“時間隔フィールドの正しい絶対値”は,時間隔の値中のその他の<基本日時フィールド>の

background image

170 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

絶対値に対する制約を規定する。 

c) 時間隔の値が0ならば,その時間隔の全てのフィールドは,0とする。 

d) 時間隔の値が正の値ならば,その時間隔の全てのフィールドは,負の値ではなく,少なくとも一

つのフィールドは,正の値とする。 

e) 時間隔の値が負の値ならば,その時間隔の全てのフィールドは,正の値ではなく,少なくとも一

つのフィールドは,負の値とする。 

表10−時間隔フィールドの正しい絶対値 

キーワード 

INTERVALフィールドの正しい値 

MONTH 

0〜11 

HOUR 

0〜23 

MINUTE 

0〜59 

SECOND 

0〜59.9(N)。ここで,“9(N)”は,N個の数字“9”の並びを示し,Nは,<時間隔修飾子>中
の<時間隔小数秒精度>によって指定される桁数を示す。 

9) <データ型>が文字列型を指定するならば,文字列型記述子が作成され,次の項目を含む。 

a) データ型の名前(CHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECTの

いずれか)。 

b) 文字列型の文字単位での長さ又は最大長。 

c) 文字列型の文字集合のカタログ名,スキーマ名及び文字集合名。 

d) 文字列型の照合順のカタログ名,スキーマ名及び照合順名。 

10) <データ型>が2進オクテット列型を指定するならば,2進オクテット列型記述子が作成され,次の

項目を含む。 

a) データ型の名前(BINARY,BINARY VARYING又はBINARY LARGE OBJECTのいずれか)。 

b) 2進オクテット列型のオクテット単位での長さ又は最大長。 

11) <データ型> DTが<真数型>を指定するならば,数データ型記述子がDTに対して作成され,次の項

目を含む。 

a) DTの標準形のデータ型の名前(NUMERIC,DECIMAL,BIGINT,INTEGER又はSMALLINTの

いずれか)。 

b) DTの標準形の精度。 

c) DTの標準形の位取り。 

d) DTの標準形の精度及び位取りが10進で表現されるか又は2進で表現されるかを示す標識。 

e) DTによって指定されるデータ型の名前。略された名前(INT又はDEC)が指定されたならば,

記述子中に含まれる名前は,対応する完全形の名前(それぞれ,INTEGER又はDECIMAL)とす

る。 

f) 

指定されるならば,DTの陽に指定された精度。 

g) 指定されるならば,DTの陽に指定された位取り。 

12) <データ型> DTが<概数型>を指定するならば,数データ型記述子がDTに対して作成され,次の項

目を含む。 

a) DTの標準形のデータ型の名前(FLOAT,REAL又はDOUBLE PRECISIONのいずれか)。 

b) DTの標準形の精度。 

c) 精度が2進で表現されることを示す標識。 

171 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) DTによって指定されるデータ型の名前。 

e) 指定されるならば,DTの陽に指定された精度。 

13) <データ型>が<ブール型>を指定するならば,ブールデータ型記述子が作成され,ブール型の名前

(BOOLEAN)を含む。 

14) <データ型>が<日時型>を指定するならば,日時データ型記述子が作成され,次の項目を含む。 

a) 日時型の名前(DATE,TIME WITHOUT TIME ZONE,TIME WITH TIME ZONE,TIMESTAMP 

WITHOUT TIME ZONE又はTIMESTAMP WITH TIME ZONEのいずれか)。 

b) DATEが指定されないならば,<時刻小数秒精度>の値。 

15) <データ型>が<時間隔型>を指定するならば,時間隔データ型記述子が作成され,次の項目を含む。 

a) 時間隔データ型の名前(INTERVAL)。 

b) 時間隔データ型が年月時間隔か又は日時刻時間隔かを示す標識。 

c) <時間隔型>に単純に含まれる<時間隔修飾子>。 

16) <データ型>が<集まり型>ならば,集まり型記述子が作成される。<集まり型>によって指定される集

まりの種類(ARRAY又はMULTISETのいずれか)をKCとする。<集まり型>の要素型をETとす

る。ETの型指示子をETDとする。集まり型記述子は,型指示子EDT KC,KCの標識,ETの記述

子,及び(配列型の場合の)最大基数を含む。 

17) <行型> RTに対して,RTの次数には,最初は,0が設定される。“6.2 <フィールド定義>”の一般規

則が,RTのフィールドの定義の間に,RTの次数を規定する。 

18) <データ型>が<行型>ならば,行型記述子が作成される。行型記述子は,<行型>の全ての<フィール

ド定義>に対するフィールド記述子を含む。フィールド記述子は,<フィールド定義>が指定された

順にそれらに適用する“6.2 <フィールド定義>”の構文規則及び一般規則に従う。 

19) <参照型>は,参照型を識別する。 

20) 14 <データ型>が<参照型>ならば,参照型記述子が作成される。<被参照型>の名前をRDTNとする。

参照型記述子は,型指示子REF(RDTN) を含む。<SCOPE句>が指定されるならば,参照型記述子は,

参照型の有効範囲を識別するSTNを含む。 

注記127 利用者定義型に対する利用者定義型記述子は,“11.51 <利用者定義型定義>”の一般規則

で作成される。 

適合性規則 

1) 機能S023“基本構造型”なしでは,適合するSQL言語は,構造型を識別する<パス解決利用者定義

型名>を含んではならない。 

2) 機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール型>を含んではならな

い。 

3) 機能F555“拡張秒精度”なしでは,適合するSQL言語は,0を指定しない<時刻精度>を含んではな

らない。 

4) 機能F555“拡張秒精度”なしでは,適合するSQL言語は,0又は6のいずれかを指定しない<時刻

印精度>を含んではならない。 

5) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔型>を含んではなら

ない。 

6) 機能F421“各国文字”なしでは,適合するSQL言語は,<各国文字列型>を含んではならない。 

7) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<WITH又はWITHOUT TIME ZONE>を

172 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含んではならない。 

8) 機能S041“基本参照型”なしでは,適合するSQL言語は,<参照型>を含んではならない。 

9) 機能T051“行型”なしでは,適合するSQL言語は,<行型>を含んではならない。 

10) 機能S091“基本配列提供”なしでは,適合するSQL言語は,<配列型>を含んではならない。 

11) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合型>を含んではな

らない。 

12) 機能S281“入れ子集まり型”なしでは,適合するSQL言語は,<集まり型>を含む<データ型>を基

にする集まり型を含んではならない。 

13) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<列定義>に単純に含まれる<データ型>

に単純に含まれない<SCOPE句>を含んではならない。 

14) 機能S092“利用者定義型の配列”なしでは,適合するSQL言語は,<パス解決利用者定義型名>を

含む<データ型>を基にする<配列型>を含んではならない。 

15) 機能S272“利用者定義型のマルチ集合”なしでは,適合するSQL言語は,<パス解決利用者定義型

名>を含む<データ型>を基にする<マルチ集合型>を含んではならない。 

16) 機能S094“参照型の配列”なしでは,適合するSQL言語は,<参照型>を含む<データ型>を基にす

る<配列型>を含んではならない。 

17) 機能S274“参照型のマルチ集合”なしでは,適合するSQL言語は,<参照型>を含む<データ型>を

基にする<マルチ集合型>を含んではならない。 

18) 機能S096“省略可能な配列限界”なしでは,適合するSQL言語は,<最大基数>を直に含まない<配

列型>を含んではならない。 

19) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<長大オブジェクト2進オ

クテット列型>,<文字長大オブジェクト型>又は<各国文字長大オブジェクト型>を含んではならな

い。 

20) 機能T061“UCS提供”なしでは,適合するSQL言語は,<文字長単位>を含んではならない。 

21) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,BIGINTを含んではならない。 

22) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<長大オブジェ

クト2進オクテット列型>ではない<2進オクテット列型>を含んではならない。 

6.2 

<フィールド定義> 

この細分箇条は,ISO/IEC 9075-14の“6.2 <フィールド定義>”によって修正される。 

機能 

<フィールド定義> (<field definition>) は,行型のフィールドを定義する。 

形式 

<フィールド定義> ::= 

  <フィールド名> <データ型> 

構文規則 

1) <フィールド定義>を単純に含む<行型>をRTとする。 

2) <フィールド名>は,RTに単純に含まれる他のどの<フィールド定義>の<フィールド名>とも等価で

あってはならない。 

3) フィールドの宣言型は,<データ型>とする。 

4) <データ型>をDTとする。 

173 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) DTがCHARACTER又はCHARACTER VARYINGで,かつ,<文字集合指定>を指定しないならば,

<スキーマ文字集合指定>中に指定されるか又は暗に想定される<文字集合指定>が暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) 定義しているフィールドの宣言型を記述するデータ型記述子が作成される。 

2) <フィールド定義>を単純に含む<行型>で定義している行型RTの次数が1増やされる。 

3) 定義しているフィールドを記述するフィールド記述子が作成される。フィールド記述子は,次の項

目を含む。 

a) <フィールド名>。 

b) フィールドの宣言型のデータ型記述子。 

c) フィールドの順序位置。 

注記128 フィールドの順序位置は,この<フィールド定義>が処理される時点でのRTの次数と

等しい。 

4) フィールド記述子は,RTに対する行型記述子に含まれる。 

適合性規則 

1) 機能T051“行型”なしでは,適合するSQL言語は,<フィールド定義>を含んではならない。 

6.3 

<値式一次子> 

この細分箇条は,ISO/IEC 9075-14の“6.3 <値式一次子>”によって修正される。 

機能 

<値式一次子> (<value expression primary>) は,構文的に自己区切りである値を指定する。 

形式 

<値式一次子> ::= 

  <括弧付き値式> 

| <括弧なし値式一次子> 

<括弧付き値式> ::= 

  <左括弧> <値式> <右括弧> 

14 <括弧なし値式一次子> ::= 

  <符号なし値指定> 

| <列参照> 

| <集合関数指定> 

| <ウィンドウ関数> 

| <入れ子ウィンドウ関数> 

| <スカラ副問合せ> 

| <CASE式> 

| <CAST指定> 

| <フィールド参照> 

| <下位型扱い> 

| <メソッド呼出し> 

| <静的メソッド呼出し> 

174 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <NEW指定> 

| <属性又はメソッド参照> 

| <参照解決> 

| <集まり値構成子> 

| <配列要素参照> 

| <マルチ集合要素参照> 

| <次値式> 

| <ルーチン呼出し> 

<集まり値構成子> ::= 

  <配列値構成子> 

| <マルチ集合値構成子> 

構文規則 

1) 

14 <値式一次子>の宣言型は,それに単純に含まれる<値式>,<符号なし値指定>,<列参照>,<集合

関数指定>,<ウィンドウ関数>,<入れ子ウィンドウ関数>,<スカラ副問合せ>,<CASE式>,<CAST

指定>,<フィールド参照>,<下位型扱い>,<メソッド呼出し>,<静的メソッド呼出し>,<NEW指

定>,<属性又はメソッド参照>,<参照解決>,<集まり値構成子>,<配列要素参照>,<マルチ集合要

素参照>若しくは<次値式>の宣言型,又はそれに単純に含まれる<ルーチン呼出し>の実効的戻り型

とする。 

2) “A.B C”という形式の<括弧なし値式一次子>をNVEPとする。ここで,Aは,<スキーマ名>の形

式を,Bは,<識別子>の形式を,Cは,<SQL引数リスト>の形式を満たす。NVEPが“6.17 <メソッ

ド呼出し>”の形式,構文規則及びアクセス規則を満たすならば,NVEPは,<メソッド呼出し>とし

て扱われる。そうでなければ,NVEPは,<ルーチン呼出し>として扱われる。 

注記129 “6.17 <メソッド呼出し>”及び“10.4 <ルーチン呼出し>”の形式及び構文規則で定義さ

れる正式な文法は,<メソッド呼出し>と通常関数の呼出しとの間の曖昧さを必ずしもな

くさない。このような場合には,“6.17 <メソッド呼出し>”の形式,構文規則及びアクセ

ス規則を満たす<括弧なし値式一次子>が<メソッド呼出し>として扱われることを,上記

の構文規則が確実にしている。 

3) <集まり値構成子>の宣言型は,それが直に含む<配列値構成子>又は<マルチ集合値構成子>の宣言型

とする。 

アクセス規則 

なし。 

一般規則 

1) 

14 <値式一次子>の値は,それに単純に含まれる<値式>,<符号なし値指定>,<列参照>,<集合関数

指定>,<ウィンドウ関数>,<入れ子ウィンドウ関数>,<スカラ副問合せ>,<CASE式>,<CAST指

定>,<フィールド参照>,<下位型扱い>,<メソッド呼出し>,<静的メソッド呼出し>,<NEW指定

>,<属性又はメソッド参照>,<参照解決>,<集まり値構成子>,<配列要素参照>,<マルチ集合要素

参照>,<次値式>又は<ルーチン呼出し>の値とする。 

2) <集まり値構成子>の値は,それが直に含む<配列値構成子>又は<マルチ集合値構成子>の値とする。 

適合性規則 

なし。 

175 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6.4 

<値指定>及び<相手指定> 

この細分箇条は,ISO/IEC 9075-4の“6.1 <値指定>及び<相手指定>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“6.1 <値指定>及び<相手指定>”によって修正される。 

機能 

<値指定> (<value specification>) 及び<相手指定> (<target specification>) は,一つ以上の値,ホストパラメ

タ,SQLパラメタ,動的パラメタ又はホスト変数を指定する。 

形式 

<値指定> ::= 

  <定数> 

| <一般値指定> 

<符号なし値指定> ::= 

  <符号なし定数> 

| <一般値指定> 

04 <一般値指定> ::= 

  <ホストパラメタ指定> 

| <SQLパラメタ参照> 

| <動的パラメタ指定> 

| <埋込み変数指定> 

| <現行照合順指定> 

| CURRENT̲CATALOG 

| CURRENT̲DEFAULT̲TRANSFORM̲GROUP 

| CURRENT̲PATH 

| CURRENT̲ROLE 

| CURRENT̲SCHEMA 

| CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE <パス解決利用者定義型名> 

| CURRENT̲USER 

| SESSION̲USER 

| SYSTEM̲USER 

| USER 

| VALUE 

04 <単純値指定> ::= 

  <定数> 

| <ホストパラメタ名> 

| <SQLパラメタ参照> 

| <埋込み変数名> 

04 <相手指定> ::= 

  <ホストパラメタ指定> 

| <SQLパラメタ参照> 

| <列参照> 

| <相手配列要素指定> 

176 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <動的パラメタ指定> 

| <埋込み変数指定> 

04 <単純相手指定> ::= 

  <ホストパラメタ名> 

| <SQLパラメタ参照> 

| <列参照> 

| <埋込み変数名> 

<ホストパラメタ指定> ::= 

  <ホストパラメタ名> [ <標識パラメタ> ] 

<動的パラメタ指定> ::= 

  <疑問符> 

<埋込み変数指定> ::= 

  <埋込み変数名> [ <標識変数> ] 

<標識変数> ::= 

  [ INDICATOR ] <埋込み変数名> 

<標識パラメタ> ::= 

  [ INDICATOR ] <ホストパラメタ名> 

<相手配列要素指定> ::= 

  <相手配列参照> 

    <左角括弧又は3文字表記> <単純値指定> <右角括弧又は3文字表記> 

04 <相手配列参照> ::= 

  <SQLパラメタ参照> 

| <列参照> 

<現行照合順指定> ::= 

  COLLATION FOR <左括弧> <データ列値式> <右括弧> 

構文規則 

1) <標識パラメタ>の宣言型は,0の位取りをもつ真数でなければならない。 

2) 各<ホストパラメタ名>は,<SQLクライアントモジュール定義>に含まれなければならない。 

3) USERが指定されるならば,CURRENT̲USERが暗に想定される。 

注記130 SQL処理系が中核SQLに適合する環境で,その環境の処理系定義の文字集合の文字レパ

ートリが,SQL̲IDENTIFIERの文字レパートリと同一でない限り,文字国際化を提供す

るSQL機能にそのSQL処理系が適合する環境では,次のいずれかを含む適合するSQL

言語は,適合しなくなる。 

− 指定されるか又は暗に想定される<比較述語>で,<値指定> USERをUSER以外の<

値指定>と比較する<比較述語>。 

− 指定されるか又は暗に想定される代入で,(“9.2 格納代入”で定義される)“値”が

<値指定> USERを含む代入。 

4) CURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG,

CURRENT̲SCHEMA及びCURRENT̲PATHの宣言型は,文字列とする。その文字列が固定長か又

は可変長か,及び固定長ならば,その長さ,可変長ならば,その最大長は,処理系定義とする。そ

177 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の文字列の文字集合は,SQL̲IDENTIFIERとする。その宣言型照合順は,SQL̲IDENTIFIERの文字

集合照合順とし,照合順起源は,暗黙 (implicit) とする。 

5) <現行照合順指定>に単純に含まれる<データ列値式>の宣言型は,文字列でなければならない。<現

行照合順指定>の宣言型は,文字列とする。その文字列が固定長か又は可変長か,及び固定長ならば,

その長さ,可変長ならば,その最大長は,処理系定義とする。その文字列の文字集合は,

SQL̲IDENTIFIERとする。その照合順は,SQL̲IDENTIFIERの文字集合照合順とし,照合順起源は,

暗黙 とする。 

6) <値指定>又は<符号なし値指定> VALUEは,<定義域制約>に含まれなければならない。VALUEの

実現値の宣言型は,その定義域制約が属する定義域の宣言型とする。 

7) <列参照>である<相手指定>,<相手配列参照>又は<単純相手指定>は,遷移新変数列参照でなければ

ならない。 

注記131 “遷移新変数列参照”は,“6.6 <識別子鎖>”で定義している。 

8) <相手配列要素指定>が指定されるならば,次による。 

a) <相手配列参照>の宣言型は,配列型,又は元型が配列型の個別型でなければならない。 

b) <相手配列要素指定>の宣言型は,指定された<相手配列参照>の要素型とする。 

c) <単純値指定>の宣言型は,0の位取りをもつ真数でなければならない。 

9) <標識変数>の宣言型は,0の位取りをもつ真数でなければならない。 

10) 各<埋込み変数名>は,<埋込みSQL文>に含まれなければならない。 

11) 各<動的パラメタ指定>は,現行SQLセション中で<PREPARE文>の実行によって動的に準備される

<準備可能文>に含まれなければならない。 

12) CURRENT̲DEFAULT̲TRANSFORM̲GROUP,及びCURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE 

<パス解決利用者定義型名>の宣言型は,文字列とする。その文字列が固定長か又は可変長か,及び

固定長ならば,その長さ,可変長ならば,その最大長は,処理系定義とする。その文字列の文字集

合は,SQL̲IDENTIFIERとする。その宣言型照合順は,SQL̲IDENTIFIERの文字集合照合順とし,

照合順起源は,暗黙 とする。 

アクセス規則 

なし。 

一般規則 

1) <値指定>又は<符号なし値指定>は,表から選択されない値を指定する。 

2) <ホストパラメタ指定>は,<SQLクライアントモジュール定義>中のホストパラメタ,又はホストパ

ラメタ及び標識パラメタを識別する。 

3) 

04 <相手指定>が<ホストパラメタ指定>か,<SQLパラメタ参照>か,<列参照>か,<相手配列要素指

定>か,<動的パラメタ指定>か又は<埋込み変数指定>かどうかに従って,その<相手指定>は,それ

ぞれ,ホストパラメタ,出力SQLパラメタ,遷移新変数の列,配列型若しくは元型が配列型の個別

型である宣言型をもつ相手の要素,動的に準備される文の中で用いるパラメタ,又はホスト変数で

ある相手を指定する。 

4) <ホストパラメタ指定>が<標識パラメタ>を含み,かつ,標識パラメタの値が負の値ならば,<ホス

トパラメタ指定>によって指定される値は,ナル値とする。そうでなければ,<ホストパラメタ指定

>によって指定される値は,<ホストパラメタ名>によって識別されるホストパラメタの値とする。 

5) <定数>によって指定される値は,その<定数>によって表現される値とする。 

178 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) CURRENT̲USERによって指定される値は,次の値とする。 

場合: 

a) 現行利用者識別子があるならば,その現行利用者識別子の値。 

b) そうでなければ,ナル値。 

7) SESSION̲USERによって指定される値は,SQLセション利用者識別子の値とする。 

8) CURRENT̲ROLEによって指定される値は,次の値とする。 

場合: 

a) 現行役割名があるならば,その現行役割名の値。 

b) そうでなければ,ナル値。 

9) SYSTEM̲USERによって指定される値は,実行によってSYSTEM̲USERの<一般値指定>の評価を

引き起こした外部呼出し手続を含むSQLクライアントモジュールを実行したオペレーティングシ

ステム利用者を表現する処理系定義の文字列と等しい。 

10) CURRENT̲CATALOGによって指定される値は,現行既定カタログ名を表現する文字列とする。 

11) CURRENT̲SCHEMAによって指定される値は,現行既定修飾なしスキーマ名を表現する文字列と

する。 

12) CURRENT̲PATHによって指定される値は,<カタログ名>が<区切り識別子>で,かつ,<修飾なしス

キーマ名>が<区切り識別子>である<スキーマ名リスト>とする。各<スキーマ名>は,<空白>を介在

しないで,<コンマ>で区切って先行する<スキーマ名>と分離される。この<スキーマ名リスト>中で

参照されるスキーマは,現行SQLセション文脈のSQLパス中で,そのSQLパス中に現れる順序で

参照されるスキーマとする。 

13) <現行照合順指定>によって指定される値は,<データ列値式>の照合順の名前とする。 

14) <単純値指定>がナル値と評価されるならば,例外条件:データ例外 (data exception) − ナル値は許

されない (null value not allowed) が引き起こされる。 

15) 04 <単純相手指定>が<ホストパラメタ名>か,<SQLパラメタ参照>か,<列参照>か又は<埋込み変数

名>かどうかに従って,その<単純相手指定>は,それぞれ,ホストパラメタ,出力SQLパラメタ,

遷移新変数の列又はホスト変数である相手を指定する。 

注記132 <単純相手指定>には,決してナル値を代入できない。 

16) 長さ0の文字列の値が<相手指定>又は<単純相手指定>に代入されるならば,例外条件:データ例外 

− 長さ0の文字列 (zero-length character string) が引き起こされるかどうかは,処理系定義とする。 

17) <動的パラメタ指定>は,動的に準備される文で用いるパラメタを識別する。 

18) <埋込み変数指定>は,ホスト変数,又はホスト変数及び標識変数を識別する。 

19) <埋込み変数指定>が<標識変数>を含み,かつ,標識変数の値が負の値ならば,<埋込み変数指定>に

よって指定される値は,ナル値とする。そうでなければ,<埋込み変数指定>によって指定される値

は,<埋込み変数名>によって識別されるホスト変数の値とする。 

20) CURRENT̲DEFAULT̲TRANSFORM̲GROUPによって指定される値は,SQLセション文脈の既定変

換グループ名を表現する文字列とする。 

21) CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE <パス解決利用者定義型名>によって指定される値 

は,<パス解決利用者定義型名>によって指定されるデータ型に関連付けられた変換グループ名を表

現する文字列とする。 

適合性規則 

179 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 機能S071“関数及び型の名前解決でのSQLパス”なしでは, 適合するSQL言語は,CURRENT̲PATH

を含む<一般値指定>を含んではならない。 

2) 機能F251“定義域提供”なしでは,適合するSQL言語は,VALUEを含む<一般値指定>を含んでは

ならない。 

3) 機能F321“利用者認可”なしでは,適合するSQL言語は,CURRENT̲USER,SYSTEM̲USER又は

SESSION̲USERを含む<一般値指定>を含んではならない。 

注記133 CURRENT̲USERとUSERとは,意味的に同じであるが,機能F321“利用者認可”なし

では,CURRENT̲USERは,USERとして指定しなければならない。 

4) 機能T332“拡張役割”なしでは,適合するSQL言語は,CURRENT̲ROLEを含んではならない。 

5) 機能F762“CURRENT̲CATALOG”なしでは,適合するSQL言語は,CURRENT̲CATALOGを含む

<一般値指定>を含んではならない。 

6) 機能F763“CURRENT̲SCHEMA”なしでは,適合するSQL言語は,CURRENT̲SCHEMAを含む<

一般値指定>を含んではならない。 

7) 機能F611“標識データ型”なしでは,適合するSQL言語中で,<標識パラメタ>及び<標識変数>の

宣言型は, 処理系定義の同じデータ型でなければならない。 

8) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的パラメタ指定>を含んではなら

ない。 

9) 機能S097“配列要素代入”なしでは,適合するSQL言語は,<相手配列要素指定>を含んではなら

ない。 

10) 機能S241“変換関数”なしでは,適合するSQL言語は,CURRENT̲DEFAULT̲TRANSFORM̲GROUP

を含んではならない。 

11) 機能S241“変換関数”なしでは,適合するSQL言語は,CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE

を含んではならない。 

12) 機能F693“SQLセション及びクライアントモジュールの照合順”なしでは,適合するSQL言語は,

<現行照合順指定>を含んではならない。 

6.5 

<文脈型付き値指定> 

機能 

<文脈型付き値指定> (<contexually typed value specification>) は,データ型が文脈から推論されるべき値

を指定する。 

形式 

<文脈型付き値指定> ::= 

  <暗黙型付き値指定> 

| <既定値指定> 

<暗黙型付き値指定> ::= 

  <ナル指定> 

| <空指定> 

<ナル指定> ::= 

  NULL 

<空指定> ::= 

  ARRAY <左角括弧又は3文字表記> <右角括弧又は3文字表記> 

180 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| MULTISET <左角括弧又は3文字表記> <右角括弧又は3文字表記> 

<既定値指定> ::= 

  DEFAULT 

構文規則 

1) <空指定> ESが指定されるならば,ESが現れる文脈によって決定される要素型をETとする。ESの

宣言型DTは,次による。 

場合: 

a) ESがARRAYを単純に含むならば,ET ARRAY[0]。 

b) ESがMULTISETを単純に含むならば,ET MULTISET。 

ESは,CAST ( ES AS DT ) によって実効的に置き換えられる。 

注記134 このようなどの文脈でも,ESは,宣言型DTの式又は格納場所に一意に関連付けられ,

これによって,DTがESの宣言型になる。 

2) <ナル指定> NSの宣言型DTは,NSが現れる文脈によって決定される。NSは,CAST ( NS AS 

DT ) によって実効的に置き換えられる。 

注記135 このようなどの文脈でも,NSは,宣言型DTの式又は格納場所に一意に関連付けられ,

これによって,DTがNSの宣言型になる。 

3) <既定値指定> DSの宣言型DTは,DSが現れる文脈によって決定され,ある格納場所の記述子に含

まれる<既定値選択子> DOの宣言型とする。DSは,CAST( DO AS DT ) によって実効的に置き

換えられる。 

注記136 このようなどの文脈でも,DSは,宣言型DTの格納場所に一意に関連付けられ,これに

よって,DTがDSの宣言型になる。 

アクセス規則 

なし。 

一般規則 

1) <空指定>は,基数が0の集まりを指定する。 

2) <ナル指定>は,ナル値を指定する。 

3) <既定値指定>は,関連付けられた項目の既定値を指定する。 

適合性規則 

1) 機能S091“基本配列提供”なしでは,適合するSQL言語は,ARRAYを単純に含む<空指定>を含ん

ではならない。 

2) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,MULTISETを単純に含む<空指

定>を含んではならない。 

6.6 

<識別子鎖> 

この細分箇条は,ISO/IEC 9075-4の“6.2 <識別子鎖>”によって修正される。 

機能 

<識別子鎖> (<identifier chain>) は,<ピリオド>で区切られた識別子の連鎖の曖昧さをなくす。 

形式 

<識別子鎖> ::= 

  <識別子> [ { <ピリオド> <識別子> }... ] 

<基本識別子鎖> ::= 

181 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <識別子鎖> 

構文規則 

1) <識別子鎖>をICとする。 

2) ICに直に含まれる<識別子>の個数をNとする。 

3) ICに直に含まれる<識別子>を,左から右の順序で,Ii,1 ≤ i ≤ Nとする。 

4) PIC1 = I1とする。2からNまでの範囲の各jに対して,PICj = PICj-1 <ピリオド> Ijとする。PICjを

ICのj番目の部分識別子鎖 (partial identifier chain) と呼ぶ。 

5) Nと4との最小値をMとする。 

6) 列Cの宣言型が行型又は構造型ならば,Cは,細分可能 (refinable) という。 

7) SQLパラメタPの宣言型が行型又は構造型ならば,Pは,細分可能 という。 

8) 

04 1からMまでの範囲の高々一つのjに対して,PICjをICの基底 (basis) と呼び,jをICの基底長 

(basis length) と呼ぶ。基底の指示対象 (referent) は,表の列C若しくは期間P又はSQLパラメタ

SPとする。ICの基底,基底長,基底有効範囲及び基底指示対象は,次のとおりに決定される。 

a) N = 1ならば,次による。 

場合: 

i) 

<問合せ式> QEに単純に含まれる<ORDER BY句>にICが含まれ,陽に指定されるか又は暗に

想定される<列名>がICと等価な<導出列> DCを,QEに単純に含まれる<選択リスト>が直接含

むならば,PIC1は,候補基底とし,PIC1の有効範囲は,QEとし,PIC1の指示対象は,DCに

よって参照される列とする。 

ii) 

04 そうでなければ,ICは,I1と等価な<列名>をもつ列を含む表が関連付けられた一つ以上の

範囲変数の有効範囲中か,I1と等価な期間名をもつ期間を含む表が関連付けられた一つ以上の

範囲変数の有効範囲中か,又はI1と等価な<SQLパラメタ名>をもつSQLパラメタを含む<SQL

パラメタ宣言リスト>が関連付けられた<ルーチン名>の有効範囲中に含まれなければならない。

そのような最も内側の有効範囲をISとする。有効範囲がISであるそれらの範囲変数及び<ルー

チン名>を,可能な有効範囲標識 (possible scope tags) という句で示す。 

注記137 “範囲変数”は,“4.15.10 表を含む演算”で定義している。二つの異なる範囲変数

が等価である可能性がある。 

場合: 

1) 可能な有効範囲標識の個数が1ならば,その可能な有効範囲標識をIPSTとする。 

場合: 

A) IPSTが範囲変数RVならば,RVに関連付けられた表をTとする。 

I) 

<列名>がI1と等価なTのどの列Cに対しても,PIC1は,ICの候補基底とし,PIC1の

有効範囲は,RVの有効範囲とし,PIC1の指示対象は,Cとする。 

注記138 等価な列名をもつ二つ以上の列は,T内でのそれらの順序位置によって区別

される。 

II) 期間名がI1と等価なTのどの期間Pに対しても,PIC1は,ICの候補基底とし,PIC1の

有効範囲は,RVの有効範囲とし,PIC1の指示対象は,Pとする。 

B) 

04 IPSTが<ルーチン名>ならば,<SQLパラメタ名>がI1と等価なSQLパラメタをSPとす

る。PIC1は,ICの基底とし,基底長は,1とし,基底有効範囲は,SPの有効範囲とし,

基底指示対象は,SPとする。 

182 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) そうでなければ,それぞれの可能な有効範囲標識は,<結合表> JTに直接含まれる<表因子>

の範囲変数RVでなければならず,I1は,JT中の共通列名でなければならない。I1によって

識別されるJTの列をCとする。PIC1は,ICの候補基底とし,PIC1の有効範囲は,いずれ

かのRVの有効範囲とし,PIC1の指示対象は,Cとする。 

注記139 “共通列名”は,“7.7 <結合表>”で定義している。 

注記140 可能な有効範囲標識であるどの範囲変数RVも,全てが同じ<結合表>中で定義さ

れるので,同じ有効範囲をもつ。 

b) N > 1ならば,基底,基底長,基底有効範囲及び基底指示対象は,候補基底に関して,次のとおり

に定義する。 

i) 

ICが<ルーチン名>の有効範囲中に含まれ,その<ルーチン名>に関連付けられた<SQLパラメタ

宣言リスト>が,I1と等価な<SQLパラメタ名>をもつSQLパラメタSPを含むならば,PIC1

は,ICの候補基底とし,PIC1の有効範囲は,SPの有効範囲とし,PIC1の指示対象は,SPと

する。 

ii) N = 2で,<ルーチン名> RNの<被修飾識別子>とPIC1とが等価で,RNの有効範囲がICを含

み,かつ,RNに関連付けられた<SQLパラメタ宣言リスト>が,I2と等価な<SQLパラメタ名>

をもつSQLパラメタSPを含むならば,PIC2は,ICの候補基底とし,PIC2の有効範囲は,SP

の有効範囲とし,PIC2の指示対象は,SPとする。 

iii) N > 2で,<ルーチン名> RNの<被修飾識別子>とPIC1とが等価で,RNの有効範囲がICを含

み,かつ,RNに関連付けられた<SQLパラメタ宣言リスト>が,I2と等価な<SQLパラメタ名>

をもつ細分可能なSQLパラメタSPを含むならば,PIC2は,ICの候補基底とし,PIC2の有効

範囲は,SPの有効範囲とし,PIC2の指示対象は,SPとする。 

iv) 

04 N = 2で,かつ,有効範囲中にある露出する<相関名>とPIC1とが等価ならば,PIC1と等価

で,かつ,最も内側の有効範囲をもつ露出する<相関名>をENとする。 

1) ENに関連付けられた表中の列で,I2と等価で,かつ,共通列名でない<列名>をもつどの列

Cに対しても,PIC2は,ICの候補基底とし,PIC2の有効範囲は,ENの有効範囲とし,PIC2

の指示対象は,Cとする。 

2) ENに関連付けられた表中の期間で,I2と等価な期間名をもつどの期間Pに対しても,PIC2

は,ICの候補基底とし,PIC2の有効範囲は,ENの有効範囲とし,PIC2の指示対象は,Pと

する。 

v) N > 2で,かつ,有効範囲中にある露出する<相関名>とPIC1とが等価ならば,PIC1と等価で,

かつ,最も内側の有効範囲をもつ露出する<相関名>をENとする。ENに関連付けられた表中

の列で,I2と等価で,かつ,共通列名でない<列名>をもつどの細分可能な列Cに対しても,

PIC2は,ICの候補基底とし,PIC2の有効範囲は,ENの有効範囲とし,PIC2の指示対象は,

Cとする。 

vi) N = 2,3又は4で,かつ,有効範囲中にある露出する<表名又は問合せ名>とPICN-1とが等価

ならば,PICN-1と等価で,かつ,最も内側の有効範囲をもつ露出する<相関名>をENとする。 

1) ENに関連付けられた表中の列で,INと等価で,かつ,共通列名でない<列名>をもつどの列

Cに対しても,PICNは,ICの候補基底とし,PICNの有効範囲は,ENの有効範囲とし,PICN

の指示対象は,Cとする。 

2) ENに関連付けられた表中の期間で,INと等価な期間名をもつどの期間Pに対しても,PICN

183 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

は,ICの候補基底とし,PICNの有効範囲は,ENの有効範囲とし,PICNの指示対象は,P

とする。 

c) 最も内側の有効範囲をもつただ一つの候補基底CBが存在しなければならない。ICの基底は,CB

とする。基底長は,CBの長さとする。基底有効範囲は,CBの有効範囲とする。ICの指示対象は,

CBの指示対象とする。 

9) ICの基底長をBLとする。 

10) 04 BL < Nならば,ICは,次の式と等価とする。 

( PICBL ) <ピリオド> 

IBL+1 <ピリオド> ... 

<ピリオド> IN 

注記141 

04 この変換では,(PICBL) は,<左括弧><値式><右括弧>という形式の<値式一次子>と

して解釈される。PICBLは,<列参照>である<括弧なし値式一次子>か又は<SQLパラメ

タ参照>である<一般値指定>である<符号なし値指定>のいずれかの<値式一次子>の<値

式>である。識別子IBL+1,...,INは,“6.15 <フィールド参照>”及び“6.17 <メソッド呼

出し>”の形式及び構文規則を用いて解析される。 

11) <基本識別子鎖>は,基底が識別子鎖全体である<識別子鎖>でなければならない。 

12) 基底指示対象が列である<基本識別子鎖>は,列参照 (column reference) とする。基底長が2で,基底

有効範囲が<トリガ定義>で,その<トリガ定義>の<トリガ動作時期>がBEFOREで,かつ,<トリガ

定義>の<遷移新変数名>とI1とが等価ならば,その列参照は,遷移新変数列参照 (new transition 

variable column reference) とする。 

13) 基底指示対象が期間である<基本識別子鎖>は,期間参照 (period reference) とする。 

14) 04 基底指示対象がSQLパラメタである<基本識別子鎖>は,SQLパラメタ参照 (SQL parameter 

reference) とする。 

15) 期間参照でない<基本識別子鎖> BICのデータ型は,BICの基底指示対象のデータ型とする。 

16) <基本識別子鎖> BICの宣言型が文字列ならば,BICの宣言型の照合順起源は,次による。 

場合: 

a) その宣言型が,宣言型照合順DTCをもつならば,暗黙 (implicit) とする。 

b) そうでなければ,なし (none) とする。 

アクセス規則 

なし。 

一般規則 

1) <基本識別子鎖>をBICとする。 

2) BICが列参照ならば,BICは,BICの基底指示対象である列Cを参照する。 

3) BICが期間参照ならば,BICは,BICの基底指示対象である期間Pを参照する。 

4) BICがSQLパラメタ参照ならば,BICは,SQLパラメタSPを含むSQL呼出しルーチンの与えら

れた呼出しでのSPを参照する。 

適合性規則 

1) 機能T325“修飾付きSQLパラメタ参照”なしでは,適合するSQL言語は,最初の<識別子>が<ル

ーチン名>の<被修飾識別子>であるSQLパラメタ参照を含んではならない。 

6.7 

<列参照> 

184 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

機能 

<列参照> (<column reference>) は,列を参照する。 

形式 

<列参照> ::= 

  <基本識別子鎖> 

| MODULE <ピリオド> <被修飾識別子> <ピリオド> <列名> 

構文規則 

1) どの<列参照>も,後に続く構文規則で規定するとおり,修飾する表 (qualifying table) 及び修飾する

有効範囲 (qualifying scope) をもつ。 

2) <基本識別子鎖> BICである<列参照>は,列参照でなければならない。修飾する有効範囲は,BICの

基底有効範囲とし,修飾する表は,BICの基底指示対象を含む表とする。 

3) MODULEが指定されるならば, <被修飾識別子>は,<SQLクライアントモジュール定義> Mに含ま

れなければならず,Mに含まれる<一時表宣言>をもつ宣言局所一時表DLTTを識別しなければなら

ず,“MODULE <ピリオド> <被修飾識別子>”は,露出する<表名又は問合せ名> MPQIでなければ

ならず,<列名>は,DLTTの列を識別しなければならない。修飾する表は,MPQIによって識別さ

れる表とし,修飾する有効範囲は,MPQIの有効範囲とする。 

4) <列参照> CRが<表式> TEに含まれ,かつ,CRの修飾する有効範囲がTEを含むならば,CRは,

CRの修飾する表への外への参照 (outer reference) とする。 

5) CRによって参照される列をCとする。CRの宣言型は,次による。 

場合: 

a) Cの列記述子がデータ型を含むならば,そのデータ型とする。 

b) そうでなければ,Cの列記述子中に含まれる<定義域名>によって識別される定義域を記述する定

義域記述子中で識別されるデータ型とする。 

6) <問合せ指定>に含まれる<列参照>は,被問合せ列参照 (queried column reference) とする。 

7) QCRが被問合せ列参照ならば,次による。 

a) QCRの修飾する問合せ (qualifying query) は,QCRの修飾する表を定義する<表参照>を単純に含

む<FROM句>を単純に含む<問合せ指定>とする。 

b) QCRの修飾する問合せをQQとする。 

場合: 

i) 

QQがグループ化されていないか,又はQQに単純に含まれる<FROM句>若しくは<WHERE句

>にQCRが含まれるならば,QCRは,通常列参照 (ordinary column reference) とする。 

ii) QQに単純に含まれる<HAVING句>,<WINDOW句>又は<選択リスト>にQCRが含まれ,<集

合関数指定> SFSの集約化引数にQCRが含まれ,かつ,QQがSFSの集約問合せならば,QCR

は,グループ内変動列参照 (within-group-varying column reference) とする。 

iii) そうでなければ,QCRは,グループ不変列参照(group-invariant column reference)とする。 

8) QCRがグループ不変列参照ならば,QCRは,QCRの修飾する問合せのグループ化列に関数従属で

なければならない。 

アクセス規則 

1) <列参照>をCRとする。 

2) CRの修飾する表が実表又はビュー表ならば,次による。 

185 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) <表明定義>又は<検査制約定義>に直に含まれる<探索条件>にCRが含まれるならば,その<表明

定義>又は<検査制約定義>を含むスキーマを所有する<認可識別子>に適用可能な権限は,CRによ

って参照される列に関するREFERENCESを含まなければならない。 

b) そうでなければ,次による。 

場合: 

i) 

SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,CRが<SQLスキー

マ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>に適

用可能な権限は,CRによって参照される列に関するSELECTを含まなければならない。 

ii) そうでなければ,現行の権限は,CRによって参照される列に関するSELECTを含まなければ

ならない。 

3) CRの修飾する表が<データ変更差分表> DCDTの結果ならば,DCDTに単純に含まれる<データ変更

文>の当該表をSTとし,CRに対応するSTの列をSTCとする。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,CRが<SQLスキー

マ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>に適用

可能な権限は,STCに関するSELECTを含まなければならない。 

b) そうでなければ,現行の権限は,STCに関するSELECTを含まなければならない。 

一般規則 

1) 被問合せ列参照をQCRとする。QCRの修飾する表をQTとし,QCRの基底指示対象として参照さ

れるQTの列をCとする。QCRの値は,次のとおりに決定される。 

a) QCRが通常列参照ならば,QCRは,QTの与えられた行中のCの値を示す。 

b) QCRがグループ内変動列参照ならば,QCRは,<集合関数指定>の引数の入力を構成するために

用いるQCRの修飾する問合せの与えられたグループの行中のCの値を示す。 

c) QCRがグループ不変列参照ならば,QCRは,QCRの修飾する問合せの与えられたグループのど

の行中のCの値とも異ならない値を示す。QCRの最特定型が,文字列,時刻帯付き日時又は利用

者定義型ならば,正確な値が,処理系依存の方法で選ばれる。 

適合性規則 

1) 機能F821“局所表参照”なしでは,適合するSQL言語は,MODULEを単純に含む<列参照>を含ん

ではならない。 

2) 機能T301“関数従属性”なしでは,適合するSQL言語中で,QCRがグループ不変列参照ならば,

QCRは,QCRの修飾する問合せのグループ化列への参照でなければならない。 

6.8 

<SQLパラメタ参照> 

機能 

<SQLパラメタ参照> (<SQL parameter reference>) は,SQLパラメタを参照する。 

形式 

<SQLパラメタ参照> ::= 

  <基本識別子鎖> 

構文規則 

1) <SQLパラメタ参照>は,SQLパラメタ参照である<基本識別子鎖>でなければならない。 

186 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) <SQLパラメタ参照>の宣言型は,それが参照するSQLパラメタの宣言型とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

6.9 

<集合関数指定> 

機能 

<集合関数指定> (< set function specification>) は,引数への関数の適用によって導出される値を指定する。 

形式 

<集合関数指定> ::= 

  <集約関数> 

| <グループ化操作> 

<グループ化操作> ::= 

  GROUPING <左括弧> <列参照> 

    [ { <コンマ> <列参照> }... ] <右括弧> 

構文規則 

1) <集約関数>が<一般集合関数>を指定するならば,<一般集合関数>に単純に含まれる<値式>は,<集

合関数指定>又は<問合せ式>を含んではならない。 

2) <集約関数>が<2項集合関数>を指定するならば,<2項集合関数>に単純に含まれる<従属変数式>も,

<独立変数式>も,<集合関数指定>又は<問合せ式>を含んではならない。 

3) <集合関数指定> SFEに単純に含まれる<値式> VEは,SFEが<順序付け集合関数>でないか,又は

VEが<WITHIN GROUP指定>に単純に含まれるならば,SFEの集約化引数 (aggregated argument) と

する。そうでなければ,VEは,SFEの非集約化引数 (non-aggregated argument) とする。 

4) <集合関数指定> SFSの集約化引数に含まれる列参照CRを,SFSの集約化列参照 (aggregated column 

reference) と呼ぶ。 

5) <集約関数>が<FILTER句>を指定するならば,<FILTER句>に直に含まれる<探索条件>は,<集合関

数指定>を含んではならない。 

6) <集合関数指定> SFSの集約問合せ (aggregation query) は,次のとおりに決定される。 

場合: 

a) SFSが集約化列参照をもたないならば,SFSの集約問合せは,SFSを含む最も内側の<問合せ指

定>とする。 

b) そうでなければ,SFSの集約問合せは,SFSの集約化列参照の最も内側の修飾する問合せとする。 

7) SFSは,集約問合せをもたなければならず,その集約問合せの<HAVING句>,<WINDOW句>又は

<選択リスト>に含まれなければならない。 

8) 集約化列参照の修飾する問合せQQがSFSの集約問合せでないようなSFSの集約化列参照をCRと

する。QQがグループ化され,かつ,QQの<HAVING句>,<WINDOW句>又は<選択リスト>にSFS

が含まれるならば,CRは,QQのグループ化列に関数従属でなければならない。 

注記142 先行する構文規則は,“6.7 <列参照>”中のより包括的なものから得られる。 

187 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

9) <集約関数>が指定されるならば,結果の宣言型は,<集約関数>の宣言型とする。 

10) <グループ化操作>が指定されるならば,次による。 

a) <グループ化操作>を含む<集合関数指定>の集約問合せをTとする。各<列参照>は,Tのグループ

化列を参照しなければならない。 

b) 結果の宣言型は,処理系定義の精度及び0の位取りをもつ真数とする。 

c) 二つ以上の<列参照>が指定されるならば,<列参照>の個数をNとし,i番目の<列参照>をCRi, 

1 ≤ i ≤ Nとする。 

GROUPING ( CR1, ..., CRN-1, CRN ) 

は,次の指定と等価とする。 

CAST ( ( 2 * GROUPING ( CR1, ..., CRN-1 ) + GROUPING ( CRN ) ) AS 

IDT ) 

ここで,IDTは,結果の処理系定義の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) <集約関数>が指定されるならば,その結果は,<集約関数>の値とする。 

注記143 <グループ化操作>の値は,“7.9 <GROUP BY句>”で定義している構文変換によって計算

される。 

適合性規則 

1) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<グループ化操作>を含んでは

ならない。 

2) 機能T433“複数引数GROUPING関数”なしでは,適合するSQL言語は,二つ以上の<列参照>を含

む<グループ化操作>を含んではならない。 

3) 機能T301“関数従属性”なしでは,適合するSQL言語中で,CRがSFSの集約化列参照であり,

CRの修飾する問合せQQがSFSの集約問合せでなく,QQがグループ化され,かつ,QQの<HAVING

句>,<WINDOW句>又は<選択リスト>にSFSが含まれるならば,CRは,QQのグループ化列への

参照でなければならない。 

6.10 <ウィンドウ関数> 

細分箇条署名 

“<ウィンドウ関数>” [構文規則] ( 

パラメタ: “WINFUNC”, 

) 戻り: “TRANSFORM” 

機能 

<ウィンドウ関数> (<window function>) は,ウィンドウ関数を指定する。 

形式 

<ウィンドウ関数> ::= 

  <ウィンドウ関数種別> OVER <ウィンドウ名又は指定> 

<ウィンドウ関数種別> ::= 

  <順位関数種別> <左括弧> <右括弧> 

| ROW̲NUMBER <左括弧> <右括弧> 

188 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <集約関数> 

| <NTILE関数> 

| <LEAD又はLAG関数> 

| <FIRST̲VALUE又はLAST̲VALUE関数> 

| <NTH̲VALUE関数> 

<順位関数種別> ::= 

  RANK 

| DENSE̲RANK 

| PERCENT̲RANK 

| CUME̲DIST 

<NTILE関数> ::= 

  NTILE <左括弧> <タイル数> <右括弧> 

<タイル数> ::= 

  <単純値指定> 

| <動的パラメタ指定> 

<LEAD又はLAG関数> ::= 

  <LEAD又はLAG> <左括弧> <LEAD又はLAGの範囲> 

     [ <コンマ> <変位> [ <コンマ> <既定式> ] ] <右括弧> 

     [ <ナルの扱い> ] 

<LEAD又はLAG> ::= 

  LEAD | LAG 

<LEAD又はLAGの範囲> ::= 

  <値式> 

<変位> ::= 

  <真数定数> 

<既定式> ::= 

  <値式> 

<ナルの扱い> ::= 

  RESPECT NULLS | IGNORE NULLS 

<FIRST̲VALUE又はLAST̲VALUE関数> ::= 

  <FIRST̲VALUE又はLAST̲VALUE> <左括弧> <値式> <右括弧> [ <ナルの扱い> ] 

<FIRST̲VALUE又はLAST̲VALUE> ::= 

  FIRST̲VALUE | LAST̲VALUE 

<NTH̲VALUE関数> ::= 

  NTH̲VALUE <左括弧> <値式> <コンマ> <n番目の行> <右括弧> 

     [ <FROM FIRST又はFROM LAST> ] [ <ナルの扱い> ] 

<n番目の行> ::= 

  <単純値指定> 

| <動的パラメタ指定> 

<FROM FIRST又はFROM LAST> ::= 

189 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  FROM FIRST 

| FROM LAST 

<ウィンドウ名又は指定> ::= 

  <ウィンドウ名> 

| <句内ウィンドウ指定> 

<句内ウィンドウ指定> ::= 

  <ウィンドウ指定> 

構文規則 

1) この細分箇条の構文規則の適用では,WINFUNCをOFとする。この細分箇条の適用の結果は,適

切に,QSX又はSSSRXとし,それは,TRANSFORMとして戻される。 

2) <ウィンドウ関数>に単純に含まれる<集約関数>は,<仮説集合関数>を単純に含んではならない。 

3) <ウィンドウ関数>をOFとする。 

4) 場合: 

a) OFが<ORDER BY句>に含まれるならば,その<ORDER BY句>は,単純表問合せである<問合せ

式>に単純に含まれなければならない。“7.13 <問合せ式>”で規定するとおりに,単純表問合せの

構文変換の結果中に含まれる<表式>をTEとする。 

b) そうでなければ,OFは,<問合せ指定> QS又は<SELECT文:単一行> SSSRに直に含まれる<選

択リスト>に含まれなければならない。OFを含むQSに含まれる最も内側の<問合せ指定>をQSS

とする。QSS又はSSSRに直に含まれる<表式>をTEとする。 

5) OFは,外への参照又は<問合せ式>を含んではならない。 

6) <ウィンドウ名又は指定>をWNSとする。WNSによって定義されるウィンドウを記述するウィンド

ウ構造記述子をWDXとする。 

7) <NTILE関数>,<LEAD又はLAG関数>,<順位関数種別>又はROW̲NUMBERが指定されるなら

ば,次による。 

a) <NTILE関数>,<LEAD又はLAG関数>,RANK又はDENSE̲RANKが指定されるならば,WDX

のウィンドウ順序付け句WOCが存在しなければならない。 

b) WDXのウィンドウ枠付け句が存在してはならない。 

c) 場合: 

i) 

WNSが<ウィンドウ名>ならば,WNSをWNS1とする。 

ii) そうでなければ,WNSに含まれる<ウィンドウ指定詳細>をWNS1とする。 

d) RANK( ) OVER WNSは,次と等価とする。 

( COUNT (*) OVER ( WNS1 RANGE UNBOUNDED PRECEDING ) 

- COUNT (*) OVER ( WNS1 RANGE CURRENT ROW ) + 1 ) 

e) DENSE̲RANKが指定されるならば,次による。 

i) 

WOCに単純に含まれる<ソートキー>である<値式>の列挙をVE1, . . . , VENとする。 

ii) DENSE̲RANK( ) OVER WNSは,次の<ウィンドウ関数>と等価とする。 

COUNT (DISTINCT ROW ( VE1, ... , VEN ) ) 

OVER (WNS1 RANGE UNBOUNDED PRECEDING) 

f) 

ROW̲NUMBER( ) OVER WNSは,次の<ウィンドウ関数>と等価とする。 

COUNT (*) OVER (WNS1 ROWS UNBOUNDED PRECEDING) 

190 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) 処理系定義の精度をもつ概数型をANT1とする。PERCENT̲RANK( ) OVER WNSは,次の指定

と等価とする。 

CASE 

  WHEN COUNT(*) OVER (WNS1 RANGE BETWEEN UNBOUNDED PRECEDING 

                                              AND UNBOUNDED FOLLOWING) = 1 

  THEN CAST (0 AS ANT1) 

  ELSE 

        (CAST (RANK () OVER (WNS1) AS ANT1)−1) / 

        (COUNT (*) OVER (WNS1 RANGE BETWEEN UNBOUNDED PRECEDING 

                                              AND UNBOUNDED FOLLOWING)−1) 

END 

h) 処理系定義の精度をもつ概数型をANT2とする。CUME̲DIST( ) OVER WNSは,次の指定と等

価とする。 

 ( CAST ( COUNT (*) OVER 

      ( WNS1 RANGE UNBOUNDED PRECEDING ) AS ANT2 ) / 

    COUNT(*) OVER ( WNS1 RANGE BETWEEN UNBOUNDED PRECEDING 

                                          AND UNBOUNDED FOLLOWING ) ) 

i) 

<NTILE関数>が指定されるならば,次による。 

i) 

<タイル数>の宣言型は,位取り0の真数型でなければならない。 

ii) 結果の宣言型は,位取り0の処理系定義の真数型とする。 

j) 

<LEAD又はLAG関数>が指定されるならば,次による。 

i) 

<LEAD又はLAGの範囲>をVE1とし,VE1の宣言型をDTとする。 

ii) 場合: 

1) <変位>が指定されるならば,<変位>をOFFとする。OFFの宣言型は,位取り0の真数型で

なければならない。 

2) そうでなければ,1をOFFとする。 

iii) 場合: 

1) <既定式>が指定されるならば,<既定式>をVE2とする。VE2の宣言型は,DTと互換でなけ

ればならない。 

2) そうでなければ,CAST (NULL AS DT) をVE2とする。 

iv) <ナルの扱い>が指定されるならば,<ナルの扱い>をNTREATとする。そうでなければ,

RESPECT NULLSをNTREATとする。 

v) 結果の宣言型は,DTとする。 

8) <FIRST̲VALUE又はLAST̲VALUE関数>又は<NTH̲VALUE関数>が指定されるならば,次による。 

a) <NTH̲VALUE関数>が指定されるならば,次による。 

i) 

<FROM FIRST又はFROM LAST>が指定されないならば,FROM FIRSTが暗に想定される。 

ii) <n番目の行>の宣言型は,位取り0の処理系定義の真数型でなければならない。 

b) <ナルの扱い>が指定されないならば,RESPECT NULLSが暗に想定される。 

c) <値式>の宣言型をDTとする。結果の宣言型は,DTとする。 

9) OFを単純に含む<選択リスト>をSLとする。 

191 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記144 単純表問合せである<問合せ式>の<ORDER BY句>にOFが元々含まれるならば,“7.13 

<問合せ式>”で規定されるとおりに,単純表問合せの構文変換がこの規則の前に適用さ

れる。 

10) SLを単純に含む<問合せ指定>又は<SELECT文:単一行>の<集合限定子>をSQとする。<集合限定

子>がないならば,長さ0の文字列をSQとする。 

11) <句内ウィンドウ指定>が指定されるならば,次による。 

a) <ウィンドウ指定>をWSとする。 

b) WSを単純に含む<表式>又は<SELECT文:単一行>中の他のどの<ウィンドウ名>とも等価でない

処理系依存の<ウィンドウ名>をWSNとする。 

c) <ウィンドウ関数種別>をOFTとする。 

d) OFを次の指定に置き換えることによってSLから得られる<選択リスト> をSLNEWとする。 

OFT OVER WSN 

e) TEの<FROM句>,<WHERE句>,<GROUP BY句>及び<HAVING句>を,それぞれ,FC,WC,

GBC及びHCとする。<WHERE句>,<GROUP BY句>又は<HAVING句>のいずれかがないなら

ば,長さ0の文字列を,それぞれ,WC,GBC又はHCとする。 

f) 

場合: 

i) 

TEに直に含まれる<WINDOW句>がないならば,次の指定をWICNEWとする。 

WINDOW WSN AS WS 

ii) そうでなければ,TEに直に含まれる<WINDOW句>をWICとし,次の指定をWICNEWとす

る。 

WIC, WSN AS WS 

g) 次の指定をTENEWとする。 

FC WC GBC HC WICNEW 

h) 場合: 

i) 

OFが<問合せ指定> QSXに単純に含まれるならば,QSXは,次の指定と等価とする。 

SELECT SQ SLNEW TENEW 

ii) そうでなければ,OFは,<SELECT文:単一行> SSSRXに単純に含まれる。SSSRXの<選択相

手リスト>をSTLとする。SSSRXは,次の指定と等価とする。 

SELECT SQ SLNEW INTO STL TENEW 

12) <集約関数> AFを単純に含む<ウィンドウ関数>の宣言型は,AFの宣言型とする。 

13) <ウィンドウ名又は指定>を記述するウィンドウ構造記述子のウィンドウ順序付け句又はウィンド

ウ枠付け句が存在するならば,<ウィンドウ関数>に単純に含まれるどの<集約関数>も,DISTINCT

又は<順序付け集合関数>を指定してはならない。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) <ウィンドウ関数種別>が<NTILE関数>ならば,次による。 

i) 

<タイル数>の値をNTとする。 

ii) 場合: 

192 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) NTがナル値ならば,結果は,ナル値とする。 

2) NTが0以下ならば,例外条件:データ例外 (data exception) − NTILE関数の引数が正しく

ない (invalid argument for NTILE function) が引き起こされる。 

3) そうでなければ,次による。 

A) <ウィンドウ関数>を評価する現在行をRとする。 

B) Rに対するROW̲NUMBER() OVER WNSの評価結果をROWNUMとする。 

C) “7.11 <WINDOW句>”の一般規則で規定しているとおりに,WDXによって定義されるR

のウィンドウ枠中の行の集まりをTとする。 

D) Tの基数をCTとする。 

E) 場合: 

I) 

MOD(CT, NT) = 0ならば,各i,1 ≤ i ≤ NTに対して,(CT / NT) をNQiとする。 

II) そうでなければ,各i,1≤ i ≤ MOD(CT, NT) に対して,CEILING (CT / NT) をNQiとし,

各i,(MOD(CT, NT) + 1) ≤ i ≤ NTに対して,FLOOR (CT / NT) をNQiとする。 

F) 0をEND0 とする。各i,1 ≤ i ≤ NTに対して,(END (i‒1) + 1) をSTARTiとし,(END (i‒

1) + NQi) をENDiとする。 

G) <ウィンドウ関数>の値は,iとする。ここで,STARTi ≤ ROWNUM ≤ ENDiとする。 

b) <ウィンドウ関数種別>が<LEAD又はLAG関数>ならば,次による。 

i) 

OFFの値をOFFSETとし,VE2の値をDEFAULTとする。 

ii) “7.11 <WINDOW句>”の一般規則で規定しているとおりに,WDXによって定義される現在行

のウィンドウ枠中の行の集まりをTとする。 

iii) LEADが指定されるならば,次による。 

1) 場合: 

A) NTREATがRESPECT NULLSならば,WDXのウィンドウ順序付けに従って順序付けられ,

現在行に後続するTの各行に対してVE1を適用した結果である値の並びをTXとする。 

B) そうでなければ,WDXのウィンドウ順序付けに従って順序付けられ,現在行に後続するT

の行で,かつ,ナル値が取り除かれた各行に対してVE1を適用した結果である値の並びを

TXとする。 

2) TX中の値の個数をnとする。 

3) 場合: 

A) OFFSET > nならば,<ウィンドウ関数>の値は,DEFAULTとする。 

B) OFFSET = 0ならば,<ウィンドウ関数>の値は,現在行に対して評価したVE1の値とする。 

C) そうでなければ,<ウィンドウ関数>の値は,TXのm番目の値とする。ここで,m = OFFSET

とする。 

iv) LAGが指定されるならば,次による。 

1) 場合: 

A) NTREATがRESPECT NULLSならば,WDXのウィンドウ順序付けに従って順序付けられ,

現在行に先行するTの各行に対してVE1を適用した結果である値の並びをTXとする。 

B) そうでなければ,WDXのウィンドウ順序付けに従って順序付けられ,現在行に先行するT

の行で,かつ,ナル値が取り除かれた各行に対してVE1を適用した結果である値の並びを

TXとする。 

193 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) TX中の値の個数をnとする。 

3) 場合: 

A) OFFSET > nならば,<ウィンドウ関数>の値は,DEFAULTとする。 

B) OFFSET = 0ならば,<ウィンドウ関数>の値は,現在行に対して評価したVE1の値とする。 

C) そうでなければ,<ウィンドウ関数>の値は,TXのm番目の値とする。ここで,m = (n ‒ 

OFFSET + 1) とする。 

c) <ウィンドウ関数種別>が<FIRST̲VALUE又はLAST̲VALUE関数>ならば,次による。 

i) 

“7.11 <WINDOW句>”の一般規則で規定しているとおりに,WDXによって定義される現在行

のウィンドウ枠中の行の集まりをTとする。 

ii) 場合: 

1) RESPECT NULLSが指定されるか又は暗に想定されるならば,WDXのウィンドウ順序付けに

従って順序付けられたTの各行に対して<値式>を適用した結果である値の並びをTXとする。 

2) そうでなければ,WDXのウィンドウ順序付けに従って順序付けられたTの行で,かつ,ナル

値が取り除かれた各行に対して<値式>を適用した結果である値の並びをTXとする。 

iii) 場合: 

1) TXが空ならば,<ウィンドウ関数>の値は,ナル値とする。 

2) FIRST̲VALUEが指定されるならば,<ウィンドウ関数>の値は,TXの最初の値とする。 

2) そうでなければ,<ウィンドウ関数>の値は,TXの最後の値とする。 

d) <ウィンドウ関数種別>が<NTH̲VALUE関数>ならば,次による。 

i) 

<n番目の行>の値をRNとする。 

ii) 場合: 

1) RNがナル値ならば,結果は,ナル値とする。 

2) RNが0以下ならば,例外条件:データ例外 (data exception) − NTH̲VALUE関数の引数が

正しくない (invalid argument for NTH̲VALUE function) が引き起こされる。 

3) そうでなければ,次による。 

A) “7.11 <WINDOW句>”の一般規則で規定しているとおりに,WDXによって定義される現

在行のウィンドウ枠中の行の集まりをTとする。 

B) 場合: 

I) 

RESPECT NULLSが指定されるか又は暗に想定されるならば,WDXのウィンドウ順序付

けに従って順序付けられたTの各行に対して<値式>を適用した結果である値の並びを

TXとする。 

II) そうでなければ,WDXのウィンドウ順序付けに従って順序付けられたTの行で,かつ,

ナル値が取り除かれた各行に対して<値式>を適用した結果である値の並びをTXとする。 

C) TX中の値の個数をTXNとする。 

I) TXN = 0又はTXN < RNならば,<ウィンドウ関数>の値は,ナル値とする。 

II) 場合: 

1) FROM LASTが指定されるならば,<ウィンドウ関数>の値は,TXのm番目の値とす

る。ここで,m = (TXN ‒ RN + 1) とする。 

2) そうでなければ,<ウィンドウ関数>の値は,TXのm番目の値とする。ここで,m = RN

とする。 

194 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) そうでなければ,<ウィンドウ関数>の値は,<集約関数>の値とする。 

適合性規則 

1) 機能T611“基本OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ関数>を含んではなら

ない。 

2) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ名>を含んではならな

い。 

3) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,PERCENT̲RANK又はCUME̲DIST

を含んではならない。 

4) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,ウィンドウ順序付け句を含まない

ウィンドウ構造記述子をもつ<ウィンドウ名又は指定>を直に含み,かつ,ROW̲NUMBERを単純に

含む<ウィンドウ関数>を含んではならない。 

5) 機能T614“NTILE関数”なしでは,適合するSQL言語は,<NTILE関数>を含んではならない。 

6) 機能T615“LEAD又はLAG関数”なしでは,適合するSQL言語は,<LEAD又はLAG関数>を含

んではならない。 

7) 機能T616“LEAD及びLAG関数のナルの扱いの選択肢”なしでは,適合するSQL言語中で,<LEAD

又はLAG関数>は,<ナルの扱い>を含んではならない。 

8) 機能T617“FIRST̲VALUE又はLAST̲VALUE関数”なしでは,適合するSQL言語は,<FIRST̲VALUE

又はLAST̲VALUE関数>を含んではならない。 

9) 機能T618“NTH̲VALUE関数”なしでは,適合するSQL言語は,<NTH̲VALUE関数>を含んでは

ならない。 

6.11 <入れ子ウィンドウ関数> 

機能 

<入れ子ウィンドウ関数> (<nested window function>) は,<ウィンドウ関数>に単純に含まれる<集約関数

>の集約化引数中で入れ子になった関数を指定する。 

形式 

<入れ子ウィンドウ関数> ::= 

  <入れ子ROW̲NUMBER関数> 

| <VALUE̲OF式AT行> 

<入れ子ROW̲NUMBER関数> ::= 

  ROW̲NUMBER <左括弧> <行マーカ> <右括弧> 

<VALUE̲OF式AT行> ::= 

  VALUE̲OF <左括弧> <値式> AT <行マーカ式> 

     [ <コンマ> <VALUE̲OFの既定値> ] <右括弧> 

<行マーカ> ::= 

  BEGIN̲PARTITION 

| BEGIN̲FRAME 

| CURRENT̲ROW 

| FRAME̲ROW 

| END̲FRAME 

| END̲PARTITION 

195 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<行マーカ式> ::= 

  <行マーカ> [ <行マーカ差分> ] 

<行マーカ差分> ::= 

  <正符号> <行マーカ変位> 

| <負符号> <行マーカ変位> 

<行マーカ変位> ::= 

  <単純値指定> 

| <動的パラメタ指定> 

<VALUE̲OFの既定値> ::= 

  <値式> 

構文規則 

1) <入れ子ウィンドウ関数> NWFは,<ウィンドウ関数> WFに直に含まれる<集約関数> AFの集約化

引数中に含まれなければならない。 

2) <入れ子ROW̲NUMBER関数>の宣言型は,位取り0の処理系定義の真数型とする。 

3) <VALUE̲OF式AT行>が指定されるならば,それに直に含まれる<値式>の宣言型,及び<VALUE̲OF

の既定値>が指定されるならば,<VALUE̲OFの既定値>の宣言型から成る集合をDTSとする。DTS

をDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。それらの構文規則を適用

によって戻されるRESTYPEをDTとする。<VALUE̲OF式AT行>の宣言型は,DTとする。 

4) <行マーカ変位>の宣言型は,位取り0の真数型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) WFに関連付けられたウィンドウ構造記述子をWとする。NWFの値を計算する行をR1とする。W

によって決定されるR1のウィンドウ区画をPとし,Wによって決定されるR1のウィンドウ枠を

Fとし,行R1に対するNWFを計算している間のAFの引数の入力中の行をR2とする。 

注記145 この規則の条件が与えられるとき,AFの引数の入力は,R1によって決定されるウィン

ドウ枠Fとなる。したがって,R2は,F中にある。 

2) P中の行の個数をNPとする。Wによって決定される行の順序付けに従ったPの行の列挙を{ ROW1, 

ROW2, ... , ROWNP }とする。1からNPまでの範囲の各nに対して,nを行ROWnのウィンドウ区

画行番号 (window partition row number) という。 

3) NWFが<入れ子ROW̲NUMBER関数>ならば,次による。 

a) <行マーカ>をRMとする。 

b) 場合: 

i) 

RMがBEGIN̲PARTITIONならば,NWFの値は,1とする。 

ii) RMがEND̲PARTITIONならば,NWFの値は,NPとする。 

iii) RMがCURRENT̲ROWならば,NWFの値は,R1のウィンドウ区画行番号とする。 

iv) RMがBEGIN̲FRAMEならば,NWFの値は,Fの最初の行のウィンドウ区画行番号とする。 

v) RMがEND̲FRAMEならば,NWFの値は,Fの最後の行のウィンドウ区画行番号とする。 

vi) RMがFRAME̲ROWならば,NWFの値は,R2のウィンドウ区画行番号とする。 

注記146 ウィンドウ枠Fが空になる可能性がある。しかし,その場合には,NWFを評価する行

196 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

がなく,先行する一般規則が呼び出されない。したがって,RMがBEGIN̲FRAME,

END̲FRAME又はFRAME̲ROWのとき,Fが空でないことを仮定できる。 

4) NWFが<VALUE̲OF式AT行>ならば,次による。 

a) NWFに直に含まれる<値式>をVEとし,NWFに直に含まれる<行マーカ式>をRMEとする。 

b) RMEに含まれる<行マーカ>をRMとする。<入れ子ROW̲NUMBER関数> ROW̲NUMBER(RM)

の値をRNとする。 

c) 場合: 

i) 

NWFが<VALUE̲OFの既定値>を含むならば,<VALUE̲OFの既定値>の値をDEFとする。 

ii) そうでなければ,ナル値をDEFとする。 

d) 場合: 

i) 

RMEが<行マーカ差分>を含むならば,<行マーカ変位>の値をOFFとする。RMEが<正符号>

を含むならば,RN + OFFをMとする。そうでなければ,RN ‒ OFFをMとする。 

ii) そうでなければ,RNをMとする。 

e) 場合: 

i) 

Mがナル値,1未満又はNPを超えるならば,NWFの値は,DEFとする。 

注記147 OFFがナルのときに限り,Mがナルになり得る。参考である前の注記で説明したと

おり,Fが空のときに,NWFは,決して評価されないので,先行する規則は,Fが

空になる場合を含める必要がない。 

ii) そうでなければ,NWFの値は,ROWMに対して評価されるVEの値とする。 

適合性規則 

1) 機能T619“入れ子ウィンドウ関数”なしでは,適合するSQL言語は,<入れ子ウィンドウ関数>を

含んではならない。 

6.12 <CASE式> 

この細分箇条は,ISO/IEC 9075-14の“6.4 <CASE式>”によって修正される。 

機能 

<CASE式> (<case expression>) は,条件付けされた値を指定する。 

形式 

<CASE式> ::= 

  <CASE略式> 

| <CASE指定> 

<CASE略式> ::= 

  NULLIF <左括弧> <値式> <コンマ> <値式> <右括弧> 

| COALESCE <左括弧> <値式> 

    { <コンマ> <値式> }... <右括弧> 

<CASE指定> ::= 

  <単純CASE> 

| <探索CASE> 

<単純CASE> ::= 

  CASE <CASEオペランド> <単純WHEN句>... [ <ELSE句> ] END 

<探索CASE> ::= 

197 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  CASE <探索WHEN句>... [ <ELSE句> ] END 

<単純WHEN句> ::= 

  WHEN <WHENオペランドリスト> THEN <結果> 

<探索WHEN句> ::= 

  WHEN <探索条件> THEN <結果> 

<ELSE句> ::= 

  ELSE <結果> 

<CASEオペランド> ::= 

  <行値述語オペランド> 

| <OVERLAPS述語部分1> 

<WHENオペランドリスト> ::= 

  <WHENオペランド> [ { <コンマ> <WHENオペランド> }... ] 

14 <WHENオペランド> ::= 

  <行値述語オペランド> 

| <比較述語部分2> 

| <BETWEEN述語部分2> 

| <IN述語部分2> 

| <文字LIKE述語部分2> 

| <オクテットLIKE述語部分2> 

| <SIMILAR述語部分2> 

| <LIKE̲REGEX述語部分2> 

| <NULL述語部分2> 

| <限定比較述語部分2> 

| <NORMALIZED述語部分2> 

| <MATCH述語部分2> 

| <OVERLAPS述語部分2> 

| <DISTINCT述語部分2> 

| <MEMBER述語部分2> 

| <SUBMULTISET述語部分2> 

| <SET述語部分2> 

| <型述語部分2> 

<結果> ::= 

  <結果式> 

| NULL 

<結果式> ::= 

  <値式> 

構文規則 

1) <CASE式>が<CASE略式>を指定するならば,次による。 

a) <CASE略式>に一般に含まれる<値式>は,潜在的に非決定的か又はSQLデータを潜在的に修正す

るSQL呼出しルーチンが当該ルーチンになる<ルーチン呼出し>を一般に含んではならない。 

198 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) <CASE略式>に一般に含まれる<値式>は,<データ変更差分表>を含む<表一次子>を一般に含んで

はならない。 

c) NULLIF (V1, V2) は,次の<CASE指定>と等価とする。 

CASE WHEN 

V1=V2 THEN 

NULL ELSE V1 

END 

この構文上の変換の結果に,“8.2 <比較述語>”の適合性規則を適用する。 

d) COALESCE (V1, V2) は,次の<CASE指定>と等価とする。 

CASE WHEN V1 

IS NOT NULL THEN 

V1 ELSE 

V2 END 

e) n ≥ 3に対して,COALESCE (V1, V2, ..., Vn) は,次の<CASE指定>と等価とする。 

CASE WHEN V1 

IS NOT NULL THEN 

V1 ELSE COALESCE 

(V2, ..., 

Vn) END 

2) <CASE指定>が<単純CASE>を指定するならば,<CASEオペランド>をCOとする。 

a) COは,潜在的に非決定的か又はSQLデータを潜在的に修正するSQL呼出しルーチンが当該ルー

チンになる<ルーチン呼出し>を一般に含んではならない。 

b) COは,<データ変更差分表>を含む<表一次子>を一般に含んではならない。 

c) COが<OVERLAPS述語部分1>ならば,各<WHENオペランド>は,<OVERLAPS述語部分2>で

なければならない。COが<行値述語オペランド>ならば,どの<WHENオペランド>も,

<OVERLAPS述語 2>であってはならない。 

d) <単純WHEN句>の個数をNとする。 

e) 1からNまでの範囲の各iに対して,i番目の<単純WHEN句>の<WHENオペランドリスト>を

WOLiとする。WOLiに単純に含まれる<WHENオペランド>の個数をM (i) とする。1からM (i) 

までの範囲の各jに対して,WOLiに単純に含まれるj番目の<WHENオペランド>をWOi,jとす

る。 

f) 

1からNまでの範囲の各iに対して,かつ,1からM (i) までの範囲の各jに対して,次による。 

場合: 

i) 

WOi,jが<行値述語オペランド>ならば,次の文字列をEWOi,jとする。 

= WOi,j 

ii) そうでなければ,WOi,jをEWOi,jとする。 

g) i番目の<単純WHEN句>の<結果>をRiとする。 

h) <ELSE句>が指定されるならば,その<ELSE句>をCEECとする。そうでなければ,長さ0の文

字列をCEECとする。 

i) 

<単純CASE>は,i番目の<探索WHEN句>が次の形式をとる<探索CASE>と等価とする。 

199 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

WHEN ( CO EWOi,1 ) OR 

. . . OR 

( CO EWOi,M(i) ) 

THEN Ri 

j) 

等価な<探索CASE>の<ELSE句>は,次の形式をとる。 

CEEC 

k) この構文上の変換の結果に,“8 述語”の細分箇条の適合性規則を適用する。 

注記148 “8 述語”の具体的な細分箇条は,構文上の変換の結果として作成される述語によっ

て決まる。 

3) <CASE指定>中の少なくとも一つの<結果>は,<結果式>を指定しなければならない。 

4) <ELSE句>が指定されないならば,ELSE NULLが暗に想定される。 

5) <CASE指定>中の全ての<結果式>の宣言型の集合をDTSETとして,“9.5 データ型組合せの結果”

の構文規則を適用する。それらの構文規則の適用によって戻されるRESTYPEをRTとする。<CASE

指定>の宣言型は,RTとする。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) <結果>がNULLを指定するならば,その値は,ナル値とする。 

b) <結果>が<値式>を指定するならば,その値は,その<値式>の値とする。 

2) 場合: 

a) <CASE指定>中のいずれかの<探索WHEN句>の<探索条件>の値が真 (True) ならば,<CASE式>

の値は,<探索条件>が真 と評価される最初の(最も左側の)<探索WHEN句>の<結果>の値を,

<CASE指定>の宣言型に型変換した値とする。 

b) <CASE指定>中のどの<探索条件>も,真 と評価されないならば,<CASE式>の値は,陽に指定さ

れるか又は暗に想定される<ELSE句>の<結果>の値を,<CASE指定>の宣言型に型変換した値と

する。 

適合性規則 

1) 機能F262“拡張CASE式”なしでは,適合するSQL言語中で,<単純CASE>に直に含まれる<CASE

オペランド>は,単一の<共通値式>又は<ブール述語オペランド>である<行値構成子述語オペランド

>の<行値述語オペランド>でなければならない。 

2) 機能F262“拡張CASE式”なしでは,適合するSQL言語中で,<単純WHEN句>に含まれる<WHEN

オペランド>は,単一の<共通値式>又は<ブール述語オペランド>である<行値構成子述語オペランド

>の<行値述語オペランド>でなければならない。 

3) 機能F263“単純CASE式中のコンマで区切られた述語”なしでは,適合するSQL言語中で,<単純

WHEN句>に含まれる<WHENオペランドリスト>は,ただ一つの<WHENオペランド>を単純に含

まなければならない。 

6.13 <CAST指定> 

この細分箇条は,ISO/IEC 9075-9の“6.2 <CAST指定>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“6.5 <CAST指定>”によって修正される。 

background image

200 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

機能 

<CAST指定> (<CAST specification>) は,データ変換を指定する。 

形式 

14 <CAST指定> ::= 

  CAST <左括弧> <CASTオペランド> AS <CAST相手> <右括弧> 

<CASTオペランド> ::= 

  <値式> 

| <暗黙型付き値指定> 

<CAST相手> ::= 

  <定義域名> 

| <データ型> 

構文規則 

1) 場合: 

a) <定義域名>が指定されるならば,指定された定義域のデータ型をTDとする。 

b) <データ型>が指定されるならば,<データ型>によって識別されるデータ型をTDとする。<デー

タ型>は,<COLLATE句>を含んではならない。 

2) 

09 <CAST指定>の結果の宣言型は,TDとする。 

3) 

14 <CASTオペランド>が<値式>ならば,<値式>の宣言型をSDとする。 

4) ある列をCとし,<CAST指定> CSの<CASTオペランド>をCOとする。Cを識別する単一の列参

照,又はCが末端の列である単一の<CAST指定> CS1からCOが構成されるならば,Cは,CSの

末端の列 (leaf column) とする。 

5) <CASTオペランド>が<空指定>を指定するならば,TDは,集まり型,又は元型が集まり型の個別型

でなければならない。 

6) 

09 14 <CASTオペランド>が<値式>ならば,<CAST指定>中のTDとSDとの正しい組合せは,次の表

によって与えられる。“Y”は,制限なしで,組合せが構文上正しいことを示す。“M”は,この細分

箇条中の他の構文規則を満たすことを条件として,組合せが正しいことを示す。“N”は,組合せが

正しくないことを示す。 

SD 

TD 

EN 

AN 

TS 

YM 

DT 

BO 

UDT 

RT 

CT 

RW 

EN 

AN 

TS 

YM 

DT 

BO 

UDT 

RT 

CT 

RW 

201 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ここで, 
 

EN = 真数 

AN = 概数 

C = 文字(固定長若しくは可変長,又は文字長大オブジェクト) 

D = 日付 

T = 時刻 

TS = 時刻印 

YM = 年月時間隔 

DT = 日時刻時間隔 

BO = ブール 

UDT = 利用者定義型 

B = 2進オクテット(固定長若しくは可変長,又は2進オクテット長大オブジェクト) 

RT = 参照型 

CT = 集まり型 

RW = 行型 

7) TDが時間隔で,かつ,SDが真数ならば,TDは,単一の<基本日時フィールド>だけを含まなけれ

ばならない。 

8) TDが真数で,かつ,SDが時間隔ならば,SDは,単一の<基本日時フィールド>だけを含まなけれ

ばならない。 

9) SDが文字列で,かつ,TDが固定長,可変長又は長大オブジェクトの文字列ならば,SD及びTDの

文字レパートリは,同じでなければならない。 

10) TDが固定長,可変長又は長大オブジェクトの文字列ならば,<CAST指定>の宣言型照合順は,TD

の文字集合の文字集合照合順とし,その照合順起源は,暗黙 (implicit) とする。 

11) <CASTオペランド>が<値式>で,かつ,SD又はTDのいずれかが利用者定義型ならば,TDがSD

の上位型であるか,又は次の全てを満たすようなデータ型Pが存在するかのいずれかでなければな

らない。 

a) Pの型指示子がSDの型優先順位リスト中にある。 

b) 変換元データ型としてPを含み,かつ,相手データ型としてTDを含む利用者定義型変換記述子

をもつ利用者定義型変換CFPが存在する。 

c) 利用者定義型変換記述子が相手データ型としてTDをもつ利用者定義型変換CFQの利用者定義型

変換記述子中に変換元データ型として含まれる他のどのデータ型Qの型指示子も,SDの型優先

順位リスト中でPの型指示子に先行しない。 

12) <CASTオペランド>が<値式>で,かつ,SD又はTDのいずれかが参照型ならば,次による。 

a) SD及びTDの被参照型を,それぞれ,RTSD及びRTTDとする。 

b) <データ型>が指定され,<SCOPE句>を含むならば,その有効範囲をSTDとする。そうでなけれ

ば,空であるかもしれないが,SDの参照型記述子に含まれる有効範囲をSTDとする。 

c) RSTDとRTTDとが互換であるか,又は次の全てを満たすような,SDの型優先順位リスト中のデ

ータ型Pが存在するかのいずれかでなければならない。 

i) 

変換元データ型としてPを含み,かつ,相手データ型としてTDを含む利用者定義型変換記述

子をもつ利用者定義型変換CFPが存在する。 

ii) 利用者定義型変換記述子が相手データ型としてTDをもつ利用者定義型変換CFQの利用者定義

型変換記述子中に変換元データ型として含まれる他のどのデータ型Qの型指示子も,SDの型

202 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

優先順位リスト中でPの型指示子に先行しない。 

13) SDが集まり型ならば,次による。 

a) SDの要素型をESDとする。 

b) TDの要素型をETDとする。 

次の<CAST指定>が正しい<CAST指定>でなければならない。 

CAST ( VALUE AS ETD ) 

ここで,VALUEは,宣言型ESDの<値式>とする。 

14) SDが行型ならば,次による。 

a) SDの次数をDSDとする。 

b) TDの次数をDTDとする。 

c) DSDは,DTDと等しくなければならない。 

d) SD及びTDのi番目のフィールドを,それぞれ,FSDi及びFTDi,1 ≤ i ≤ DSDとする。 

e) FSDiの宣言型及びFTDiの宣言型を,それぞれ,TFSDi及びTFTDi,1 ≤ i ≤ DSDとする。 

f) 

1からDSDまでの範囲のiに対して,次の<CAST指定>が正しい<CAST指定>でなければならな

い。 

CAST ( VALUEi AS 

TFTDi ) 

ここで,VALUEiは,宣言型TFSDiの任意の<値式>とする。 

15) 14 <定義域名>が指定されるならば,<定義域名>によって識別される定義域をDとする。<定義域名

>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Dの記述

子を含んでいなければならない。 

アクセス規則 

1) <定義域名>が指定されるならば,次による。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<CAST指定>が<SQL

スキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>

の適用可能な権限は,<定義域名>によって識別される定義域に関するUSAGEを含まなければな

らない。 

b) そうでなければ,現行の権限は,<定義域名>によって識別される定義域に関するUSAGEを含ま

なければならない。 

2) <CASTオペランド>が<値式>で,かつ,SD又はTDのいずれかが利用者定義型又は参照型ならば,

次による。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<CAST指定>が<SQL

スキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>

の適用可能な権限は,CFPに関するEXECUTEを含まなければならない。 

b) そうでなければ,現行の権限は,CFPに関するEXECUTEを含まなければならない。 

一般規則 

1) <CAST指定>をCSとする。<CASTオペランド>が<値式> VEならば,VEの値をSVとする。 

2) 場合: 

203 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) <CASTオペランド>がNULLを指定するならば,CSの結果は,ナル値とし,この細分箇条のこれ

以降の一般規則を適用しない。 

b) <CASTオペランド>が<空指定>を指定するならば,CSの結果は,宣言型TDの空の集まりとし,

この細分箇条のこれ以降の一般規則を適用しない。 

c) SVがナル値ならば,CSの結果は,ナル値とし,この細分箇条のこれ以降の一般規則を適用しな

い。 

3) 

14 SD又はTDのいずれかが利用者定義型ならば,次による。 

場合: 

a) TDがSDの上位型ならば,TVは,SVとする。 

b) そうでなければ,次による。 

i) 

CFPの利用者定義型変換記述子に含まれる型変換関数をCPとする。 

ii) <値式>である単一のSQL引数をもつ静的SQL引数リストをSALとする。SALをSTATIC SQL 

ARG LISTとして,CPをSUBJECT ROUTINEとして,“10.4 <ルーチン呼出し>”の一般規則を

適用し,CPの呼出しの結果である値TRを生成する。 

iii) 場合: 

1) TDが利用者定義型ならば,TVは,TRとする。 

2) そうでなければ,TVは,次のCAST指定の結果とする。 

CAST (TR AS TD) 

4) SD又はTDのいずれかが参照型ならば,次による。 

場合: 

a) RSTDとRTTDとが互換ならば,次による。 

i) 

TVは,SVとする。 

ii) TVの参照型記述子中の有効範囲は,STDとする。 

b) そうでなければ,次による。 

i) 

CFPの利用者定義型変換記述子に含まれる型変換関数をCPとする。 

ii) <値式>である単一のSQL引数をもつ静的SQL引数リストをSALとする。SALをSTATIC SQL 

ARG LISTとして,CPをSUBJECT ROUTINEとして,“10.4 <ルーチン呼出し>”の一般規則を

適用し,CPの呼出しの結果である値TVを生成する。 

iii) TVの参照型記述子中の有効範囲は,STDとする。 

5) SDが配列型で,かつ,TDが配列型又はマルチ集合型のいずれかならば,次による。 

場合: 

a) SVの基数をSCとする。 

b) 1からSCまでの範囲のiに対して,次の<CAST指定>が適用され,値TVEiを生成する。 

CAST ( VE[i] AS ETD ) 

c) TDが配列型ならば,TDの最大基数をTCとする。 

場合: 

i) 

SCがTCを超えるならば,例外条件:データ例外 (data exception) − 配列データ,右切捨て 

(array data, right truncation) が引き起こされる。 

ii) そうでなければ,TVは,要素TVEi,1 ≤ i ≤ SCをもつ配列とする。 

d) TDがマルチ集合型ならば,TVは,要素TVEi,1 ≤ i ≤ SCをもつマルチ集合とする。 

204 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) SDがマルチ集合型で,かつ,TDが配列型又はマルチ集合型のいずれかならば,次による。 

a) SVの基数をSCとする。 

b) TDが配列型ならば,TDの最大基数をTCとする。 

場合: 

i) 

SCがTCを超えるならば,例外条件:データ例外 − 配列データ,右切捨て が引き起こされ

る。 

ii) そうでなければ,TVは,次の配列値構成子の評価の結果として得られる配列とする。 

ARRAY ( ( SELECT CAST ( M.E AS ETD ) FROM UNNEST (VE) AS M(E) )) 

注記149 マルチ集合から配列型へのこの型変換は,ORDER BYなしのSELECT FROMを用い

るので,結果中の要素の順序は,処理系依存である。 

c) TDがマルチ集合型ならば,TVは,次のマルチ集合値構成子の評価の結果として得られるマルチ

集合とする。 

MULTISET ( ( SELECT CAST ( M.E AS ETD ) FROM UNNEST (VE) AS 

M(E) ) ) 

7) SDが行型ならば,TVは,次の行値構成子の評価の結果として得られる行とする。 

ROW ( CAST ( VE.FSD1 AS TFTD1 ), 

       CAST ( VE.FSD2 AS TFTD2 ), 

    ... 

       CAST ( VE.FSDDSD AS TFTDDSD ) ) 

8) TDが真数ならば,次による。 

場合: 

a) SDが真数又は概数ならば,次による。 

場合: 

i) 

丸め又は切捨てが必要ならば,その後で,上位有効桁を失わないSVの表現がデータ型TD中に

存在するならば,TVは,その表現とする。丸めるか又は切り捨てるかの選択は,処理系定義と

する。 

ii) そうでなければ,例外条件:データ例外 − 数値範囲外 (numeric value out of range) が引き起こ

される。 

b) SDが文字列ならば,SVは,先行又は後続の<空白>を取り除いたSVに置き換えられる。 

場合: 

i) 

“5.3 <定数>”中の<定数>に対する規則によって定義されるとおりに,SVが<符号付き数定数>

を構成しないならば,例外条件:データ例外 − 型変換での文字値が正しくない (invalid 

character value for cast) が引き起こされる。 

ii) そうでなければ,その<符号付き数定数>をLTとする。<CAST指定>は,次の指定と等価とす

る。 

CAST ( LT AS TD ) 

c) SDが時間隔データ型ならば,次による。 

場合: 

i) 

上位有効桁を失わないSVの表現がデータ型TD中に存在するならば,TVは,その表現とする。 

ii) そうでなければ,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

205 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

9) TDが概数ならば,次による。 

場合: 

a) SDが真数又は概数ならば,次による。 

場合: 

i) 

丸め又は切捨てが必要ならば,その後で,上位有効桁を失わないSVの表現がデータ型TD中に

存在するならば,TVは,その表現とする。丸めるか又は切り捨てるかの選択は,処理系定義と

する。 

ii) そうでなければ,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

b) SDが文字列ならば,SVは,先行又は後続の<空白>を取り除いたSVに置き換えられる。 

場合: 

i) 

“5.3 <定数>”中の<定数>に対する規則によって定義されるとおりに,SVが<符号付き数定数>

を構成しないならば,例外条件:データ例外 − 型変換での文字値が正しくない が引き起こさ

れる。 

ii) そうでなければ,その<符号付き数定数>をLTとする。<CAST指定>は,次の指定と等価とす

る。 

CAST ( LT AS TD ) 

10) TDが固定長文字列ならば,TDの文字単位での長さをLTDとする。 

場合: 

a) SDが真数ならば,次による。 

場合: 

i) 

“5.3 <定数>”中の<真数定数>の定義に適合する文字列で,位取りがSDの位取りと同じで,か

つ,解釈値がSVの絶対値である最も短い文字列をYPとする。 

ii) 場合: 

1) SVが0未満ならば,'‒' || YPの結果をYとする。 

2) そうでなければ,YPをYとする。 

iii) 場合: 

1) TDの文字レパートリ中にない<SQL言語文字>をYが含むならば,例外条件:データ例外 − 

型変換での文字値が正しくない が引き起こされる。 

2) Yの文字単位での長さLYがLTDと等しいならば,TVは,Yとする。 

3) Yの文字単位での長さLYがLTD未満ならば,TVは,LTD ‒ LY個の<空白>で右側を拡張し

たYとする。 

4) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て (string data, right 

truncation) が引き起こされる。 

b) SDが概数ならば,次による。 

i) 

次のとおりの文字列をYPとする。 

場合: 

1) SVが0と等しいならば,YPは,'0E0' とする。 

2) そうでなければ,“5.3 <定数>”中の<概数定数>の定義に適合する文字列で,解釈値がSVの

絶対値と等しく,かつ,<仮数>が,'0'でない単一の<数字>,それに続く<ピリオド>及び<符号

なし整数>から成る最も短い文字列をYPとする。 

206 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) 場合: 

1) SVが0未満ならば,'‒' || YPの結果をYとする。 

2) そうでなければ,YPをYとする。 

iii) 場合: 

1) TDの文字レパートリ中にない<SQL言語文字>をYが含むならば,例外条件:データ例外 − 

型変換での文字値が正しくない が引き起こされる。 

2) Yの文字単位での長さLYがLTDと等しいならば,TVは,Yとする。 

3) Yの文字単位での長さLYがLTD未満ならば,TVは,LTD ‒ LY個の<空白>で右側を拡張し

たYとする。 

4) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

c) SDが固定長文字列,可変長文字列又は長大オブジェクト文字列ならば,次による。 

場合: 

i) 

SVの文字単位での長さがLTDと等しいならば,TVは,SVとする。 

ii) SVの文字単位での長さがLTDを超えるならば,TVは,SVの最初のLTD個の文字とする。SV

の残りの文字のいずれかが<空白>でない文字ならば,終了条件:警告 (warning) − データ列デ

ータ,右切捨て が引き起こされる。 

iii) SVの文字単位での長さMがLTD未満ならば,TVは,LTD ‒ M個の<空白>で右側を拡張した

SVとする。 

d) SDが日時データ型又は時間隔データ型ならば,“5.3 <定数>”中の<定数>の定義に適合する文字

列で,解釈値がSVで,かつ,解釈精度がSDの精度である最も短い文字列をYとする。SVが負

の時間隔ならば,<符号>は,定数Y中の<引用符なし時間隔データ列>内に指定しなければならな

い。 

場合: 

i) 

TDの文字レパートリ中にない<SQL言語文字>をYが含むならば,例外条件:データ例外 − 

型変換での文字値が正しくない が引き起こされる。 

ii) Yの文字単位での長さLYがLTDと等しいならば,TVは,Yとする。 

iii) Yの文字単位での長さLYがLTD未満ならば,TVは,LTD ‒ LY個の<空白>で右側を拡張した

Yとする。 

iv) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

e) SDがブールならば,次による。 

場合: 

i) 

SVが真 (True) で,かつ,LTDが4未満でないならば,TVは,LTD ‒ 4個の<空白>で右側を拡

張した 'TRUE' とする。 

ii) SVが偽 (False) で,かつ,LTDが5未満でないならば,TVは,LTD ‒ 5個の<空白>で右側を

拡張した 'FALSE' とする。 

iii) そうでなければ,例外条件:データ例外 − 型変換での文字値が正しくない が引き起こされる。 

11) TDが可変長文字列又は長大オブジェクト文字列ならば,TDの文字単位での最大長をMLTDとす

る。 

場合: 

a) SDが真数ならば,次による。 

207 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

i) 

“5.3 <定数>”中の<真数定数>の定義に適合する文字列で,位取りがSDの位取りと同じで,か

つ,解釈値がSDの絶対値である最も短い文字列をYPとする。 

ii) 場合: 

1) SVが0未満ならば,'‒' || YPの結果をYとする。 

2) そうでなければ,YPをYとする。 

iii) 場合: 

1) TDの文字レパートリ中にない<SQL言語文字>をYが含むならば,例外条件:データ例外 − 

型変換での文字値が正しくない が引き起こされる。 

2) Yの文字単位での長さLYがMLTD以下ならば,TVは,Yとする。 

3) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

b) SDが概数ならば,次による。 

i) 

次のとおりの文字列をYPとする。 

場合: 

1) SVが0と等しいならば,YPは,'0E0' とする。 

2) そうでなければ,“5.3 <定数>”中の<概数定数>の定義に適合する文字列で,解釈値がSVの

絶対値と等しく,かつ,<仮数>が,'0'でない単一の<数字>,それに続く<ピリオド>及び<符号

なし整数>から成る最も短い文字列をYPとする。 

ii) 場合: 

1) SVが0未満ならば,'‒' || YPの結果をYとする。 

2) そうでなければ,YPをYとする。 

iii) 場合: 

1) TDの文字レパートリ中にない<SQL言語文字>をYが含むならば,例外条件:データ例外 − 

型変換での文字値が正しくない が引き起こされる。 

2) Yの文字単位での長さLYがMLTD以下ならば,TVは,Yとする。 

3) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

c) SDが固定長文字列,可変長文字列又は長大オブジェクト文字列ならば,次による。 

場合: 

i) 

SVの文字単位での長さがMLTD以下ならば,TVは,SVとする。 

ii) SVの文字単位での長さがMLTDを超えるならば,TVは,SVの最初のMLTD個の文字とする。

SVの残りの文字のいずれかが<空白>でない文字ならば,終了条件:警告 − データ列データ,

右切捨て が引き起こされる。 

d) SDが日時データ型又は時間隔データ型ならば,“5.3 <定数>”中の<定数>の定義に適合する文字

列で,解釈値がSVで,かつ,解釈精度がSDの精度である最も短い文字列をYとする。SVが負

の時間隔ならば,<符号>は,定数Y中の<引用符なし時間隔データ列>内に指定しなければならな

い。 

場合: 

i) 

TDの文字レパートリ中にない<SQL言語文字>をYが含むならば,例外条件:データ例外 − 

型変換での文字値が正しくない が引き起こされる。 

ii) Yの文字単位での長さLYがMLTD以下ならば,TVは,Yとする。 

208 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

e) SDがブールならば,次による。 

場合: 

i) 

SVが真で,かつ,MLTDが4未満でないならば,TVは,'TRUE' とする。 

ii) SVが偽で,かつ,MLTDが5未満でないならば,TVは,'FALSE' とする。 

iii) そうでなければ,例外条件:データ例外 − 型変換での文字値が正しくない が引き起こされる。 

12) TD及びSDが2進オクテット列型ならば,次による。 

場合: 

a) TDが固定長2進オクテット列ならば,TDのオクテット単位での長さをLTDとする。 

i) 

SVのオクテット単位での長さがLTDと等しいならば,TVは,SVとする。 

ii) SVのオクテット単位での長さがLTDを超えるならば,TVは,SVの最初のLTD個のオクテッ

トとし,終了条件:警告 − データ列データ,右切捨て が引き起こされる。 

iii) SVのオクテット単位での長さMがLTD未満ならば,TVは,LTD ‒ M個のX'00'で右側を拡張

したSVする。 

b) そうでなければ,TDのオクテット単位での最大長をMLTDとする。 

場合: 

i) 

SVのオクテット単位での長さがMLTD以下ならば,TVは,SVとする。 

ii) SVのオクテット単位での長さがMLTDを超えるならば,TVは,SVの最初のMLTD個のオク

テットとし,終了条件:警告 − データ列データ,右切捨て が引き起こされる。 

13) TDが日時データ型DATEならば,次による。 

場合 

a) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>又は<引用符なし日付デ

ータ列>に対する規則をSVに適用できるならば,その値をTVとする。 

ii) そうでなければ,例外条件:データ例外 − 日時形式が正しくない (invalid datetime format) が

引き起こされる。 

b) SDが日時データ型DATEならば,TVは,SVとする。 

c) SDが日時データ型TIMESTAMP WITHOUT TIME ZONEならば,TVは,SVの年,月及び日の<

基本日時フィールド>とする。 

d) SDが日時データ型TIMESTAMP WITH TIME ZONEならば,TVは,次の式によって計算される。 

CAST ( CAST ( VE AS TIMESTAMP WITHOUT TIME ZONE ) AS DATE ) 

14) SQLセションの現行既定時刻帯時差をSTZDとする。 

15) TDが日時データ型TIME WITHOUT TIME ZONEならば,TDの<時刻精度>をTSPとする。 

場合: 

a) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>又は<引用符なし時刻デ

209 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ータ列>に対する規則をSVに適用できるならば,その値をTVとする。 

ii) データ型TIME(TSP) WITH TIME ZONEの正しい値を決定するために,“5.3 <定数>”中の<定数

>又は<引用符なし時刻データ列>に対する規則をSVに適用できるならば,次の値をTVとする。 

CAST ( CAST ( VE AS TIME(TSP) WITH TIME ZONE ) AS 

TIME(TSP) WITHOUT TIME ZONE ) 

iii) そうでなければ,例外条件:データ例外 − 日時形式が正しくない が引き起こされる。 

b) SDがTIME WITHOUT TIME ZONEならば,TVは,必要ならば,処理系定義の丸め又は切捨てを

行ったSVとする。 

c) SDがTIME WITH TIME ZONEならば,SVのUTC構成要素をSVUTCとし,SVの時刻帯時差を

SVTZとする。TVは,24時間を法として計算し,必要ならば,処理系定義の丸め又は切捨てを行

ったSVUTC+SVTZとする。 

d) SDがTIMESTAMP WITHOUT TIME ZONEならば,TVは,必要ならば,処理系定義の丸め又は

切捨てを行ったSVの時,分及び秒の<基本日時フィールド>とする。 

e) SDがTIMESTAMP WITH TIME ZONEならば,TVは,次の値とする。 

CAST ( CAST ( VE AS TIMESTAMP(TSP) WITHOUT TIME ZONE ) 

AS TIME(TSP) WITHOUT TIME ZONE ) 

16) TDが日時データ型TIME WITH TIME ZONEならば,TDの<時刻精度>をTSPとする。 

場合: 

a) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>又は<引用符なし時刻デ

ータ列>に対する規則をSVに適用できるならば,その値をTVとする。 

ii) データ型TIME(TSP) WITHOUT TIME ZONEの正しい値を決定するために,“5.3 <定数>”中の

<定数>又は<引用符なし時刻データ列>に対する規則をSVに適用できるならば,次の値をTV

とする。 

CAST ( CAST ( VE AS TIME(TSP) WITHOUT TIME ZONE ) 

AS TIME(TSP) WITH TIME ZONE ) 

iii) そうでなければ,例外条件:データ例外 − 日時形式が正しくない が引き起こされる。 

b) SDがTIME WITH TIME ZONEならば,TVは,必要ならば,処理系定義の丸め又は切捨てを行っ

たSVとする。 

c) SDがTIME WITHOUT TIME ZONEならば,TVのUTC構成要素は,24時間を法として計算し,

必要ならば,処理系定義の丸め又は切捨てを行ったSV ‒ STZDとし,TVの時刻帯構成要素は,

STZDとする。 

d) SDがTIMESTAMP WITH TIME ZONEならば,TVのUTC構成要素は,必要ならば,処理系定義

の丸め又は切捨てを行ったSVの時,分及び秒の<基本日時フィールド>とし,TVの時刻帯構成要

素は,SVの時間帯時差とする。 

e) SDがTIMESTAMP WITHOUT TIME ZONEならば,TVは,次の値とする。 

CAST ( CAST ( VE AS TIMESTAMP(TSP) WITH TIME ZONE ) 

AS TIME(TSP) WITH TIME ZONE ) 

210 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

17) TDが日時データ型TIMESTAMP WITHOUT TIME ZONEならば,TDの<時刻印精度>をTSPとす

る。 

場合: 

a) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>又は<引用符なし時刻印

データ列>に対する規則をSVに適用できるならば,その値をTVとする。 

ii) データ型TIMESTAMP(TSP) WITH TIME ZONEの正しい値を決定するために,“5.3 <定数>”中

の<定数>又は<引用符なし時刻印データ列>に対する規則をSVに適用できるならば,次の値を

TVとする。 

CAST ( CAST ( VE AS TIMESTAMP(TSP) WITH TIME ZONE ) 

AS TIMESTAMP(TSP) WITHOUT TIME ZONE ) 

iii) そうでなければ,例外条件:データ例外 − 日時形式が正しくない が引き起こされる。 

b) SDが日付ならば,TVの<基本日時フィールド>時,分及び秒には,0が設定され,TVの<基本日

時フィールド>年,月及び日には,SV中のそれらのそれぞれの値が設定される。 

c) SDがTIME WITHOUT TIME ZONEならば,TVの<基本日時フィールド>年,月及び日には,

CURRENT̲DATEの実行でのそれらのそれぞれの値が設定され,TVの<基本日時フィールド>時,

分及び秒には,必要ならば,処理系定義の丸め又は切捨てを行ったSV中のそれらのそれぞれの

値が設定される。 

d) SDがTIME WITH TIME ZONEならば,TVは,次の値とする。 

CAST ( CAST ( VE AS TIMESTAMP WITH TIME ZONE ) 

AS TIMESTAMP WITHOUT TIME ZONE ) 

e) SDがTIMESTAMP WITHOUT TIME ZONEならば,TVは,必要ならば,処理系定義の丸め又は

切捨てを行ったSVとする。 

f) SDがTIMESTAMP WITH TIME ZONEならば,SVのUTC構成要素をSVUTCとし,SVの時刻帯

時差をSVTZとする。TVは,必要ならば,処理系定義の丸め又は切捨てを行ったSVUTC+SVTZ

とする。 

18) TDが日時データ型TIMESTAMP WITH TIME ZONEならば,TDの<時刻印精度>をTSPとする。 

場合: 

a) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>又は<引用符なし時刻印

データ列>に対する規則をSVに適用できるならば,その値をTVとする。 

ii) データ型TIMESTAMP(TSP) WITHOUT TIME ZONEの正しい値を決定するために,“5.3 <定数

>”中の<定数>又は<引用符なし時刻印データ列>に対する規則をSVに適用できるならば,次の

値をTVとする。 

CAST ( CAST ( VE AS TIMESTAMP(TSP) WITHOUT TIME ZONE ) 

AS TIMESTAMP(TSP) WITH TIME ZONE ) 

211 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) そうでなければ,例外条件:データ例外 − 日時形式が正しくない が引き起こされる。 

b) SDが日付ならば,TVは,次の値とする。 

CAST ( CAST ( VE AS TIMESTAMP(TSP) WITHOUT TIME ZONE ) 

AS TIMESTAMP(TSP) WITH TIME ZONE ) 

c) SDがTIME WITHOUT TIME ZONEならば,TVは,次の値とする。 

CAST ( CAST ( VE AS TIMESTAMP(TSP) WITHOUT TIME ZONE ) 

AS TIMESTAMP(TSP) WITH TIME ZONE ) 

d) SDがTIME WITH TIME ZONEならば,TVの<基本日時フィールド>年,月及び日には,

CURRENT̲DATEの実行でのそれらのそれぞれの値が設定され,TVの<基本日時フィールド>時,

分及び秒には,必要ならば,処理系定義の丸め又は切捨てを行ったSV中のそれらのそれぞれの

値が設定される。TVの時刻帯構成要素には,SVの時刻帯時差が設定される。 

e) SDがTIMESTAMP WITHOUT TIME ZONEならば,TVのUTC構成要素は,STZDの時刻帯時差

をもつSV ‒ STZDとする。 

f) SDがTIMESTAMP WITH TIME ZONEならば,TVは,必要ならば,処理系定義の丸め又は切捨

てを行ったSVとする。 

19) TDが時間隔ならば,次による。 

場合: 

a) SDが真数ならば,次による。 

場合: 

i) 

データ型TDでのSVの表現が上位有効桁を失うことになるならば,例外条件:データ例外 − 

時間隔フィールドあふれ (interval field overflow) が引き起こされる。 

ii) 次の<CAST指定>によって形成される<真数定数>の位取りをNDSENとする。 

CAST (SV AS CHARACTER VARYING(max)) 

ここで,maxは,CHARACTER VARYING型の処理系定義の最大精度とする。TDの小数秒精

度の桁数NDFSPがNDSEN未満ならば,“4.4.2 数の性質”で規定するとおり,NDFSP桁の精

度にSVを丸めることによってTVが決定されるか,又はNDFSP桁の精度にSVを切り捨てる

ことによってTVが決定されるかは,処理系定義とする。 

iii) そうでなければ,TVは,その表現とする。 

b) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>又は<引用符なし時間隔

データ列>に対する規則をSVに適用できるならば,その値をTVとする。 

ii) そうでなければ,例外条件:データ例外 − 時間隔形式が正しくない (invalid interval format) が

引き起こされる。 

c) SDが時間隔で,かつ,TDとSDとが同じ時間隔精度をもつならば,TVは,SVとする。 

d) SDが時間隔で,かつ,TDとSDとが異なる時間隔精度をもつならば,TDの最上位及び最下位有

効<基本日時フィールド>を,それぞれ,P及びQとする。 

i) 

グレゴリオ暦で定義されたとおりの時間隔の自然な規則(すなわち,1分は,60秒,1時間は,

60分,1日は,24時間,及び1年は,12か月)に従って,SVを単位Qでのスカラに変換した

212 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

結果をYとする。 

ii) (再び,1分は,60秒,1時間は,60分,1日は,24時間,及び1年は,12か月という規則に

従って,)TDの<時間隔修飾子>“P TO Q”に適合するようにYを正規化する。結果の最下位有

効フィールドで切り捨てるか又は丸めるかは,処理系定義とする。これがYの先行日時フィー

ルドの精度を失うことになるならば,例外条件:データ例外 − 時間隔フィールドあふれ が引

き起こされる。 

iii) TVは,Yの値とする。 

20) 09 TDがブールならば,次による。 

場合: 

a) SDが文字列ならば,SVは,次の値で置き換えられる。 

TRIM ( BOTH ' ' FROM VE ) 

場合: 

i) 

データ型TDの正しい値を決定するために,“5.3 <定数>”中の<定数>に対する規則をSVに適

用できるならば,その値をTVとする。 

ii) そうでなければ,例外条件:データ例外 − 型変換での文字値が正しくない が引き起こされる。 

b) SDがブールならば,TVは,SVとする。 

21) <CAST指定>が<定義域名>を含み,<定義域制約>を含む定義域をその<定義域名>が参照し,かつ,

その<定義域制約>に単純に含まれる<検査制約定義>をTVが満たさないならば,例外条件:整合性

制約違反 (integrity constraint violation) が引き起こされる。 

22) CSの結果は,TVとする。 

適合性規則 

1) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語は,宣言型がBINARY LARGE 

OBJECT又はCHARACTER LARGE OBJECTである<CASTオペランド>を含んではならない。 

2) 機能F421“各国文字”なしでは,適合するSQL言語は,宣言型がNATIONAL CHARACTER,

NATIONAL CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTである<CAST

オペランド>を含んではならない。 

3) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語は,宣言型がNATIONAL 

CHARACTER LARGE OBJECTである<CASTオペランド>を含んではならない。 

4) 機能S043“拡張参照型”なしでは,適合するSQL言語中で,<CASTオペランド>の宣言型が参照型

ならば,<CAST相手>は,参照型である<データ型>を含まなければならない。 

6.14 <次値式> 

この細分箇条は,ISO/IEC 9075-4の“6.3 <次値式>”によって修正される。 

機能 

<次値式> (<next value expression>) は,順序数生成子の次の値を戻す。 

形式 

<次値式> ::= 

  NEXT VALUE FOR <順序数生成子名> 

構文規則 

1) <次値式>は,次のうちの一つに直接含まれなければならない。 

a) 次のうちの一つに直に含まれる<問合せ式>を構成する<問合せ指定>に単純に含まれる<選択リス

213 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ト>。 

i) 

<カーソル指定>。 

ii) <表定義>中の<AS副問合せ句>に単純に含まれる<表副問合せ>。 

iii) <副問合せ発>。 

iv) <SELECT文:単一行>。 

b) <動的単一行SELECT文>に直に含まれる<問合せ指定>に単純に含まれる<選択リスト>。 

c) <構成子発>。 

d) <併合挿入値リスト>。 

e) 

04 <更新元>。 

2) <次値式>は,<CASE式>,<探索条件>,<ORDER BY句>,<集約関数>,<ウィンドウ関数>,グル

ープ問合せ,又は<集合限定子> DISTINCTを単純に含む<問合せ指定>に含まれてはならない。 

3) <次値式>の宣言型は,<順序数生成子名>によって識別される順序数生成子記述子に含まれるデータ

型記述子によって記述されるデータ型とする。 

アクセス規則 

1) 場合: 

a) <次値式>が<スキーマ定義>に含まれるならば,その<スキーマ定義>を含むスキーマを所有する<

認可識別子>に適用可能な権限は,<順序数生成子名>によって識別される順序数生成子に関する

USAGE権限を含まなければならない。 

b) そうでなければ,現行の権限は,<順序数生成子名>によって識別される順序数生成子に関する

USAGE権限を含まなければならない。 

一般規則 

1) <次値式> NVEが指定されるならば,NVEに含まれる<順序数生成子名>によって識別される順序数

生成子記述子をSEQとする。 

場合: 

a) NVEが<問合せ指定> QSに直接含まれるならば,QSの結果中の各行RQSに対して,SEQを

SEQUENCEとして,“9.25 順序数生成子の次値の生成”の一般規則を適用する。これらの一般規

則の適用によって戻されるRESULTをRQSに対する値とする。 

b) NVEが<文脈型付き表値生成子> TVCに直接含まれるならば,TVCに含まれる各<文脈型付き行

値式> CTRVEに対して,SEQをSEQUENCEとして,“9.25 順序数生成子の次値の生成”の一般

規則を適用する。これらの一般規則の適用によって戻されるRESULTをCTRVEに対する値とす

る。 

c) NVEが<更新元>に直接含まれるならば,<UPDATE文:探索>又は<UPDATE文:位置付け>によ

って更新される各行USRに対して,SEQをSEQUENCEとして,“9.25 順序数生成子の次値の生

成”の一般規則を適用する。これらの一般規則の適用によって戻されるRESULTをUSRに対す

る値とする。 

適合性規則 

1) 機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<次値式>を含んではならない。 

6.15 <フィールド参照> 

機能 

<フィールド参照> (<field reference>) は,行値のフィールドを参照する。 

214 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<フィールド参照> ::= 

  <値式一次子> <ピリオド> <フィールド名> 

構文規則 

1) <フィールド参照>をFRとし,FRに直に含まれる<値式一次子>をVEPとし,FRに直に含まれる<

フィールド名>をFNとする。 

2) VEPの宣言型は,行型でなければならない。その行型をRTとする。 

3) FRは,フィールド参照 (field reference) とする。 

4) FNは,RTのフィールドを曖昧さなく参照しなければならない。そのフィールドをFとする。 

5) FRの宣言型は,Fの宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) VEPの値をVRとする。 

2) 場合: 

a) VRがナル値ならば,FRの値は,ナル値とする。 

b) そうでなければ,FRの値は,VRのフィールドFの値とする。 

適合性規則 

1) 機能T051“行型”なしでは,適合するSQL言語は,<フィールド参照>を含んではならない。 

6.16 <下位型扱い> 

機能 

<下位型扱い> (<subtype treatment>) は,式の宣言型を修正する。 

形式 

<下位型扱い> ::= 

  TREAT <左括弧> <下位型オペランド> AS <相手下位型> <右括弧> 

<下位型オペランド> ::= 

  <値式> 

<相手下位型> ::= 

  <パス解決利用者定義型名> 

| <参照型> 

構文規則 

1) <値式>の宣言型VTは,構造型又は参照型でなければならない。 

2) 場合: 

a) VTが構造型ならば,次による。 

i) 

<相手下位型>は,<パス解決利用者定義型名>を指定しなければならない。 

ii) <パス解決利用者定義型名>に単純に含まれる<利用者定義型名>によって識別される構造型を

DTとする。 

b) そうでなければ,次による。 

i) 

<相手下位型>は,<参照型>を指定しなければならない。 

ii) <参照型>によって識別される参照型をDTとする。 

215 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) VTは,DTの上位型でなければならない。 

4) <下位型扱い>の結果の宣言型は,DTとする。 

アクセス規則 

なし。 

一般規則 

1) <値式>の値をVとする。 

2) 場合: 

a) Vがナル値ならば,<下位型扱い>の値は,ナル値とする。 

b) そうでなければ,次による。 

i) 

Vの最特定型がDTの下位型でないならば,例外条件:相手の型の指定が正しくない (invalid 

target type specification) が引き起こされる。 

注記150 “最特定型”は,“4.7.3.4 下位型及び上位型”で定義している。 

ii) <下位型扱い>の値は,Vとする。 

適合性規則 

1) 機能S161“下位型扱い”なしでは,適合するSQL言語は,<下位型扱い>を含んではならない。 

2) 機能S162“参照に対する下位型扱い”なしでは,適合するSQL言語は,<参照型>を含む<相手下位

型>を含んではならない。 

6.17 <メソッド呼出し> 

この細分箇条は,ISO/IEC 9075-13の“6.1 <メソッド呼出し>”によって修正される。 

機能 

<メソッド呼出し> (<method invocation>) は,利用者定義型の値のSQL呼出しメソッドを参照する。 

形式 

<メソッド呼出し> ::= 

  <直接呼出し> 

| <一般化呼出し> 

<直接呼出し> ::= 

  <値式一次子> <ピリオド> <メソッド名> [ <SQL引数リスト> ] 

<一般化呼出し> ::= 

  <左括弧> <値式一次子> AS <データ型> <右括弧> 

      <ピリオド> <メソッド名> [ <SQL引数リスト> ] 

<メソッド選択> ::= 

  <ルーチン呼出し> 

<構成メソッド選択> ::= 

  <ルーチン呼出し> 

構文規則 

1) <メソッド呼出し>をORとし,ORの<直接呼出し>又は<一般化呼出し>に直に含まれる<値式一次

子>をVEPとし,ORに直に含まれる<メソッド名>をMNとする。 

2) 

13 VEPの宣言型は,利用者定義型でなければならない。その利用者定義型をUDTとする。 

3) 場合: 

a) <SQL引数リスト>が指定されるならば,次の文字列をALとする。 

216 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

, A1, ..., An 

ここで,Ai,1 ≤ i ≤ nは,<SQL引数リスト>中での順序位置の順序で,<SQL引数リスト>に直に

含まれる<SQL引数>とする。 

b) そうでなければ,長さ0の文字列をALとする。 

4) 場合: 

a) <メソッド呼出し>が<新呼出し>に直に含まれるならば,UDTの記述子を含むスキーマの<スキー

マ名>を含むSQLパスをTPとする。 

b) そうでなければ,UDTの上位型又は下位型の記述子を含む全てのスキーマの<スキーマ名>を含

む,任意に定義されたSQLパスをTPとする。 

5) 場合: 

a) <一般化呼出し>が指定されるならば,<一般化呼出し>に単純に含まれる<データ型>をDTとする。

次の<メソッド選択>をRIとする。 

MN (VEP AS DT AL) 

b) そうでなければ,次による。 

場合: 

i) 

<メソッド呼出し>が<新呼出し>に直に含まれるならば,次の<構成メソッド選択>をRIとする。 

MN (VEP AL) 

ii) そうでなければ,次の<メソッド選択>をRIとする。 

MN (VEP AL) 

6) RIをROUTINE INVOCATIONとして,TPをSQLPATHとして,“10.4 <ルーチン呼出し>”の構文

規則を適用し,当該ルーチンSR及び静的SQL引数リストSALを生成する。 

アクセス規則 

なし。 

一般規則 

1) SRをSUBJECT ROUTINEとして,SALをSTATIC SQL ARG LISTとして,“10.4 <ルーチン呼出し

>”の一般規則を適用し,<ルーチン呼出し>の結果である値Vを生成する。 

2) <メソッド呼出し>の値は,Vとする。 

適合性規則 

1) 機能S023“基本構造型”なしでは,適合するSQL言語は,<メソッド呼出し>を含んではならない。 

6.18 <静的メソッド呼出し> 

機能 

<静的メソッド呼出し> (<static method invocation>) は,静的メソッドを呼び出す。 

形式 

<静的メソッド呼出し> ::= 

  <パス解決利用者定義型名> <2重コロン> <メソッド名> 

      [ <SQL引数リスト> ] 

<静的メソッド選択> ::= 

  <ルーチン呼出し> 

構文規則 

1) <パス解決利用者定義型名>に直に含まれる<利用者定義型名>をTNとし,TNによって識別される

217 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

利用者定義型をTとする。 

2) <静的メソッド呼出し>に直に含まれる<メソッド名>をMNとする。 

3) 場合: 

a) <SQL引数リスト>が指定されるならば,その<SQL引数リスト>をALとする。 

b) そうでなければ,<左括弧><右括弧>をALとする。 

4) Tの上位型の記述子を含む全てのスキーマの<スキーマ名>だけを含むSQLパスをTPとする。 

5) 次の<ルーチン呼出し>をRIとする。 

MN AL 

6) 次の<静的メソッド選択>をSMSとする。 

RI 

7) RIをROUTINE INVOCATIONとして,TPをSQLPATHとして,TをUDTとして,“10.4 <ルーチ

ン呼出し>”の構文規則を適用し,当該ルーチンSR及び静的SQL引数リストSALを生成する。 

アクセス規則 

なし。 

一般規則 

1) SRをSUBJECT ROUTINEとして,SALをSTATIC SQL ARG LISTとして,“10.4 <ルーチン呼出し

>”の一般規則を適用し,<ルーチン呼出し>の結果である値Vを生成する。 

2) <静的メソッド呼出し>の値は,Vとする。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<静的メソッド呼出し>を含んではなら

ない。 

6.19 <NEW指定> 

この細分箇条は,ISO/IEC 9075-13の“6.2 <NEW指定>”によって修正される。 

機能 

<NEW指定> (<new specification>) は,構造型の値を新たに構成するメソッドを呼び出す。 

形式 

<NEW指定> ::= 

  NEW <パス解決利用者定義型名> <SQL引数リスト> 

<新呼出し> ::= 

  <メソッド呼出し> 

| <ルーチン呼出し> 

構文規則 

1) <NEW指定>に直に含まれる<パス解決利用者定義型名>をUDTNとする。UDTNに直に含まれる<

被修飾識別子>をMNとする。 

2) UDTNによって識別される利用者定義型をUDTとする。UDTは,実現値生成可でなければならな

い。UDTNの暗に想定されるか又は陽に指定される<スキーマ名>をSNとする。SNによって識別さ

れるスキーマをSとする。SN.MNをRNとする。 

3) 場合: 

a) <NEW指定>が次の形式 

NEW UDTN() 

218 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

から成るならば,次による。 

場合: 

i) 

メソッド名がMNと等価で,かつ,非拡張パラメタリストが空であるSQL呼出し構成メソッド

の記述子をSが含まないならば,<NEW指定>は,次の<新呼出し>と等価とする。 

RN() 

ii) そうでなければ,<NEW指定>は,次の<新呼出し>と等価とする。 

RN().MN() 

b) そうでなければ,次の<NEW指定> 

NEW UDTN(a1, a2, ..., an) 

は,次の<新呼出し>と等価とする。 

RN().MN(a1, a2, ..., an) 

アクセス規則 

なし。 

注記151 “10.4 <ルーチン呼出し>”の構文規則に従って,構成関数及び示された構成メソッドに関

するEXECUTE権限を,(適切に)適用可能な権限又は現行の権限が含む。 

一般規則 

なし。 

適合性規則 

1) 機能S023“基本構造型”なしでは,適合するSQL言語は,<NEW指定>を含んではならない。 

6.20 <属性又はメソッド参照> 

機能 

<属性又はメソッド参照> (<attribute and method reference>) は,参照型の値又はSQL呼出しメソッドの呼

出しによって識別される行の列をアクセスすることによって得られる値を戻す。 

形式 

<属性又はメソッド参照> ::= 

  <値式一次子> <内参照演算子> <被修飾識別子> 

      [ <SQL引数リスト> ] 

<内参照演算子> ::= 

  <右矢印> 

構文規則 

1) <値式一次子> VEPの宣言型は,参照型でなければならず,その参照型記述子に含まれる有効範囲

は,空であってはならない。VEPの被参照型をRTとする。 

2) <被修飾識別子>をQIとする。<SQL引数リスト>が指定されるならば,<SQL引数リスト>をSALと

する。そうでなければ,長さ0の文字列をSALとする。 

3) 場合: 

a) QIがRTの属性の属性名と等価で,かつ,SALが長さ0の文字列ならば,<属性又はメソッド参

照>は,次の形式の<内参照演算> AMRによって実効的に置き換えられる。 

VEP -> QI 

b) そうでなければ,<属性又はメソッド参照>は,次の形式の<メソッド参照> AMRによって実効的

に置き換えられる。 

219 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

VEP -> QI SAL 

4) <属性又はメソッド参照>の宣言型は,AMRの宣言型とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S041“基本参照型”なしでは,適合するSQL言語は,<属性又はメソッド参照>を含んではな

らない。 

6.21 <内参照演算> 

機能 

<内参照演算> (<dereference operation>) は,参照型の値によって識別される行の列にアクセスする。 

形式 

<内参照演算> ::= 

  <参照値式> <内参照演算子> <属性名> 

構文規則 

1) <参照値式>をRVEとする。RVEの参照型記述子は,有効範囲を含まなければならない。RVEの被

参照型をRTとする。 

2) <属性名>をANとする。ANは,RTの属性ATを識別しなければならない。 

3) <内参照演算>の宣言型は,ATの宣言型とする。 

4) RVEの参照型の有効範囲中の参照可能表の名前をSとする。 

5) Sの自己参照列の名前をOIDとする。 

6) <内参照演算>は,次の形式の<スカラ副問合せ>と等価とする。 

( SELECT AN 

   FROM S 

   WHERE S.OID = RVE ) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S041“基本参照型”なしでは,適合するSQL言語は,<内参照演算>を含んではならない。 

6.22 <メソッド参照> 

機能 

<メソッド参照> (<method reference>) は,メソッドであるSQL呼出しルーチンの呼出しで得られる値を

戻す。 

形式 

<メソッド参照> ::= 

  <値式一次子> <内参照演算子> <メソッド名> <SQL引数リスト> 

構文規則 

220 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <値式一次子> VEPの宣言型は,参照型でなければならず,その参照型記述子に含まれる有効範囲

は,空であってはならない。 

2) メソッド名をMNとする。<SQL引数リスト>をMRALとする。 

3) 次の<メソッド呼出し>に対して,“6.17 <メソッド呼出し>”の構文規則が評価され,当該ルーチン

SR及び静的SQL引数リストSALを生成する。 

DEREF (VEP) . MN MRAL 

4) <メソッド参照>の宣言型は,次の式の宣言型とする。 

DEREF (VEP) . MN MRAL 

アクセス規則 

1) VEPの有効範囲である表をSCOPEとする。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<メソッド参照>が

<SQLスキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識

別子>の適用可能な権限は,表SCOPE及びメソッドSRに対する表/メソッド権限を含まなければ

ならない。 

b) そうでなければ,現行の権限は,表SCOPE及びメソッドSRに対する表/メソッド権限を含まな

ければならない。 

一般規則 

1) SR及びSALを,それぞれ,当該ルーチン及びSQL引数リストとして,“6.17 <メソッド呼出し>”

の一般規則を適用し,<ルーチン呼出し>の結果である値Vを生成する。 

2) <メソッド参照>の値は,Vとする。 

適合性規則 

1) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<メソッド参照>を含んではならない。 

6.23 <参照解決> 

機能 

<参照解決> (<reference resolution>) は,REF値によって参照される値を得る。 

形式 

<参照解決> ::= 

  DEREF <左括弧> <参照値式> <右括弧> 

構文規則 

1) <参照解決>をRRとし,<参照値式>をRVEとする。RVEの参照型記述子は,有効範囲を含まなけ

ればならない。 

2) RRの宣言型は,RVEの宣言型によって参照される構造型とする。 

3) RVEの参照型記述子に含まれる表名によって識別される表をSCOPEとする。SCOPEは,RRのた

めの有効範囲化された表とする。 

注記152 “有効範囲化された表”という用語は,“4.9 参照型”で定義している。 

4) SCOPEの下位表の個数をmとする。任意の順序で,SCOPEの下位表をSi,1 ≤ i ≤ mとする。 

5) 各Si,1 ≤ i ≤ mに対して,Siに関連付けられた構造型STiのSiの記述子に含まれる名前をSTNiと

し,Siの自己参照列をREFCOLiとし,STiの属性の個数をNiとし,STiの属性の名前,すなわち,

Siの列の名前をAi,j,1 ≤ j ≤ Niとする。 

221 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

1) 場合: 

a) <参照解決>が<スキーマ定義>に含まれるならば,その<スキーマ定義>を含むスキーマを所有する

<認可識別子>に適用可能な権限は,SCOPEの少なくとも一つの上位表に関するSELECT WITH 

HIERARCHY OPTIONを含まなければならない。 

b) そうでなければ,現行の権限は,SCOPEの少なくとも一つの上位表に関するSELECT WITH 

HIERARCHY OPTIONを含まなければならない。 

一般規則 

1) <参照解決>の値は,次の値とする。 

 ( 

   SELECT A1,1 ( ... A1,N1 

     ( STN1(),A1,N1 ), ... A1,1 ) 

   FROM ONLY S1 

   WHERE S1.REFCOL1 = RVE 

  UNION 

   SELECT A2,1 ( ... A2,N2 

     ( STN2(), A2,N2 ), ... A2,1 ) 

   FROM ONLY S2 

   WHERE S2.REFCOL2 = RVE 

  UNION 

 ... 

  UNION 

   SELECT Am,1 ( ... Am,Nm 

     ( STNm(), Am,Nm ), ... Am,1 ) 

   FROM ONLY Sm 

   WHERE Sm.REFCOLm = RVE 

 ) 

注記153 この一般規則の評価は,これ以上のアクセス規則の検査なしで,実効的に実行される。 

適合性規則 

1) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<参照解決>を含んではならない。 

6.24 <配列要素参照> 

機能 

<配列要素参照> (<array element reference >) は,配列の要素を戻す。 

形式 

<配列要素参照> ::= 

  <配列値式> 

      <左角括弧又は3文字表記> <数値式> <右角括弧又は3文字表記> 

構文規則 

1) <配列要素参照>の宣言型は,指定された<配列値式>の要素型とする。 

2) <数値式>の宣言型は,位取り0の真数でなければならない。 

222 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

1) <配列値式>又は<数値式>の値がナル値ならば,<配列要素参照>の結果は,ナル値とする。 

2) <数値式>の値をiとする。 

場合: 

a) iが0より大きく,かつ,<配列値式>の基数以下ならば,<配列要素参照>の結果は,<配列値式>

の値のi番目の要素の値とする。 

b) そうでなければ,例外条件:データ例外 (data exception) − 配列要素誤り (array element error) が

引き起こされる。 

適合性規則 

1) 機能S091“基本配列提供”なしでは,適合するSQL言語は,<配列要素参照>を含んではならない。 

6.25 <マルチ集合要素参照> 

機能 

<マルチ集合要素参照> (<multiset element reference >) は,一つの要素から成るマルチ集合の唯一の要素

を戻す。 

形式 

<マルチ集合要素参照> ::= 

  ELEMENT <左括弧> <マルチ集合値式> <右括弧> 

構文規則 

1) <マルチ集合値式>をMVEとする。<マルチ集合要素参照>は,次の<スカラ副問合せ>と等価とする。 

( SELECT M.E 

  FROM UNNEST (MVE) AS M(E) ) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合要素参照>を含ん

ではならない。 

6.26 <値式> 

この細分箇条は,ISO/IEC 9075-9の“6.3 <値式>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“6.7 <値式>”によって修正される。 

機能 

<値式> (<value expression>) は,値を指定する。 

形式 

<値式> ::= 

  <共通値式> 

| <ブール値式> 

| <行値式> 

223 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 <共通値式> ::= 

  <数値式> 

| <データ列値式> 

| <日時値式> 

| <時間隔値式> 

| <利用者定義型値式> 

| <参照値式> 

| <集まり値式> 

<利用者定義型値式> ::= 

  <値式一次子> 

<参照値式> ::= 

  <値式一次子> 

<集まり値式> ::= 

  <配列値式> 

| <マルチ集合値式> 

構文規則 

1) <値式>の宣言型は,それに単純に含まれる<共通値式>,<ブール値式>又は<行値式>の宣言型とする。 

2) 

09 14 <共通値式>の宣言型は,それぞれ,<数値式>,<データ列値式>,<日時値式>,<時間隔値式>,

<利用者定義型値式>,<集まり値式>又は<参照値式>の宣言型とする。 

3) <利用者定義型値式>の宣言型は,それに直に含まれる<値式一次子>の宣言型とし,その<値式一次

子>は,利用者定義型でなければならない。 

4) <参照値式>の宣言型は,それに直に含まれる<値式一次子>の宣言型とし,その<値式一次子>は,参

照型でなければならない。 

5) <集まり値式>の宣言型は,それに直に含まれる<配列値式>又は<マルチ集合値式>の宣言型とする。 

6) ある列をCとする。<値式>をVEとする。VEに含まれる列参照によってCが識別されるならば,

Cは,VEの基となる列 (underlying column) とする。CがVEの基となる列であるか,又はCがVE

の基となる列の一般に基となる列ならば,Cは,VEの一般に基となる列 (generally underlying column) 

とする。 

7) <値式>又は<括弧なし値式一次子>が次のいずれかを一般に含むならば,それは,潜在的に非決定的 

(possibly non-deterministic) とする。 

a) <日時値関数>。 

b) <次値式>。 

c) 次のいずれかであるか,又は“6.13 <CAST指定>”の一般規則の実行によって,次のいずれかを

再帰的に意味する<CAST指定>。 

i) 

結果の型が時刻帯付き日時で,かつ,時刻帯付き日時ではない宣言型を<CASTオペランド>が

もつ<CAST指定>。 

ii) 

14 結果の型が配列型で,かつ,マルチ集合型である宣言型を<CASTオペランド>がもつ<CAST

指定>。 

d) <問合せによる配列値構成子>。 

e) 宣言型が時刻帯なし日時である<日時一次子>を単純に含み,かつ,陽に指定された<時刻帯>を単

224 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

純に含む<日時因子>。 

f) 

一方のオペランドの宣言型が時刻帯付き日時で,かつ,他方のオペランドの宣言型が時刻帯なし

日時であるような,<日時値式>と<日時項>との差を計算する<時間隔値式>。 

g) 一方の構成要素が時刻帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような対応

する構成要素を宣言型としてもつような<行値述語オペランド> RVP1及びRVP2を単純に含む<

比較述語>,<OVERLAPS述語>又は<DISTINCT述語>。 

注記154 これは,<比較述語>への構文変換によって,<BETWEEN述語>を含む。 

h) 一方の構成要素が時刻帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような対応

する構成要素を宣言型としてもつような<行値述語オペランド> RVP及び<表副問合せ> TSを単

純に含む<限定比較述語>又は<MATCH述語>。 

注記155 これは,<限定比較述語>への構文変換によって,<IN述語>を含む。 

i) 

一方の構成要素が時刻帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような対応

する構成要素を,<行値述語オペランド> RVPの唯一のフィールドFの宣言型,及び<マルチ集合

値式> MVPの要素型がもつような,RVP及びMVPを単純に含む<MEMBER述語>。 

j) 

一方の構成要素が時刻帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような対応

する構成要素を,<行値述語オペランド> RVPの唯一のフィールドFの要素型,及び<マルチ集合

値式> MVPの要素型がもつような,RVP及びMVPを単純に含む<SUBMULTISET述語>。 

k) 一方の構成要素が時刻帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような対応

する構成要素をオペランドの要素型としてもつようなMULTISET UNION,MULTISET EXCEPT又

はMULTISET INTERSECTを指定するか又は暗に想定する<マルチ集合値式>。 

l) 

CURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG,

CURRENT̲SCHEMA又はCURRENT̲PATHである<値指定>。 

m) 潜在的に非決定的であるSQL呼出しルーチンを当該ルーチンとしてもつ<ルーチン呼出し>。 

n) 

14 MIN又はMAXを指定する<集約関数>で,文字列型,利用者定義型又は時刻帯付き日時型を基

にする宣言型をもつ<値式>を単純に含む<集約関数>。 

o) INTERSECTIONを指定する<集約関数>で,文字列型,利用者定義型又は時刻帯付き日時型を基に

する宣言要素型をもつ<値式>を単純に含む<集約関数>。 

p) <配列集約関数>。 

q) MULTISET UNION DISTINCT,MULTISET EXCEPT又はMULTISET INTERSECTを指定する<マ

ルチ集合値式>で,文字列型,利用者定義型又は時刻帯付き日時型を基にする宣言要素型を結果の

型としてもつ<マルチ集合値式>。 

r) 文字列型,利用者定義型又は時刻帯付き日時型を基にする宣言要素型をもつ<マルチ集合SET関

数>。 

s) ROW̲NUMBER,FIRST̲VALUE,LAST̲VALUE,NTH̲VALUE,NTILE,LEAD若しくはLAGを

指定するか,又は関連付けられた<ウィンドウ指定>がROWSを指定する<ウィンドウ指定>。 

t) 

14 潜在的に非決定的である<問合せ指定>又は<問合せ式>。 

注記156 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義している。 

アクセス規則 

なし。 

一般規則 

225 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <値式>の値は,それに単純に含まれる<共通値式>,<ブール値式>又は<行値式>の値とする。 

2) 

14 <共通値式>の値は,それに直に含まれる<数値式>,<データ列値式>,<日時値式>,<時間隔値式

>,<利用者定義型値式>,<集まり値式>又は<参照値式>の値とする。 

3) 表の行Rに対して<値式> Vが評価されるとき,Vに直接含まれる列参照CRによるその表の列への

各参照は,その行中のその列の値とする。 

4) <集まり値式>の値は,それに直に含まれる<配列値式>又は<マルチ集合値式>の値とする。 

5) <参照値式> RVEの値は,RVEに直に含まれる<値式一次子>の値とする。 

適合性規則 

1) 機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール値式>である<値式>を

含んではならない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<参照値式>を含んではならない。 

6.27 <数値式> 

機能 

<数値式> (<numeric value expression>) は,数値を指定する。 

形式 

<数値式> ::= 

  <項> 

| <数値式> <正符号> <項> 

| <数値式> <負符号> <項> 

<項> ::= 

  <因子> 

| <項> <アスタリスク> <因子> 

| <項> <斜線> <因子> 

<因子> ::= 

  [ <符号> ] <数一次子> 

<数一次子> ::= 

  <値式一次子> 

| <数値関数> 

構文規則 

1) 2項算術演算子の両方のオペランドの宣言型が真数ならば,結果の宣言型は,次のとおりに決定さ

れる精度及び位取りをもつ処理系定義の真数型とする。 

a) 1番目及び2番目のオペランドの位取りを,それぞれ,S1及びS2とする。 

b) 加算及び減算の結果の精度は,処理系定義とし,位取りは,S1とS2との最大値とする。 

c) 乗算の結果の精度は,処理系定義とし,位取りは,S1 + S2とする。 

d) 除算の結果の精度及び位取りは,処理系定義とする。 

2) 2項算術演算子のいずれかのオペランドの宣言型が概数ならば,結果の宣言型は,処理系定義の概

数型とする。 

3) <因子>の宣言型は,それに直に含まれる<数一次子>の宣言型とする。 

4) <数一次子>の宣言型は,数でなければならない。 

5) <数値式>が<負符号> NMSを直に含み,かつ,<負符号> FMSである<符号>を直に含む<因子>を直

226 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

に含む<項>を直に含むならば,NMSとFMSとの間に<分離符号>がなければならない。 

アクセス規則 

なし。 

一般規則 

1) <数値式>に単純に含まれるいずれかの<数一次子>の値がナル値ならば,<数値式>の結果は,ナル値

とする。 

2) <数値式>が<数一次子>だけを含むならば,<数値式>の結果は,指定された<数一次子>の値とする。 

3) 単項算術演算子<正符号>及び<負符号>(それぞれ,+及び-)は,それぞれ,単項プラス及び単項マ

イナスを指定する。単項プラスは,そのオペランドを変更しない。単項マイナスは,そのオペラン

ドの符号を反転する。 

4) 2項算術演算子<正符号>,<負符号>,<アスタリスク>及び<斜線>(それぞれ,+,-,*及び/)は,

それぞれ,加算,減算,乗算及び除算を指定する。除数の値が0ならば,例外条件:データ例外 (data 

exception) − 0による除算 (division by zero) が引き起こされる。 

5) 算術演算の結果の最特定型が真数ならば,次による。 

場合: 

a) 演算子が除算ではなく,かつ,結果の宣言型の精度及び位取りで算術演算結果が正確に表現可能

でないならば,例外条件:データ例外 − 数値範囲外 (numeric value out of range) が引き起こされ

る。 

b) 演算子が除算で,かつ,結果の宣言型の精度及び位取りで表現された概算算術演算結果が,丸め

又は切捨てが必要ならば,その後で,1桁以上の上位有効桁を失うならば,例外条件:データ例外 

− 数値範囲外 が引き起こされる。丸めるか又は切り捨てるかの選択は,処理系定義とする。 

6) 算術演算の結果の最特定型が概数で,かつ,概算算術演算結果の指数が結果の宣言型に対する処理

系定義の指数の範囲内でないならば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

適合性規則 

なし。 

6.28 <数値関数> 

機能 

<数値関数> (<numeric value function>) は,数型の値を生成する関数を指定する。 

形式 

<数値関数> ::= 

  <POSITION式> 

| <OCCURRENCES̲REGEX関数> 

| <POSITION̲REGEX式> 

| <EXTRACT式> 

| <LENGTH式> 

| <基数式> 

| <最大基数式> 

| <絶対値式> 

| <剰余式> 

| <自然対数> 

227 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <指数関数> 

| <べき関数> 

| <平方根> 

| <下限関数> 

| <上限関数> 

| <幅バケット関数> 

<POSITION式> ::= 

  <文字POSITION式> 

| <2進オクテットPOSITION式> 

<OCCURRENCES̲REGEX関数> ::= 

  OCCURRENCES̲REGEX <左括弧> 

      <XQueryパターン> [ FLAG <XQueryオプションフラグ> ] 

      IN <REGEX当該文字列> 

      [ FROM <開始位置> ] 

      [ USING <文字長単位> ] 

      <右括弧> 

<XQueryパターン> ::= 

  <文字値式> 

<XQueryオプションフラグ> ::= 

  <文字値式> 

<REGEX当該文字列> ::= 

  <文字値式> 

<POSITION̲REGEX式> ::= 

  POSITION̲REGEX <左括弧> 

      [<POSITION̲REGEXのSTART又はAFTER> ] 

      <XQueryパターン> [ FLAG <XQueryオプションフラグ> ] 

      IN <REGEX当該文字列> 

      [ FROM <開始位置> ] 

      [ USING <文字長単位> ] 

      [ OCCURRENCE <REGEX出現回数> ] 

      [ GROUP <REGEXキャプチャグループ> ] 

      <右括弧> 

<POSITION̲REGEXのSTART又はAFTER> ::= 

  START 

| AFTER 

<REGEX出現回数> ::= 

  <数値式> 

<REGEXキャプチャグループ> ::= 

  <数値式> 

<文字POSITION式> ::= 

228 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  POSITION <左括弧> <文字値式1> IN <文字値式2> 

      [ USING <文字長単位> ] <右括弧> 

<文字値式1> ::= 

  <文字値式> 

<文字値式2> ::= 

  <文字値式> 

<2進オクテットPOSITION式> ::= 

  POSITION <左括弧> <2進オクテット値式> IN <2進オクテット値式> <右括弧> 

<LENGTH式> ::= 

  <CHAR̲LENGTH式> 

| <OCTET̲LENGTH式> 

<CHAR̲LENGTH式> ::= 

  { CHAR̲LENGTH | CHARACTER̲LENGTH } <左括弧> <文字値式> 

      [ USING <文字長単位> ] <右括弧> 

<OCTET̲LENGTH式> ::= 

  OCTET̲LENGTH <左括弧> <データ列値式> <右括弧> 

<EXTRACT式> ::= 

  EXTRACT <左括弧> <抜き出しフィールド> FROM <抜き出し元> <右括弧> 

<抜き出しフィールド> ::= 

  <基本日時フィールド> 

| <時刻帯フィールド> 

<時刻帯フィールド> ::= 

  TIMEZONE̲HOUR 

| TIMEZONE̲MINUTE 

<抜き出し元> ::= 

  <日時値式> 

| <時間隔値式> 

<基数式> ::= 

  CARDINALITY <左括弧> <集まり値式> <右括弧> 

<最大基数式> ::= 

  ARRAY̲MAX̲CARDINALITY <左括弧> <配列値式> <右括弧> 

<絶対値式> ::= 

  ABS <左括弧> <数値式> <右括弧> 

<剰余式> ::= 

  MOD <左括弧> <数値式被除数> <コンマ> 

      <数値式除数> <右括弧> 

<数値式被除数> ::= 

  <数値式> 

<数値式除数> ::= 

  <数値式> 

229 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<自然対数> ::= 

  LN <左括弧> <数値式> <右括弧> 

<指数関数> ::= 

  EXP <左括弧> <数値式> <右括弧> 

<べき関数> ::= 

  POWER <左括弧> <数値式基底> <コンマ> 

      <数値式指数> <右括弧> 

<数値式基底> ::= 

  <数値式> 

<数値式指数> ::= 

  <数値式> 

<平方根> ::= 

  SQRT <左括弧> <数値式> <右括弧> 

<下限関数> ::= 

  FLOOR <左括弧> <数値式> <右括弧> 

<上限関数> ::= 

  { CEIL | CEILING } <左括弧> <数値式> <右括弧> 

<幅バケット関数> ::= 

WIDTH̲BUCKET <左括弧> <幅バケットオペランド> <コンマ> <幅バケット境界1> <コンマ> 

    <幅バケット境界2> <コンマ> <幅バケット数> <右括弧> 

<幅バケットオペランド> ::= 

  <数値式> 

<幅バケット境界1> ::= 

  <数値式> 

<幅バケット境界2> ::= 

  <数値式> 

<幅バケット数> ::= 

  <数値式> 

構文規則 

1) <POSITION式>,<OCCURRENCES̲REGEX関数>又は<POSITION̲REGEX式>が指定されるならば,

結果の宣言型は,位取り0の処理系定義の真数型とする。 

2) <文字POSITION式>が指定されるならば,<文字値式1>と<文字値式2>とが比較可能でなければな

らない。 

3) <OCCURRENCES̲REGEX関数>が指定されるならば,次による。 

a) <XQueryパターン>と<REGEX当該文字列>とが比較可能でなければならない。 

b) <開始位置>の宣言型は,位取り0の真数でなければならない。 

c) <開始位置>が指定されないならば,1が暗に想定される。 

d) 場合: 

i) 

<文字長単位>が指定されるならば,<REGEX当該文字列>の文字レパートリは,UCSでなけれ

ばならない。 

230 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,CHARACTERSが暗に想定される。 

e) <XQueryオプションフラグ>が指定されないならば,長さ0の文字列が暗に想定される。 

4) <POSITION̲REGEX式>が指定されるならば,次による。 

a) <XQueryパターン>と<REGEX当該文字列>とが比較可能でなければならない。 

b) <POSITION̲REGEXのSTART又はAFTER>が指定されないならば,STARTが暗に想定される。 

c) <開始位置>,<REGEX出現回数>及び<REGEXキャプチャグループ>の宣言型は,位取り0の真数

でなければならない。 

d) <開始位置>が指定されないならば,1が暗に想定される。 

e) 場合: 

i) 

<文字長単位>が指定されるならば,<REGEX当該文字列>の文字レパートリは,UCSでなけれ

ばならない。 

ii) そうでなければ,CHARACTERSが暗に想定される。 

f) 

<REGEX出現回数>が指定されないならば,1が暗に想定される。 

g) <REGEXキャプチャグループ>が指定されないならば,0が暗に想定される。 

h) <XQueryオプションフラグ>が指定されないならば,長さ0の文字列が暗に想定される。 

5) 場合: 

a) <データ列値式>の文字符号化形式がUTF8,UTF16又はUTF32でないならば,<文字長単位>は,

指定してはならない。 

b) そうでなければ,<文字長単位>が指定されないならば,CHARACTERSが暗に想定される。 

6) <EXTRACT式>が指定されるならば,次による。 

場合: 

a) <抜き出しフィールド>が<基本日時フィールド>ならば,それは,<抜き出し元>に直に含まれる<

時間隔値式>又は<日時値式>の<基本日時フィールド>を識別しなければならない。 

b) <抜き出しフィールド>が<時刻帯フィールド>ならば,<抜き出し元>の宣言型は,TIME WITH 

TIME ZONE又はTIMESTAMP WITH TIME ZONEでなければならない。 

7) <EXTRACT式>が指定されるならば,次による。 

場合: 

a) <抜き出しフィールド>がSECONDを指定しない<基本日時フィールド>であるか,又は<抜き出し

フィールド>が<基本日時フィールド>でないならば,結果の宣言型は,位取り0の処理系定義の

真数型とする。 

b) そうでなければ,結果の宣言型は,<抜き出し元>のSECOND <基本日時フィールド>の,適切に,

指定されるか又は想定される<時刻小数秒精度>又は<時間隔小数秒精度>未満ではない位取りを

もつ処理系定義の真数型とする。 

8) <LENGTH式>が指定されるならば,結果の宣言型は,位取り0の処理系定義の真数型とする。 

9) <基数式>が指定されるならば,結果の宣言型は,位取り0の処理系定義の真数型とする。 

10) <最大基数式>が指定されるならば,結果の宣言型は,位取り0の処理系定義の真数型とする。 

11) <絶対値式>が指定されるならば,結果の宣言型は,それに直に含まれる<数値式>の宣言型とする。 

12) <剰余式>が指定されるならば,各<数値式>の宣言型は,位取り0の真数でなければならない。結果

の宣言型は,それに直に含まれる<数値式除数>の宣言型とする。 

13) <自然対数>の結果の宣言型は,処理系定義の概数型とする。 

231 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

14) <指数関数>の結果の宣言型は,処理系定義の概数型とする。 

15) <べき関数>の結果の宣言型は,処理系定義の概数型とする。 

16) <平方根>が指定されるならば,それに単純に含まれる<数値式>をNVEとする。<平方根>は,次の

指定と等価とする。 

POWER (NVE, 0.5) 

17) <下限関数>又は<上限関数>が指定されるならば,次による。 

場合: 

a) それらに単純に含まれる<数値式> NVEの宣言型が真数ならば,結果の宣言型は,処理系定義の

精度,NVEの基数及び位取り0をもつ真数とする。 

b) そうでなければ,結果の宣言型は,処理系定義の精度をもつ概数とする。 

18) <幅バケット関数>が指定されるならば,<幅バケット数>の宣言型は,位取り0の真数でなければな

らない。<幅バケット関数>の結果の宣言型は,<幅バケット数>の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) <最大基数式> MCEが指定されるならば,MCEの結果は,MCEに単純に含まれる<配列値式>の

宣言型の最大基数とする。 

b) そうでなければ,<数値関数>に単純に含まれる一つ以上の<データ列値式>,<日時値式>,<時間

隔値式>及び<集まり値式>の値がナル値ならば,<数値関数>の結果は,ナル値とし,この細分箇

条の一般規則は,これ以上適用しない。 

2) <文字POSITION式>が指定されるならば,<文字値式1>の値をCVE1とし,<文字値式2>の値を

CVE2とする。 

場合: 

a) CHAR̲LENGTH(CVE1) が0ならば,結果は,1とする。 

b) <文字長単位>が指定されるならば,<文字長単位>をCLUとする。そうでなければ,CHARACTERS

をCLUとする。次のような少なくとも一つの値Pが存在するならば,結果は,そのような最小の

Pとする。 

CVE1 = SUBSTRING ( CVE2 FROM P FOR CHAR̲LENGTH (CVE1 USING CLU ) USING 

CLU ) 

注記157 用いる照合順は,通常の方法で決定される。 

c) そうでなければ,結果は,0とする。 

3) <2進オクテットPOSITION式>が指定されるならば,次による。 

場合: 

a) 1番目の<2進オクテット値式>が長さ0をもつならば,結果は,1とする。 

b) 1番目の<2進オクテット値式>の値が,2番目の<2進オクテット値式>の値からの連続するオクテ

ットの同一の長さの部分データ列と等しいならば,結果は,2番目の<2進オクテット値式>の値

中の,そのような最初の部分データ列の開始に先行するオクテットの個数より1大きい値とする。 

c) そうでなければ,結果は,0とする。 

4) <EXTRACT式>が指定されるならば,次による。 

232 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) <抜き出しフィールド>が<基本日時フィールド>ならば,結果は,その<基本日時フィールド>によ

って識別される日時フィールドの値とし,<抜き出し元>と同じ符号をもつ。 

注記158 識別される<基本日時フィールド>の値が0か,又は<抜き出し元>が<時間隔値式>でな

いならば,その符号は,無関係である。 

b) そうでなければ,<日時値式>に関連付けられた,暗に想定されるか又は陽に指定される時刻帯時

差の時間隔値をTZとする。 

場合: 

i) 

<抜き出しフィールド>がTIMEZONE̲HOURならば,結果は,EXTRACT (HOUR FROM TZ) と

して計算される。 

ii) そうでなければ,結果は,EXTRACT (MINUTE FROM TZ) として計算される。 

5) <CHAR̲LENGTH式>が指定されるならば,次による。 

場合: 

a) <文字値式>の文字符号形式がUTF8,UTF16又はUTF32でないならば,<データ列値式>をSとす

る。 

場合: 

i) 

Sの最特定型が文字列ならば,結果は,Sの値中の文字の個数とする。 

注記159 文字列中の文字の個数は,その文字列の文字集合の意味に従って決定される。 

ii) そうでなければ,結果は,OCTET̲LENGTH(S) とする。 

b) そうでなければ,結果は,<CHAR̲LENGTH式>中で陽に指定されるか又は暗に想定される<文字

長単位>での個数とし,関連する引用規格の文書中のそれらの単位の定義に従って数えた個数と

する。 

6) <OCTET̲LENGTH式>が指定されるならば,<データ列値式>をSとする。Sの値中のビット(2進

桁)の個数をBLとする。<OCTET̲LENGTH式>の結果は,除算 (BL/8) の商未満ではない最小の整

数とする。 

7) <基数式>の結果は,<集まり値式>の結果の要素の個数とする。 

8) <絶対値式>が指定されるならば,それに直に含まれる<数値式>の値をNとする。 

場合: 

a) Nがナル値ならば,結果は,ナル値とする。 

b) N ≥ 0ならば,結果は,Nとする。 

c) そうでなければ,結果は,-1* Nとする。-1* Nが結果の宣言型で表現可能でないならば,例外

条件:データ例外 (data exception) − 数値範囲外 (numeric value out of range) が引き起こされる。 

9) <剰余式>が指定されるならば,それに直に含まれる<数値式被除数>の値をNとし,それに直に含ま

れる<数値式除数>の値をMとする。 

場合: 

a) N及びMのうちの少なくとも一つがナル値ならば,結果は,ナル値とする。 

b) Mが0ならば,例外条件:データ例外 (data exception) − 0による除算 (division by zero) が引き

起こされる。 

c) そうでなければ,結果は,次の全ての条件が真となるような,位取り0の一意な真数値Rとする。 

i) 

RがNと同じ符号をもつ。 

233 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) Rの絶対値がMの絶対値未満である。 

iii) 位取り0の,ある真数値Kに対して,N = M * K + Rである。 

10) <自然対数>が指定されるならば,それに単純に含まれる<数値式>の値をVとする。 

場合: 

a) Vがナル値ならば,結果は,ナル値とする。 

b) Vが0又は負ならば,例外条件:データ例外 − 自然対数の引数が正しくない (invalid argument 

for natural logarithm) が引き起こされる。 

c) そうでなければ,結果は,Vの自然対数とする。 

11) <指数関数>が指定されるならば,それに単純に含まれる<数値式>の値をVとする。 

場合: 

a) Vがナル値ならば,結果は,ナル値とする。 

b) そうでなければ,結果は,e(自然対数の底)をV乗した値とする。結果の宣言型で結果が表現可

能でないならば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

12) <べき関数>が指定されるならば,<数値式基底>をNVEBとし,NVEBの値をVBとし,<数値式指

数>をNVEEとし,NVEEの値をVEとする。 

場合: 

a) VB及びVEのうちの少なくとも一つがナル値ならば,結果は,ナル値とする。 

b) VBが0で,かつ,VEが負ならば,例外条件:データ例外 − べき関数の引数が正しくない (invalid 

argument for power function) が引き起こされる。 

c) VBが0で,かつ,VEが0ならば,結果は,1とする。 

d) VBが0で,かつ,VEが正ならば,結果は,0とする。 

e) VBが負で,かつ,VEが位取り0の真数値と等しくないならば,例外条件:データ例外 − べき関

数の引数が正しくない が引き起こされる。 

f) VBが負で,かつ,VEが位取り0の偶数の真数値と等しいならば,結果は,次の式の結果とする。 

EXP(NVEE*LN(-NVEB)) 

g) VBが負で,かつ,VEが位取り0の奇数の真数値と等しいならば,結果は,次の式の結果とする。 

- EXP(NVEE*LN(-NVEB)) 

h) そうでなければ,結果は,次の式の結果とする。 

EXP(NVEE*LN(NVEB)) 

13) <下限関数>が指定されるならば,それに単純に含まれる<数値式> NVEの値をVとする。 

場合: 

a) Vがナル値ならば,結果は,ナル値とする。 

b) そうでなければ,次による。 

場合: 

i) 

NVEの最特定型が真数ならば,結果は,V以下で最大の位取り0の真数値とする。結果の宣言

型でこの結果が表現可能でないならば,例外条件:データ例外 − 数値範囲外 が引き起こされ

る。 

ii) そうでなければ,結果は,V以下で最大の整数とする。結果の宣言型でこの結果が表現可能で

ないならば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

14) <上限関数>が指定されるならば,それに単純に含まれる<数値式> NVEの値をVとする。 

234 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) Vがナル値ならば,結果は,ナル値とする。 

b) そうでなければ,次による。 

場合: 

i) 

NVEの最特定型が真数ならば,結果は,V以上で最小の位取り0の真数値とする。結果の宣言

型でこの結果が表現可能でないならば,例外条件:データ例外 − 数値範囲外 が引き起こされ

る。 

ii) そうでなければ,結果は,V以上で最小の整数とする。結果の宣言型でこの結果が表現可能で

ないならば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

15) <幅バケット関数>が指定されるならば,<幅バケットオペランド>の値をWBOとし,<幅バケット境

界1>の値をWBB1とし,<幅バケット境界2>の値をWBB2とし,<幅バケット数>の値をWBCとす

る。 

場合: 

a) WBO,WBB1,WBB2及びWBCのうちの少なくとも一つがナル値ならば,結果は,ナル値とす

る。 

b) WBCが0以下ならば,例外条件:データ例外 − 幅バケット関数の引数が正しくない (invalid 

argument for width bucket function) が引き起こされる。 

c) WBB1がWBB2と等しいならば,例外条件:データ例外 − 幅バケット関数の引数が正しくない 

が引き起こされる。 

d) WBB1がWBB2未満ならば,次による。 

場合: 

i) 

WBOがWBB1未満ならば,結果は,0とする。 

ii) WBOがWBB2以上ならば,結果は,WBC+1とする。結果の宣言型で結果が表現可能でないな

らば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

iii) そうでなければ,結果は,((WBC * (WBO−WBB1) / (WBB2−WBB1)) + 1) 以下で最大の

位取り0の真数値とする。 

e) WBB1がWBB2を超えるならば,次による。 

場合: 

i) 

WBOがWBB1を超えるならば,結果は,0とする。 

ii) WBOがWBB2以下ならば,結果は,WBC+1とする。結果の宣言型で結果が表現可能でないな

らば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

iii) そうでなければ,結果は,((WBC * (WBB1−WBO) / (WBB1−WBB2)) + 1) 以下で最大の

位取り0の真数値とする。 

16) <OCCURRENCES̲REGEX関数>が指定されるならば,次による。 

a) <REGEX当該文字列>をRSSとし,RSSの値をSTRとし,<XQueryパターン>の値をPATとし,

<開始位置>の値をSPとし,<文字長単位>をCLUとし,<XQueryオプションフラグ>の値をFL

とする。 

b) 場合: 

i) 

STR,PAT及びFLのうちの少なくとも一つがナル値ならば,<OCCURRENCES̲REGEX関数>

の結果は,ナル値とする。 

235 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) SPが1未満か,又は次の値を超えるならば,<OCCURRENCES̲REGEX関数>の結果は,‒1と

する。 

CHARACTER̲LENGTH ( RSS USING CLU ) 

iii) CLUがOCTETSで,かつ,STRのSP番目のオクテットが文字の最初のオクテットでないなら

ば,<OCCURRENCES̲REGEX関数>の結果は,処理系依存とする。 

iv) そうでなければ,STRをSTRINGとして,PATをPATTERNとして,SPをPOSITIONとして,

CLUをUNITSとして,FLをFLAGとして,“9.18 XQuery正規表現照合”の一般規則を適用す

る。これらの一般規則の適用によって戻されるLISTをLOMVとする。 

v) <OCCURRENCES̲REGEX関数>の結果は,LOMV中の一致ベクトルの個数とする。 

17) <POSITION̲REGEX式>が指定されるならば,次による。 

a) <REGEX当該文字列>をRSSとし,RSSの値をSTRとし,<XQueryパターン>の値をPATとし,

<開始位置>の値をSPとし,<文字長単位>をCLUとし,<REGEX出現回数>の値をOCCとし,

<REGEXキャプチャグループ>をCAPとし,<XQueryオプションフラグ>の値をFLとする。 

b) 場合: 

i) 

STR,PAT,OCC,CAP及びFLのうちの少なくとも一つがナル値ならば,<POSITION̲REGEX

式>の結果は,ナル値とする。 

ii) OCCが1未満ならば,<POSITION̲REGEX式>の結果は,0とする。 

iii) CAPが0未満か,又はPATのXQuery正規表現括弧付き部分表現の個数を超えるならば,

<POSITION̲REGEX式>の結果は,0とする。 

iv) SPが1未満か,又は次の値を超えるならば,<POSITION̲REGEX式>の結果は,0とする。 

CHARACTER̲LENGTH ( RSS USING CLU ) 

v) CLUがOCTETSで,かつ,STRのSP番目のオクテットが文字の最初のオクテットでないなら

ば,<POSITION̲REGEX式>の結果は,処理系依存とする。 

vi) そうでなければ,STRをSTRINGとして,PATをPATTERNとして,SPをPOSITIONとして,

CLUをUNITSとして,FLをFLAGとして,“9.18 XQuery正規表現照合”の一般規則を適用す

る。これらの一般規則の適用によって戻されるLISTをLOMVとする。 

場合: 

1) 少なくともOCC個の一致ベクトルがLOMV中にあるならば,LOMV中のOCC番目の一致

ベクトルをMVとする。MV[CAP] をPLとする。ここで,MV[0] は,MV中の最初の位置/

長さとする。PLの位置をPとし,PLの長さをLとする。<POSITION̲REGEX式>の結果は,

次による。 

場合: 

A) Pが0ならば,0とする。 

B) <POSITION̲REGEXのSTART又はAFTER>がSTARTならば,Pとする。 

C) そうでなければ,P + Lとする。 

2) そうでなければ,<POSITION̲REGEX式>の結果は,0とする。 

適合性規則 

1) 機能S091“基本配列提供”又は機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,

<基数式>を含んではならない。 

2) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<EXTRACT式>を含んでは

236 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ならない。 

3) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<時刻帯フィールド>を指定する<EXTRACT

式>を含んではならない。 

4) 機能F421“各国文字”なしでは,適合するSQL言語は,NATIONAL CHARACTER,NATIONAL 

CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTの宣言型をもつ<データ列

値式>を単純に含む<LENGTH式>を含んではならない。 

5) 機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”なしで

は,適合するSQL言語は,<2進オクテットPOSITION式>を含んではならない。 

6) 機能T441“ABS及びMOD関数”なしでは,適合するSQL言語は,<絶対値式>を含んではならな

い。 

7) 機能T441“ABS及びMOD関数”なしでは,適合するSQL言語は,<剰余式>を含んではならない。 

8) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<自然対数>を含んではならない。 

9) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<指数関数>を含んではならない。 

10) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<べき関数>を含んではならない。 

11) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<平方根>を含んではならない。 

12) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<下限関数>を含んではならない。 

13) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<上限関数>を含んではならない。 

14) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<幅バケット関数>を含んではなら

ない。 

15) 機能F842“OCCURENCES̲REGEX関数”なしでは,適合するSQL言語は,<OCCURENCES̲REGEX

関数>を含んではならない。 

16) 機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<OCCURENCES̲REGEX関数>は,<文字長単位>を含んではならない。 

17) 機能F843“POSITION̲REGEX関数”なしでは,適合するSQL言語は,<POSITION̲REGEX式>を

含んではならない。 

18) 機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<POSITION̲REGEX式>は,<文字長単位>を含んではならない。 

19) 機能F847“値式正規表現”なしでは,適合するSQL言語中で,<XQueryパターン>及び<XQueryオ

プションフラグ>は,<値指定>でなければならない。 

20) 機能S403“ARRAY̲MAX̲CARDINALITY”なしでは,適合するSQL言語は,<最大基数式>を含ん

ではならない。 

6.29 <データ列値式> 

機能 

<データ列値式> (<string value expression>) は,文字列値又は2進オクテット列値を指定する。 

形式 

<データ列値式> ::= 

  <文字値式> 

| <2進オクテット値式> 

<文字値式> ::= 

  <連結> 

237 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <文字因子> 

<連結> ::= 

  <文字値式> <連結演算子> <文字因子> 

<文字因子> ::= 

  <文字一次子> [ <COLLATE句> ] 

<文字一次子> ::= 

  <値式一次子> 

| <データ列値関数> 

<2進オクテット値式> ::= 

  <2進オクテット連結> 

| <2進オクテット因子> 

<2進オクテット因子> ::= 

  <2進オクテット一次子> 

<2進オクテット一次子> ::= 

  <値式一次子> 

| <データ列値関数> 

<2進オクテット連結> ::= 

  <2進オクテット値式> <連結演算子> <2進オクテット因子> 

構文規則 

1) <文字一次子>の宣言型は,文字列でなければならない。 

2) <文字値式>の宣言型は,それに単純に含まれる<連結>又は<文字因子>の宣言型とする。 

3) <連結>が指定されるならば,次による。 

a) <文字値式>の宣言型をD1とし,<連結>に単純に含まれる<文字因子>の宣言型をD2とする。D1

及びD2をDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規

則の適用によって戻されるRESTYPEをDとする。Dの文字集合をCSとし,Dの照合順をCO

とし,Dの照合順起源をCDとする。 

b) D1の文字単位での長さにD2の文字単位での長さを加えた長さをMとする。可変長文字列の処

理系定義の最大長をVLとし,長大オブジェクト文字列の処理系定義の最大長をLOLとし,固定

長文字列の処理系定義の最大長をFLとする。 

場合: 

i) 

<文字値式>又は<文字因子>の宣言型が文字長大オブジェクト型ならば,<連結>の宣言型は,文

字集合CS,照合順CO,照合順起源CD,及びMとLOLとの小さい方と等しい最大長をもつ文

字長大オブジェクト型とする。 

ii) <文字値式>又は<文字因子>の宣言型が可変長文字列ならば,<連結>の宣言型は,文字集合CS,

照合順CO,照合順起源CD,及びMとVLとの小さい方と等しい最大長をもつ可変長文字列と

する。 

iii) <文字値式>及び<文字因子>の宣言型が固定長文字列ならば,Mは,FLを超えてはならず,<連

結>の宣言型は,文字集合CS,照合順CO,照合順起源CD及び長さMをもつ固定長文字列と

する。 

4) <文字因子>が指定されるならば,次による。 

238 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) <COLLATE句>が指定されるならば,宣言型照合順が<COLLATE句>によって識別される照合順

であること,及びその照合順起源が明示 (explicit) であることを除いて,<文字因子>の宣言型は,

<文字一次子>の宣言型とする。 

b) そうでなければ,<文字因子>の宣言型は,<文字一次子>の宣言型とする。 

5) <2進オクテット一次子>の宣言型は,2進オクテット列でなければならない。 

6) 場合: 

a) <2進オクテット連結>が指定されるならば,<2進オクテット値式>の宣言型をB1とし,<2進オ

クテット因子>の宣言型をB2とする。B1のオクテット単位での長さにB2のオクテット単位での

長さを加えた長さをMとする。固定長2進オクテット列の処理系定義の最大長をFLとし,可変

長2進オクテット列の処理系定義の最大長をVLとし,長大オブジェクト2進オクテット列の処

理系定義の最大長をLOLとする。 

<2進オクテット連結>の宣言型は,次による。 

場合: 

i) 

<2進オクテット値式>又は<2進オクテット因子>の宣言型が2進オクテット長大オブジェクト

型ならば,MとLOLとの小さい方と等しい最大長をもつ長大オブジェクト2進オクテット列

とする。 

ii) <2進オクテット値式>又は<2進オクテット因子>の宣言型が可変長2進オクテット列ならば,

MとVLとの小さい方と等しい最大長をもつ可変長2進オクテット列とする。 

iii) <2進オクテット値式>及び<2進オクテット因子>の宣言型が固定長2進オクテット列ならば,

長さMをもつ固定長2進オクテット列とし,Mは,FLを超えてはならない。 

b) そうでなければ,<2進オクテット値式>の宣言型は,<2進オクテット因子>の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) <データ列値式>に単純に含まれるいずれかの<文字一次子>又は<2進オクテット一次子>の値がナル

値ならば,<データ列値式>の結果は,ナル値とする。 

2) <連結>が指定されるならば,次による。 

a) <文字因子>の文字レパートリがUCSならば,この一般規則の残りの部分では,“長さ (length)”

という用語は,“文字単位での長さ (length in characters)”を意味するものとして解釈しなければな

らない。 

b) <文字値式>及び<文字因子>の結果を,それぞれ,S1及びS2とする。 

場合: 

i) 

S1及びS2のうちの少なくとも一つがナル値ならば,<連結>の結果は,ナル値とする。 

ii) そうでなければ,次による。 

1) S1及びそれに続くS2から成るデータ列をSとし,Sの長さをMとする。 

2) <文字因子>の文字レパートリがUCSならば,Sは,次の値で置き換えられる。 

場合: 

A) <探索条件> S1 IS NORMALIZED AND S2 IS NORMALIZEDが真 (True) と評価されるな

らば,次の値。 

239 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

NORMALIZE (S) 

B) そうでなければ,処理系定義のデータ列。 

3) 場合: 

A) S1及びS2のうちの少なくとも一つの最特定型が文字長大オブジェクト型ならば,長大オ

ブジェクト文字列の処理系定義の最大長をLOLとする。 

場合: 

I) MがLOL以下ならば,<連結>の結果は,長さMをもつSとする。 

II) MがLOLより大きく,かつ,Sの最も右側のM ‒ LOL個の文字が全て<空白>文字なら

ば,<連結>の結果は,長さLOLをもつSの最初のLOL個の文字とする。 

III) そうでなければ,例外条件:データ例外 (data exception) − データ列データ,右切捨て 

(string data, right truncation) が引き起こされる。 

B) S1及びS2のうちの少なくとも一つの最特定型が可変長文字列ならば,可変長文字列の処

理系定義の最大長をVLとする。 

場合: 

I) MがVL以下ならば,<連結>の結果は,長さMをもつSとする。 

II) MがVLより大きく,かつ,Sの最も右側のM ‒ VL個の文字が全て<空白>文字ならば,

<連結>の結果は,長さVLをもつSの最初のVL個の文字とする。 

III) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされ

る。 

C) S1及びS2の両方の最特定型が固定長文字列ならば,<連結>の結果は,Sとする。 

3) <2進オクテット連結>が指定されるならば,<2進オクテット値式>及び<2進オクテット因子>の結

果を,それぞれ,S1及びS2とする。 

場合: 

a) S1及びS2のうちの少なくとも一つがナル値ならば,<2進オクテット連結>の結果は,ナル値と

する。 

b) そうでなければ,S1及びそれに続くS2から成るデータ列をSとし,Sのオクテット単位での長

さをMとする。 

場合: 

i) 

S1及びS2のうちの少なくとも一つの最特定型が2進オクテット長大オブジェクト型ならば,

長大オブジェクト2進オクテット列の処理系定義の最大長をLOLとする。 

場合: 

1) MがLOL以下ならば,<2進オクテット連結>の結果は,長さMをもつSとする。 

2) MがLOLより大きく,かつ,Sの最も右側のM ‒ LOL個のオクテットが全てX'00' ならば,

<2進オクテット連結>の結果は,長さLOLをもつSの最初のLOL個のオクテットとする。 

3) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

ii) S1及びS2のうちの少なくとも一つの最特定型が可変長2進オクテット列ならば,可変長2進

オクテット列の処理系定義の最大長をVLとする。 

場合: 

1) MがVL以下ならば,<2進オクテット連結>の結果は,長さMをもつSとする。 

2) MがVLより大きく,かつ,Sの最も右側のM ‒ VL個のオクテットが全てX'00' ならば,<2

240 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

進オクテット連結>の結果は,長さVLをもつSの最初のVL個のオクテットとする。 

3) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

iii) S1及びS2の両方の最特定型が固定長2進オクテット列ならば,<2進オクテット連結>の結果

は,Sとする。 

4) <文字値式>の結果が長さ0の文字列ならば,例外条件:データ例外 − 長さ0の文字列 (zero-length 

character string) が引き起こされるかどうかは,処理系定義とする。 

適合性規則 

1) 機能F421“各国文字”なしでは,適合するSQL言語は,NATIONAL CHARACTER,NATIONAL 

CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTの宣言型をもつ<文字値式

>を含んではならない。 

2) 機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”なしで

は,適合するSQL言語は,<2進オクテット値式>を含んではならない。 

6.30 <データ列値関数> 

この細分箇条は,ISO/IEC 9075-9の“6.4 <データ列値関数>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“6.8 <データ列値関数>”によって修正される。 

機能 

<データ列値関数> (<string value function>) は,文字列型又は2進オクテット列型の値を生成する関数を

指定する。 

形式 

09 <データ列値関数> ::= 

  <文字値関数> 

| <2進オクテット値関数> 

14 <文字値関数> ::= 

  <文字部分列関数> 

| <正規表現部分列関数> 

| <SUBSTRING̲REGEX関数> 

| <大文字小文字変換> 

| <符号変換> 

| <文字文字変換> 

| <TRANSLATE̲REGEX関数> 

| <TRIM関数> 

| <文字OVERLAY関数> 

| <NORMALIZE関数> 

| <特定型メソッド> 

<文字部分列関数> ::= 

  SUBSTRING <左括弧> <文字値式> FROM <開始位置> 

      [ FOR <データ列長> ] [ USING <文字長単位> ] <右括弧> 

<正規表現部分列関数> ::= 

  SUBSTRING <左括弧> <文字値式> SIMILAR <文字値式> 

      ESCAPE <エスケープ文字> <右括弧> 

241 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<SUBSTRING̲REGEX関数> ::= 

  SUBSTRING̲REGEX <左括弧> 

      <XQueryパターン> [ FLAG <XQueryオプションフラグ> ] 

      IN <REGEX当該文字列> 

      [ FROM <開始位置> ] 

      [ USING <文字長単位> ] 

      [ OCCURRENCE <REGEX出現回数> ] 

      [ GROUP <REGEXキャプチャグループ> ] 

      <右括弧> 

<大文字小文字変換> ::= 

  { UPPER | LOWER } <左括弧> <文字値式> <右括弧> 

<符号変換> ::= 

  CONVERT <左括弧> <文字値式> 

      USING <符号変換名> <右括弧> 

<文字文字変換> ::= 

  TRANSLATE <左括弧> <文字値式> 

      USING <文字変換名> <右括弧> 

<TRANSLATE̲REGEX関数> ::= 

  TRANSLATE̲REGEX <左括弧> 

      <XQueryパターン> [ FLAG <XQueryオプションフラグ> ] 

      IN <REGEX当該文字列> 

      [ WITH <XQuery置換文字列> ] 

      [ FROM <開始位置> ] 

      [ USING <文字長単位> ] 

      [ OCCURRENCE <TRANSLATE̲REGEXの出現回数> ] 

      <右括弧> 

<XQuery置換文字列> ::= 

  <文字値式> 

<TRANSLATE̲REGEXの出現回数> ::= 

  <REGEX出現回数> 

| ALL 

<TRIM関数> ::= 

  TRIM <左括弧> <TRIMオペランド> <右括弧> 

<TRIMオペランド> ::= 

  [ [ <TRIM指定> ] [ <TRIM文字> ] FROM ] <TRIM元> 

<TRIM元> ::= 

  <文字値式> 

<TRIM指定> ::= 

  LEADING 

| TRAILING 

242 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| BOTH 

<TRIM文字> ::= 

  <文字値式> 

<文字OVERLAY関数> ::= 

  OVERLAY <左括弧> <文字値式> PLACING <文字値式> 

      FROM <開始位置> [ FOR <データ列長> ] 

      [ USING <文字長単位> ] <右括弧> 

<NORMALIZE関数> ::= 

  NORMALIZE <左括弧> <文字値式> 

      [ <コンマ> <正規形式> [ <コンマ> <正規化関数結果長> ] ] <右括弧> 

<正規形式> ::= 

  NFC 

| NFD 

| NFKC 

| NFKD 

<正規化関数結果長> ::= 

  <文字長> 

| <文字長大オブジェクト長> 

<特定型メソッド> ::= 

  <利用者定義型値式> <ピリオド> SPECIFICTYPE 

      [ <左括弧> <右括弧> ] 

14 <2進オクテット値関数> ::= 

  <2進オクテット部分列関数> 

| <2進オクテットTRIM関数> 

| <2進オクテットOVERLAY関数> 

<2進オクテット部分列関数> ::= 

  SUBSTRING <左括弧> <2進オクテット値式> FROM <開始位置> 

      [ FOR <データ列長> ] <右括弧> 

<2進オクテットTRIM関数> ::= 

  TRIM <左括弧> <2進オクテットTRIMオペランド> <右括弧> 

<2進オクテットTRIMオペランド> ::= 

  [ [ <TRIM指定> ] [ <TRIMオクテット> ] FROM ] <2進オクテットTRIM元> 

<2進オクテットTRIM元> ::= 

  <2進オクテット値式> 

<TRIMオクテット> ::= 

  <2進オクテット値式> 

<2進オクテットOVERLAY関数> ::= 

  OVERLAY <左括弧> <2進オクテット値式> PLACING <2進オクテット値式> 

      FROM <開始位置> [ FOR <データ列長> ] <右括弧> 

<開始位置> ::= 

243 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <数値式> 

<データ列長> ::= 

  <数値式> 

構文規則 

1) 

09 <データ列値関数>の宣言型は,それに直に含まれる<文字値関数>又は<2進オクテット値関数>の

宣言型とする。 

2) 

14 <文字値関数>の宣言型は,それに直に含まれる<文字部分列関数>,<正規表現部分列関数>,

<SUBSTRING̲REGEX関数>,<大文字小文字変換>,<符号変換>,<文字文字変換>,

<TRANSLATE̲REGEX関数>,<TRIM関数>,<文字OVERLAY関数>,<NORMALIZE関数>又は<

特定型メソッド>の宣言型とする。 

3) <開始位置>,<データ列長>,<REGEX出現回数>又は<REGEXキャプチャグループ>の宣言型は,位

取り0の真数でなければならない。 

4) <文字部分列関数> CSFが指定されるならば,CSFに直に含まれる<文字値式>の宣言型をDTCVE

とする。CSFの宣言型DTCSFの最大長,文字集合及び照合順は,次のとおりに決定される。 

a) 場合: 

i) 

<文字値式>の宣言型が固定長文字列又は可変長文字列ならば,DTCSFは,DTCVEの長さ又は

最大長と等しい最大長をもつ可変長文字列型とする。 

ii) そうでなければ,DTCSFは,DTCVEの最大長と等しい最大長をもつ長大オブジェクト文字列

型とする。 

b) <文字部分列関数>の文字集合及び照合順は,DTCVEの文字集合及び照合順とする。 

5) <文字値式>の文字レパートリがUCSでないならば,<文字長単位>は,指定してはならない。 

6) USING <文字長単位>が指定されないならば,USING CHARACTERSが暗に想定される。 

7) <正規表現部分列関数>が指定されるならば,次による。 

a) <正規表現部分列関数>の<エスケープ文字>及び<文字値式>の宣言型は,同じ文字レパートリをも

つ文字列でなければならない。 

b) 場合: 

i) 

1番目の<文字値式>の宣言型が固定長文字列又は可変長文字列ならば,<正規表現部分列関数>

の宣言型は,1番目の<文字値式>の長さ又は最大長と等しい最大長をもつ可変長文字列とする。 

ii) そうでなければ,<正規表現部分列関数>の宣言型は,1番目の<文字値式>の最大長と等しい最

大長をもつ文字長大オブジェクト型とする。 

c) <正規表現部分列関数>の文字集合及び照合順は,1番目の<文字値式>の文字集合及び照合順とす

る。 

8) <SUBSTRING̲REGEX関数> RSFが指定されるならば,次による。 

a) <開始位置>が指定されないならば,1が暗に想定される。 

b) 場合: 

i) 

<文字長単位>が指定されるならば,<REGEX当該文字列>の文字レパートリは,UCSでなけれ

ばならない。 

ii) そうでなければ,CHARACTERSが暗に想定される。 

c) <REGEX出現回数>が指定されないならば,1が暗に想定される。 

d) <REGEXキャプチャグループ>が指定されないならば,0が暗に想定される。 

244 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) <XQueryオプションフラグ>が指定されないならば,長さ0の文字列が暗に想定される。 

f) RSFに直に含まれる<REGEX当該文字列>をRSSとする。RSSの宣言型をDTCVEとする。RSF

の宣言型DTRSFは,次のとおりに決定される。 

i) 

場合: 

1) DTCVEが固定長文字列又は可変長文字列ならば,DTRSFは,DTCVEの長さ又は最大長と

等しい最大長をもつ可変長文字列とする。 

2) そうでなければ,DTRSFは,DTCVEの最大長と等しい最大長をもつ長大オブジェクト文字

列型とする。 

ii) DTRSFの文字集合及び照合順は,DTCVEの文字集合及び照合順とする。 

9) <大文字小文字変換>が指定されるならば,<大文字小文字変換>の結果の宣言型は,<文字値式>の宣

言型とする。 

10) <符号変換>が指定されるならば,次による。 

a) <符号変換>は,<選択副リスト>に直に含まれる<導出列>に直に含まれる<値式>に単純に含まれ

るか,又は<ホストパラメタ名>である<単純値指定>若しくは<ホストパラメタ指定>である<値指

定>のいずれかを直に含まなければならない。 

b) <符号変換名>は,符号変換を識別しなければならない。 

c) 場合: 

i) 

<文字値式>の宣言型が固定長文字列又は可変長文字列ならば,結果の宣言型は,処理系定義の

最大長をもつ可変長文字列とする。 

ii) そうでなければ,結果の宣言型は,処理系定義の最大長をもつ文字長大オブジェクト型とする。 

d) 結果の文字集合は,文字レパートリが<文字値式>の文字レパートリと同じで,かつ,文字符号化

形式が<符号変換名>によって識別される符号変換によって決定される文字符号化形式である処

理系定義の文字集合CSとする。結果の宣言型照合順は,CSの文字集合照合順とする。 

11) <文字文字変換>が指定されるならば,次による。 

a) <文字変換名>は,文字文字変換を識別しなければならない。 

b) 場合: 

i) 

<文字値式>の宣言型が固定長文字列又は可変長文字列ならば,<文字文字変換>の宣言型は,処

理系定義の最大長をもつ可変長文字列とする。 

ii) そうでなければ,<文字文字変換>の宣言型は,処理系定義の最大長をもつ文字長大オブジェク

ト型とする。 

c) <文字文字変換>の宣言型は,文字変換の相手文字集合である文字集合CSをもつ。結果の宣言型

照合順は,CSの文字集合照合順とする。 

12) <TRANSLATE̲REGEX関数> RTが指定されるならば,次による。 

a) <開始位置>が指定されないならば,1が暗に想定される。 

b) 場合: 

i) 

<文字長単位>が指定されるならば,<REGEX当該文字列>の文字レパートリは,UCSでなけれ

ばならない。 

ii) そうでなければ,CHARACTERSが暗に想定される。 

c) <TRANSLATE̲REGEXの出現回数>が指定されないならば,ALLが暗に想定される。 

d) <XQuery置換文字列>が指定されないならば,長さ0の文字列が暗に想定される。 

245 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) <XQueryオプションフラグ>が指定されないならば,長さ0の文字列が暗に想定される。 

f) RTに直に含まれる<REGEX当該文字列>をRSSとする。RSSの宣言型をDTCVEとする。RTの

宣言型DTRTは,次のとおりに決定される。 

i) 

場合: 

1) <XQuery置換文字列>が指定されないか,又は長さ0の文字列ならば,次による。 

A) DTCVEが固定長文字列又は可変長文字列ならば,DTRTは,DTCVEの長さ又は最大長と

等しい最大長をもつ可変長文字列とする。 

B) そうでなければ,DTRTは,DTCVEの最大長と等しい最大長をもつ長大オブジェクト文字

列型とする。 

2) そうでなければ,次による。 

A) DTCVEが固定長文字列又は可変長文字列ならば,DTRTは,処理系定義の最大長をもつ可

変長文字列とする。 

B) そうでなければ,DTRTは,処理系定義の最大長をもつ長大オブジェクト文字列型とする。 

ii) DTRTの文字集合及び照合順は,DTCVEの文字集合及び照合順とする。 

13) <TRIM関数>が指定されるならば,次による。 

a) 場合: 

i) 

FROMが指定されるならば,次による。 

1) <TRIM指定>若しくは<TRIM文字>のいずれか又は両方を指定しなければならない。 

2) <TRIM指定>が指定されないならば,BOTHが暗に想定される。 

3) <TRIM文字>が指定されないならば,' ' が暗に想定される。 

ii) そうでなければ,<TRIM元>をSRCとする。TRIM ( SRC ) は,TRIM ( BOTH ' ' FROM 

SRC ) と等価とする。 

b) 場合: 

i) 

<文字値式>の宣言型が固定長文字列又は可変長文字列ならば,<TRIM関数>の宣言型は,<TRIM

元>の長さ又は最大長と等しい最大長をもつ可変長文字列とする。 

ii) そうでなければ,<TRIM関数>の宣言型は,<TRIM元>の最大長と等しい最大長をもつ文字長

大オブジェクト型とする。 

c) <TRIM文字>が指定されるならば,<TRIM文字>と<TRIM元>とは,比較可能でなければならな

い。 

d) <TRIM関数>の文字集合及び照合順は,<TRIM元>の文字集合及び照合順とする。 

14) <文字OVERLAY関数>が指定されるならば,次による。 

a) 1番目の<文字値式>をCVとし,<開始位置>をSPとし,2番目の<文字値式>をRSとする。 

b) <データ列長>が指定されるならば,<データ列長>をSLとする。そうでなければ,

CHAR̲LENGTH(RS) をSLとする。 

c) <文字OVERLAY関数>は,次の指定と等価とする。 

SUBSTRING ( CV FROM 1 FOR SP−1 ) 

|| RS 

|| SUBSTRING ( CV FROM SP + SL ) 

15) <NORMALIZE関数>が指定されるならば,次による。 

a) <文字値式>の文字集合CSは,UTF8,UTF16又はUTF32でなければならない。<NORMALIZE関

246 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

数>の宣言型の文字集合及び照合順は,それぞれ,CS及び<文字値式>の照合順とする。 

b) 場合: 

i) 

<正規形式>が指定されるならば,<正規形式>をNFとする。 

ii) そうでなければ,NFCをNFとする。 

c) 場合: 

i) 

<文字値式>の宣言型が固定長文字列又は可変長文字列ならば,次による。 

1) <文字長大オブジェクト長>は,指定してはならない。 

2) <正規化関数結果長>が指定されるならば,<正規化関数結果長>に含まれる<長さ>の値をLと

する。そうでなければ,位取り 0の真数型の値で,可変長文字列の処理系定義の最大長以下

の処理系定義の値をLとする。 

3) <NORMALIZE関数>の宣言型は,陽に指定するか又は暗に想定される<文字長単位>の単位で,

Lと等しい最大長をもつ可変長文字列とする。 

ii) そうでなければ,次による。 

1) <文字長>は,指定してはならない。 

2) <正規化関数結果長>が指定されるならば,<正規化関数結果長>に含まれる<文字長大オブジ

ェクト長>の値をLとする。そうでなければ,位取り0の真数型の値で,長大オブジェクト

文字列の処理系定義の最大長以下の処理系定義の値をLとする。 

3) <NORMALIZE関数>の宣言型は,陽に指定するか又は暗に想定される<文字長単位>の単位で,

Lと等しい最大長をもつ文字長大オブジェクト型とする。 

16) <特定型メソッド>が指定されるならば,<特定型メソッド>の宣言型は,処理系定義の最大長をもつ

可変長文字列とする。文字列の文字集合は,SQL̲IDENTIFIERとする。 

17) 14 <2進オクテット値関数>の宣言型は,それに直に含まれる<2進オクテット部分列関数>,<2進オ

クテットTRIM関数>又は<2進オクテットOVERLAY関数>の宣言型とする。 

18) <2進オクテット部分列関数> BSFが指定されるならば,BSFに直に含まれる<2進オクテット値式>

の宣言型をDTBVEとする。BSFの宣言型DTBSF及びその最大長は,次による。 

場合: 

a) DTBVEが固定長2進オクテット列又は可変長2進オクテット列ならば,DTBVEの長さ又は最大

長と等しい最大長をもつ可変長2進オクテット列型とする。 

b) そうでなければ,DTBVEの最大長と等しい最大長をもつ長大オブジェクト2進オクテット列型

とする。 

19) <2進オクテットTRIM関数> が指定されるならば,次による。 

a) 場合: 

i) 

FROMが指定されるならば,次による。 

1) <TRIM指定>若しくは<TRIMオクテット>のいずれか又は両方を指定しなければならない。 

2) <TRIM指定>が指定されないならば,BOTHが暗に想定される。 

3) <TRIMオクテット>が指定されないならば,X'00'が暗に想定される。 

ii) そうでなければ,<TRIM元>をSRCとする。TRIM ( SRC ) は,TRIM ( BOTH Xʼ00ʼ FROM 

SRC ) と等価とする。 

b) 場合: 

i) 

<2進オクテット値式>の宣言型が固定長2進オクテット列又は可変長2進オクテット列ならば,

247 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<2進オクテットTRIM関数>の宣言型は,<2進オクテットTRIM元>の長さ又は最大長と等し

い最大長をもつ可変長2進オクテット列型とする。 

ii) そうでなければ,<2進オクテットTRIM関数>の宣言型は,<2進オクテットTRIM元>の最大

長と等しい最大長をもつ長大オブジェクト2進オクテット列型とする。 

20) <2進オクテットOVERLAY関数>が指定されるならば,次による。 

a) 1番目の<2進オクテット値式>をBVとし,<開始位置>をSPとし,2番目の<2進オクテット値式

>をRSとする。 

b) <データ列長>が指定されるならば,<データ列長>をSLとする。そうでなければ,

OCTET̲LENGTH(RS) をSLとする。 

c) <2進オクテットOVERLAY関数>は,次の指定と等価とする。 

SUBSTRING ( BV FROM 1 FOR SP−1 ) 

|| RS 

|| SUBSTRING ( BV FROM SP + SL ) 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<データ列値関数>が

<SQLスキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識

別子>の適用可能な権限は,<データ列値式>に含まれる<文字変換名>によって識別される全ての

文字変換に関するUSAGEを含まなければならない。 

b) そうでなければ,現行の権限は,<データ列値式>に含まれる<文字変換名>によって識別される全

ての文字変換に関するUSAGEを含まなければならない。 

一般規則 

1) <データ列値関数>の結果は,それに直に含まれる<文字値関数>又は<2進オクテット値関数>の結果

とする。 

2) 

14 <文字値関数>の結果は,それに直に含まれる<文字部分列関数>,<正規表現部分列関数>,

<SUBSTRING̲REGEX関数>,<大文字小文字変換>,<符号変換>,<文字文字変換>,

<TRANSLATE̲REGEX関数>,<TRIM関数>,<文字OVERLAY関数>,<NORMALIZE関数>又は<

特定型メソッド>の結果とする。 

3) <文字部分列関数>が指定されるならば,次による。 

a) <文字値式>の文字符号化形式がUTF8,UTF16又はUTF32ならば,この一般規則の残りの部分で

は,“文字”という用語は,“<文字長単位>によって指定される単位”を意味するものとして解釈

しなければならない。 

b) <文字値式>の値をCとし,Cの文字単位での長さをLCとし,<開始位置>の値をSとする。 

c) <データ列長>が指定されるならば,<データ列長>の値をLとし,S + LをEとする。そうでなけ

れば,LC+1とSとの大きい方の値をEとする。 

d) C,S及びLのうちの少なくとも一つがナル値ならば,<文字部分列関数>の結果は,ナル値とす

る。 

e) EがS未満ならば,例外条件:データ例外 (data exception) − 部分データ列誤り (substring error) 

が引き起こされる。 

f) 

場合: 

248 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

SがLCを超えるか,又はEが1未満ならば,<文字部分列関数>の結果は,長さ0の文字列と

する。 

ii) そうでなければ,次による。 

1) Sと1との大きい方の値をS1とする。EとLC+1との小さい方の値をE1とする。E1 ‒ S1を

L1とする。 

2) <文字部分列関数>の結果は,文字がC中に現れるのと同じ順序での文字順位S1から始まる

CのL1個の文字を含む文字列とする。 

4) <SUBSTRING̲REGEX関数>が指定されるならば,次による。 

a) <REGEX当該文字列>をRSSとし,RSSの値をSTRとし,<XQueryパターン>の値をPATとし,

<開始位置>の値をSPとし,<文字長単位>をCLUとし,<REGEX出現回数>の値をOCCとし,

<REGEXキャプチャグループ>をCAPとし,<XQueryオプションフラグ>の値をFLとする。 

b) 場合: 

i) 

STR,PAT,OCC,CAP及びFLのうちの少なくとも一つがナル値ならば,<SUBSTRING̲REGEX

関数>の結果は,ナル値とする。 

ii) OCCが1未満ならば,<SUBSTRING̲REGEX関数>の結果は,ナル値とする。 

iii) CAPが0 未満か,又はPATのXQuery正規表現括弧付き部分表現の個数を超えるならば,

<SUBSTRING̲REGEX関数>の結果は,ナル値とする。 

iv) SPが1未満か,又は次の値を超えるならば,<SUBSTRING̲REGEX関数>の結果は,ナル値と

する。 

CHARACTER̲LENGTH ( RSS USING CLU ) 

v) CLUがOCTETSで,かつ,STRのSP番目のオクテットが文字の最初のオクテットでないなら

ば,<SUBSTRING̲REGEX関数>の結果は,処理系依存とする。 

vi) STRをSTRINGとして,PATをPATTERNとして,SPをPOSITIONとして,CLUをUNITSと

して,FLをFLAGとして,“9.18 XQuery正規表現照合”の一般規則を適用する。これらの一般

規則の適用によって戻されるLISTをLOMVとする。 

場合: 

1) 少なくともOCC個の一致ベクトルがLOMV中にあるならば,LOMV中のOCC番目の一致

ベクトルをMVとする。MV[CAP] をPLとする。ここで,MV[0] は,MV中の最初の位置/

長さとする。PLの位置をPとし,PLの長さをLとする。<SUBSTRING̲REGEX関数>の結

果は,次による。 

A) Pが0ならば,ナル値とする。 

B) そうでなければ,位置がPで,かつ,長さがLであるSTRの部分文字列とする。 

2) そうでなければ,<SUBSTRING̲REGEX関数>の結果は,ナル値とする。 

5) <NORMALIZE関数>が指定されるならば,次による。 

a) <文字値式>の値をSとする。 

b) Sがナル値ならば,<NORMALIZE関数>の結果は,ナル値とする。 

c) [UNICODE15]どおりのNFによって指定される正規化形式でのSをNRとする。 

d) 場合: 

i) 

NRの文字単位での長さがL以下ならば,<NORMALIZE関数>の結果は,NRとする。 

ii) そうでなければ,例外条件:データ例外 − データ列データ,右切捨て (string data, right 

249 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

truncation) が引き起こされる。 

6) <正規表現部分列関数>が指定されるならば,次による。 

a) 1番目の<文字値式>の結果をCとし,2番目の<文字値式>の結果をRとし,<エスケープ文字>の

結果をEとする。 

b) C,R及びEのうちの少なくとも一つがナル値ならば,<正規表現部分列関数>の結果は,ナル値

とする。 

c) Eの文字単位での長さが1と等しくないならば,例外条件:データ例外 − エスケープ文字が正

しくない (invalid escape character) が引き起こされる。 

d) E及びその直後に続く<2重引用符>から成る2文字の並びの,ただ二つの実現値をRが含まない

ならば,例外条件:データ例外 − エスケープ文字の用い方が正しくない (invalid use of escape 

character) が引き起こされる。 

e) 次の条件が真 (True) であるようなRの部分文字列をR1,R2及びR3とする 

'R' = 'R1' || 'E' || '"' || 'R2' || 'E' || '"' || 'R3' 

f) R1,R2又はR3のいずれか一つが長さ0の文字列ではなく,かつ,<正規表現>の形式をもたない

ならば,例外条件:データ例外 − 正規表現が正しくない (invalid regular expression) が引き起こ

される。 

g) 次の述語が真でないならば,<正規表現部分列関数>の結果は,ナル値とする。 

 'C' SIMILAR TO 'R1' || 'R2' || 'R3' ESCAPE 'E' 

h) そうでなければ,<正規表現部分列関数>の結果Sは,次のとおりに計算される。 

i) 

次の<探索条件>の値が真 であるようなCの部分文字列S23が存在するようなCの最も短い最

初の部分文字列をS1とする。 

'C' = 'S1' || 'S23' AND 

'S1' SIMILAR TO 'R1' ESCAPE 'E' AND 

'S23' SIMILAR TO '(R2R3)' ESCAPE 'E' 

ii) 次の<探索条件>の値が真 であるようなS23の部分文字列S2が存在するようなS23の最も短い

最後の部分文字列をS3とする。 

'S23' = 'S2' || 'S3' AND 

'S2' SIMILAR TO 'R2' ESCAPE 'E' AND 

'S3' SIMILAR TO 'R3' ESCAPE 'E' 

iii) <正規表現部分列関数>の結果は,S2とする。 

7) <大文字小文字変換>が指定されるならば,次による。 

a) <文字値式>の値をSとする。 

b) Sがナル値ならば,<大文字小文字変換>の結果は,ナル値とする。 

c) <大文字小文字変換>の宣言型の文字単位での長さ又は最大長をFRMLとする。 

d) 場合: 

i) 

UPPERが指定されるならば,Sの文字集合中に対応する大文字(1文字又は複数の文字)をも

つ全ての小文字,及びSの文字集合中に対応する大文字(1文字又は複数の文字)をもつ全て

のタイトル文字が,大文字(1文字又は複数の文字)によって置き換えられたSの写しをFRと

する。 

ii) LOWERが指定されるならば,Sの文字集合中の対応する小文字(1文字又は複数の文字)をも

250 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

つ全ての大文字,及びSの文字集合中に対応する小文字(1文字又は複数の文字)をもつ全て

のタイトル文字が,小文字(1文字又は複数の文字)によって置き換えられたSの写しをFRと

する。 

e) <文字因子>の文字集合がUTF8,UTF16又はUTF32ならば,FRは,次の値によって置き換えら

れる。 

場合: 

i) 

<探索条件> S IS NORMALIZEDが真 と評価されるならば,次の値。 

NORMALIZE (FR) 

ii) そうでなければ,FR。 

f) FRの文字単位での長さをFRLとする。 

g) 場合: 

i) 

FRLがFRML以下ならば,<大文字小文字変換>の結果は,FRとする。FRの宣言型が固定長

文字列ならば,結果は,(FRML ‒ FRL) 個の<空白>が右側に詰め込まれる。 

ii) FRLがFRMLを超えるならば,<大文字小文字変換>の結果は,長さFRMLをもつ,FRの最初

のFRML個の文字とする。FRの最も右側の (FRL ‒ FRML) 個の文字のいずれかが<空白>文字

でないならば,終了条件:警告 (warning) − データ列データ,右切捨て が引き起こされる。 

8) <文字文字変換>が指定されるならば,次による。 

場合: 

a) <文字値式>の値がナル値ならば,<文字文字変換>の結果は,ナル値とする。 

b) 文字変換がどのように実行されるかを示す項目がSQL呼出しルーチンTRを指定する文字変換記

述子を<文字変換名>が識別するならば,<文字文字変換>の結果は,<文字文字変換>に含まれる<

文字値式>である単一のSQL引数をもつTRの呼出しの結果とする。 

c) そうでなければ,<文字文字変換>の値は,<文字変換名>によって識別される文字変換の文字変換

記述子中で指定される<既存文字変換名>によって識別される文字変換によって戻される値とす

る。 

9) <TRANSLATE̲REGEX関数>が指定されるならば,次による。 

a) <REGEX当該文字列>をRSSとし,RSSの値をSTRとし,<XQueryパターン>の値をPATとし,

<開始位置>の値をSPとし,<文字長単位>をCLUとし,<XQuery置換文字列>の値をREPとし,

<XQueryオプションフラグ>の値をFLとする。 

b) 場合: 

i) 

STR,PAT,REP及びFLのうちの少なくとも一つがナル値ならば,<TRANSLATE̲REGEX関

数>の結果は,ナル値とする。 

ii) SPが1未満か,又は次の値を超えるならば,<TRANSLATE̲REGEX関数>の結果は,ナル値と

する。 

CHARACTER̲LENGTH ( RSS USING CLU ) 

iii) CLUがOCTETSで,かつ,STRのSP番目のオクテットが文字の最初のオクテットでないなら

ば,<TRANSLATE̲REGEX関数>の結果は,処理系依存とする。 

iv) STRをSTRINGとして,PATをPATTERNとして,SPをPOSITIONとして,CLUをUNITSと

して,FLをFLAGとして,“9.18 XQuery正規表現照合”の一般規則を適用する。これらの一般

規則の適用によって戻されるLISTをLOMVとする。 

251 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

v) <TRANSLATE̲REGEXの出現回数>をRTOとする。 

場合: 

1) RTOが<REGEX出現回数>ならば,RTOの値をOCCとする。 

場合: 

A) OCCがナル値ならば,<TRANSLATE̲REGEX関数>の結果は,ナル値とする。 

B) OCCが1未満か,又はLOMV中の一致ベクトルの個数を超えるならば,

<TRANSLATE̲REGEX関数>の結果は,STRとする。 

C) そうでなければ,LOMV中のOCC番目の一致ベクトルをMVとする。MVをMATCHと

して,STRをSTRINGとして,PATをPATTERNとして,REPをREPLACEMENTとし

て,FLをFLAGとして,“9.19 XQuery正規表現置換”の一般規則を適用する。

<TRANSLATE̲REGEX関数>の結果は,これらの一般規則の適用によって戻される

RESULTとする。 

2) そうでなければ,<TRANSLATE̲REGEXの出現回数>は,ALLとする。LOMV中の一致ベク

トルの個数をNとする。STRをSNとする。 

A) 降順でNから1までの範囲の全てのiに対して,LOMV中のi番目の一致ベクトルをMVi

とする。MViをMATCHとして,SiをSTRINGとして,PATをPATTERNとして,REPを

REPLACEMENTとして,FLをFLAGとして,“9.19 XQuery正規表現置換”の一般規則を

適用する。これらの一般規則の適用によって戻されるRESULTをSi-1とする。 

注記160 置換えは,文字列内での一致の位置が変わることを避けるために,STRの最後

から前方へ移動しながら適用される。置換えが実行されるとき,文字列中の後

方に未処理の置換えがなく,したがって,部分文字列が異なる長さの文字列に

よって置き換えられても,他の一致の位置が乱れない。 

B) <TRANSLATE̲REGEX関数>の結果は,S0とする。 

10) <符号変換>が指定されるならば,次による。 

場合: 

a) <文字値式>の値がナル値ならば,<符号変換>の結果は,ナル値とする。 

b) そうでなければ,<符号変換>の値は,<符号変換名>によって指定される符号変換の適用の後の<

文字値式>の値とする。 

11) <TRIM関数>が指定されるならば,次による。 

a) <TRIM元>の値をSとする。 

b) <TRIM文字>が指定されるならば,<TRIM文字>の値をSCとする。そうでなければ,<空白>を

SCとする。 

c) S及びSCのうちの少なくとも一つがナル値ならば,<TRIM関数>の結果は,ナル値とする。 

d) SCの文字単位での長さが1でないならば,例外条件:データ例外 − TRIM誤り (trim error) が

引き起こされる。 

e) 場合: 

i) 

BOTHが指定されるか,又は<TRIM指定>が指定されないならば,<TRIM関数>の結果は,先

行又は後続するSCと等しい文字を取り除いたSの値とする。 

ii) TRAILINGが指定されるならば,<TRIM関数>の結果は,後続するSCと等しい文字を取り除い

たSの値とする。 

252 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) LEADINGが指定されるならば,<TRIM関数>の結果は,先行するSCと等しい文字を取り除い

たSの値とする。 

12) <特定型メソッド>が指定されるならば,次による。 

a) <利用者定義型値式>の値をVとする。 

b) 場合: 

i) 

Vがナル値ならば,ナル値をRVとする。 

ii) そうでなければ,次による。 

1) Vの最特定型をUDTとする。 

2) UDTの<利用者定義型名>をUDTNとする。 

3) UDTNに含まれる<カタログ名>をCNとし,UDTNに含まれる<修飾なしスキーマ名>をSN

とし,UDTNに含まれる<被修飾識別子>をUNとする。<2重引用符>の全ての実現値を<2重

引用表現>によって置き換えたCN,SN及びUNを,それぞれ,CND,SND及びUNDとす

る。次の値をRVとする。 

"CND"."SND"."UND" 

c) <特定型メソッド>の結果は,RVとする。 

13) 14 <2進オクテット値関数>の結果は,それに単純に含まれる<2進オクテット部分列関数>,<2進オ

クテットTRIM関数>又は<2進オクテットOVERLAY関数>の結果とする。 

14) <2進オクテット部分列関数>が指定されるならば,次による。 

a) <2進オクテット値式>の値をBとし,Bのオクテット単位での長さをLBとし,<開始位置>の値

をSとする。 

b) <データ列長>が指定されるならば,<データ列長>の値をLとし,S + LをEとする。そうでなけ

れば,LB+1とSとの大きい方の値をEとする。 

c) B,S及びLのうちの少なくとも一つがナル値ならば,<2進オクテット部分列関数>の結果は,ナ

ル値とする。 

d) EがS未満ならば,例外条件:データ例外 − 部分データ列誤り が引き起こされる。 

e) 場合: 

i) 

SがLBを超えるか,又はEが1未満ならば,<2進オクテット部分列関数>の結果は,長さ0の

データ列とする。 

ii) そうでなければ,次による。 

1) Sと1との大きい方の値をS1とする。EとLB+1との小さい方の値をE1とする。E1‒S1を

L1とする。 

2) <2進オクテット部分列関数>の結果は,オクテットがB中に現れるのと同じ順序でのオクテ

ット順位S1から始まるBのL1個のオクテットを含む2進オクテット列とする。 

15) <2進オクテットTRIM関数>が指定されるならば,次による。 

a) <TRIM元>の値をSとする。 

b) <TRIMオクテット>の値をSOとする。 

c) S及びSOのうちの少なくとも一つがナル値ならば,<2進オクテットTRIM関数>の結果は,ナル

値とする。 

d) SOのオクテット単位での長さが1 でないならば,例外条件:データ例外 − TRIM誤り が引き

起こされる。 

253 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) 場合: 

i) 

BOTHが指定されるか,又は<TRIM指定>が指定されないならば,<2進オクテットTRIM関数

>の結果は,先行又は後続するSOと等しいオクテットを取り除いたSの値とする。 

ii) TRAILINGが指定されるならば,<2進オクテットTRIM関数>の結果は,後続するSOと等し

いオクテットを取り除いたSの値とする。 

iii) LEADINGが指定されるならば,<2進オクテットTRIM関数>の結果は,先行するSOと等しい

オクテットを取り除いたSの値とする。 

16) <データ列値式>の結果が長さ0の文字列ならば,例外条件:データ例外 − 長さ0の文字列 が引

き起こされるかどうかは,処理系定義とする。 

適合性規則 

1) 機能T581“正規表現部分列関数”なしでは,適合するSQL言語は,<正規表現部分列関数>を含ん

ではならない。 

2) 機能T312“OVERLAY関数”なしでは,適合するSQL言語は,<文字OVERLAY関数>を含んでは

ならない。 

3) 機能T312“OVERLAY関数”なしでは,適合するSQL言語は,<2進オクテットOVERLAY関数>

を含んではならない。 

4) 機能T042“拡張LOBデータ型提供”又は機能T022“BINARY及びVARBINARYデータ型の高度

提供”なしでは,適合するSQL言語は,<2進オクテット値関数>を含んではならない。 

5) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字文字変換>を含んではならない。 

6) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<符号変換>を含んではならない。 

7) 機能T061“UCS提供”なしでは,適合するSQL言語は,<NORMALIZE関数>を含んではならない。 

8) 機能S261“特定型メソッド”なしでは,適合するSQL言語は,<特定型メソッド>を含んではなら

ない。 

9) 機能F394“選択可能な正規形式指定”なしでは,適合するSQL言語は,<正規形式>を含んではな

らない。 

10) 機能F421“各国文字”なしでは,適合するSQL言語は,NATIONAL CHARACTER,NATIONAL 

CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTの宣言型をもつ<文字値関

数>を含んではならない。 

11) 機能F844“SUBSTRING̲REGEX”なしでは,適合するSQL言語は,<SUBSTRING̲REGEX関数>

を含んではならない。 

12) 機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<SUBSTRING̲REGEX関数>は,<文字長単位>を含んではならない。 

13) 機能F845“TRANSLATE̲REGEX”なしでは,適合するSQL言語は,<TRANSLATE̲REGEX関数>

を含んではならない。 

14) 機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<TRANSLATE̲REGEX関数>は,<文字長単位>を含んではならない。 

15) 機能F847“値式正規表現”なしでは,適合するSQL言語中で,<XQueryパターン>,<XQueryオプ

ションフラグ>及び<XQuery置換文字列>は,<値指定>でなければならない。 

6.31 <日時値式> 

機能 

254 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<日時値式> (<datetime value expression>) は,日時値を指定する。 

形式 

<日時値式> ::= 

  <日時項> 

| <時間隔値式> <正符号> <日時項> 

| <日時値式> <正符号> <時間隔項> 

| <日時値式> <負符号> <時間隔項> 

<日時項> ::= 

  <日時因子> 

<日時因子> ::= 

  <日時一次子> [ <時刻帯> ] 

<日時一次子> ::= 

  <値式一次子> 

| <日時値関数> 

<時刻帯> ::= 

  AT <時刻帯指定子> 

<時刻帯指定子> ::= 

  LOCAL 

| TIME ZONE <時間隔一次子> 

構文規則 

1) <日時一次子>の宣言型は,日時でなければならない。 

2) <日時値式>が<正符号>も<負符号>も直に含まないならば,<日時値式>の結果の精度は,それが単純

に含む<値式一次子>又は<日時値関数>の精度とする。 

3) <日時一次子>の宣言型がDATEならば,<時刻帯>を指定してはならない。 

4) 場合: 

a) <時刻帯>が指定され,かつ,<日時一次子>の宣言型がTIMESTAMP WITHOUT TIME ZONE又は

TIME WITHOUT TIME ZONEならば,<日時項>の宣言型は,それぞれ,<日時一次子>と同じ小数

秒精度をもつTIMESTAMP WITH TIME ZONE又はTIME WITH TIME ZONEとする。 

b) そうでなければ,<日時項>の宣言型は,<日時一次子>の宣言型と同じとする。 

5) <日時値式>が<正符号>又は<負符号>のいずれかを直に含むならば,次による。 

a) <時間隔値式>又は<時間隔項>は,<日時値式>又は<日時項>内に含まれる<基本日時フィールド>

だけを含まなければならない。 

b) <日時値式>の結果は,それが単純に含む<日時値式>及び<時間隔項>又は<日時項>及び<時間隔値

式>のいずれかに小数秒精度があるならば,それらの小数秒精度のうちの大きい方の小数秒精度

をもち,<日時値式>又は<日時項>に含まれる<基本日時フィールド>と同じ<基本日時フィールド

>を含む。 

6) <時刻帯指定子>に直に含まれる<時間隔一次子>の宣言型は,INTERVAL HOUR TO MINUTEでなけ

ればならない。 

アクセス規則 

なし。 

255 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) <日時値式>に単純に含まれる<日時一次子>,<時間隔値式>,<日時値式>又は<時間隔項>のいずれか

の値がナル値ならば,<日時値式>の結果は,ナル値とする。 

2) <時刻帯>が指定され,かつ,<時刻帯指定子>に直に含まれる<時間隔一次子>がナル値ならば,<日

時値式>の結果は,ナル値とする。 

3) <日時一次子>の値は,それに直に含まれる<値式一次子>又は<日時値関数>の値とする。 

4) これに続く一般規則では,<日時項>又は<日時値式>の結果である日時データ型の整合性を維持する

ように算術演算が行われる。これには,直に次の上位有効<基本日時フィールド>からの桁送り,又

は直に次の上位有効<基本日時フィールド>への桁上げを含んでもよい。<日時項>又は<日時値式>の

データ型が時刻帯付き時刻又は時刻帯なし時刻ならば,HOUR <基本日時フィールド>の算術演算は,

24を法として行われる。<時間隔値式>又は<時間隔項>が年月時間隔ならば,結果のDAYフィール

ドは,<日時項>又は<日時値式>のDAYフィールドと同じとする。 

5) <日時項>の値は,次のとおりに決定される。<日時項>に単純に含まれる<日時一次子> DPの宣言型

をDT,値のUTC構成要素をDV,時刻帯構成要素があるならば,時刻帯構成要素をTZDとし,SQL

セションの現行既定時刻帯時差をSTZDとする。 

場合: 

a) <時刻帯>が指定されないならば,<日時項>の値は,DPの値とする。 

b) そうでなければ,次による。 

i) 

場合: 

1) DTが時刻帯付き日時ならば,<日時項>のUTC構成要素は,DVとする。 

2) そうでなければ,<日時項>のUTC構成要素は,DV ‒ STZDとする。 

ii) 場合: 

1) LOCALが指定されるならば,STZDをTZとする。 

2) TIME ZONEが指定されるならば,<時刻帯指定子>に直に含まれる<時間隔一次子>の値が

INTERVAL−ʼ14:00ʼ 未満か,又はINTERVAL + ʼ14:00ʼ を超えるならば,例外条件:

データ例外 (data exception) − 時刻帯時差値が正しくない (invalid time zone displacement 

value) が引き起こされる。そうでなければ,<時刻帯>に単純に含まれる<時間隔一次子>の値

をTZとする。 

iii) <日時項>の値の時刻帯構成要素は,TZとする。 

6) <日時値式>が演算子<正符号>又は<負符号>を直に含むならば,結果の時刻帯構成要素があるとき,

それは,<日時値式>に直に含まれる<日時項>又は<日時値式>の時刻帯構成要素と同じとする。(結

果の型が時刻帯なしならば,)その結果,又は(結果の型が時刻帯付きならば,)その結果のUTC構

成要素は,次のとおりに実効的に評価される。 

a) 場合: 

i) 

<日時値式>が演算子<正符号>を直に含み,かつ,<時間隔値式>若しくは<時間隔項>が負の値で

ないならば,又は<日時値式>が演算子<負符号>を直に含み,かつ,<時間隔項>が負の値ならば,

<時間隔値式>又は<時間隔項>の連続する<基本日時フィールド>が<日時値式>又は<日時項>の

対応するフィールドに加算される。 

ii) そうでなければ,<時間隔値式>又は<時間隔項>の連続する<基本日時フィールド>が<日時値式

>又は<日時項>の対応するフィールドから減算される。 

256 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) 先行する手順の後に,結果のいずれかの<基本日時フィールド>がそのフィールドに対して許され

る値の範囲外にあるか,又は日付及び時刻に対する自然な規則に基づいて結果が正しくないなら

ば,例外条件:データ例外 − 日時フィールドあふれ (datetime field overflow) が引き起こされる。 

注記161 <基本日時フィールド>に対して許される値の範囲は,表9“日時フィールドの正しい

値”参照。 

適合性規則 

1) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<正符号>又は<負符号>を直

に含む<日時値式>を含んではならない。 

2) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<時刻帯>を含んではならない。 

6.32 <日時値関数> 

機能 

<日時値関数> (<datetime value function>) は,日時型の値を生成する関数を指定する。 

形式 

<日時値関数> ::= 

  <CURRENT̲DATE値関数> 

| <CURRENT̲TIME値関数> 

| <CURRENT̲TIMESTAMP値関数> 

| <現在地方時刻値関数> 

| <現在地方時刻印値関数> 

<CURRENT̲DATE値関数> ::= 

  CURRENT̲DATE 

<CURRENT̲TIME値関数> ::= 

  CURRENT̲TIME [ <左括弧> <時刻精度> <右括弧> ] 

<現在地方時刻値関数> ::= 

  LOCALTIME [ <左括弧> <時刻精度> <右括弧> ] 

<CURRENT̲TIMESTAMP値関数> ::= 

  CURRENT̲TIMESTAMP [ <左括弧> <時刻印精度> <右括弧> ] 

<現在地方時刻印値関数> ::= 

  LOCALTIMESTAMP [ <左括弧> <時刻印精度> <右括弧> ] 

構文規則 

1) <CURRENT̲DATE値関数>の宣言型は,DATEとする。<CURRENT̲TIME値関数>の宣言型は,TIME 

WITH TIME ZONEとする。<CURRENT̲TIMESTAMP値関数>の宣言型は,TIMESTAMP WITH TIME 

ZONEとする。 

注記162 <時刻精度>及び<時刻印精度>を規定する規則については,“6.1 <データ型>”の構文規則

参照。 

2) 場合: 

a) <時刻精度> TPが指定されるならば,LOCALTIME(TP) は,次の指定と等価とする。 

CAST (CURRENT̲TIME(TP) AS TIME(TP)  WITHOUT TIME ZONE) 

b) そうでなければ,LOCALTIMEは,次の指定と等価とする。 

CAST (CURRENT̲TIME AS TIME WITHOUT TIME ZONE) 

257 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) 場合: 

a) <時刻印精度> TPが指定されるならば,LOCALTIMESTAMP(TP) は,次の指定と等価とする。 

CAST (CURRENT̲TIMESTAMP(TP) AS TIMESTAMP(TP) WITHOUT TIME ZONE) 

b) そうでなければ,LOCALTIMESTAMPは,次の指定と等価とする。 

CAST (CURRENT̲TIMESTAMP AS TIMESTAMP WITHOUT TIME ZONE) 

アクセス規則 

なし。 

一般規則 

1) <日時値関数>のCURRENT̲DATE,CURRENT̲TIME及びCURRENT̲TIMESTAMPは,それぞれ,

現在の日付,現在の時刻及び現在の時刻印を戻す。時刻及び時刻印の値は,SQLセションの現行既

定時刻帯時差と等しい時刻帯時差付きで戻される。 

2) <時刻精度>及び<時刻印精度>は,指定されるならば,それぞれ,時刻又は時刻印の戻される値の精

度を決定する。 

3) 

09 <被トリガ動作>に一般に含まれない<SQL手続文>をSとする。<SQL手続文>を介在しないS,又

はSの実行の結果として活性化されるトリガの<被トリガ動作>に含まれる<SQL手続文>のいずれ

かに,当該ルーチンがSQL関数を含まない<ルーチン呼出し>を介在しないで,一般に含まれる<値

式>に含まれる全ての<日時値関数>は,実効的に同時に評価される。Sの実行中及びそれによって活

性化されるトリガの実行中の<日時値関数>の評価の時期は,処理系依存とする。 

注記163 トリガの活性化は,“4.39.2 トリガ実行”で定義している。 

適合性規則 

1) 機能F555“拡張秒精度”なしでは,適合するSQL言語は,0でない<時刻精度>を含む<現在地方時

刻値関数>を含んではならず,0でない<時刻精度>を含む<CURRENT̲TIME値関数>を含んではなら

ない。 

2) 機能F555“拡張秒精度”なしでは,適合するSQL言語は,0でも6でもない<時刻印精度>を含む<

現在地方時刻印値関数>を含んではならず,0でも6でもない<時刻印精度>を含む

<CURRENT̲TIMESTAMP値関数>を含んではならない。 

3) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<CURRENT̲TIME値関数>を含んではな

らない。 

4) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<CURRENT̲TIMESTAMP値関数>を含

んではならない。 

6.33 <時間隔値式> 

機能 

<時間隔値式> (<interval value expression>) は,時間隔値を指定する。 

形式 

<時間隔値式> ::= 

  <時間隔項> 

| <時間隔値式1> <正符号> <時間隔項1> 

| <時間隔値式1> <負符号> <時間隔項1> 

| <左括弧> <日時値式> <負符号> <日時項> <右括弧> 

      <時間隔修飾子> 

258 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<時間隔項> ::= 

  <時間隔因子> 

| <時間隔項2> <アスタリスク> <因子> 

| <時間隔項2> <斜線> <因子> 

| <項> <アスタリスク> <時間隔因子> 

<時間隔因子> ::= 

  [ <符号> ] <時間隔一次子> 

<時間隔一次子> ::= 

  <値式一次子> [ <時間隔修飾子> ] 

| <時間隔値関数> 

<時間隔値式1> ::= 

  <時間隔値式> 

<時間隔項1> ::= 

  <時間隔項> 

<時間隔項2> ::= 

  <時間隔項> 

構文規則 

1) <時間隔値式>の宣言型は,時間隔とする。<時間隔一次子>に直に含まれる<値式一次子>の宣言型は,

時間隔でなければならない。 

2) 場合: 

a) <時間隔値式>が<時間隔修飾子> IQを単純に含むならば,結果の宣言型は,INTERVAL IQとする。 

b) <時間隔値式>が<時間隔項>ならば,<時間隔値式>の結果は,<時間隔一次子>と同じ時間隔フィー

ルドを含む。<時間隔一次子>が秒フィールドを含むならば,結果の小数秒精度は,<時間隔一次子

>の小数秒精度と同じとする。結果の<時間隔先行フィールド精度>は,処理系定義とするが,<時

間隔一次子>の<時間隔先行フィールド精度>未満であってはならない。 

c) <時間隔項1>が指定されるならば,結果は,<時間隔値式1>又は<時間隔項1>のいずれかの結果

中に含まれる全ての時間隔フィールドを含み,両方が秒フィールドを含むならば,結果の小数秒

精度は,それらの二つの小数秒精度の大きい方とする。<時間隔先行フィールド精度>は,処理系

定義とするが,<時間隔項1>の時間隔フィールド及び<時間隔先行フィールド精度>をもつ全ての

時間隔値だけでなく,<時間隔値式1>の時間隔フィールド及び<時間隔先行フィールド精度>をも

つ全ての時間隔値を表現するのにも十分でなければならない。 

注記164 時間隔フィールドは,表4“年月INTERVALの値中のフィールド”及び表5“日時刻

INTERVALの値中のフィールド”によって実効的に定義している。 

3) 場合: 

a) <時間隔項1>が年月時間隔ならば,<時間隔値式1>は,年月時間隔でなければならない。 

b) <時間隔項1>が日時刻時間隔ならば,<時間隔値式1>は,日時刻時間隔でなければならない。 

4) <日時値式>が指定されるならば,<日時値式>と<日時項>とは,比較可能でなければならない。 

5) <時間隔一次子>が<動的パラメタ指定>を指定するときに限り,<時間隔一次子>は,<時間隔修飾子

>を指定しなければならない。 

アクセス規則 

259 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

一般規則 

1) <時間隔項>が“<項> * <時間隔因子>”を指定するならば,<項>の値及び<時間隔因子>の値を,それ

ぞれ,T及びFとする。<時間隔項>の結果は,F * Tの結果とする。 

2) <時間隔値式>に単純に含まれる<時間隔一次子>,<日時値式>,<日時項>又は<因子>のいずれかの値

がナル値ならば,<時間隔値式>の結果は,ナル値とする。 

3) IPが<時間隔一次子>ならば,次による。 

場合: 

a) <値式一次子> VEP及び陽に指定される<時間隔修飾子> IQをIPが直に含むならば,IPの値は,

次の演算によって計算される。 

CAST ( VEP AS INTERVAL IQ ) 

b) IPが<値式一次子> VEPを直に含むならば,IPの値は,VEPの値とする。 

c) IPが<時間隔値関数> IVFならば,IPの値は,IVFの値とする。 

4) <時間隔因子>の<符号>が<負符号>ならば,<時間隔因子>の値は,<時間隔一次子>の値の符号を反転

した値とする。そうでなければ,<時間隔因子>の値は,<時間隔一次子>の値とする。 

5) <時間隔項2>が指定されるならば,次による。 

a) <時間隔項2>の値をXとし,<因子>の値をYとする。 

b) <時間隔項2>の最上位有効<基本日時フィールド>及び最下位有効<基本日時フィールド>を,それ

ぞれ,P及びQとする。 

c) 次の演算の真数の結果をEとする。 

CAST ( CAST ( X AS INTERVAL Q ) AS E1 ) 

ここで,E1は,有効桁を失わないような十分な位取り及び精度をもつ真数データ型とする。 

d) <時間隔値式>中に指定される演算子*又は/をOPとする。 

e) 次の演算の結果を,<基本日時フィールド> Qで表現される<時間隔値式>の結果Iとする。 

CAST ( (E OP Y) AS INTERVAL Q 

f) 

<時間隔値式>の結果は,次のとおりとする。 

CAST ( I AS INTERVAL W ) 

ここで,Wは,複数の<基本日時フィールド> P TO Qを識別する<時間隔修飾子>とするが,有効

桁が失われないような<時間隔先行フィールド精度>をもつ。 

6) <時間隔項1>が指定されるならば,<時間隔項1>及び<時間隔値式1>中の最上位有効<基本日時フィ

ールド>及び最下位有効<基本日時フィールド>を,それぞれ,P及びQとし,<時間隔値式1>の値

をXとし,<時間隔項1>の値をYとする。 

a) 次の演算の真数の結果をAとする 

CAST ( CAST ( X AS INTERVAL Q ) 

AS E1 ) 

ここで,E1は,有効桁を失わないような十分な位取り及び精度をもつ真数データ型とする。 

b) 次の演算の真数の結果をBとする 

CAST ( CAST ( Y AS INTERVAL Q ) 

AS E2 ) 

ここで,E2は,有効桁を失わないような十分な位取り及び精度をもつ真数データ型とする。 

260 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) <時間隔値式>中に指定される演算子+又は-をOPとする。 

d) 次の指定の結果を,<基本日時フィールド> Qで表現される<時間隔値式>の結果Iとする。 

CAST ( (A OP B) AS 

INTERVAL Q ) 

e) <時間隔値式>の結果は,次のとおりとする。 

CAST ( I AS INTERVAL W ) 

ここで,Wは,複数の<基本日時フィールド> P TO Qを識別する<時間隔修飾子>とするが,有効

桁が失われないような<時間隔先行フィールド精度>をもつ。 

7) <日時値式>が指定されるならば,<時間隔修飾子>によって指定される最下位有効<基本日時フィー

ルド>をYとする。<日時値式>をDTEとし,<日時項>をDTとし,処理系定義の最大秒精度をMSP

とする。<時間隔値式>の評価は,次のとおりに行われる。 

a) 場合: 

i) 

<日時値式>の宣言型がTIME WITH TIME ZONEならば,次の値をAとする。 

CAST ( DTE AT LOCAL 

AS TIME(MSP) WITHOUT 

TIME ZONE ) 

ii) <日時値式>の宣言型がTIMESTAMP WITH TIME ZONEならば,次の値をAとする。 

CAST ( DTE AT LOCAL 

AS TIMESTAMP(MSP) WITHOUT 

TIME ZONE ) 

iii) そうでなければ,DTEの値をAとする。 

b) 場合: 

i) 

<日時項>の宣言型がTIME WITH TIME ZONEならば,次の値をBとする。 

CAST ( DT AT LOCAL 

AS TIME(MSP) WITHOUT 

TIME ZONE ) 

ii) <日時項>の宣言型がTIMESTAMP WITH TIME ZONEならば,次の値をBとする。 

CAST ( DT AT LOCAL 

AS TIMESTAMP(MSP) WITHOUT 

TIME ZONE ) 

iii) そうでなければ,DTの値をBとする。 

c) A及びBは,それぞれ,ある処理系依存の開始日時からの差として,単位Yでの整数のスカラ値

A2及びB2に変換される。 

d) 結果は,A2−B2を実効的に計算し,その後,Yである<終了フィールド>及び有効桁を失わないた

めに十分に有効な<開始フィールド>をもつ<時間隔修飾子>を用いた時間隔に,その差を変換する

ことによって決定される。(時刻帯付き又は時刻帯なしの)TIME型の二つの値の差は,(各端点を

除いて)-24:00:00と+24:00:00との間にあるように制約される。その計算は,決定的でなければ

ならないが,この範囲中にある0でない二つの値のどちらを結果とするかは,処理系定義とする。

この時間隔は,必要ならば,丸め又は切捨てを行って,さらに,指定された<時間隔修飾子>を用

いた時間隔に変換される。丸めるか又は切り捨てるかの選択は,処理系定義とする。必要な有効

261 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

桁数が処理系定義の最大有効桁数を超えるならば,例外条件:データ例外 (data exception) − 時

間隔フィールドあふれ (interval field overflow) が引き起こされる。 

適合性規則 

1) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔値式>を含んではな

らない。 

6.34 <時間隔値関数> 

機能 

<時間隔値関数> (<interval value function>) は,時間隔型の値を生成する関数を指定する。 

形式 

<時間隔値関数> ::= 

  <時間隔絶対値関数> 

<時間隔絶対値関数> ::= 

  ABS <左括弧> <時間隔値式> <右括弧> 

構文規則 

1) <時間隔絶対値関数>が指定されるならば,結果の宣言型は,<時間隔値式>の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) <時間隔絶対値関数>が指定されるならば,<時間隔値式>の値をNとする。 

場合: 

a) Nがナル値ならば,結果は,ナル値とする。 

b) N ≥ 0ならば,結果は,Nとする。 

c) そうでなければ,結果は,-1 * Nとする。 

適合性規則 

1) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔値関数>を含んでは

ならない。 

6.35 <ブール値式> 

機能 

<ブール値式> (<boolean value expression>) は,ブール値を指定する。 

形式 

<ブール値式> ::= 

  <ブール項> 

| <ブール値式> OR <ブール項> 

<ブール項> ::= 

  <ブール因子> 

| <ブール項> AND <ブール因子> 

<ブール因子> ::= 

  [ NOT ] <ブールテスト> 

<ブールテスト> ::= 

  <ブール一次子> [ IS [ NOT ] <真理値> ] 

262 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<真理値> ::= 

  TRUE 

| FALSE 

| UNKNOWN 

<ブール一次子> ::= 

  <述語> 

| <ブール述語オペランド> 

<ブール述語オペランド> ::= 

  <括弧付きブール値式> 

| <括弧なし値式一次子> 

<括弧付きブール値式> ::= 

  <左括弧> <ブール値式> <右括弧> 

構文規則 

1) <括弧なし値式一次子>の宣言型は,ブールでなければならない。 

2) <ブールテスト>中にNOTが指定されるならば,それに含まれる<ブール一次子>をBPとし,それ

に含まれる<真理値>をTVとする。<ブールテスト>は,次の指定と等価とする。 

( NOT ( BP IS TV ) ) 

3) 列C又は<キーワード> VALUEのいずれかをXで示す。<ブール値式> BVE,及びXが与えられる

と,“BVEがXに対する容易にナルでないことが分かる条件 (readily-known-not-null condition)”とい

う概念が次のとおりに定義される。 

場合: 

a) BVEが“RVE IS NOT NULL”という形式の<述語>ならば,BVEは,Cに対する容易にナルでな

いことが分かる条件 とする。ここで,RVEは,Cを参照する<列参照>である<共通値式>,<ブー

ル述語オペランド>又は<行値構成子要素>を単純に含む<行値構成子述語オペランド>である<行

値述語オペランド>とする。 

b) BVEが<述語>“VALUE IS NOT NULL”ならば,BVEは,VALUEに対する容易にナルでないこ

とが分かる条件 とする。 

c) そうでなければ,BVEは,Xに対する容易にナルでないことが分かる条件ではない。 

4) 列C又は<キーワード> VALUEのいずれかをXで示す。<ブール値式> BVE,及びXが与えられる

と,“BVEがXに対するナルでないことが分かる条件 (known-not-null condition)”という概念が次の

とおりに再帰的に定義される。 

a) BVEが<述語>のとき,BVEがXに対する容易にナルでないことが分かる条件ならば,BVEは,

Xに対するナルでないことが分かる条件とする。 

b) 機能T101“拡張ナル可能性決定”をSQL処理系が提供するならば,BVEは,次の再帰的な規則

に従っても,Xに対するナルでないことが分かる条件として認識される。 

i) 

BVEが<括弧付きブール値式>で,かつ,それに単純に含まれる<ブール値式>がXに対するナ

ルでないことが分かる条件ならば,BVEは,Xに対するナルでないことが分かる条件とする。 

ii) BVEが<括弧なし値式一次子>ならば,BVEは,Xに対するナルでないことが分かる条件ではな

い。 

iii) BVEが<ブールテスト>ならば,BVEに直に含まれる<ブール一次子>をBPとする。BPがXに

263 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

対するナルでないことが分かる条件で,かつ,<真理値>が指定されないならば,BVEは,Xに

対するナルでないことが分かる条件とする。そうでなければ,BVEは,Xに対するナルでない

ことが分かる条件ではない。 

iv) BVEが“NOT BT”という形式から成るならば,次による。ここで,BTは,<ブールテスト>と

する。 

場合: 

1) BTが“CR IS NULL”ならば,BVEは,Cに対するナルでないことが分かる条件とする。こ

こで,CRは,列Cを参照する列参照とする。 

2) BTが“VALUE IS NULL”ならば,BVEは,VALUEに対するナルでないことが分かる条件と

する。 

3) そうでなければ,BVEは,Xに対するナルでないことが分かる条件ではない。 

注記165 簡単にするために,この規則は,“NOT NOT A IS NULL”又は“NOT (A IS NULL 

OR NOT (B=2))”のような条件の解析を試みない。 

v) BVEが“BVE1 AND BVE2”という形式から成るならば,次による。 

場合: 

1) BVE1及びBVE2のうちの少なくとも一つがXに対するナルでないことが分かる条件ならば,

BVEは,Xに対するナルでないことが分かる条件とする。 

2) そうでなければ,BVEは,Xに対するナルでないことが分かる条件ではない。 

vi) BVEが“BVE1 OR BVE2”という形式から成るならば,BVEは,Xに対するナルでないことが

分かる条件ではない。 

注記166 簡単にするために,この規則は,ナルでないことが分かる条件として分類してもよ

い“A IS NOT NULL OR A IS NOT NULL”のような場合を検出しない。 

c) BVEが真 (True) のとき,Xは,ナルであり得ない,ということをSQL処理系が正確に推論する

ことを可能にする処理系定義の規則に,BVEが適合するならば,BVEは,Xに対するナルでない

ことが分かる条件とする。 

5) “回顧決定的 (retrospectively deterministic)”という概念は,次のとおりに再帰的に定義される。 

a) <括弧付きブール値式>は,それに単純に含まれる<ブール値式>が回顧決定的ならば,回顧決定的

とする。 

b) <括弧なし値式一次子>は,それが潜在的に非決定的でないならば,回顧決定的とする。 

c) <述語> Pは,次のうち一つが真ならば,回顧決定的 とする。 

i) 

Pが潜在的に非決定的でない。 

ii) Pが,“X < Y”,“X <= Y”,“Y > X”,“Y >= X”,“X < Y + Z”,“X <= Y + Z”,“Y + Z > X”,“Y + 

Z >= X”,“X < Y ‒ Z”,“X <= Y ‒ Z”,“Y ‒ Z > X”又は“Y ‒ Z >= X”という形式の<比較述語>

である。ここで,Yは,CURRENT̲DATE,CURRENT̲TIMESTAMP又はLOCALTIMESTAMP

とし,X及びZは,潜在的に非決定的な<値式>ではなく,かつ,左側及び右側の比較オペラン

ドの宣言型は,両方とも時刻帯付き日時か又は両方とも時刻帯なし日時かのいずれかとする。 

iii) Pが,“Y > <限定子> <表副問合せ>”,“Y + Z > <限定子> <表副問合せ>”,“Y ‒ Z > <限定子> <

表副問合せ>”,“Y >= <限定子> <表副問合せ>”,“Y + Z >= <限定子> <表副問合せ>”又は“Y ‒ 

Z >= <限定子> <表副問合せ>”という形式の<限定比較述語>である。ここで,Yは,

CURRENT̲DATE,CURRENT̲TIMESTAMP又はLOCALTIMESTAMPとし,Zは,潜在的に非

background image

264 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

決定的でない<値式>で,<表副問合せ>に単純に含まれる<問合せ式>は,潜在的に非決定的でな

く,かつ,左側及び右側の比較オペランドの宣言型は,両方とも時刻帯付き日時か又は両方と

も時刻帯なし日時かのいずれかとする。 

iv) Pが,回顧決定的な<ブール値式>に変換される<BETWEEN述語>である。 

d) <ブール一次子>は,それに単純に含まれる<述語>,<括弧付きブール値式>又は<括弧なし値式一

次子>が回顧決定的ならば,回顧決定的とする。 

e) <ブール因子>をBFとする。BFに単純に含まれる<ブール一次子>をBPとする。 

i) 

BFが次の形式のいずれかから成るならば,BFは,否定的 (negative) と呼ぶ。 

NOT BP 

BP IS FALSE 

BP IS NOT TRUE 

NOT BP IS NOT FALSE 

NOT BP IS TRUE 

ii) 次のうち一つが真ならば,BFは,回顧決定的とする。 

1) BFが否定的で,かつ,潜在的に非決定的な<値式>をBFが一般に含まない。 

2) BFが否定的でなく,かつ,BPが回顧決定的である。 

f) 

<ブール値式>は,それに単純に含まれる全ての<ブール因子>が回顧決定的ならば,回顧決定的と

する。 

アクセス規則 

なし。 

一般規則 

1) 結果は,各<ブール一次子>から導出される結果に,指定されたブール演算子(“AND”,“OR”,“NOT”

及び“IS”)を適用することによって導出される。ブール演算子が指定されないならば,<ブール値

式>の結果は,指定された<ブール一次子>の結果とする。 

2) NOT ( 真 ) は,偽 とし,NOT( 偽 ) は,真 とし,NOT( 不定 ) は,不定 とする。 

3) 表11“ANDブール演算子のための真理値表”,表12“ORブール演算子のための真理値表”及び表

13“ISブール演算子のための真理値表”は,それぞれ,AND,OR及びISの意味を規定する。 

表11−ANDブール演算子のための真理値表 

AND 

真 (True)  

偽 (False)  

不定 (Unknown) 

真 

真 

偽 

不定 

偽 

偽 

偽 

偽 

不定 

不定 

偽 

不定 

表12−ORブール演算子のための真理値表 

OR 

真 (True)  

偽 (False)  

不定 (Unknown) 

真 

真 

真 

真 

偽 

真 

偽 

不定 

不定 

真 

不定 

不定 

表13−ISブール演算子のための真理値表 

IS 

TRUE 

FALSE 

UNKNOWN 

background image

265 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

真 

真 

偽 

偽 

偽 

偽 

真 

偽 

不定 

偽 

偽 

真 

適合性規則 

1) 機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<括弧なし値式一次子>を単純

に含む<ブール一次子>を含んではならない。 

2) 機能F571“真理値テスト”なしでは,適合するSQL言語は,<真理値>を単純に含む<ブールテスト

>を含んではならない。 

6.36 <配列値式> 

機能 

<配列値式> (<array value expression>) は,配列値を指定する。 

形式 

<配列値式> ::= 

  <配列連結> 

| <配列一次子> 

<配列連結> ::= 

  <配列値式1> <連結演算子> <配列一次子> 

<配列値式1> ::= 

  <配列値式> 

<配列一次子> ::= 

  <配列値関数> 

| <値式一次子> 

構文規則 

1) <配列値式>の宣言型は,それに直に含まれる<配列連結>又は<配列一次子>の宣言型とする。 

2) <配列一次子>の宣言型は,それに直に含まれる<配列値関数>又は<値式一次子>の宣言型とし,その

宣言型は,配列型,又は元型が配列型の個別型でなければならない。 

3) <配列連結>が指定されるならば,次による。 

a) <配列値式1>及び<配列一次子>の宣言型をDTSETとして,“9.5 データ型組合せの結果”の構文

規則を適用する。これらの構文規則の適用によって戻されるRESTYPEをDTとする。 

b) 配列型の処理系定義の最大基数をIMDCとする。 

c) <配列連結>の結果の宣言型は,配列型とし,その要素型は,DTの要素型で,かつ,その最大基数

は,<配列値式1>の最大基数と<配列一次子>の最大基数との合計とIMDCとの小さい方とする。 

アクセス規則 

なし。 

一般規則 

1) <配列値式>の結果の値は,それに直に含まれる<配列連結>又は<配列一次子>の値とする。 

2) <配列連結>が指定されるならば,<配列値式1>の値をAV1とし,<配列一次子>の値をAV2とする。 

場合: 

a) AV1及びAV2のうちの少なくとも一つがナル値ならば,<配列連結>の結果は,ナル値とする。 

b) AV1の基数とAV2の基数との合計がIMDCを超えるならば,例外条件:データ例外 (data exception)  

266 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 配列データ,右切捨て (array data, right truncation) が引き起こされる。 

c) そうでなければ,結果は,AV1の全ての要素,及びそれに続くAV2の全ての要素から成る配列と

する。 

適合性規則 

1) 機能S091“基本配列提供”なしでは,適合するSQL言語は,<配列値式>を含んではならない。 

6.37 <配列値関数> 

機能 

<配列値関数> (<array value function>) は,配列型の値を生成する関数を指定する。 

形式 

<配列値関数> ::= 

  <TRIM̲ARRAY関数> 

<TRIM̲ARRAY関数> ::= 

TRIM̲ARRAY <左括弧> <配列値式> <コンマ> <数値式> <右括弧> 

構文規則 

1) <配列値関数>の宣言型は,それに直に含まれる<TRIM̲ARRAY関数>の宣言型とする。 

2) <TRIM̲ARRAY関数>が指定されるならば,次による。 

a) <数値式>の宣言型は,位取り0の真数型でなければならない。 

b) <TRIM̲ARRAY関数>の宣言型は,それに直に含まれる<配列値式>の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) <配列値関数>の値は,それに直に含まれる<TRIM̲ARRAY関数>の値とする。 

2) <TRIM̲ARRAY関数>の結果は,次のとおりに決定される。 

a) <数値式>の値をNVとする。 

b) NVがナル値ならば,結果は,ナル値とし,この細分箇条の一般規則は,これ以上適用しない。 

c) NVが0未満ならば,例外条件:データ例外 (data exception) − 配列要素誤り (array element error) 

が引き起こされる。 

d) <配列値式>の値をAVとする。 

e) AVがナル値ならば,結果は,ナル値とし,この細分箇条の一般規則は,これ以上適用しない。 

f) AVの基数をACとする。 

g) NVがACを超えるならば,例外条件:データ例外 (data exception) − 配列要素誤り (array element 

error) が引き起こされる。 

h) AC ‒ NVをNとする。 

i) 

場合: 

i) 

N = 0ならば,結果は,基数が0の配列とする。 

ii) そうでなければ,結果は,全てのi,1 ≤ i ≤ Nに対して,結果のi番目の要素の値がAVのi番

目の要素の値であるようなN個の要素の配列とする。 

適合性規則 

1) 機能S404“TRIM̲ARRAY”なしでは,適合するSQL言語は,<TRIM̲ARRAY関数>を含んではな

らない。 

267 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6.38 <配列値構成子> 

機能 

<配列値構成子> (<array value constructor>) は,配列の構成体を指定する。 

形式 

<配列値構成子> ::= 

  <列挙による配列値構成子> 

| <問合せによる配列値構成子> 

<列挙による配列値構成子> ::= 

ARRAY <左角括弧又は3文字表記> <配列要素リスト> <右角括弧又は3文字表記> 

<配列要素リスト> ::= 

<配列要素> [ { <コンマ> <配列要素> } ... ] 

<配列要素> ::= 

<値式> 

<問合せによる配列値構成子> ::= 

ARRAY <表副問合せ> 

構文規則 

1) <配列値構成子>の宣言型は,それに直に含まれる<列挙による配列値構成子>又は<問合せによる配

列値構成子>の宣言型とする。 

2) <列挙による配列値構成子>の<配列要素リスト>に直に含まれる<配列要素>の宣言型をDTSETとし

て,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって戻され

るRESTYPEをDTとする。<列挙による配列値構成子>の宣言型は,要素型DTの配列型とする。<

列挙による配列値構成子>の最大基数は,<配列要素リスト>中の<配列要素>の個数とし,それは,

要素型がDTである配列型に対する処理系定義の最大基数を超えてはならない。 

3) <問合せによる配列値構成子>が指定されるならば,次による。 

a) <表副問合せ>に単純に含まれる<問合せ式> QEは,次数が1でなければならない。<問合せ式>の

結果中の列の宣言型をETとする。 

b) <問合せによる配列値構成子>の宣言型は,要素型ET,及びそのような配列型に対する処理系定

義の最大基数IMDCと等しい最大基数をもつ配列とする。 

アクセス規則 

なし。 

一般規則 

1) <配列値構成子>の値は,それに直に含まれる<列挙による配列値構成子>又は<問合せによる配列値

構成子>の値とする。 

2) <列挙による配列値構成子>の結果は,<配列要素リスト>に直に含まれるi番目の<配列要素>の値を

DTのデータ型に型変換した値をi番目の要素としてもつ配列とする。 

3) <問合せによる配列値構成子>の結果は,次のとおりに決定される。 

a) QEが評価され,表Tを生成する。T中の行の個数をNとする。 

b) NがIMDCを超えるならば,例外条件:データ例外 (data exception) − 配列データ,右切捨て 

(array data, right truncation) が引き起こされる。 

c) <問合せによる配列値構成子>の結果は,全てのi,1 ≤ i ≤ Nに対して,i番目の要素の値がTのi

268 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

番目の行中の唯一の列の値であるようなN個の要素の配列とする。 

注記167 配列の要素の順序は,“7.13 <問合せ式>”の一般規則によって実効的に決定される。 

適合性規則 

1) 機能S091“基本配列提供”なしでは,適合するSQL言語は,<列挙による配列値構成子>を含んで

はならない。 

2) 機能S095“問合せによる配列構成子”なしでは,適合するSQL言語は,<問合せによる配列値構成

子>を含んではならない。 

6.39 <マルチ集合値式> 

機能 

<マルチ集合値式> (<multiset value expression>) は,マルチ集合値を指定する。 

形式 

<マルチ集合値式> ::= 

  <マルチ集合項> 

| <マルチ集合値式> MULTISET UNION [ ALL | DISTINCT ] <マルチ集合項> 

| <マルチ集合値式> MULTISET EXCEPT [ ALL | DISTINCT ] <マルチ集合項> 

<マルチ集合項> ::= 

  <マルチ集合一次子> 

| <マルチ集合項> MULTISET INTERSECT [ ALL | DISTINCT ] <マルチ集合一次子> 

<マルチ集合一次子> ::= 

  <マルチ集合値関数> 

| <値式一次子> 

構文規則 

1) <マルチ集合一次子>の宣言型は,それに直に含まれる<マルチ集合値関数>又は<値式一次子>の宣言

型とし,それは,マルチ集合型,又は元型がマルチ集合型の個別型でなければならない。 

2) MIが,MULTISET INTERSECTを直に含む<マルチ集合項>ならば,1番目のオペランド(<マルチ

集合項>)をOP1とし,2番目のオペランド(<マルチ集合一次子>)をOP2とする。 

a) OP1及びOP2は,マルチ集合要素グループ化操作のマルチ集合オペランドとする。“9.13 マルチ

集合要素グループ化操作”の構文規則及び適合性規則を適用する。 

b) OP1の要素型をET1とし,OP2の要素型をET2とする。ET1及びET2をDTSETとして,“9.5 

データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって戻される

RESTYPEをETとする。MULTISET INTERSECT演算の結果の型は,要素型ETのマルチ集合と

する。 

c) DISTINCTが指定されるならば,DISTINCTをSQとする。そうでなければ,ALLをSQとする。 

d) MIは,次のCASE式と等価とする。 

( CASE WHEN OP1 IS NULL OR OP2 IS NULL THEN NULL 

         ELSE MULTISET ( SELECT T1.V 

                            FROM UNNEST (OP1) AS T1(V) 

                          INTERSECT SQ 

                            SELECT T2.V 

                            FROM UNNEST (OP2) AS T2(V) 

269 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

                          ) 

   END ) 

3) MUが,MULTISET UNIONを直に含む<マルチ集合値式>ならば,1番目のオペランド(<マルチ集

合値式>)をOP1とし,2番目のオペランド(<マルチ集合項>)をOP2とする。 

a) DISTINCTが指定されるならば,OP1及びOP2は,マルチ集合要素グループ化操作のマルチ集合

オペランドとする。“9.13 マルチ集合要素グループ化操作”の構文規則及び適合性規則を適用す

る。 

b) OP1の要素型をET1とし,OP2の要素型をET2とする。ET1及びET2をDTSETとして,“9.5 

データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって戻される

RESTYPEをETとする。MULTISET UNION演算の結果の型は,要素型ETのマルチ集合とする。 

c) DISTINCTが指定されるならば,DISTINCTをSQとする。そうでなければ,ALLをSQとする。 

d) MUは,次のCASE式と等価とする。 

( CASE WHEN OP1 IS NULL OR OP2 IS NULL THEN NULL 

         ELSE MULTISET ( SELECT T1.V 

                             FROM UNNEST (OP1) AS T1(V) 

                          UNION SQ 

                             SELECT T2.V 

                             FROM UNNEST (OP2) AS T2(V) 

                           ) 

   END ) 

4) MEが,MULTISET EXCEPTを直に含む<マルチ集合値式>ならば,1番目のオペランド(<マルチ集

合値式>)をOP1とし,2番目のオペランド(<マルチ集合項>)をOP2とする。 

a) OP1及びOP2は,マルチ集合要素グループ化操作のマルチ集合オペランドとする。“9.13 マルチ

集合要素グループ化操作”の構文規則及び適合性規則を適用する。 

b) OP1の要素型をET1とし,OP2の要素型をET2とする。ET1及びET2をDTSETとして,“9.5 

データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって戻される

RESTYPEをETとする。MULTISET EXCEPT演算の結果の型は,要素型ETのマルチ集合とす

る。 

c) DISTINCTが指定されるならば,DISTINCTをSQとする。そうでなければ,ALLをSQとする。 

d) MEは,次のCASE式と等価とする。 

( CASE WHEN OP1 IS NULL OR OP2 IS NULL THEN NULL 

         ELSE MULTISET ( SELECT T1.V 

                             FROM UNNEST (OP1) AS T1(V) 

                          EXCEPT SQ 

                             SELECT T2.V 

                             FROM UNNEST (OP2) AS T2(V) 

                           ) 

   END ) 

アクセス規則 

なし。 

270 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) <マルチ集合一次子>の値は,それに直に含まれる<マルチ集合値関数>又は<値式一次子>の値とする。 

2) <マルチ集合一次子>である<マルチ集合項>の値は,<マルチ集合一次子>の値とする。 

3) <マルチ集合項>である<マルチ集合値式>の値は,<マルチ集合項>の値とする。 

適合性規則 

1) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合値式>を含んでは

ならない。 

2) 機能S275“高度マルチ集合提供”なしでは,適合するSQL言語は,MULTISET UNION,MULTISET 

INTERSECTION又はMULTISET EXCEPTを含んではならない。 

注記168 MULTISET UNION DISTINCT,MULTISET INTERSECTION又はMULTISET EXCEPTが

指定されるならば,“9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

6.40 <マルチ集合値関数> 

機能 

<マルチ集合値関数> (<multiset value function>) は,マルチ集合型の値を生成する関数を指定する。 

形式 

<マルチ集合値関数> ::= 

  <マルチ集合SET関数> 

<マルチ集合SET関数> ::= 

  SET <左括弧> <マルチ集合値式> <右括弧> 

構文規則 

1) <マルチ集合SET関数>に単純に含まれる<マルチ集合値式>をMVEとする。MVEは,マルチ集合

要素グループ化操作のマルチ集合オペランドとする。“9.13 マルチ集合要素グループ化操作”の構

文規則及び適合性規則を適用する。 

2) <マルチ集合SET関数>は,次のCASE式と等価とする。 

( CASE WHEN MVE IS NULL THEN NULL 

         ELSE MULTISET ( SELECT DISTINCT M.E 

                             FROM UNNEST (MVE) AS M(E) ) 

   END ) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合値関数>を含んで

はならない。 

注記169 “9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

6.41 <マルチ集合値構成子> 

機能 

<マルチ集合値構成子> (<multiset value constructor>) は,マルチ集合の構成体を指定する。 

形式 

271 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<マルチ集合値構成子> ::= 

  <列挙によるマルチ集合値構成子> 

| <問合せによるマルチ集合値構成子> 

| <問合せによる表値構成子> 

<列挙によるマルチ集合値構成子> ::= 

  MULTISET <左角括弧又は3文字表記> <マルチ集合要素リスト> <右角括弧又は3文字表記> 

<マルチ集合要素リスト> ::= 

  <マルチ集合要素> [ { <コンマ> <マルチ集合要素> }... ] 

<マルチ集合要素> ::= 

  <値式> 

<問合せによるマルチ集合値構成子> ::= 

  MULTISET <表副問合せ> 

<問合せによる表値構成子> ::= 

  TABLE <表副問合せ> 

構文規則 

1) <マルチ集合値構成子>が<問合せによる表値構成子> TVCBQを直に含むならば,次による。 

a) TVCBQに単純に含まれる<問合せ式>をQEとする。 

b) QEは,<ORDER BY句>を直に含んではならない。 

c) QEの結果中の列の個数をnとする。 

d) 全てが互いに異なる処理系依存の識別子をC1,...,Cnとする。 

e) TVCBQは,次の指定と等価とする。 

MULTISET ( SELECT ROW ( C1, ..., Cn ) 

              FROM ( QE ) AS T ( C1, ..., Cn ) ) 

2) <マルチ集合値構成子>の宣言型は,それに直に含まれる<列挙によるマルチ集合値構成子>又は<問

合せによるマルチ集合値構成子>の宣言型とする。 

3) <列挙によるマルチ集合値構成子>の<マルチ集合要素リスト>に直に含まれる<マルチ集合要素>の

宣言型をDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規則

の適用によって戻されるRESTYPEをDTとする。<列挙によるマルチ集合値構成子>の宣言型は,

要素型DTのマルチ集合型とする。 

4) <問合せによるマルチ集合値構成子>が指定されるならば,次による。 

a) <表副問合せ> TSは,次数が1でなければならない。 

b) TSは,<ORDER BY句>を直に含んではならない。 

c) TSの結果中の列の宣言型をETとする。 

d) <問合せによるマルチ集合値構成子>の宣言型は,要素型ETのマルチ集合とする。 

アクセス規則 

なし。 

一般規則 

1) <マルチ集合値構成子>の値は,それに直に含まれる<列挙によるマルチ集合値構成子>又は<問合せ

によるマルチ集合値構成子>の値とする。 

2) <列挙によるマルチ集合値構成子>の結果は,<マルチ集合要素リスト>に直に含まれる<マルチ集合

272 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

要素>の値を,DTのデータ型に型変換した値である要素をもつマルチ集合とする。 

3) <問合せによるマルチ集合値構成子>が指定されるならば,次による。 

a) TSの値をTとする。T中の列の個数をNとする。 

b) <問合せによるマルチ集合値構成子>の結果は,Tの各行に対して一つの要素をもつ,N個の要素

のマルチ集合とする。ここで,各要素の値は,Tの対応する行中の唯一の列の値とする。 

適合性規則 

1) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合値構成子>を含ん

ではならない。 

2) 機能T326“表関数”なしでは,適合するSQL言語中で,<マルチ集合値構成子>は,<問合せによる

表値構成子>を含んではならない。 

問合せ式 

7.1 

<行値構成子> 

機能 

<行値構成子> (<row value constructor>) は,行を構成するために値又は値リストを指定する。 

形式 

<行値構成子> ::= 

  <共通値式> 

| <ブール値式> 

| <明示行値構成子> 

<明示行値構成子> ::= 

  <左括弧> <行値構成子要素> <コンマ> 

      <行値構成子要素リスト> <右括弧> 

| ROW <左括弧> <行値構成子要素リスト> <右括弧> 

| <行副問合せ> 

<行値構成子要素リスト> ::= 

  <行値構成子要素> [ { <コンマ> <行値構成子要素> }... ] 

<行値構成子要素> ::= 

  <値式> 

<文脈型付き行値構成子> ::= 

  <共通値式> 

| <ブール値式> 

| <文脈型付き値指定> 

| <左括弧> <文脈型付き値指定> <右括弧> 

| <左括弧> <文脈型付き行値構成子要素> <コンマ> 

      <文脈型付き行値構成子要素リスト> <右括弧> 

| ROW <左括弧> <文脈型付き行値構成子要素リスト> <右括弧> 

<文脈型付き行値構成子要素リスト> ::= 

  <文脈型付き行値構成子要素> 

      [ { <コンマ> <文脈型付き行値構成子要素> }... ] 

273 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<文脈型付き行値構成子要素> ::= 

  <値式> 

| <文脈型付き値指定> 

<行値構成子述語オペランド> ::= 

  <共通値式> 

| <ブール述語オペランド> 

| <明示行値構成子> 

構文規則 

1) <行値構成子>が<共通値式>又は<ブール値式> Xならば,<行値構成子>は,次の指定と等価とする。 

ROW ( X ) 

2) <行値構成子述語オペランド>が<共通値式>又は<ブール述語オペランド> Xならば,<行値構成子述

語オペランド>は,次の指定と等価とする。 

ROW ( X ) 

3) <明示行値構成子>をERVCとする。 

場合: 

a) ERVCが<行副問合せ>を単純に含むならば,ERVCの宣言型は,その<行副問合せ>の宣言型とす

る。 

b) そうでなければ,ERVCの宣言型は,ERVCに単純に含まれる各<行値構成子要素> Xに順序どお

りに対応する(<フィールド名>,<データ型>)対の並びによって記述される行型とする。<データ

型>は,Xの宣言型とし,<フィールド名>は,処理系依存とする。 

4) <行値構成子>又は<行値構成子述語オペランド> RVCが<明示行値構成子> ERVCならば,RVCの宣

言型は,ERVCの宣言型とする。 

5) <文脈型付き行値構成子>をCTRVCとする。 

a) CTRVCが<共通値式>,<ブール値式>又は<文脈型付き値指定> Xならば,CTRVCは,次の指定と

等価とする。 

ROW ( X ) 

b) 構文規則5)a)で規定した構文変換が実行された後で,必要ならば,CTRVCの宣言型は,CTRVC

に単純に含まれる各<文脈型付き行値構成子要素> Xに順序どおりに対応する(<フィールド名>,

<データ型>)対の並びによって記述される行型とする。<データ型>は,Xの宣言型とし,<フィー

ルド名>は,処理系依存とする。 

6) <行値構成子>,<文脈型付き行値構成子>又は<行値構成子述語オペランド>の次数は,その宣言型の

次数とする。 

アクセス規則 

なし。 

一般規則 

1) <ナル指定>の値は,ナル値とする。 

2) <既定値指定>の値は,“11.5 <DEFAULT句>”の一般規則に従って決定される。 

3) 場合: 

a) <行値構成子>,<行値構成子述語オペランド>又は<文脈型付き行値構成子>が<共通値式>,<ブー

ル値式>又は<文脈型付き行値構成子要素> Xを直に含むならば,<行値構成子>,<行値構成子述語

274 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

オペランド>又は<文脈型付き行値構成子>の結果は,値がXの値である単一列を含む行とする。 

b) <明示行値構成子>が指定されるならば,<行値構成子>又は<行値構成子述語オペランド>の結果は,

i番目の列の値が,<明示行値構成子>に単純に含まれるi番目の<行値構成子要素>の値である列

から成る行とする。 

c) <文脈型付き行値構成子要素リスト>が指定されるならば,<文脈型付き行値構成子>の結果は,i番

目の列の値が,<文脈型付き行値構成子要素リスト>中のi番目の<文脈型付き行値構成子要素>の

値である列から成る行とする。 

適合性規則 

1) 機能T051“行型”なしでは,適合するSQL言語は,ROWを直に含む<明示行値構成子>を含んでは

ならない。 

2) 機能T051“行型”なしでは,適合するSQL言語は,ROWを直に含む<文脈型付き行値構成子>を含

んではならない。 

3) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,二つ以上の<行値構成子要素

>を含み,かつ,<表値構成子>に単純に含まれない<明示行値構成子>を含んではならない。 

4) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,<行副問合せ>である<明示行

値構成子>を含んではならない。 

5) 機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール述語オペランド>を直

に含む<行値構成子述語オペランド>を含んではならない。 

6) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,二つ以上の<行値構成子要素

>を含み,かつ,<文脈型付き表値構成子>に単純に含まれない<文脈型付き行値構成子>を含んでは

ならない。 

7.2 

<行値式> 

機能 

<行値式> (<row value expression>) は,行値を指定する。 

形式 

<行値式> ::= 

  <行値の特別な場合> 

| <明示行値構成子> 

<表行値式> ::= 

  <行値の特別な場合> 

| <行値構成子> 

<文脈型付き行値式> ::= 

  <行値の特別な場合> 

| <文脈型付き行値構成子> 

<行値述語オペランド> ::= 

  <行値の特別な場合> 

| <行値構成子述語オペランド> 

<行値の特別な場合> ::= 

  <括弧なし値式一次子> 

構文規則 

275 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <行値の特別な場合>の宣言型は,行型でなければならない。 

2) <行値式>の宣言型は,それに直に含まれる<行値の特別な場合>又は<明示行値構成子>の宣言型とす

る。 

3) <表行値式>の宣言型は,それに直に含まれる<行値の特別な場合>又は<行値構成子>の宣言型とす 

る。 

4) <文脈型付き行値式>の宣言型は,それに直に含まれる<行値の特別な場合>又は<文脈型付き行値構

成子>の宣言型とする。<行値述語オペランド>の宣言型は,それに直に含まれる<行値の特別な場合

>又は<行値構成子述語オペランド>の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) <行値の特別な場合>は,<括弧なし値式一次子>によって示される行値を指定する。 

2) <行値式>は,<行値の特別な場合>又は<明示行値構成子>によって示される行値を指定する。 

3) <表行値式>は,<行値の特別な場合>又は<行値構成子>によって示される行値を指定する。 

4) <文脈型付き行値式>は,<行値の特別な場合>又は<文脈型付き行値構成子>によって示される行値を

指定する。 

5) <行値述語オペランド>は,<行値の特別な場合>又は<行値構成子述語オペランド>によって示される

行値を指定する。 

適合性規則 

1) 機能T051“行型”なしでは,適合するSQL言語は,<行値の特別な場合>を含んではならない。 

7.3 

<表値構成子> 

機能 

<表値構成子> (<table value constructor>) は,表を構成するために<行値式>の集合を指定する。 

形式 

<表値構成子> ::= 

  VALUES <行値式リスト> 

<行値式リスト> ::= 

  <表行値式> [ { <コンマ> <表行値式> }... ] 

<文脈型付き表値構成子> ::= 

  VALUES <文脈型付き行値式リスト> 

<文脈型付き行値式リスト> ::= 

  <文脈型付き行値式> 

      [ { <コンマ> <文脈型付き行値式> }... ] 

構文規則 

1) <行値式リスト>に直に含まれる全ての<表行値式>は,同じ次数でなければならない。 

2) <文脈型付き行値式リスト>に直に含まれる全ての<文脈型付き行値式>は,同じ次数でなければなら

ない。 

3) <表値構成子>又は<文脈型付き表値構成子>は,潜在的に非決定的な<値式>を一般に含むならば,潜

在的に非決定的 (possibly non-deterministic) とする。 

4) n個の<表行値式>から成る<表値構成子>又はn個の<文脈型付き行値式>から成る<文脈型付き表値

276 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構成子>をTVCとする。i番目の<表行値式>又はi番目の<文脈型付き行値式>をRVEi,1 ≤ i ≤ nで

示す。行型RVEi,1 ≤ i ≤ nをDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。

これらの構文規則の適用によって戻されるRESTYPEをTVCの行型とする。列名は,処理系依存と

する。 

アクセス規則 

なし。 

一般規則 

1) いずれかの<表行値式>又は<文脈型付き行値式>の結果がナル値ならば,例外条件:データ例外 (data 

exception) − 表中にナル行は許されない (null row not permitted in table) が引き起こされる。 

2) <表値構成子>又は<文脈型付き表値構成子> TVCの結果Tは,TVC中の<表行値式>の個数又は<文

脈型付き行値式>の個数を基数としてもつ表とする。Rがそのようなn個の式の結果ならば,Rは,

T中にn回出現する。 

適合性規則 

1) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語中で,<文脈型付き表値構成子>

の<文脈型付き行値式リスト>は,ただ一つの<文脈型付き行値構成子> RVEを含まなければならな

い。RVEは,“(<文脈型付き行値構成子要素リスト>)”という形式から成らなければならない。 

2) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,<表値構成子>を含んではな

らない。 

7.4 

<表式> 

機能 

<表式> (<table expression>) は,表又はグループ表を指定する。 

形式 

<表式> ::= 

  <FROM句> 

      [ <WHERE句> ] 

      [ <GROUP BY句> ] 

      [ <HAVING句> ] 

      [ <WINDOW句> ] 

構文規則 

1) <表式>の結果は,<WINDOW句>が指定されるならば,それによって定義されるウィンドウ構造記

述子とともに,<表式>に直に含まれる<FROM句>の結果の行型を行型としてもつ導出表とする。 

2) ある列をCとする。<表式>をTEとする。Cが,TEに含まれる列参照の基となる列ならば,Cは,

TEの基となる列 (underlying column) とする。Cが,TEに含まれる列参照の一般に基となる列なら

ば,Cは,TEの一般に基となる列 (generally underlying column) とする。 

アクセス規則 

なし。 

一般規則 

1) 全ての省略可能な句が省略されるならば,<表式>の結果は,<FROM句>の結果と同じとする。そう

でなければ,指定される各句は,前に指定される句の結果に適用され,<表式>の結果は,最後に指

定される句を適用した結果とする。 

277 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

なし。 

7.5 

<FROM句> 

機能 

<FROM句> (<from clause>) は,一つ以上の表から導出される表を指定する。 

形式 

<FROM句> ::= 

  FROM <表参照リスト> 

<表参照リスト> ::= 

  <表参照> [ { <コンマ> <表参照> }... ] 

構文規則 

1) 順序付けされた<表参照リスト>をTRLとする。 

a) TRL中のどの要素TRiも,要素TRjへの外への参照を含んではならない。ここで,i ≤ jとする。 

b) TRL中の要素が<データ変更差分表>を一般に含むならば,TRL中にただ一つの要素が存在しなけ

ればならない。 

2) 場合: 

a) <表参照リスト>が単一の<表参照>を直に含むならば,<表参照リスト>の結果の記述子は,その<

表参照>によって識別される表の記述子と同じとする。<表参照リスト>の結果の行型RTは,その

<表参照>によって識別される表の行型とする。 

b) <表参照リスト>が二つ以上の<表参照>を直に含むならば,<表参照リスト>の結果の列の記述子は,

<表参照リスト>中に<表参照>が現れる順序で,かつ,各表内で列が定義される順序での,<表参

照>によって識別される表の列の記述子とする。<表参照リスト>の結果の行型RTは,次のとおり

に,結果の列記述子の並びSCDによって決定される。 

i) 

SCD中の列記述子の個数をnとする。RTは,n個のフィールドをもつ。 

ii) 1からnまでの範囲のiに対して,RT中のi番目のフィールド記述子のフィールド名は,SCD

中のi番目の列記述子に含まれる列名とする。 

iii) 1からnまでの範囲のiに対して,RT中のi番目のフィールド記述子のデータ型記述子は,次

による。 

場合: 

1) SCD中のi番目の列記述子が定義域名DNを含むならば,DNによって識別される定義域の

記述子に含まれるデータ型記述子とする。 

2) そうでなければ,SCD中のi番目の列記述子に含まれるデータ型記述子とする。 

3) <FROM句>の結果の記述子は,<表参照リスト>の結果の記述子と同じとする。 

アクセス規則 

なし。 

一般規則 

1) TRLの結果をTRLRとする。 

場合: 

a) TRLが単一の<表参照> TRを単純に含むならば,TRLRは,TRの結果とする。 

b) TRLがn個の<表参照>を単純に含み,n > 1ならば,順序どおりにTRLの最初のn-1個の要素を

278 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とることによって形成される<表参照リスト>をTRL-Pとし,TRLの最後の要素をTRL-Lとし,

TRL-Pの結果をTRLR-Pとする。 

場合: 

i) 

TRLR-Pが空ならば,TRLRは,空とする。 

ii) TRLR-Pがm個の行を含み,m ≥ 1ならば,どの行Ri,1 ≤ i ≤ mに対しても,TRL-L中に含ま

れる全ての外への参照の下でのTRL-Lの対応する評価をTRLR-Liとする。RiにTRLR-Liの行

を連結することによって形成される全ての行を含む表をSUBRiとする。SUBRi中のどの行RR

も,TRLR中の行とし,TRLR中のRRの実現値の個数は,SUBRiの全ての実現値中のRRの実

現値の個数の合計とする。 

<表参照リスト>の結果は,<表参照リスト>の列の記述子の順序付けに従って列を並べ替えたTRLR

とする。 

2) <FROM句>の結果は,TRLRとする。 

適合性規則 

なし。 

7.6 

<表参照> 

この細分箇条は,ISO/IEC 9075-4の“7.1 <表参照>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“7.1 <表参照>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“7.1 <表参照>”によって修正される。 

機能 

<表参照> (<table reference>) は,表を参照する。 

形式 

<表参照> ::= 

  <表因子> 

| <結合表> 

<表因子> ::= 

  <表一次子> [ <標本句> ] 

<標本句> ::= 

  TABLESAMPLE <標本方法> <左括弧> <標本率> <右括弧> 

      [ <REPEATABLE句> ] 

<標本方法> ::= 

  BERNOULLI 

| SYSTEM 

<REPEATABLE句> ::= 

  REPEATABLE <左括弧> <繰返し引数> <右括弧> 

<標本率> ::= 

  <数値式> 

<繰返し引数> ::= 

  <数値式> 

14 <表一次子> ::= 

  <表名又は問合せ名> [<問合せシステム時刻期間指定> ] 

279 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    [ [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] ] 

| <導出表> [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] 

| <横参照導出表> [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] 

| <集まり導出表> [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] 

| <表関数導出表> [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] 

| <ONLY指定> [ [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] ] 

| <データ変更差分表> [ [ AS ] <相関名> 

      [ <左括弧> <導出列リスト> <右括弧> ] ] 

| <括弧付き結合表> 

<問合せシステム時刻期間指定> ::= 

  FOR SYSTEM̲TIME AS OF <時点1> 

| FOR SYSTEM̲TIME BETWEEN [ ASYMMETRIC | SYMMETRIC ] 

      <時点1> AND <時点2> 

| FOR SYSTEM̲TIME FROM <時点1> TO <時点2> 

<時点1> ::= 

  <時点> 

<時点2> ::= 

  <時点> 

<時点> ::= 

  <日時値式> 

<ONLY指定> ::= 

  ONLY <左括弧> <表名又は問合せ名> <右括弧> 

<横参照導出表> ::= 

  LATERAL <表副問合せ> 

<集まり導出表> ::= 

  UNNEST <左括弧> <集まり値式> 

      [ { <コンマ> <集まり値式> }... ] <右括弧> 

      [ WITH ORDINALITY ] 

<表関数導出表> ::= 

  TABLE <左括弧> <集まり値式> <右括弧> 

<導出表> ::= 

  <表副問合せ> 

<表名又は問合せ名> ::= 

  <表名> 

280 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <遷移表名> 

| <問合せ名> 

<導出列リスト> ::= 

  <列名リスト> 

<列名リスト> ::= 

  <列名> [ { <コンマ> <列名> }... ] 

<データ変更差分表> ::= 

  <結果選択肢> TABLE <左括弧> <データ変更文> <右括弧> 

<データ変更文> ::= 

  <DELETE文:探索> 

| <INSERT文> 

| <MERGE文> 

| <UPDATE文:探索> 

<結果選択肢> ::= 

  FINAL 

| NEW 

| OLD 

<括弧付き結合表> ::= 

  <左括弧> <括弧付き結合表> <右括弧> 

| <左括弧> <結合表> <右括弧> 

構文規則 

1) <問合せシステム時刻期間指定> QSTPSが指定されるならば,次による。 

a) <表名又は問合せ名>によって識別される表は,システムバージョン表でなければならない。 

b) BETWEENが指定され,SYMMETRIC又はASYMMETRICのどちらも指定されないならば,

ASYMMETRICが暗に想定される。 

c) 

04 QSTPSは,<列参照>又は<SQLパラメタ参照>を含んではならない。 

2) <表名又は問合せ名>によって識別される表がシステムバージョン表で,かつ,<問合せシステム時

刻期間指定>が指定されないならば,FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMPが暗に想

定される。 

3) <時点>の宣言型は,DATE又は時刻印型のいずれかでなければならない。 

4) <繰返し引数>の宣言型は,位取り0の真数型でなければならない。 

5) <表参照>をTRとし,TRに直に含まれる<表因子>をTFとし,TFに直に含まれる<表一次子>をTP

とする。 

6) TPが<表関数導出表> TFDTを単純に含むならば,次による。 

a) TFDTに直に含まれる<集まり値式>は,<ルーチン呼出し>でなければならない。 

b) TPに単純に含まれる<相関名>をCNとする。 

c) TPに単純に含まれる<集まり値式>をCVEとする。 

d) 場合: 

i) 

TPが<導出列リスト> DCLを指定するならば,次の指定をTFDCLとする。 

( DCL ) 

281 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,長さ0の文字列をTFDCLとする。 

e) TPは,次の<表一次子>と等価とする。 

UNNEST ( CVE ) AS CN TFDCL 

7) TPが<集まり導出表> CDTを単純に含むならば,次による。 

a) CDTに単純に含まれる<集まり値式>の個数をNCVとする。 

b) 左から右の順序で,CDTに単純に含まれる<集まり値式>の列挙をCVEj,1 ≤ j ≤ NCVとする。 

c) CVEjの宣言型の要素型をETj,1 ≤ j ≤ NCVとする。 

d) TPに単純に含まれる<相関名>をCNとし,CNとも,TPに含まれる他のどの<識別子>とも等価

でない<識別子>をTEMPとする。 

e) 場合: 

i) 

いずれかのCVEj,1 ≤ j ≤ NCVの宣言型がマルチ集合ならば,NCVは,1でなければならず,

WITH ORDINALITYを指定してはならない。宣言要素型がET1の配列の処理系定義の最大基数

をIMDC1とする。次の指定をC1とする。 

( CAST (CVE1 AS ET1 ARRAY[IMDC1]) ) 

ii) そうでなければ,CVEjをCj,1 ≤ j ≤ NCVとする。 

f) 

次の指定をCARDj,1 ≤ j ≤ NCVとする。 

COALESCE( CARDINALITY( Cj ), 0 ) 

g) CARD1をMCARD1とする。次の指定をMCARDj,2 ≤ j ≤ NCVとする。 

CASE 

WHEN CARDj > CARDj-1 

THEN CARDj 

ELSE CARDj-1 

END 

h) MCARDNCVをMAXCARDとする。 

i) 

CN,TEMP,又はTPに含まれる他のどの<識別子>とも互いに等価でないNCV+1個の<列名>を

Nj,1 ≤ j ≤ NCV,及びNORDとする。 

j) 

次の指定をELT1j,1 ≤ j ≤ NCVとする。 

CASE 

WHEN 1 <= CARDINALITY( Cj ) 

THEN Cj[1] 

ELSE NULL 

END 

k) 次の指定をELTNORDj,1 ≤ j ≤ NCVとする。 

CASE 

WHEN NORD < CARDINALITY( Cj ) 

THEN Cj[NORD+1] 

ELSE NULL 

END 

l) 

次の指定をRECQPとする。 

WITH RECURSIVE TEMP(N1, ..., NNCV, NORD) AS 

282 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

( SELECT ELT11 AS N1, ..., ELT1NCV AS NNCV, 1 AS NORD 

FROM (VALUES(1)) AS CN 

WHERE 0 < MAXCARD 

UNION 

SELECT ELTNORD1 AS N1, ..., ELTNORDNCV AS NNCV, NORD+1 AS 

NORD 

FROM TEMP 

WHERE NORD < MAXCARD 

m) 場合: 

i) 

TPが<導出列リスト> DCLを指定するならば,次による。 

1) 1からNCVまでの範囲の全てのjに対して,次による。 

場合: 

A) ETjが行型ならば,ETjの次数をDETjとする。 

B) そうでなければ,1をDETjとする。 

2) 場合: 

A) CDTがWITH ORDINALITYを指定するならば,DCLは,DET1 + … + DETNCV +1個の<

列名>を含まなければならない。 

B) そうでなければ,DCLは,DET1 + … + DETNCV個の<列名>を含まなければならない。 

3) 次の指定をPDCLPとする。 

( DCL ) 

ii) そうでなければ,次による。 

場合: 

1) いずれかのETj,1 ≤ j ≤ NCVが行型ならば,次による。 

A) 行型である各ETjに対して,次による。 

I) ETjの次数をDET(j)とする。 

II) ETj中のi番目のフィールドの名前をFNj,i,1 ≤ i ≤ DET(j) とする。 

B) 行型でない各ETjに対して,1をDET(j) とし,TPに含まれる他のどの<識別子>とも等価

でない<識別子>をFNj,1とする。 

C) 場合: 

I) CDTがWITH ORDINALITYを指定するならば,次の指定をPDCLPとする。 

( FN1,1, FN1,2, ..., FN1,DET(1), 

..., 

FNNCV,1, FNNCV,2, ..., FNNCV,DET(NCV), NORD 

II) そうでなければ,次の指定をPDCLPとする。 

( FN1,1, FN1,2, ..., FN1,DET(1), 

..., 

FNNCV,1, FNNCV,2, ..., FNNCV,DET(NCV) 

283 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) そうでなければ,長さ0の文字列をPDCLPとする。 

n) ETj,1 ≤ j ≤ NCVが行型ならば,(Nj).* をSLEjとする。そうでなければ,NjをSLEjとする。 

場合: 

i) 

CDTがWITH ORDINALITYを指定するならば,次の指定をELDTとする。 

LATERAL ( RECQP SELECT SLE1, ..., SLENCV, NORD 

FROM TEMP ) AS CN PDCLP 

NORDによって名前付けられた列をCDTの添え字列 (ordinality column) と呼ぶ。 

ii) そうでなければ,次の指定をELDTとする。 

LATERAL ( RECQP SELECT SLE1, ..., SLENCV 

FROM TEMP ) AS CN PDCLP 

o) TPは,<表一次子> ELDTと等価とする。 

8) TPが<括弧付き結合表>ではなく,TPが<相関名>を単純に含むならば,その<相関名>をRVとする。

そうでなければ,あるならば,TFに単純に含まれる<表名又は問合せ名>をRVとする。RVは,範

囲変数とする。RVは,TF中及びTR中に露出する (exposed by)。 

注記170 “範囲変数”は,“4.15.10 表を含む演算”で定義している。 

注記171 <括弧付き結合表>の範囲変数は,それに単純に含まれる<結合表>の範囲変数と同じであ

る。<結合表>は,“7.7 <結合表>”で定義している。 

注記172 したがって,範囲変数は,(<相関名>又は<表名又は問合せ名>のいずれかの)BNF非終

端である。等価な<識別子>をもつ幾つかの範囲変数を<SQL手続文>が含む可能性がある

が,それでも,それらは,異なる範囲変数とみなさなければならない。 

9) 場合: 

a) TRが<問合せ式>を介在しないで<FROM句> FCに含まれるならば,TRの有効範囲句 (scope 

clause) SCは,FCを含む<SELECT文:単一行>か又は最も内側の<問合せ指定>とする。TRの範

囲変数の有効範囲は,SCの<選択リスト>,<WHERE句>,<GROUP BY句>,<HAVING句>及び

<WINDOW句>,並びに,FCに単純に含まれ,かつ,TRによって先行される全ての<横参照導出

表>,FCに単純に含まれ,かつ,TRによって先行される全ての<集まり導出表>,及びTRを含む

SCに含まれる全ての<結合表>の<結合条件>とする。SCが,単純表問合せSTQの<問合せ式本体

>である<問合せ指定>ならば,TRの範囲変数の有効範囲は,STQの<ORDER BY句>も含む。 

注記173 “単純表問合せ”は,“7.13 <問合せ式>”で定義している。 

b) TFが<MERGE文> MSに単純に含まれるならば,TRの有効範囲句 SCは,MSとする。TFの範

囲変数及びTRの範囲変数の有効範囲は,SCの<探索条件>,<設定句リスト>及び<併合挿入値リ

スト>とする。 

注記174 “14.12 <MERGE文>”は,TRが<結合表>を直接含むことを許していない。 

c) そうでなければ,TRの有効範囲句 SCは,<問合せ式>を介在しないでTRを含む最も外側の<結

合表>とする。TRのどの範囲変数の有効範囲も,TRを含むSCの<結合条件>,及びSCに含まれ

る全ての<結合表>の<結合条件>とする。 

10) TR中に露出する範囲変数をRVとする。TRと同じ有効範囲句をもつ<表参照> TR1中に露出する範

囲変数をRV1とする。 

場合: 

a) RVが<表名>ならば,次による。 

284 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

i) 

RV1が<表名>ならば,RV1は,RVと等価であってはならない。 

ii) そうでなければ,RV1は,RVの<被修飾識別子>と等価であってはならない。 

b) そうでなければ,次による。 

場合: 

i) 

RV1が<表名>ならば,RV1の<被修飾識別子>は,RVと等価であってはならない。 

ii) そうでなければ,RV1は,RVと等価であってはならない。 

11) TFに単純に含まれる<表名又は問合せ名>がTFによって定義される有効範囲句及び有効範囲をも

つことは,<表名又は問合せ名>がTF中及びTR中に露出することと同値とする。 

12) TPが<表名又は問合せ名> TOQNを単純に含むならば,次による。 

場合: 

a) TOQNが,<問合せ名> QNと等価な<識別子>ならば,TPを含む<問合せ式>に単純に含まれる

<WITHリスト要素>で,その<WITHリスト要素>に単純に含まれる<問合せ名> QN1がQNと等

価で,かつ,QN1が有効範囲中で最も内側の問合せ名であるような<WITHリスト要素>をWLE

とする。WLEの結果を<問合せ名>によって指定される表 (table specified by the <query name>) と

する。 

注記175 “有効範囲中の問合せ名”は,“7.13 <問合せ式>”で定義している。 

b) TOQNが,有効範囲中にある<遷移表名>と等価な<識別子>ならば,TOQNによって識別される表

を<遷移表名>によって指定される表 (table specified by the <transition table name>) とする。 

注記176 “<遷移表名>の有効範囲”は,“11.49 <トリガ定義>”で定義している。 

c) そうでなければ,TPに単純に含まれる<表名>によって識別される表を<表名>によって指定され

る表 (table specified by the <table name>) とする。 

注記177 前記の各場合は,TOQNが<問合せ名>として解釈されるか,<遷移表名>として解釈さ

れるか,又は<表名>として解釈されるかという曖昧さをなくしている。 

13) TPが<ONLY指定> OSを単純に含み,かつ,<表名又は問合せ名> TNによって識別される表が型付

き表でないならば,OSは,TNと等価とする。 

14) <横参照導出表>の行型は,それに単純に含まれる<問合せ式>の行型とする。 

15) <表参照> TRが<データ変更差分表> DCDTを単純に含むならば,TRに単純に含まれる<データ変更

文>をSとする。Sは,FOR PORTION OFを含んではならない。Sの当該表をTTとする。 

a) 場合: 

i) 

Sが<INSERT文>ならば,<結果選択肢>は,OLDを指定してはならない。 

ii) Sが<DELETE文:探索>ならば,<結果選択肢>は,NEW又はFINALを指定してはならない。 

iii) Sが<MERGE文>で,かつ,Sが<併合更新指定>又は<併合削除指定>のいずれかを含まないな

らば,<結果選択肢>は,OLDを指定してはならない。 

iv) Sが<MERGE文>で,かつ,Sが<併合更新指定>又は<併合挿入指定>のいずれかを含まないな

らば,<結果選択肢>は,NEW又はFINALを指定してはならない。 

b) TTがビュー表ならば,次による。 

i) 

TTのビュー記述子は,WITH CHECK OPTIONを示さなければならない。 

ii) FINALが指定されるならば,次による。 

1) Sが<INSERT文>か,又は<併合挿入指定>を含む<MERGE文>のいずれかならば,TTは,ト

285 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

リガ挿入可能であってはならない。 

2) Sが<UPDATE文:探索>か,又は<併合更新指定>を含む<MERGE文>のいずれかならば,TT

は,トリガ更新可能であってはならない。 

c) DCDTの行型は,TTの行型とする。 

16) 場合: 

a) <導出列リスト> DCLがTR中に指定されるならば,次による。 

i) 

どの<列名>も,<導出列リスト>中に2回以上指定してはならない。 

ii) DCL中の<列名>の個数は,TRに単純に含まれる<導出表>,<結合表>,<横参照導出表>,<デ

ータ変更差分表>又は<表名又は問合せ名>によって指定される表の次数と同じでなければなら

ない。 

iii) TRの行型RTは,(<フィールド名>,<データ型>)対の並びによって記述される。ここで,i番

目の対の<フィールド名>は,DCL中のi番目の<列名>とし,i番目の対の<データ型>は,TRに

単純に含まれる<導出表>,<結合表>,<横参照導出表>,<データ変更差分表>又は<表名又は問

合せ名>によって指定される表のi番目の列の宣言型とする。 

b) そうでなければ,TRの行型RTは,それに単純に含まれる<表名又は問合せ名>,<導出表>,<横

参照導出表>,<データ変更差分表>又は<結合表>の行型とする。 

17) <導出表>又は<横参照導出表>が更新可能な導出表 (updatable derived table) であることは,<導出表

>又は<横参照導出表>に単純に含まれる<問合せ式>が更新可能であることと同値とする。 

18) <導出表>又は<横参照導出表>が単純に更新可能な導出表 (simply updatable derived table) であるこ

とは,<導出表>又は<横参照導出表>に単純に含まれる<問合せ式>が単純に更新可能であることと同

値とする。 

19) <導出表>又は<横参照導出表>が挿入可能な導出表 (insertable-into derived table) であることは,<導

出表>又は<横参照導出表>に単純に含まれる<問合せ式>が挿入可能であることと同値とする。 

20) <集まり導出表>は,更新可能ではなく,単純に更新可能でもない。 

21) <データ変更差分表>は,更新可能ではなく,単純に更新可能でもない。 

22) <表参照> TRが<表因子> TFを直に含むならば,次による。 

場合: 

a) 実表を識別する<表名>をTFが単純に含むならば,TFによって識別される表のどの列も,TRの

更新可能な列 (updatable column) と呼ぶ。 

b) ビューを識別する<表名>をTFが単純に含むならば,TFによって識別されるビューのどの更新可

能な列も,TRの更新可能な列 と呼ぶ。 

c) <導出表>又は<横参照導出表>をTFが単純に含むならば,<導出表>又は<横参照導出表>に単純に

含まれる<問合せ式>によって識別される表のどの更新可能な列も,TRの更新可能な列 と呼ぶ。 

23) <表参照> TRが<表因子>を直に含み,TRに単純に含まれる<表名又は問合せ名>が<表名> TNを直

に含むならば,TNによって識別される表をTとする。TNの陽に指定されるか又は暗に想定される

<スキーマ名>によって識別されるスキーマは,Tの記述子を含んでいなければならない。 

24) <表名>によって識別される表がビュー表で,かつ,その<表名>によって識別されるビュー記述子中

の階層的な<問合せ式>が潜在的に非決定的ならば,その<表名>は,潜在的に非決定的 (possibly non-

deterministic) とする。 

注記178 下位表の作成が決定的から潜在的に非決定的にビューを変更してもよい。しかし,潜在

286 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

的に非決定的でないことを要求する依存性がビューにあるならば,これは,禁止される。 

25) <問合せ名>によって識別される<問合せ式>が潜在的に非決定的ならば,その<問合せ名>は,潜在的

に非決定的 とする。 

26) <導出表>又は<横参照導出表>に単純に含まれる<問合せ式>が潜在的に非決定的ならば,その<導出

表>又は<横参照導出表>は,潜在的に非決定的 とする。 

27) <データ変更差分表>は,潜在的に非決定的 とする。 

28) <表一次子>に単純に含まれる<表名>,<問合せ名>,<導出表>,<横参照導出表>,<データ変更差分

表>若しくは<結合表>が潜在的に非決定的であるか,又はFOR SYSTEM̲TIME AS OF 

CURRENT̲TIMESTAMPを暗に若しくは陽に指定しない<問合せシステム時刻期間指定>を<表一次

子>が含むならば,その<表一次子>は,潜在的に非決定的 とする。 

29) 14 <表参照>に単純に含まれる<表一次子>若しくは<結合表>が潜在的に非決定的であるか,又は<標

本句>が指定されるならば,その<表参照>は,潜在的に非決定的 とする。 

アクセス規則 

1) <表名> TNを単純に含む<表名又は問合せ名>を<表一次子> TPが単純に含むならば,次による。 

a) TNによって識別される表をTとする。 

b) 場合: 

i) 

<表明定義>又は<検査制約定義>に直に含まれる<探索条件>にTNが含まれるならば,その<表

明定義>又は<検査制約定義>を含むスキーマを所有する<認可識別子>に適用可能な権限は,Tの

少なくとも一つの列に関するREFERENCESを含まなければならない。 

ii) そうでなければ,次による。 

1) 場合: 

A) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,TPが<SQLス

キーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別

子>に適用可能な権限は,Tの少なくとも一つの列に関するSELECTを含まなければなら

ない。 

B) そうでなければ,現行の権限は,Tの少なくとも一つの列に関するSELECTを含まなけれ

ばならない。 

2) TPが<ONLY指定>を単純に含み,かつ,TNが型付き表を識別するならば,次による。 

場合: 

A) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,TPが<SQLス

キーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別

子>に適用可能な権限は,Tの少なくとも一つの上位表に関するSELECT WITH 

HIERARCHY OPTIONを含まなければならない。 

B) そうでなければ,現行の権限は,Tの少なくとも一つの上位表に関するSELECT WITH 

HIERARCHY OPTIONを含まなければならない。 

2) <表一次子> TPが<データ変更差分表>を単純に含むならば,TRに単純に含まれる<データ変更文>

をSとする。Sの当該表をTTとする。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,TPが<SQLスキーマ

文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>に適用可

287 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

能な権限は,TTの少なくとも一つの列に関するSELECTを含まなければならない。 

b) そうでなければ,現行の権限は,TTの少なくとも一つの列に関するSELECTを含まなければな

らない。 

一般規則 

1) <表一次子> TPが<表名又は問合せ名> TOQNを単純に含むならば,次による。 

場合: 

a) TOQNが<問合せ名> QNを単純に含むならば,TPの結果は,QNによって指定される表とする。 

b) TOQNが<遷移表名> TTNを単純に含むならば,TPの結果は,TTNによって指定される表とする。 

注記179 <遷移表名>によって識別される表は,“15.7 実表からの行の削除の効果”,“15.10 実表

への表の挿入の効果”又は“15.13 実表中の行の置換えの効果”の一般規則で定義して

いるとおりの遷移表である。 

c) 

09 そうでなければ,TPに単純に含まれる<表名>によって指定される表をTとする。 

場合: 

i) 

ONLYが指定されるならば,TPの結果は,Tの真下位表中に下位行をもつT中の行を除く,T

中の全ての行から成る表とする。 

ii) そうでなければ,次による。 

場合: 

1) Tがシステムバージョン表ならば,次による。 

A) 暗に想定されるか又は陽に指定される<問合せシステム時刻期間指定>をSVSとし,Tのシ

ステム時刻期間開始列をSSTARTCOLとし,Tのシステム時刻期間終了列をSENDCOLと

する。SSTARTCOLの宣言型をDTとする。 

B) SVSがFOR SYSTEM̲TIME AS OFを指定するならば,<時点1>の値をPOTV1とする。

CAST (POTV1 AS DT) の結果をPOT1とする。 

C) SVSがFOR SYSTEM̲TIME BETWEEN又はFOR SYSTEM̲TIME FROMを指定するなら

ば,<時点1>の値をPOTV1とし,<時点2>の値をPOTV2とする。 

場合: 

I) 

SYMMETRICが指定され,かつ,POTV1 > POTV2ならば,CAST (POTV2 AS DT) の結

果をPOT1とし,CAST (POTV1 AS DT) の結果をPOT2とする。 

II) そうでなければ,CAST (POTV1 AS DT) の結果をPOT1とし,CAST (POTV2 AS DT) の

結果をPOT2とする。 

D) 場合: 

I) SVSがFOR SYSTEM̲TIME AS OFを指定するならば,TPの結果は,(SSTARTCOL <= 

POT1 AND SENDCOL > POT1) の結果が真 となるTの全ての行Rから成る表とする。 

II) SVSがFOR SYSTEM̲TIME BETWEENを指定するならば,TPの結果は,(POT1 <= POT2 

AND SENDCOL > POT1 AND SSTARTCOL <= POT2) の結果が真 となるTの全ての行R

から成る表とする。 

III) SVSがFOR SYSTEM̲TIME FROMを指定するならば,TPの結果は,(POT1 < POT2 AND 

SENDCOL > POT1 AND SSTARTCOL < POT2) の結果が真 となるTの全ての行Rから

成る表とする。 

2) そうでなければ,TPの結果は,Tの全ての行から成る表とする。 

288 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 

14 <問合せ式> QEを単純に含む<導出表>又は<横参照導出表> LDTが指定されるならば,LDTの結

果は,QEの結果とする。 

3) <データ変更差分表> DCDTが指定されるならば,DCDTに直に含まれる<データ変更文>をSとし,

Sの当該表をTTとする。 

a) FINALが指定されるならば,次による。 

i) 

現行SQLセション文脈の当該表制限フラグが偽 ならば,それに真 が設定される。 

ii) 現行SQLセション文脈に含まれる制限当該表名リストにTTの<表名>が追加される。 

b) 場合: 

i) 

Sが<DELETE文:探索>ならば,DCDTの結果は,TTに対する削除操作の差分旧表とする。 

注記180 “削除操作の差分旧表”は,“14.9 <DELETE文:探索>”で定義している。 

ii) Sが<INSERT文>ならば,DCDTの結果は,TTに対する挿入操作の差分新表とする。 

注記181 “挿入操作の差分新表”は,“15.10 実表への表の挿入の効果”及び“15.12 ビュー

表への表の挿入の効果”で定義している。 

iii) Sが<MERGE文>ならば,次による。 

場合: 

1) OLDが指定されるならば,DCDTの結果は,あるならば,TTに対する併合操作の差分旧表

とする。 

注記182 “併合操作の差分旧表”は,“14.12 <MERGE文>”で定義している。 

2) そうでなければ,DCDTの結果は,あるならば,TTに対する更新操作の差分新表と,あるな

らば,TTに対する挿入操作の差分新表との和集合とする。 

注記183 “更新操作の差分新表”は,“15.13 実表中の行の置換えの効果”及び“15.15 ビ

ュー表中の行の置換えの効果”で定義している。 

注記184 “挿入操作の差分新表”は,“15.10 実表への表の挿入の効果”及び“15.12 ビュ

ー表への表の挿入の効果”で定義している。 

iv) Sが<UPDATE文:探索>ならば,次による。 

場合: 

1) OLDが指定されるならば,DCDTの結果は,TTに対する更新操作の差分旧表とする。 

注記185 “更新操作の差分旧表”は,“14.14 <UPDATE文:探索>”で定義している。 

2) そうでなければ,DCDTの結果は,TTに対する更新操作の差分新表とする。 

注記186 “更新操作の差分新表”は,“15.13 実表中の行の置換えの効果”及び“15.15 ビ

ュー表中の行の置換えの効果”で定義している。 

c) FINALが指定されるならば,次による。 

i) 

現行SQLセション文脈に含まれる制限当該表名リストからTTの<表名>が取り除かれる。 

ii) 現行SQLセション文脈に含まれる制限当該表名リストが空ならば,現行SQLセション文脈の

当該表制限フラグに偽 が設定される。 

4) TPが<結合表>を直に含むならば,TPの結果は,その<結合表>の結果とする。 

5) <表因子> TFに直に含まれる<表一次子>をTPとする。TPの結果をRTとする。 

場合: 

a) <標本句>が指定されるならば,次による。 

i) 

RT中の行数をNとし,<標本率>の値をSとする。 

289 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) Sがナル値か,又はS < 0若しくはS > 100ならば,例外条件:データ例外 (data exception) − 

標本率が正しくない (invalid sample size) が引き起こされる。 

iii) <REPEATABLE句>が指定されるならば,<繰返し引数>の値をRPTとする。RPTがナル値なら

ば,例外条件:データ例外 − 標本句中の繰返し引数が正しくない (invalid repeat argument in a 

sample clause) が引き起こされる。 

iv) 場合: 

1) <標本方法>がBERNOULLIを指定するならば,TFの結果は,RTの行を約 (N*S/100) 行含む

表とする。TFの結果中に含まれるRTの行の確率は,S/100とする。さらに,RTの与えられ

た行がTFの結果中に含まれるかどうかは,RTの他の行がTFの結果中に含まれるかどうか

とは独立している。 

2) そうでなければ,TFの結果は,RTの行を約 (N*S/100) 行含む表とする。TFの結果中に含

まれるRTの行の確率は,S/100とする。 

v) TFが外への参照を含むならば,外への参照に対する値の与えられた集合でTFが評価されるご

とに,同一の行をもつ表が生成される。 

注記187 “外への参照”は,“6.7 <列参照>”で定義している。 

b) そうでなければ,TFの結果は,RTとする。 

6) <表参照> TRの結果は,それに直に含まれる<表因子>又は<結合表>の結果とする。 

7) <表因子> TF中に露出する範囲変数をRVとする。RVに関連付けられた表は,TFの結果とする。 

注記188 “RVに関連付けられた表”は,“4.15.10 表を含む演算”で定義している。 

適合性規則 

1) 機能S091“基本配列提供”又は機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,

<集まり導出表>を含んではならない。 

2) 機能T491“LATERAL導出表”なしでは,適合するSQL言語は,<横参照導出表>を含んではならな

い。 

3) 機能T121“問合せ式中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語は,<問合せ

名>を含んではならない。 

4) 機能S111“問合せ式中のONLY”なしでは,適合するSQL言語は,<ONLY指定>を含む<表参照>

を含んではならない。 

5) 機能F591“導出表”なしでは,適合するSQL言語は,<導出表>を含んではならない。 

6) 機能T326“表関数”なしでは,適合するSQL言語は,<表関数導出表>を含んではならない。 

7) 機能T613“サンプリング”なしでは,適合するSQL言語は,<標本句>を含んではならない。 

8) 機能T211“基本トリガ能力”なしでは,適合するSQL言語は,<遷移表名>を含んではならない。 

9) 機能S301“拡張UNNEST”なしでは,適合するSQL言語中で,<集まり導出表>は,二つ以上の<集

まり値式>を単純に含んではならない。 

10) 機能T495“データ変更及び取出しの一体化”なしでは,適合するSQL言語は,<データ変更差分表

>を含んではならない。 

11) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,<問合せシステム時刻期間指

定>を含んではならない。 

7.7 

<結合表> 

機能 

290 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<結合表> (<joind table>) は,直積,内結合又は外結合から導出される表を指定する。 

形式 

<結合表> ::= 

  <交差結合> 

| <修飾付き結合> 

| <自然結合> 

<交差結合> ::= 

  <表参照> CROSS JOIN <表因子> 

<修飾付き結合> ::= 

  { <表参照> | <分割結合表> } 

      [ <結合型> ] JOIN 

      { <表参照> | <分割結合表> } 

      <結合指定> 

<分割結合表> ::= 

  <表因子> PARTITION BY 

      <分割結合列参照リスト> 

<分割結合列参照リスト> ::= 

  <左括弧> <分割結合列参照> 

      [ { <コンマ> <分割結合列参照> }... ] 

      <右括弧> 

<分割結合列参照> ::= 

  <列参照> 

<自然結合> ::= 

  { <表参照> | <分割結合表> } 

      NATURAL [ <結合型> ] JOIN 

      { <表因子> | <分割結合表> } 

<結合指定> ::= 

  <結合条件> 

| <名前付き列結合> 

<結合条件> ::= 

  ON <探索条件> 

<名前付き列結合> ::= 

  USING <左括弧> <結合列リスト> <右括弧> 

<結合型> ::= 

  INNER 

| <外結合型> [ OUTER ] 

<外結合型> ::= 

  LEFT 

| RIGHT 

| FULL 

291 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<結合列リスト> ::= 

  <列名リスト> 

構文規則 

1) <結合表>は,<データ変更差分表>を一般に含んではならない。 

2) <結合表>の1番目のオペランドである<表参照>又は<表因子>をTRAとし,<結合表>の2番目のオ

ペランドである<表参照>又は<表因子>をTRBとする。TRA及びTRBの行型を,それぞれ,RTA及

びRTBとする。次の指定をCPとする。 

SELECT * 

FROM TRA, TRB 

3) TRAを参照する外への参照を含む<横参照導出表>をTRBが含むならば,<結合型>は,RIGHT又は

FULLを含んではならない。 

4) <修飾付き結合>又は<自然結合>が指定され,かつ,<結合型>が指定されないならば,INNERが暗に

想定される。 

5) <結合条件>を含む<修飾付き結合>が指定され,<探索条件>に直接含まれる<値式>が<集合関数指定

>ならば,<結合表>は,<HAVING句>又は<選択リスト>に含まれなければならず,<集合関数指定>

は,外への参照を含む集約化引数AAを含まなければならず,かつ,AAに含まれるどの列参照も,

外への参照でなければならない。 

注記189 “外への参照”は,“6.7 <列参照>”で定義している。 

6) <探索条件>は,<問合せ式>を介在しないで,<ウィンドウ関数>を含んではならない。 

7) NATURALも指定されず,<名前付き列結合>を直に含む<結合指定>も指定されないならば,<結合

表>の結果の列の記述子は,その列のナル可能性特性の可能性を除いて,CPの列の記述子と同じと

する。 

8) <分割結合表> PJTが指定されるならば,次による。 

a) <修飾付き結合>又は<自然結合>は,<外結合型>を指定しなければならない。 

b) 各<分割結合列参照>は,PJTに単純に含まれる<表一次子>によって参照される表の列を一意に参

照しなければならない。このような列を結合分割列 (join partitioning column) と呼ぶ。 

c) <修飾付き結合>又は<自然結合>の1番目のオペランドが<分割結合表>ならば,<外結合型>は,

RIGHT又はFULLでなければならない。 

d) <修飾付き結合>又は<自然結合>の2番目のオペランドが<分割結合表>ならば,<外結合型>は,

LEFT又はFULLでなければならず,TRBは,TRAを参照する外への参照を含む<横参照導出表>

を含んではならない。 

9) NATURALが指定されるか,又は<名前付き列結合>を直に含む<結合指定>が指定されるならば,次

による。 

a) NATURALが指定されるならば,RTAのただ一つのフィールドの<フィールド名>と等価で,かつ,

RTBのただ一つのフィールドの<フィールド名>と等価な<フィールド名>を共通列名 (common 

column name) とする。RTAは,重複する共通列名をもってはならず,RTBは,重複する共通列名

をもってはならない。共通列名をもつRTA及びRTBのフィールドがあるならば,それらの全て

のフィールドを対応する結合列 (corresponding join columns) として参照する。 

b) <名前付き列結合>が指定されるならば,<結合列リスト>中のどの<列名>も,RTAのただ一つのフ

ィールドの<フィールド名>と等価でなければならず,RTBのただ一つのフィールドの<フィール

292 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ド名>と等価でなければならない。そのような列の名前を共通列名 とする。<結合列リスト>中で

識別される列を対応する結合列 として参照する。 

c) 対応する結合列は,結合分割列であってはならない。 

d) RTA及びRTBの対の対応する結合列を,それぞれ,CA及びCBとする。CAとCBとは,比較可

能でなければならない。CA及びCBは,等値性演算のオペランドとし,“9.11 等値性演算”の構

文規則及び適合性規則を適用する。 

e) 少なくとも一つの対応する結合列があるならば,次による。 

i) 

対応する結合列の個数をNとする。 

ii) 各i,1 ≤ i ≤ Nに対して,次による。 

1) RTA中の共通列名の順序位置の順序で取り込まれたi番目の共通列名をCJCNiとする。 

2) 場合: 

A) 名前がCJCNiであるRTAのフィールドが範囲変数に関連付けられているならば,その範

囲変数をRVAiとする。 

B) そうでなければ,<結合表>を含む最も外側の<問合せ指定>中のどの範囲変数とも等価でな

く,これらの規則によって作成される他のどの範囲変数とも等価でない範囲変数をRVAiと

する。RVAiは,名前がCJCNiであるRTAのフィールドに実効的に関連付けられる。 

注記190 この“実効的な範囲変数”は,自然結合又は名前付き列結合の結果中の共通列

がそれに関連付けられる範囲変数をもたないという事実を打開する手段である。

これは,例えば,“(A NATURAL JOIN B) NATURAL JOIN C”のように,自然結

合又は名前付き列結合が入れ子になっているときにだけ必要である。この例で

は,“(A NATURAL JOIN B)”の結果中の共通列に範囲変数を実際に関連付ける

構文がない。 

3) 場合: 

A) 名前がCJCNiであるRTBのフィールドが範囲変数に関連付けられているならば,その範

囲変数をRVBiとする。 

B) そうでなければ,<結合表>を含む最も外側の<問合せ指定>中のどの範囲変数とも等価でな

く,これらの規則によって作成される他のどの範囲変数とも等価でない範囲変数をRVBi

とする。RVBiは,名前がCJCNiであるRTBのフィールドに実効的に関連付けられる。 

注記191 これは,例えば,“A NATURAL JOIN (B NATURAL JOIN C)”のように,自然結

合又は名前付き列結合が入れ子になっているときにだけ必要である。この例で

は,“(B NATURAL JOIN C)”の結果中の共通列に範囲変数を実際に関連付ける

構文がない。 

iii) 全てのi,1 ≤ i ≤ Nに対して,昇順に次の形式の<導出列>から成る<選択リスト>をSLCCとす

る。 

COALESCE ( RVAi.CJCNi, RVBi.CJCNi ) AS CJCNi 

f) 

対応する結合列ではない少なくとも一つのフィールドをRTAが含むならば,次による。 

i) 

対応する結合列ではないRTAのフィールドの個数をNCAとする。 

ii) 各j,1 ≤ j ≤ NCAに対して,次による。 

1) RTA中の対応する結合列ではないフィールドの順序位置の順序で取り込まれたそれらのj番

目のフィールドの名前をCAjとする。 

293 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 場合: 

A) 名前がCAjであるRTAのフィールドが範囲変数に関連付けられているならば,その範囲変

数をRVCAjとする。 

B) そうでなければ,<結合表>を含む最も外側の<問合せ指定>中のどの範囲変数とも等価でな

く,これらの規則によって作成される他のどの範囲変数とも等価でない範囲変数をRVCAj

とする。RVCAjは,名前がCAjであるRTAのフィールドに実効的に関連付けられる。 

iii) 全てのj,1 ≤ j ≤ NCAに対して,昇順に次の形式の<導出列>から成る<選択リスト>をSLTAと

する。 

RVCAj.CAj 

g) 対応する結合列ではない少なくとも一つのフィールドをRTBが含むならば,次による。 

i) 

対応する結合列ではないRTBのフィールドの個数をNCBとする。 

ii) 各k,1 ≤ k ≤ NCBに対して,次による。 

1) RTB中の対応する結合列ではないフィールドの順序位置の順序で取り込まれた,それらのk

番目のフィールドの名前をCBkとする。 

2) 場合: 

A) 名前がCBkであるRTBのフィールドが範囲変数に関連付けられているならば,その範囲

変数をRVCBkとする。 

B) そうでなければ,<結合表>を含む最も外側の<問合せ指定>中のどの範囲変数とも等価でな

く,これらの規則によって作成される他のどの範囲変数とも等価でない範囲変数をRVCBk

とする。RVCBkは,名前がCBkであるRTBのフィールドに実効的に関連付けられる。 

iii) 全てのk,1 ≤ k ≤ NCBに対して,昇順に次の形式の<導出列>から成る<選択リスト>をSLTBと

する。 

RVCBk.CBk 

h) <選択リスト> SLを次のとおりに定義する。 

場合: 

i) 

RTA及びRTBのフィールドの全てが対応する結合列ならば,“SLCC”をSLとする。 

ii) RTAが対応する結合列を含まず,かつ,RTBが対応する結合列を含まないならば,“SLTA, SLTB”

をSLとする。 

iii) 対応する結合列以外のフィールドをRTAが含まないならば,“SLCC, SLTB”をSLとする。 

iv) 対応する結合列以外のフィールドをRTBが含まないならば,“SLCC, SLTA”をSLとする。 

v) そうでなければ,“SLCC, SLTA, SLTB”をSLとする。 

<結合表>の結果の列の記述子は,その列のナル可能性特性の可能性を除いて,次の結果の列の記

述子と同じとする。 

SELECT SL FROM TRA, TRB 

10) 次の条件の少なくとも一つを満たすならば,<結合表>は,潜在的に非決定的 (possibly non-

deterministic) とする。 

a) TRA又はTRBのいずれかが潜在的に非決定的である。 

b) 潜在的に非決定的な<値式>,潜在的に非決定的な<問合せ指定>又は潜在的に非決定的な<問合せ

式>を一般に含む<結合条件>が指定される。 

c) NATURALが指定されるか又は<名前付き列結合>を直に含む<結合指定>が指定され,かつ,共通

294 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

列名CCNによって識別される二つの対応する結合列の宣言型が対応する構成要素をもち,一方

の構成要素が時刻帯付きの日時で,他方の構成要素が時刻帯なしの日時であるようなCCNがあ

る。 

d) 結合分割列の宣言型が文字列型,利用者定義型,TIME WITH TIME ZONE又はTIMESTAMP WITH 

TIME ZONEである。 

11) <結合表>の行の宣言型は,順序どおりに取り込まれた,その<結合表>の列記述子の並びによって示

される(<フィールド名>,<データ型>)対の並びによって定義される行型RTとする。 

12) 次の全ての条件が真ならば,<結合表>の結果の列CRは,容易にナルでないことが分かる (readily 

known not null)。 

a) <結合表>が<外結合型>を単純に含まない。 

b) <結合表>がNATURALを単純に含まない。 

c) <結合表>が <分割結合表>を単純に含まない。 

d) CRが,容易にナルでないことが分かる列を参照する列参照である。 

13) 次のいずれかの条件が真ならば,<結合表>の結果の列CRは,ナルでないことが分かる (known not 

null)。 

a) CRが容易にナルでないことが分かる。 

b) SQL処理系が機能T101“拡張ナル可能性決定”を提供するならば,次の条件に従って,CRが潜

在的にナル可能でない。 

i) 

対応する結合列又は結合分割列ではないRTAのフィールドCAに対応する<結合表>の結果の

どの列CRに対しても,次のいずれかの条件が真ならば,CRは,潜在的にナル可能 (possibly 

nullable) とする。 

1) RIGHT又はFULLが指定される。 

2) INNER,LEFT又はCROSS JOINが指定されるか又は暗に想定され,かつ,CAが潜在的にナ

ル可能である。 

ii) 対応する結合列又は結合分割列ではないRTBのフィールドCBに対応する<結合表>の結果の

どの列CRに対しても,次のいずれかの条件が真ならば,CRは,潜在的にナル可能 とする。 

1) LEFT又はFULLが指定される。 

2) INNER,RIGHT又はCROSS JOINが指定されるか又は暗に想定され,かつ,CBが潜在的に

ナル可能である。 

iii) RTAの対応する結合列CA及びRTBの対応する結合列CBに対応する<結合表>の結果のどの列

CRに対しても,次のいずれかの条件が真ならば,CRは,潜在的にナル可能 とする。 

1) LEFT又はFULLが指定され,かつ,CAが潜在的にナル可能である。 

2) RIGHT又はFULLが指定され,かつ,CBが潜在的にナル可能である。 

iv) 結合分割列JPCに対応する<結合表>の結果の列CRは,JPCが潜在的にナル可能ならば,潜在

的にナル可能 とする。 

c) CRの値がナルであり得ないことを正確に推論できる処理系定義の規則に,CRが適合する。 

アクセス規則 

1) 少なくとも一つの共通列名が存在するならば,各i,1 ≤ i ≤ Nに対して,次による。 

a) 範囲変数RVAiが実表又はビュー表TAに関連付けられているならば,次による。 

場合: 

295 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

<表明定義>又は<検査制約定義>に直に含まれる<探索条件>に<結合表>が含まれるならば,その

<表明定義>又は<検査制約定義>を含むスキーマを所有する<認可識別子>に適用可能な権限は,

CJCNiによって識別されるTAの列に関するREFERENCESを含まなければならない。 

ii) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<結合表>が<SQL

スキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子

>に適用可能な権限は,CJCNiによって識別されるTAの列に関するSELECTを含まなければ

ならない。 

iii) そうでなければ,現行の権限は,CJCNiによって識別されるTAの列に関するSELECTを含ま

なければならない。 

b) 範囲変数RVBiが実表又はビュー表TBに関連付けられているならば,次による。 

場合: 

i) 

<表明定義>又は<検査制約定義>に直に含まれる<探索条件>に<結合表>が含まれるならば,その

<表明定義>又は<検査制約定義>を含むスキーマを所有する<認可識別子>に適用可能な権限は,

CJCNiによって識別されるTBの列に関するREFERENCESを含まなければならない。 

ii) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<結合表>が<SQL

スキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子

>に適用可能な権限は,CJCNiによって識別されるTBの列に関するSELECTを含まなければ

ならない。 

iii) そうでなければ,現行の権限は,CJCNiによって識別されるTBの列に関するSELECTを含ま

なければならない。 

一般規則 

1) 場合: 

a) <交差結合>が指定されるならば,CPをTとする。 

b) <結合条件>が指定されるならば,<探索条件>をSCとし,次の指定をTとする。 

CP 

WHERE SC 

c) NATURALが指定されるか又は<名前付き列結合>が指定されるならば,次による。 

場合: 

i) 

対応する結合列があるならば,次の指定をTとする。 

CP 

WHERE RVA1.CJCN1 = RVB1.CJCN1 

  AND ... 

  AND RVAN.CJCNN = RVBN.CJCNN 

注記192 RVAi及びRVBiの幾つか又は全てが,構文規則で作成された実効的な範囲変数であ

ってもよい。これらの実効的な範囲変数は,CPの<FROM句>で定義されないが,そ

れでも,RTA及び/又はRTBの適切なフィールドに正確に関連付けられなければ

ならない。 

ii) そうでなければ,CPをTとする。 

2) Tを評価した結果をTRとし,TRA及びTRBの次数を,それぞれ,DA及びDBとし,TRAを評価

した結果をTVAとする。Tに対する実効的な名前をTNとする。 

296 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) LEFTが指定され,かつ,2番目のオペランドが<分割結合表>を指定しないならば,次による。 

a) ある行RがTR中に存在し,ある行RAがTVA中に存在し,Rの最初のDA個のフィールドの値

がRAの対応するフィールドの値と同一であるようなTVAの行の集まりをPAとする。 

b) PA中にないTVAのそれらの行をUAとする。 

c) ナル値を含むDB個の列で右側を拡張したUAをXAとする。 

d) XAに対する実効的な異なる名前をXNAとする。 

4) RIGHT若しくはFULLが指定されるか,又はLEFTが指定され,かつ,2番目のオペランドが<分割

結合表>を指定するならば,次による。 

a) TRBを評価した結果をTVBとする。 

注記193 構文規則から当然の結果として,TRBは,TRAを参照する外への参照を含む<横参照

導出表>を含まないことになる。これは,TRBを独立して評価することが可能である

ことを保証する。 

b) 場合: 

i) 

1番目のオペランドが<分割結合表>を指定するならば,次による。 

場合: 

1) TVAが空ならば,0をNAとする。 

2) そうでなければ,TVAは,各区画の各結合分割列JPCに対して,JPCのどの二つの値も異な

らないような最小の個数の区画に分割される。結合分割列の宣言型が利用者定義型で,かつ,

TVAの二つの行に対するその列の比較の結果が不定 (Unknown) になるならば,それらの行

の区画への割当ては,処理系依存とする。区画の個数をNAとする。区画の列挙をGA1,...,

GANAとする。 

ii) そうでなければ,1をNAとし,TVAをGA1とする。 

c) 場合: 

i) 

2番目のオペランドが<分割結合表>を指定するならば,次による。 

場合: 

1) TVBが空ならば,0をNBとする。 

2) そうでなければ,TVBは,各区画の各結合分割列JPCに対して,JPCのどの二つの値も異な

らないような最小の個数の区画に分割される。結合分割列の宣言型が利用者定義型で,かつ,

TVBの二つの行に対するその列の比較の結果が不定 になるならば,それらの行の区画への

割当ては,処理系依存とする。区画の個数をNBとする。区画の列挙をGB1,...,GBNBと

する。 

ii) そうでなければ,1をNBとし,TVBをGB1とする。 

d) 1からNAまでの範囲の各iに対して,かつ,1からNBまでの範囲の各jに対して,GAiの行RA

と,GBj中に存在する行RBとを連結したものがTR中に存在するような,RAの集まりをPAi,jと

する。 

e) 1からNAまでの範囲の各iに対して,かつ,1からNBまでの範囲の各jに対して,GAj中に存

在する行RAと,GBiの行RBとを連結したものがTR中に存在するような,RBの集まりをPBi,j

とする。 

f) 

1からNAまでの範囲の各iに対して,かつ,1からNBまでの範囲の各jに対して,PAi,j中に存

在しないGAiの行の集まりをUAi,jとする。 

297 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) 1からNAまでの範囲の各iに対して,かつ,1からNBまでの範囲の各jに対して,PBi,j中に存

在しないGBiの行の集まりをUBi, jとする。 

h) 1からNAまでの範囲の各iに対して,かつ,1からNBまでの範囲の各jに対して,次のとおり

に決定される宣言型及び値をもつDB個の列で右側を拡張したUAi,jをXAi,jとする。1からDB

までの範囲の各kに対して,(DA + k) 番目の列の宣言型は,TVBのk番目の列の宣言型とし,そ

の値は,次の値とする。 

場合: 

i) 

TVBのk番目の列が結合分割列ならば,GBjのk番目の列の共通の値とする。 

ii) そうでなければ,ナル値とする。 

i) 

1からNAまでの範囲の各iに対して,かつ,1からNBまでの範囲の各jに対して,次のとおり

に決定される宣言型及び値をもつDA個の列で左側を拡張したUBi, jをXBi, jとする。1からDA

までの範囲の各kに対して,k番目の列の宣言型は,TVAのk番目の列の宣言型とし,その値は,

次の値とする。 

場合: 

i) 

TVAのk番目の列が結合分割列ならば,GAiのk番目の列の共通の値とする。 

ii) そうでなければ,ナル値とする。 

j) 

1からNAまでの範囲の全てのi,及び1からNBまでの範囲の全てのjに対するXAi, j中の全て

の行の集まりをXAとする。 

注記194 NAが0ならば,XAは,空である。 

k) 1からNAまでの範囲の全てのi,及び1からNBまでの範囲の全てのjに対するXBi, j中の全て

の行の集まりをXBとする。 

注記195 NBが0ならば,XBは,空である。 

l) 

XAに対する実効的な異なる名前をXNAとする。XBに対する実効的な異なる名前をXNBとす

る。 

5) 場合: 

a) INNER又は<交差結合>が指定されるならば,TRをSとする。 

b) LEFTが指定されるならば,次の結果をSとする。 

SELECT * 

FROM TN 

UNION ALL 

SELECT * 

FROM XNA 

c) RIGHTが指定されるならば,次の結果をSとする。 

SELECT * 

FROM TN 

UNION ALL 

SELECT * 

FROM XNB 

d) FULLが指定されるならば,次の結果をSとする。 

SELECT * 

298 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

FROM TN 

UNION ALL 

SELECT * 

FROM XNA 

UNION ALL 

SELECT * 

FROM XNB 

6) Sの実効的な名前をSNとする。 

場合: 

a) NATURALが指定されるか又は<名前付き列結合>が指定されるならば,次による。 

i) 

Sのi番目の列の異なる名前をCSiとする。iがDA以下ならば,Sの列CSiは,RTAのi番目

のフィールドに対応する。DAを超えるjに対して,Sの列CSjは,RTBの (j‒DA) 番目のフィ

ールドに対応する。 

ii) 少なくとも一つの対応する結合列があるならば,列CSiと列CSjとの全ての組に対する次の形

式の導出列から成る<選択リスト>をSLCCとする。 

COALESCE (CSi, CSj) 

ここで,CSi及びCSjは,対応する結合列の対であるRTA及びRTBのフィールドに対応する。 

iii) 対応する結合列ではない一つ以上のフィールドをRTAが含むならば,対応する結合列ではない

RTAのフィールドに対応するSの全ての列CSiに対して,S中のそれらの順序位置での順序ど

おりに取り込まれた,次の形式の<選択リスト>をSLTAとする。 

CSi 

iv) 対応する結合列ではない一つ以上のフィールドをRTBが含むならば,対応する結合列ではない

RTBのフィールドに対応するSの全ての列CSjに対して,S中のそれらの順序位置での順序ど

おりに取り込まれた,次の形式の<選択リスト>をSLTBとする。 

CSj 

v) <選択リスト> SLを次のとおりに定義する。 

場合: 

1) RTA及びRTBの全てのフィールドが対応する結合列ならば,次の指定をSLとする。 

SLCC 

2) RTAが対応する結合列を含まず,かつ,RTBが対応する結合列を含まないならば,次の指定

をSLとする。 

SLTA, SLTB 

3) 対応する結合列以外のフィールドをRTAが含まないならば,次の指定をSLとする。 

SLCC, SLTB 

4) 対応する結合列以外のフィールドをRTBが含まないならば,次の指定をSLとする。 

SLCC, SLTA 

5) そうでなければ,次の指定をSLとする。 

SLCC, SLTA, SLTB 

vi) <結合表>の結果は,次の結果とする。 

SELECT SL 

299 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

FROM SN 

b) そうでなければ,<結合表>の結果は,Sとする。 

適合性規則 

1) 機能F401“拡張結合表”なしでは,適合するSQL言語は,<交差結合>を含んではならない。 

2) 機能F401“拡張結合表”なしでは,適合するSQL言語は,<自然結合>を含んではならない。 

3) 機能F401“拡張結合表”なしでは,適合するSQL言語は,FULLを含んではならない。 

4) 機能F402“LOB,配列及びマルチ集合に対する名前付き列結合”なしでは,<自然結合>又は<名前

付き列結合>中でCが対応する結合列で,かつ,Cの宣言型がLOB順序付け,配列順序付け又はマ

ルチ集合順序付けならば,適合するSQL言語は,その<自然結合>又は<名前付き列結合>のいずれ

かを単純に含む<結合表>を含んではならない。 

注記196 Cが対応する結合列ならば,“9.11 等値性演算”の適合性規則も適用する。 

5) 機能F403“分割結合表”なしでは,適合するSQL言語は,<分割結合表>を含んではならない。 

7.8 

<WHERE句> 

機能 

<WHERE句> (<where clause>) は,先行する<FROM句>の結果に<探索条件>を適用することによって導

出される表を指定する。 

形式 

<WHERE句> ::= 

  WHERE <探索条件> 

構文規則 

1) <探索条件>に直接含まれる<値式>が<集合関数指定>ならば,<WHERE句>は,<HAVING句>又は<

選択リスト>に含まれなければならず,<集合関数指定>は,列参照を含まなければならず,かつ,<

集合関数指定>の集約化引数に含まれるどの列参照も,外への参照でなければならない。 

注記197 外への参照 (outer reference) は,“6.7 <列参照>”で定義している。 

2) <探索条件>は,<問合せ式>を介在しないで<ウィンドウ関数>を含んではならない。 

アクセス規則 

なし。 

一般規則 

1) 先行する<FROM句>の結果をTとする。 

2) <探索条件>がTの各行に対して実効的に評価される。<WHERE句>の結果は,<探索条件>の結果が

真 となるTの行から成る表とする。 

適合性規則 

1) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<WHERE句>に直接含まれる<値

式>で,<集合関数指定>を一般に含む<導出列>を参照する<列参照>を含む<値式>を含んではならな

い。 

7.9 

<GROUP BY句> 

機能 

<GROUP BY句> (<group by clause>) は,前に指定された句の結果に<GROUP BY句>を適用することに

よって導出されるグループ表 (grouped table) を指定する。 

形式 

300 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<GROUP BY句> ::= 

  GROUP BY [ <集合限定子> ] <グループ化要素リスト> 

<グループ化要素リスト> ::= 

  <グループ化要素> [ { <コンマ> <グループ化要素> }... ] 

<グループ化要素> ::= 

  <通常グループ化集合> 

| <ROLLUPリスト> 

| <CUBEリスト> 

| <GROUPING SETS指定> 

| <空グループ化集合> 

<通常グループ化集合> ::= 

  <グループ化列参照> 

| <左括弧> <グループ化列参照リスト> <右括弧> 

<グループ化列参照> ::= 

  <列参照> [ <COLLATE句> ] 

<グループ化列参照リスト> ::= 

  <グループ化列参照> [ { <コンマ> <グループ化列参照> }... ] 

<ROLLUPリスト> ::= 

  ROLLUP <左括弧> <通常グループ化集合リスト> <右括弧> 

<通常グループ化集合リスト> ::= 

  <通常グループ化集合> [ { <コンマ> <通常グループ化集合> }... ] 

<CUBEリスト> ::= 

  CUBE <左括弧> <通常グループ化集合リスト> <右括弧> 

<GROUPING SETS指定> ::= 

  GROUPING SETS <左括弧> <グループ化集合リスト> <右括弧> 

<グループ化集合リスト> ::= 

  <グループ化集合> [ { <コンマ> <グループ化集合> }... ] 

<グループ化集合> ::= 

  <通常グループ化集合> 

| <ROLLUPリスト> 

| <CUBEリスト> 

| <GROUPING SETS指定> 

| <空グループ化集合> 

<空グループ化集合> ::= 

  <左括弧> <右括弧> 

構文規則 

1) 各<グループ化列参照>は,<FROM句>の結果として得られる表の列を,曖昧さなく参照しなければ

ならない。<GROUP BY句>中で参照される列は,グループ化列 (grouping column) とする。 

注記198 “列参照”は,“6.7 <列参照>”で定義している。 

2) 各<グループ化列参照>は,グループ化操作のオペランドとする。“9.12 グループ化操作”の構文規

301 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

則及び適合性規則を適用する。 

3) どの<グループ化列参照> GCに対しても,次による。 

場合: 

a) <COLLATE句>が指定されるならば,<照合順名>によって識別される照合順をCSとする。列参

照の宣言型は,文字列でなければならない。CSが宣言型照合順であること,及び照合順起源が明

示 (explicit) であることを除いて,GCの宣言型は,その列参照の宣言型とする。 

b) そうでなければ,GCの宣言型は,その列参照の宣言型とする。 

4) <GROUP BY句>を単純に含む<問合せ指定>をQSとし,QSに単純に含まれる<選択リスト>,<FROM

句>,あるならば,<WHERE句>,<GROUP BY句>,及びあるならば,<HAVING句>を,それぞれ,

SL,FC,WC,GBC及びHCとする。 

5) QSに直に含まれる,陽に指定されるか又は暗に想定される<集合限定子>を,QSSQとする。 

6) <GROUP BY句>に直に含まれる<集合限定子>があるならば,それをGBSQとする。そうでなけれ

ば,ALLをGBSQとする。 

7) “7.12 <問合せ指定>”の構文規則中の構文変換を用いて,全ての<アスタリスク>及び<被アスタリ

スク付け識別子鎖>を置き換えることによってSLから得られるものをSL1とする。 

8) <GROUP BY句>が,<ROLLUPリスト>,<CUBEリスト>,<GROUPING SETS指定>又は<グループ

化列参照リスト>を含まず,かつ,<グループ化列参照>及び<空グループ化集合>の両方を含まない

ならば,<GROUP BY句>は,基本的 (primitive) とする。 

9) <GROUP BY句>が,<ROLLUPリスト>,<CUBEリスト>又は<GROUPING SETS指定>を含まない

ならば,<GROUP BY句>は,単純 (simple) とする。 

10) GBCが,基本的でない単純な<GROUP BY句>ならば,GBCは,次のとおりに,基本的な<GROUP 

BY句>に変換される。 

a) GBCに含まれる<グループ化列参照>の個数をNSGBとする。 

b) 場合: 

i) 

NSGBが0ならば,GBCは,次のGROUP BY句で置き換えられる。 

GROUP BY () 

ii) そうでなければ,次による。 

1) GBCに含まれる<グループ化列参照>の列挙を,SGCR1,...SGCRNSGBとする。 

2) GBCは,次のGROUP BY句で置き換えられる。 

GROUP BY SGCR1 , ... 

SGCRNSGB 

注記199 すなわち,基本的でない単純な<GROUP BY句>は,正しい構文に対して必要に応じて,

全ての括弧及び余分な<コンマ>を削除することによって,基本的な<GROUP BY句>に

変換してもよい。グループ化列が全くない(例えば,GROUP BY (), ())ならば,

GROUP BY() の標準形式に変換される。 

11) GBCが,基本的な<GROUP BY句>ならば,全ての<グループ化操作>を真数定数0に置き換えるこ

とによって,SL1及びHCから得られるものを,それぞれ,SLNEW及びHCNEWとする。QSは,

次の問合せ指定と等価とする。 

SELECT QSSQ SLNEW FC 

WC GBC HCNEW 

302 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

12) <通常グループ化集合リスト>をOGSLとする。OGSLの連結 (concatenation) が,次のとおり定義さ

れる。 

a) OGSLに単純に含まれる<グループ化列参照>の個数をNGCRとし,<グループ化列参照>の列挙

を,左から右の順序で,GCRj,1 ≤ j ≤ NGCRとする。 

b) OGSLの連結は,次の<通常グループ化集合リスト>とする。 

GCR1, ..., GCRNGCR 

注記200 したがって,OGSLの連結は,全ての括弧を削除することによって形成してもよい。

例えば,“(A, B), (C, D)”の連結は,“A, B, C, D”である。 

13) <ROLLUPリスト>をRLとする。RLに含まれるn個の<通常グループ化集合>中の<通常グループ化

集合>をOGSiとする。 

a) 1からnまでの範囲の各iに対して,次の<通常グループ化集合リスト>の連結をCOGSiとする。 

OGS1, OGS2,..., OGSi 

b) RLは,次の指定と等価とする。 

GROUPING SETS ( 

( COGSn ), 

( COGSn-1 ), 

( COGSn-2 ), 

... 

( COGS1 ), 

( ) ) 

注記201 変換の結果は,<ROLLUPリスト>の<通常グループ化集合リスト>の全ての初期部分リ

ストに対して,<通常グループ化集合>を右から一つずつ削除し,それで得られる各<通

常グループ化集合リスト>を連結することによって得られる<グループ化集合>を含む

<GROUPING SETS指定>でRLを置き換えたものである。<空グループ化集合>は,最

も短い初期部分リストとみなされる。例えば,“ROLLUP ( (A, B), (C, D) )”

は,“GROUPING SETS ( (A, B, C, D), (A, B), () )”と等価である。 

14) <CUBEリスト>をCLとする。CLに含まれるn個の<通常グループ化集合>中の<通常グループ化集

合>をOGSiとする。CLは,次のとおりに変換される。 

a) M = 2n ‒ 1とする。 

b) 1からMまでの範囲の各iに対して,次による。 

i) 

n個のビット(2進数の桁)から成る値iの2進数をBSLiとする。 

ii) 1からnまでの範囲の各jに対して,左から右に数えて,BSLi中のj番目のビットをBi,jとす

る。 

iii) 1からnまでの範囲の各jに対して,次の文字列をGSLCRi,jとする。 

場合: 

1) Bi,jが0ならば,長さ0の文字列。 

2) Bi,jが1で,かつ,全てのk < jに対してBi,kが0ならば,OGSj。 

3) そうでなければ,<コンマ>及びそれに続くOGSj。 

iv) 次の<通常グループ化集合リスト>の連結をGSLiとする。 

GSLCRi,1 GSLCRi,2 ... GSLCRi,n 

303 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) CLは,次の指定と等価とする。 

GROUPING SETS ( ( GSLM ), ( GSLM-1 ), ..., ( GSL1 ), ( ) ) 

注記202 変換の結果は,<通常グループ化集合>を含まない空の部分集合として<空グループ化

集合>を含めて,<CUBEリスト>の<通常グループ化集合リスト>中の<通常グループ化

集合>の集合の可能な全ての部分集合に対する<グループ化集合>を含む<GROUPING 

SETS指定>でCLを置き換えたものである。 

例えば,CUBE (A, B, C) は,次の指定と等価である。 

GROUPING SETS ( /* BSLi */ 

(A,  B,  C), /* 111 */ 

(A,  B    ), /* 110 */ 

(A,      C), /* 101 */ 

(A        ), /* 100 */ 

(     B, C), /* 011 */ 

(     B   ), /* 010 */ 

(        C), /* 001 */ 

(         ) 

別の例として,CUBE ((A, B), (C, D)) は,次の指定と等価である。 

GROUPING SETS ( /* BSLi */ 

(A, B, C, D), /* 11 */ 

(A, B       ), /* 10 */ 

(       C, D), /* 01 */ 

(            ) 

15) <GROUPING SETS指定>をGSSAとする。GSSAが,別の<GROUPING SETS指定> GSSBを単純に

含むならば,GSSAは,次のとおりに変換される。 

a) GSSAに単純に含まれる<グループ化集合>の個数をNAとし,GSSBに単純に含まれる<グループ

化集合>の個数をNBとする。 

b) 1 ≤ i ≤ NAに対して,GSSAに単純に含まれる<グループ化集合>の列挙をGSAiとする。 

c) 1 ≤ i ≤ NBに対して,GSSBに単純に含まれる<グループ化集合>の列挙をGSBiとする。 

d) GSSB = GSAkとなる値をkとする。 

e) GSSAは,次の指定と等価とする。 

GROUPING SETS ( 

    GSA1, GSA2, ... GSAk-1, 

    GSB1, ... , GSBNB, 

    GSAk+1, ..., GSANA ) 

注記203 したがって,入れ子にされた<GROUPING SETS指定>は,それの各<グループ化集合>

を,それを包含する<GROUPING SETS指定>の<グループ化集合>にするために単純に

“昇格させること (promoting)”によって取り除かれる。 

16) 単純でない<GROUP BY句>をCGBとする。CGBは,次のとおりに変換される。 

304 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) <ROLLUPリスト>及び<CUBEリスト>と同様に,別の<GROUPING SETS指定>中で入れ子にされ

た<GROUPING SETS指定>を取り除くために,先行する構文規則を繰り返し適用する。 

注記204 結果として,CGBは,単一の<GROUPING SETS指定>,又は二つ以上の<グループ化

集合>のリストのいずれかになり,その<グループ化集合>のそれぞれは,<通常グルー

プ化集合>,<空グループ化集合>,又は<通常グループ化集合>及び<空グループ化集合

>だけを含む<GROUPING SETS指定>である。<ROLLUPリスト>,<CUBEリスト>,

又は入れ子になった<GROUPING SETS指定>は,残らない。 

b) <通常グループ化集合>又は<空グループ化集合>であるどの<グループ化要素> GSも,次の

<GROUPING SETS指定>に置き換える。 

GROUPING SETS ( GS ) 

注記205 結果として,CGBは,一つ以上の<GROUPING SETS指定>のリストになる。 

c) CGBが二つ以上の<GROUPING SETS指定>を含むならば,CGB中の最初の二つの<GROUPING 

SETS指定>をGSSX及びGSSYとする。CGBは,“GSSX <コンマ> GSSY”を次のとおりに置き換

えることによって変換される。 

i) 

GSSX中の<グループ化集合>の個数をNXとし,GSSY中の<グループ化集合>の個数をNYとす

る。 

ii) GSSXに含まれる<グループ化集合>をGSXi,1 ≤ i ≤ NXとし,GSSYに含まれる<グループ化集

合>をGSYi,1 ≤ i ≤ NYとする。 

iii) GSXi中の<グループ化列参照>の個数をMX(i) とし,GSYi中の<グループ化列参照>の個数を

MY(i) とする。 

注記206 GSXiが<空グループ化集合>ならば,MX(i)は,0である。GSYiについても同様であ

る。 

iv) GSXiに含まれる<グループ化列参照>をGCRXi,j,1 ≤ j ≤ MX(i) とし,GSYiに含まれる<グルー

プ化列参照>を,GCRYi,j,1 ≤ j ≤ MY(i) とする。 

注記207 GSXiが<空グループ化集合>ならば,GCRXi,jは,存在しない。GSYiについても同

様である。 

v) 1からNXまでの範囲の各a,及び1からNYまでの範囲の各bに対して,次の指定,すなわ

ち,1からMX(a) までの範囲の全てのjに対するGCRAa,j,及びそれに続く,1からMY(b) ま

での範囲の全てのjに対するGCRYb,jから成る<通常グループ化集合>をGSTa,bとする。 

( GCRXa,1, ..., GCRXa,MX(a), GCRYb,1 , ..., GCRYb,MY(b) ) 

vi) CGBは,“GSSX <コンマ> GSSY”を次の指定に置き換えることによって変換される。 

GROUPING SETS ( 

  GST1,1, ..., GST1,NY, 

  GST2,1, ..., GST2,NY, 

  ... 

  GSTNX,1 , ..., GSTNX,NY 

注記208 したがって,GSSA中の各<通常グループ化集合>は,GSSB中の各<通常グループ化

集合> と“連結される (concatenated)”。例えば, 

GROUP BY GROUPING SETS ((A, B), (C)), 

305 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

           GROUPING SETS ((X, Y), ()) 

は,次の指定に変換される。 

GROUP BY GROUPING SETS ((A, B, X, Y), (A, B), 

           (C, X, Y), (C)) 

d) 単一の<GROUPING SETS指定>でCGBが構成されるまで,この構文規則の先行する部分規則を

繰り返し適用する。 

17) <グループ化要素リスト>が,<通常グループ化集合>又は<空グループ化集合>だけを含む単一の

<GROUPING SETS指定> GSSから成るならば,次による。 

a) GSSに含まれる<グループ化集合>の個数をmとする。 

b) GSSに含まれる<グループ化集合>をGSi,1 ≤ i ≤ mとする。 

c) GSSに含まれる,異なる<列参照>の個数をpとする。 

d) 左から右への出現順に従ってリスト中で順序付けられるこれらの<列参照>の順序付けられたリ

ストをPCとする。 

e) PC中のk番目の<列参照>をPCk,1 ≤ k ≤ pとする 

f) PCkによって識別される列の宣言型をDTPCkとする。 

g) SL1に単純に含まれる<導出列>の個数をNDCとする。 

h) SL1に単純に含まれる<導出列>の列挙を,左から右の順序で,DCq,1 ≤ q ≤ NDCとする。 

i) 

DCq,1 ≤ q ≤ NDCの列名をDCNqとする。 

j) DCqに単純に含まれる<値式>をVEq,1 ≤ q ≤ NDCとする。 

k) 全てが互いに異なる処理系依存の列名をXNk,1 ≤ k ≤ p,YN,1 ≤ k ≤ p,及びZNq,1 ≤ q ≤ NDC

とする。 

l) 

次の<選択リスト>をSL2とする。 

PC1 AS XN1, GROUPING (PC1) AS YN1, 

..., 

PCp AS XNp, GROUPING (PCp) AS YNp, 

VE1 AS ZN1, ..., VENDC AS ZNNDC 

m) 各GSiに対して,次による。 

i) 

GSiが<空グループ化集合>ならば,0をn(i) とする。GSiが<グループ化列参照>ならば,1を

n(i) とする。そうでなければ,<グループ化列参照リスト>に含まれる<グループ化列参照>の個

数をn(i) とする。 

ii) GSiに含まれる<グループ化列参照>をGCRi,j,1 ≤ j ≤ n(i) とする。 

iii) 場合: 

1) GSiが<通常グループ化集合>ならば,次による。 

A) 次のとおりに,SL2を変換してSL3を求め,HCを変換してHC3を求める。 

各PCkに対して,PCk = GCRi,jとなるjがないならば,SL2及びHC中の次の置換えを行

う。 

I) PCkを参照する<列参照>を含むSL2及びHC中の各<グループ化操作>を次の指定に置

き換える。ここで,IDTは,<グループ化操作>の宣言型である位取り0の処理系定義の

真数型とする。 

CAST ( 1 AS IDT ) 

306 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

II) PCkを参照するSL2及びHC中の各<列参照>を次の指定に置き換える。 

CAST ( NULL AS DTPCk ) 

B) SL3及びHC3中に残る各<グループ化操作>を次の指定に置き換えることによって,SL3を

変換してSLNEWを求め,HC3を変換してHCNEWを求める。ここで,IDTは,<グルー

プ化操作>の宣言型である位取り0の処理系定義の真数型とする。 

CAST ( 0 AS IDT ) 

注記209 したがって,<グループ化操作>によって参照されるグループ化列がGCRi,j中に

あるならば,<グループ化操作>の値は,0になり,そうでなければ,1になる。 

C) 次の指定をGSSQLiとする。 

SELECT QSSQ SLNEW 

FC 

WC 

GROUP BY GCRi,1, ..., GCRi,n(i) 

HCNEW 

2) GSiが<空グループ化集合>ならば,次による。 

A) 次のとおりに,SL2を変換してSLNEWを求め,HCを変換してHCNEWを求める。 

各k,1 ≤ k ≤ pに対して,次による。 

I) PCkを参照する<列参照>を含むSL2及びHC中の各<グループ化操作>を次の指定に置

き換える。ここで,IDTは,<グループ化操作>の宣言型である位取り0の処理系定義の

真数型とする。 

CAST ( 1 AS IDT ) 

II) PCkを参照するSL2及びHC中の各<列参照>を次の指定に置き換える。 

CAST ( NULL AS DTPCk ) 

B) 次の指定をGSSQLiとする。 

SELECT QSSQ SLNEW 

FC 

WC 

GROUP BY () 

HCNEW 

n) 次の指定をGUとする。 

GSSQL1 

  UNION GBSQ 

GSSQL2 

  UNION GBSQ 

... 

  UNION GBSQ 

GSSQLm 

o) QSは,次の指定と等価とする。 

SELECT QSSQ ZN1 AS DC1, ..., ZNNDC AS DCNDC 

FROM ( GU ) 

307 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

注記210 この細分箇条の構文規則で規定している構文変換の結果として,基本的な<GROUP BY句

>の考慮だけが残る。 

1) <WHERE句>が指定されないならば,先行する<FROM句>の結果をTとする。そうでなければ,先

行する<WHERE句>の結果をTとする。 

2) 場合: 

a) グループ化列がないならば,<GROUP BY句>の結果は,唯一のグループとしてのTから成るグル

ープ表とする。 

b) そうでなければ,<GROUP BY句>の結果は,各グループの各グループ化列に対して,そのグルー

プ化列のどの二つの値も異ならないような最小の個数のグループへの,Tの行の集合の分割とす

る。グループ化列の宣言型が利用者定義型で,かつ,Tの二つの行に対するその列の比較の結果

が不定 (Unknown) になるならば,<GROUP BY句>の結果中のグループへのこれらの行の割当て

は,処理系依存とする。 

3) <探索条件>又は<値式>がグループに適用されるとき,グループ化列に関数従属である列への参照

CRは,次のとおりに理解される。 

場合: 

a) CRがグループ不変列参照ならば,それは,そのグループ中の行のその列の共通の値への参照とす

る。列の最特定型が文字列,時刻帯付き日時又は利用者定義型ならば,その値は,グループの各

行中の列の値と異ならない処理系依存の値とする。 

b) そうでなければ,CRは,グループ内変動列参照として,グループ化列によって決定される与えら

れたグループの各行中の列の値への参照とし,<集合関数指定>の引数の入力を構成するために用

いる。 

適合性規則 

1) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<ROLLUPリスト>を含んでは

ならない。 

2) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<CUBEリスト>を含んではな

らない。 

3) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<GROUPING SETS指定>を含

んではならない。 

4) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<空グループ化集合>を含んで

はならない。 

5) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<グループ化列参照リスト>を

含む<通常グループ化集合>を含んではならない。 

6) 機能T432“入れ子及び連結GROUPING SETS”なしでは,適合するSQL言語は,<GROUPING SETS

指定>を含む<グループ化集合リスト>を含んではならない。 

7) 機能T432“入れ子及び連結GROUPING SETS”なしでは,適合するSQL言語は,<GROUP BY句>

に単純に含まれる唯一の<グループ化要素>ではない<GROUPING SETS指定> GSSを単純に含む

<GROUP BY句>を含んではならない。 

308 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記211 

“9.12 グループ化操作”の適合性規則も適用する。 

8) 機能T434“GROUP BY DISTINCT”なしでは,適合するSQL言語は,<集合限定子>を単純に含む

<GROUP BY句>を含んではならない。 

7.10 <HAVING句> 

機能 

<HAVING句> (<having clause>) は,<探索条件>を満たさないグループを取り除くことによって導出され

るグループ表を指定する。 

形式 

<HAVING句> ::= 

  HAVING <探索条件> 

構文規則 

1) <HAVING句>をHCとする。HCを直に含む<表式>をTEとする。TEが<GROUP BY句>を直に含

まないならば,“GROUP BY ( )”が暗に想定される。TEに直に含まれる<GROUP BY句> GBCによ

って定義される表の記述子をTとし,GBCの結果をRとする。 

2) GBCに含まれる<列参照>によって参照される全ての列から成る集合をGとする。 

3) <探索条件>に直接含まれる各列参照は,次のうちのいずれか一つでなければならない。 

a) Gに関数従属である列への曖昧さのない参照。 

b) 外への参照。 

注記212 先行する構文規則は,“6.7 <列参照>”中のより包括的なものから得られる。 

3) <探索条件>中の<問合せ式>に含まれ,Tの列を参照する各列参照は,次のうちのいずれか一つでな

ければならない。 

a) Gに関数従属である列への曖昧さのない参照。 

b) <集合関数指定>の集約化引数に含まれる。 

注記213 先行する構文規則は,“6.7 <列参照>”中のより包括的なものから得られる。 

5) <探索条件>は,<問合せ式>を介在しないで,<ウィンドウ関数>を含んではならない。 

6) <HAVING句>の結果の行型は,Tの行型RTとする。 

アクセス規則 

なし。 

一般規則 

1) Rの各グループに対して<探索条件>が評価される。<HAVING句>の結果は,<探索条件>の結果が真 

(True) となるRのグループから成るグループ表とする。 

適合性規則 

1) 機能T301“関数従属性”なしでは,適合するSQL言語中で, <探索条件>に直接含まれる各列参照

は,次のうちのいずれか一つでなければならない。 

a) Tのグループ化列への曖昧さのない参照。 

b) 外への参照。 

2) 機能T301“関数従属性”なしでは,適合するSQL言語中で, <探索条件>中の<問合せ式>に含まれ,

Tの列を参照する各列参照は,次のうちのいずれか一つでなければならない。 

a) Tのグループ化列への曖昧さのない参照。 

b) <集合関数指定>の集約化引数中に含まれる。 

309 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7.11 <WINDOW句> 

機能 

<WINDOW句> (<window clause>) は,一つ以上のウィンドウ定義を指定する。 

形式 

<WINDOW句> ::= 

  WINDOW <ウィンドウ定義リスト> 

<ウィンドウ定義リスト> ::= 

  <ウィンドウ定義> [ { <コンマ> <ウィンドウ定義> }... ] 

<ウィンドウ定義> ::= 

  <新ウィンドウ名> AS <ウィンドウ指定> 

<新ウィンドウ名> ::= 

  <ウィンドウ名> 

<ウィンドウ指定> ::= 

  <左括弧> <ウィンドウ指定詳細> <右括弧> 

<ウィンドウ指定詳細> ::= 

  [ <既存ウィンドウ名> ] 

      [ <ウィンドウ区画句> ] 

      [ <ウィンドウ順序句> ] 

      [ <ウィンドウ枠句> ] 

<既存ウィンドウ名> ::= 

  <ウィンドウ名> 

<ウィンドウ区画句> ::= 

  PARTITION BY <ウィンドウ区画列参照リスト> 

<ウィンドウ区画列参照リスト> ::= 

  <ウィンドウ区画列参照> 

      [ { <コンマ> <ウィンドウ区画列参照> }... ] 

<ウィンドウ区画列参照> ::= 

  <列参照> [ <COLLATE句> ] 

<ウィンドウ順序句> ::= 

  ORDER BY <ソート指定リスト> 

<ウィンドウ枠句> ::= 

  <ウィンドウ枠単位> <ウィンドウ枠範囲> 

      [ <ウィンドウ枠除外> ] 

<ウィンドウ枠単位> ::= 

  ROWS 

| RANGE 

| GROUPS 

<ウィンドウ枠範囲> ::= 

  <ウィンドウ枠開始> 

| <ウィンドウ枠BETWEEN> 

310 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<ウィンドウ枠開始> ::= 

  UNBOUNDED PRECEDING 

| <ウィンドウ枠PRECEDING> 

| CURRENT ROW 

<ウィンドウ枠PRECEDING> ::= 

  <符号なし値指定> PRECEDING 

<ウィンドウ枠BETWEEN> ::= 

  BETWEEN <ウィンドウ枠境界1> AND <ウィンドウ枠境界2> 

<ウィンドウ枠境界1> ::= 

  <ウィンドウ枠境界> 

<ウィンドウ枠境界2> ::= 

  <ウィンドウ枠境界> 

<ウィンドウ枠境界> ::= 

  <ウィンドウ枠開始> 

| UNBOUNDED FOLLOWING 

| <ウィンドウ枠FOLLOWING> 

<ウィンドウ枠FOLLOWING> ::= 

  <符号なし値指定> FOLLOWING 

<ウィンドウ枠除外> ::= 

  EXCLUDE CURRENT ROW 

| EXCLUDE GROUP 

| EXCLUDE TIES 

| EXCLUDE NO OTHERS 

構文規則 

1) <WINDOW句>を直に含む<表式>をTEとする。 

2) <新ウィンドウ名> NWN1は,NWN1と等価な別の<新ウィンドウ名> NWN2の有効範囲中に含まれ

てはならない。 

3) <ウィンドウ定義>をWDEFとする。 

4) WDEFの<ウィンドウ区画句>又は<ウィンドウ順序句>に含まれる各<列参照>は,TEの結果である

導出表Tの列を曖昧さなく参照しなければならない。<ウィンドウ区画句>中で参照される列は,分

割列 (partitioning column) とする。各分割列は,グループ化操作のオペランドとし,“9.12 グループ

化操作”の構文規則及び適合性規則を適用する。 

注記214 Tがグループ表ならば,<ウィンドウ区画句>又は<ウィンドウ順序句>に含まれる<列参

照>は,“7.12 <問合せ指定>”中の構文変換を実行することによって得られるグループ表

の列を参照しなければならない。 

5) どの<ウィンドウ区画列参照> PCに対しても,次とする。 

場合: 

a) <COLLATE句>が指定されるならば,<照合順名>によって識別される照合順をCSとする。列参

照の宣言型は,文字列でなければならない。CSが宣言型照合順であること,及び照合順起源が明

示 (explicit) であることを除いて,PCの宣言型は,その列参照の宣言型とする。 

311 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) そうでなければ,PCの宣言型は,その列参照の宣言型とする。 

6) Tがグループ表ならば,Tのグループ化列の集合をGとする。Tの列を参照する<WINDOW句>に

含まれる各列参照は,Gに関数従属である列を参照するか,又は<集合関数指定>の集約化引数に含

まれなければならない。 

注記215 先行する構文規則は,“6.7 <列参照>”中のより包括的なものから得られる。 

7) <WINDOW句>は,<問合せ式>を介在しないで,<ウィンドウ関数>を含んではならない。 

8) WDEFが<ウィンドウ枠BETWEEN>を指定するならば,次による。 

a) <ウィンドウ枠境界1>は,UNBOUNDED FOLLOWINGを指定してはならない。 

b) <ウィンドウ枠境界2>は,UNBOUNDED PRECEDINGを指定してはならない。 

c) <ウィンドウ枠境界1>がCURRENT ROWを指定するならば,<ウィンドウ枠境界2>は,<ウィン

ドウ枠PRECEDING>を指定してはならない。 

d) <ウィンドウ枠境界1>が<ウィンドウ枠FOLLOWING>を指定するならば,<ウィンドウ枠境界2> 

は,<ウィンドウ枠PRECEDING>又はCURRENT ROWを指定してはならない。 

9) WDEFが<ウィンドウ枠範囲>を指定し,かつ,<ウィンドウ枠BETWEEN>を指定しないならば,<

ウィンドウ枠開始>をWAGSとする。<ウィンドウ枠範囲>は,次の<ウィンドウ枠BETWEEN>と等

価とする。 

BETWEEN WAGS AND CURRENT ROW 

10) WDEFが<既存ウィンドウ名> EWNを指定するならば,次による。 

a) WDEFは,<既存ウィンドウ名>と等価な<ウィンドウ名>の有効範囲内になければならない。 

b) EWNによって識別されるウィンドウ構造記述子をWDXとする。 

c) WDEFは,<ウィンドウ区画句>を指定してはならない。 

d) WDXがウィンドウ順序付け句をもつならば,WDEFは,<ウィンドウ順序句>を指定してはなら

ない。 

e) WDXは,ウィンドウ枠付け句をもってはならない。 

11) WDEFの<ウィンドウ枠句>が<ウィンドウ枠PRECEDING>又は<ウィンドウ枠FOLLOWING>を指

定するならば,<ウィンドウ枠PRECEDING>又は<ウィンドウ枠FOLLOWING>に単純に含まれる<

符号なし値指定>をUVSとする。 

場合: 

a) RANGEが指定されるならば,次による。 

i) 

場合: 

1) WDEFが<ウィンドウ順序句> WOCを含むならば,WOCをWDEFOCとする。 

2) そうでなければ,WDEFは,ウィンドウ順序付け句WOGCを含むウィンドウ構造記述子を

識別する<既存ウィンドウ名>を指定しなければならない。WOGCをWDEFOCとする。 

ii) WDEFOCは,単一の<ソートキー> SKを含まなければならない。 

iii) SKの宣言型は,数,日時又は時間隔でなければならない。SKの宣言型が数ならば,UVSの宣

言型は,数でなければならない。そうでなければ,この規格の“6.31 <日時値式>”及び“6.33  

<時間隔値式>”の構文規則に従って,SKの宣言型に加算又は減算を行ってもよい時間隔型でな

ければならない。 

b) ROWSが指定されるならば,UVSの宣言型は,位取り0の真数でなければならない。 

c) GROUPSが指定されるならば,次による。 

312 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

WDEFは,<ウィンドウ順序句>を含むか,又はウィンドウ順序付け句を含むウィンドウ構造記

述子を識別する<既存ウィンドウ名>を指定するかのいずれかでなければならない。 

ii) UVSの宣言型は,位取り0の真数でなければならない。 

12) WDEFに単純に含まれる<新ウィンドウ名>の有効範囲は,<WINDOW句>を単純に含む<問合せ指

定>又は<SELECT文:単一行>の<選択リスト>に加えて,<WINDOW句>中のWDEFに続く任意の

<ウィンドウ定義>から成る。単純表問合せである<問合せ式>の<問合せ式本体>である<問合せ指定

>に<WINDOW句>が単純に含まれるならば,<新ウィンドウ名>の有効範囲は,その<問合せ式>の

<ORDER BY句>があるとき,その<ORDER BY句>も含む。 

13) 次の全ての条件を満たすならば,二つのウィンドウ構造記述子WD1及びWD2は,順序等価 (order-

equivalent) とする。 

a) WD1及びWD2のウィンドウ分割句に含まれる<ウィンドウ区画列参照>の列挙を,左から右の順

序で,それぞれ,WPCR1i,1 ≤ i ≤ N1,及びWPCR2i,1 ≤ i ≤ N2とする。N1 = N2であり,かつ,

全てのiに対して,WPCR1iとWPCR2iとが等価な列参照である。 

b) WD1及びWD2のウィンドウ順序付け句に含まれる<ソート指定>の列挙を,左から右の順序で,

それぞれ,SS1i,1 ≤ i ≤ M1,及びSS2i,1 ≤ i ≤ M2とする。M1 = M2で,かつ,全てのiに対し

て,SS1iとSS2iとが,等価な列参照である<ソートキー>を含み,同じ<順序付け指定>を指定す

るか又は暗に想定し,あるならば,同じ<COLLATE句>を指定するか又は暗に想定し,同じ<ナル

順序付け>を指定するか又は暗に想定する。 

アクセス規則 

なし。 

一般規則 

1) TEを直に含む<問合せ指定>又は<SELECT文:単一行>の<選択リスト>をSLとする。 

場合: 

a) SLが<ウィンドウ関数>を単純に含まないならば,<WINDOW句>は,無視され,TEの結果は,

TEの最後の<FROM句>,<WHERE句>,<GROUP BY句>又は<HAVING句>の結果とする。 

b) そうでなければ,TEに単純に含まれる最後の<FROM句>又は<WHERE句>の結果をRTEとする。 

注記216 <GROUP BY句>又は<HAVING句>を<WINDOW句>とともにもつことは許されるが,

<ウィンドウ関数>があるならば,<GROUP BY句>及び<HAVING句>は,“7.12 <問合

せ指定>”中の構文変換によって取り除かれるので,ここでは考慮しない。 

i) 

ウィンドウ構造記述子WDESCは,各<ウィンドウ定義> WDEFに対して,次のとおりに作成さ

れる。 

1) WDESCのウィンドウ名は,WDEFに単純に含まれる<新ウィンドウ名>とする。 

2) <既存ウィンドウ名>が指定されるならば,WDEFに単純に含まれる<既存ウィンドウ名>を

EWNとし,EWNによって識別されるウィンドウ構造記述子をWDXとする。 

3) <既存ウィンドウ名>が指定され,かつ,WDXのウィンドウ順序付け句が存在するならば,

WDESCの順序付けウィンドウ名は,EWNとする。そうでなければ,順序付けウィンドウ名

は,存在しない。 

4) 場合: 

A) WDEFが<ウィンドウ区画句> WDEFWPCを単純に含むならば,WDESCのウィンドウ分

割句は,WDEFWPCとする。 

313 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

B) <既存ウィンドウ名>が指定されるならば,WDESCのウィンドウ分割句は,WDXのウィン

ドウ分割句とする。 

C) そうでなければ,WDESCは,ウィンドウ分割句をもたない。 

5) 場合: 

A) WDEFが<ウィンドウ順序句> WDEFWOCを単純に含むならば,WDESCのウィンドウ順

序付け句は,WDEFWOCとする。 

B) <既存ウィンドウ名>が指定されるならば,WDESCのウィンドウ順序付け句は,WDXのウ

ィンドウ順序付け句とする。 

C) そうでなければ,WDESCは,ウィンドウ順序付け句をもたない。 

6) WDEFが<ウィンドウ枠句> WDEFWFCを単純に含むならば,WDESCのウィンドウ枠付け

句は,WDEFWFCとする。そうでなければ,WDESCは,ウィンドウ枠付け句をもたない。 

ii) <WINDOW句>の結果は,RTE,及び<WINDOW句>によって定義されるウィンドウ構造記述子

とする。 

2) ウィンドウ構造記述子をWDとする。 

3) WDは,RTEの各行Rに対して,WDのウィンドウ分割列においてRと異ならないRTEの行の集

まりから成る,WDの下でのRのウィンドウ区画 (window partition) を定義する。WDがウィンドウ

分割句をもたないならば,Rのウィンドウ区画は,結果のRTE全体とする。 

4) WDは,WDのウィンドウ順序付け句に単純に含まれる<ソート指定リスト>を用いて,“10.10 <ソー

ト指定リスト>”の一般規則に従って,WDによって定義される各ウィンドウ区画の行のウィンドウ

順序付けも定義する。WDがウィンドウ順序付け句をもたないならば,ウィンドウ順序付けは,処

理系依存とし,全ての行は,同位とする。ウィンドウ区画内の同位行のウィンドウ順序付けは,処

理系依存とするが,そのウィンドウ順序付けは,順序等価である全てのウィンドウ構造記述子に対

して同じでなければならない。それは,ウィンドウW1がウィンドウW2のための順序付けウィン

ドウであるようなW1とW2との任意の対に対しても同じでなければならない。 

5) WDは,RTEの各行Rに対して,行の集まりから成る,Rのウィンドウ枠WFも定義する。WFは

次のとおり定義される。 

場合: 

a) WDがウィンドウ枠付け句をもたないならば,次による。 

場合: 

i) 

WDのウィンドウ順序付け句が存在しないならば,WFは,Rのウィンドウ区画とする。 

ii) そうでなければ,WFは,ウィンドウ順序付け句によって定義されるウィンドウ区画のウィン

ドウ順序付けでRに先行するか又はRと同位である,Rのウィンドウ区画の全ての行から成

る。 

b) そうでなければ,WDによって定義されるRのウィンドウ区画を最初はWFとする。WDのウィ

ンドウ枠付け句をWFCとする。WFCに含まれる<ウィンドウ枠境界1>をWFB1とし,<ウィン

ドウ枠境界2>をWFB2とする。 

i) 

RANGEが指定されるならば,次による。 

1) 次の部分規則中で,日時と年月時間隔とを組み合わせて加算又は減算を行うとき,<基本日時

フィールド> DAYが<基本日時フィールド> YEAR及びMONTHの計算値に対して正しくな

いという理由で,その結果が例外条件:データ例外 (data exception) − 日時フィールドあふ

314 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

れ (datetime field overflow) を引き起こすことになるならば,<基本日時フィールド> DAYに

は,<基本日時フィールド> YEAR及びMONTHに対して正しい最終日が設定され,どんな例

外条件も引き起こさない。 

2) 場合: 

注記217 次の部分規則中で,WFB1がUNBOUNDED PRECEDINGを指定するならば,この

段階では,WFからどの行も取り除かれない。WFB1は,UNBOUNDED 

FOLLOWINGではあり得ない。 

A) WFB1が<ウィンドウ枠PRECEDING>を指定するならば,<符号なし値指定>の値をV1Pと

する。 

場合: 

I) V1Pが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行又

は後続行数・グループ数が正しくない (invalid preceding or following size in window function) 

が引き起こされる。 

II) そうでなければ,WDのウィンドウ順序付け句に含まれる唯一の<ソートキー>をSKと

する。現在行に対するSKの値をVSKとする。 

場合: 

1) VSKがナル値で,かつ,NULLS LASTが指定されるか又は暗に想定されるならば,SK

値がナル値ではない全ての行R2をWFから取り除く。 

2) VSKがナル値でないならば,次による。 

a) NULLS FIRSTが指定されるか又は暗に想定されるならば,SKの値がナル値である

全ての行R2をWFから取り除く。 

b) 場合: 

i) 

ウィンドウ順序付け句に含まれる<順序付け指定>がDESCを指定するならば,

VSK + V1Pの値をBOUNDとする。SKの値がBOUNDを超える全ての行R2を

WFから取り除く。 

ii) そうでなければ,VSK ‒ V1Pの値をBOUNDとする。SKの値がBOUND未満の全

ての行R2をWFから取り除く。 

B) WFB1がCURRENT ROWを指定するならば,WDによって定義されるウィンドウ順序付

けで,現在行と同位ではなく,現在行に先行する全ての行をWFから取り除く。 

C) WFB1が<ウィンドウ枠FOLLOWING>を指定するならば,<符号なし値指定>の値をV1F

とする。 

場合: 

I) V1Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDのウィンドウ順序付け句に含まれる唯一の<ソートキー>をSKと

する。現在行に対するSKの値をVSKとする。 

場合: 

1) VSKがナル値で,かつ,NULLS LASTが指定されるか又は暗に想定されるならば,SK

の値がナル値ではない全ての行R2をWFから取り除く。 

2) VSKがナル値でないならば,次による。 

315 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) NULLS FIRSTが指定されるか又は暗に想定されるならば,SKの値がナル値である

全ての行R2をWFから取り除く。 

b) 場合: 

i) 

ウィンドウ順序付け句に含まれる<順序付け指定>がDESCを指定するならば,

VSK ‒ V1Fの値をBOUNDとする。SKの値がBOUNDを超える全ての行R2を

WFから取り除く。 

ii) そうでなければ,VSK + V1Fの値をBOUNDとする。SKの値がBOUND未満の全

ての行R2をWFから取り除く。 

3) 場合: 

注記218 次の部分規則中で,WFB2がUNBOUNDED FOLLOWINGを指定するならば,こ

の段階では,WFからどの行も取り除かれない。WFB2は,UNBOUNDED 

PRECEDINGではあり得ない。 

A) WFB2が<ウィンドウ枠PRECEDING>を指定するならば,<符号なし値指定>の値をV2Pと

する。 

場合: 

I) V2Pが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDのウィンドウ順序付け句に含まれる唯一の<ソートキー>をSKと

する。現在行に対するSKの値をVSKとする。 

場合: 

1) VSKがナル値で,かつ,NULLS FIRSTが指定されるか又は暗に想定されるならば,SK

の値がナル値ではない全ての行R2をWFから取り除く。 

2) VSKがナル値でないならば,次による。 

a) NULLS LASTが指定されるか又は暗に想定されるならば,SKの値がナル値である

全ての行R2をWFから取り除く。 

b) 場合: 

i) 

ウィンドウ順序付け句に含まれる<順序付け指定>がDESCを指定するならば,

VSK + V2Pの値をBOUNDとする。SKの値がBOUND未満の全ての行R2をWF

から取り除く。 

ii) そうでなければ,VSK ‒ V2Pの値をBOUNDとする。SKの値がBOUNDを超える

全ての行R2をWFから取り除く。 

B) WFB2がCURRENT ROWを指定するならば,WDによって定義される順序付けで,現在行

と同位ではなく,現在行に後続する全ての行をWFから取り除く。 

C) WFB2が<ウィンドウ枠FOLLOWING>を指定するならば,<符号なし値指定>の値をV2F

とする。 

場合: 

I) V2Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDのウィンドウ順序付け句に含まれる唯一の<ソートキー>をSKと

する。現在行に対するSKの値をVSKとする。 

316 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

1) VSKがナル値で,かつ,NULLS FIRSTが指定されるか又は暗に想定されるならば,SK

の値がナル値ではない全ての行R2をWFから取り除く。 

2) VSKがナル値でないならば,次による。 

a) NULLS LASTが指定されるか又は暗に想定されるならば,SKの値がナル値である

全ての行R2をWFから取り除く。 

b) 場合: 

i) 

<ウィンドウ順序句>に含まれる<順序付け指定>がDESCを指定するならば,VSK 

‒ V2Fの値をBOUNDとする。SKの値がBOUND未満の全ての行R2をWFから

取り除く。 

ii) そうでなければ,VSK + V2Fの値をBOUNDとする。SKの値がBOUNDを超える

全ての行R2をWFから取り除く。 

ii) ROWSが指定されるならば,次による。 

1) 場合: 

注記219 次の部分規則中で,WFB1がUNBOUNDED PRECEDINGを指定するならば,この

段階では,WFからどの行も取り除かれない。WFB1は,UNBOUNDED 

FOLLOWINGではあり得ない。 

A) WFB1が<ウィンドウ枠PRECEDING>を指定するならば,<符号なし値指定>の値をV1Pと

する。 

場合: 

I) V1Pが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDによって定義されるウィンドウ順序付けで,V1P個の行を超えて

現在行に先行する全ての行をWFから取り除く。 

B) WFB1がCURRENT ROWを指定するならば,WDによって定義されるウィンドウ順序付

けで,現在行に先行する全ての行をWFから取り除く。 

注記220 この段階は,処理系依存のウィンドウ順序付けで現在行に先行する現在行の同

位行も取り除く。 

C) WFB1が<ウィンドウ枠FOLLOWING>を指定するならば,<符号なし値指定>の値をV1F

とする。 

場合: 

I) V1Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDによって定義されるウィンドウ順序付けで,現在行に先行する全

ての行,及びV1F個の行未満の現在行に後続する全ての行をWFから取り除く。 

注記221 V1Fが0ならば,現在行は,この段階では,WFから取り除かれない。そう

でなければ,現在行は,WFから取り除かれる。 

2) 場合: 

注記222 次の部分規則中で,WFB2がUNBOUNDED FOLLOWINGを指定するならば,こ

の段階では,WFからどの行も取り除かれない。WFB2は,UNBOUNDED 

317 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

PRECEDINGではあり得ない。 

A) WFB2が<ウィンドウ枠PRECEDING>を指定するならば,<符号なし値指定>の値をV2Pと

する。 

場合: 

I) V1Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDによって定義されるウィンドウ順序付けで,現在行に後続する全

ての行,及びV2P個の行未満で現在行に先行する全ての行をWFから取り除く。 

注記223 V2Pが0ならば,現在行は,この段階では,WFから取り除かれない。そう

でなければ,現在行は,WFから取り除かれる。 

B) WFB2がCURRENT ROWを指定するならば,WDによって定義されるウィンドウ順序付

けで,現在行に後続する全ての行をWFから取り除く。 

注記224 この段階では,処理系依存のウィンドウ順序付けで,現在行に後続する現在行

の同位行を取り除く。 

C) WFB2が<ウィンドウ枠FOLLOWING>を指定するならば,<符号なし値指定>の値をV2F

とする。 

場合: 

I) V2Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,WDによって定義されるウィンドウ順序付けで,V2F個の行を超えて

現在行に後続する全ての行をWFから取り除く。 

iii) GROUPSが指定されるならば,次による。 

1) ウィンドウ区画の行は,次のとおりにウィンドウ順序付けグループ (window ordering groups) 

に置かれる。二つの行が同じウィンドウ順序付けグループにあるということは,“10.10 <ソー

ト指定リスト>”の一般規則に従って,<ソート指定リスト>に関して同位であることと同値と

する。 

2) ウィンドウ区画内のウィンドウ順序付けグループは,次のとおりに順序付けられる。“10.10 <

ソート指定リスト>”の一般規則に従ったウィンドウ順序付けで,ウィンドウ順序付けグルー

プWOG1中のある行R1がウィンドウ順序付けグループWOG2中のある行R2に先行するな

らば,WOG1は,WOG2に先行する。 

注記225 ウィンドウ順序付けグループ中の全ての行が<ソート指定リスト>に関して同位で

あるので,WOG1の一つの行がWOG2の一つの行に先行するならば,WOG1の全

ての行がWOG2の全ての行に先行する。 

3) 二つのウィンドウ順序付けグループWOG1及びWOG2間の距離 (distance) は,WOG1及び

WOG2を含めて,それらの間のウィンドウ順序付けグループの個数から1を引いた数とする。 

注記226 したがって,ウィンドウ順序付けグループWOGとそれ自体との間の距離は,1 ‒ 

1  = 0 である。 

4) 現在ウィンドウ順序付けグループ (current window ordering group) は,現在行を含むウィンド

ウ順序付けグループとする。 

5) 場合: 

318 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記227 次の部分規則中で,WFB1がUNBOUNDED PRECEDINGを指定するならば,この

段階では,WFからどの行も取り除かれない。WFB1は,UNBOUNDED 

FOLLOWINGではあり得ない。 

A) WFB1が<ウィンドウ枠PRECEDING>を指定するならば,<符号なし値指定>の値をV1Pと

する。 

場合: 

I) V1Pが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,現在ウィンドウ順序付けグループにV1Pを超える距離で先行するウィ

ンドウ順序付けグループの全ての行をWFから取り除く。 

B) WFB1がCURRENT ROWを指定するならば,現在ウィンドウ順序付けグループに先行す

る全てのウィンドウ順序付けグループの全ての行をWFから取り除く。 

注記228 したがって,CURRENT ROWは,0 PRECEDINGと等価である。 

C) WFB1が<ウィンドウ枠FOLLOWING>を指定するならば,<符号なし値指定>の値をV1F

とする。 

場合: 

I) V1Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,現在ウィンドウ順序付けグループに先行するウィンドウ順序付けグル

ープの全ての行,及び現在ウィンドウ順序付けグループにV1F未満の距離で後続するウ

ィンドウ順序付けグループの全ての行をWFから取り除く。V1Fが正の値ならば,現在

ウィンドウ順序付けグループの全ての行もWFから取り除く。 

6) 場合: 

注記229 次の部分規則中で,WFB2がUNBOUNDED FOLLOWINGを指定するならば,こ

の段階では,WFからどの行も取り除かれない。WFB2は,UNBOUNDED 

PRECEDINGではあり得ない。 

A) WFB2が<ウィンドウ枠PRECEDING>を指定するならば,<符号なし値指定>の値をV2Pと

する。 

場合: 

I) V2Pが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,現在ウィンドウ順序付けグループにV2P未満の距離で先行するウィン

ドウ順序付けグループの全ての行,及び現在ウィンドウ順序付けグループに後続するウ

ィンドウ順序付けグループの全ての行をWFから取り除く。V2Pが正の値ならば,現在

ウィンドウ順序付けグループの全ての行もWFから取り除く。 

B) WFB2がCURRENT ROWを指定するならば,現在ウィンドウ順序付けグループに後続す

る全てのウィンドウ順序付けグループの全ての行をWFから取り除く。 

注記230 したがって,CURRENT ROWは,0 FOLLOWINGと等価である。 

C) WFB2が<ウィンドウ枠FOLLOWING>を指定するならば,<符号なし値指定>の値をV2F

とする。 

319 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

I) V2Fが負の値か又はナル値ならば,例外条件:データ例外 − ウィンドウ関数中の先行

又は後続行数・グループ数が正しくない が引き起こされる。 

II) そうでなければ,現在ウィンドウ順序付けグループにV2Fを超える距離で後続するウィ

ンドウ順序付けグループの全ての行をWFから取り除く。 

iv) <ウィンドウ枠除外> WFEが指定されるならば,次による。 

場合: 

1) EXCLUDE CURRENT ROWが指定され,かつ,現在行がWF中に残っているならば,現在行

をWFから取り除く。 

2) EXCLUDE GROUPが指定されるならば,現在行及び現在行のどの同位行もWFから取り除

く。 

3) EXCLUDE TIESが指定されるならば,現在行以外の現在行のどの同位行もWFから取り除

く。 

注記231 現在行がWFから既に取り除かれているならば,それは,WFから取り除かれた

ままとする。 

注記232 EXCLUDE NO OTHERSが指定されるならば,この規則によって他のどの行もWF

から取り除かれることはない。 

適合性規則 

1) 機能T611“基本OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ指定>を含んではなら

ない。 

2) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<WINDOW句>を含んではならな

い。 

3) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<既存ウィンドウ名>を含んではな

らない。 

4) 機能T301“関数従属性”なしでは,適合するSQL言語中で,Tがグループ表ならば,Tの列を参照

する<WINDOW句>に含まれる各列参照は,Tのグループ化列に対する参照であるか,又は<集合関

数指定>の集約化引数に含まれなければならない。 

5) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ枠除外>を含んではな

らない。 

注記233 “9.12 グループ化操作”の適合性規則も適用する。 

6) 機能T620“WINDOW句:GROUPS選択肢”なしでは,適合するSQL言語は,GROUPSを指定す

る<ウィンドウ枠単位>を含んではならない。 

7.12 <問合せ指定> 

この細分箇条は,ISO/IEC 9075-4の“7.2 <問合せ指定>”によって修正される。 

細分箇条署名 

“<問合せ指定>” [構文規則] ( 

パラメタ: “TBLEXP”, 

) 戻り: “TBLEXP2” 

機能 

<問合せ指定> (<query specification>) は,<表式>の結果から導出される表を指定する。 

320 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<問合せ指定> ::= 

  SELECT [ <集合限定子> ] <選択リスト> <表式> 

<選択リスト> ::= 

  <アスタリスク> 

| <選択副リスト> [ { <コンマ> <選択副リスト> }... ] 

<選択副リスト> ::= 

  <導出列> 

| <修飾付きアスタリスク> 

<修飾付きアスタリスク> ::= 

  <被アスタリスク付け識別子鎖> <ピリオド> <アスタリスク> 

| <全フィールド参照> 

<被アスタリスク付け識別子鎖> ::= 

  <被アスタリスク付け識別子> [ { <ピリオド> <被アスタリスク付け識別子> }... ] 

<被アスタリスク付け識別子> ::= 

  <識別子> 

<導出列> ::= 

  <値式> [ <AS句> ] 

<AS句> ::= 

  [ AS ] <列名> 

<全フィールド参照> ::= 

  <値式一次子> <ピリオド> <アスタリスク> 

      [ AS <左括弧> <全フィールド列名リスト> <右括弧> ] 

<全フィールド列名リスト> ::= 

  <列名リスト> 

構文規則 

1) この細分箇条の構文規則の適用では,TBLEXPをQSPECとする。この細分箇条の適用の結果は,

TBLEXP2として戻されるXFORMとする。 

2) QSPECに単純に含まれる<表式>の結果をTとする。 

3) QSPECの結果をTQSとする。 

4) 場合: 

a) <EXISTS述語>に直に含まれる<表副問合せ>に,<選択リスト>“*”が単純に含まれるならば,<

選択リスト>は,任意の<定数>である<値式>と等価とする。 

b) そうでなければ,<選択リスト>“*”は,<値式>の並びと等価とし,その並び中の各<値式>は,T

の列を参照する列参照とし,Tの各列は,ただ1回参照される。列は,T内のそれらの順序位置

の昇順に参照される。 

5) <問合せ指定>によって指定される表の次数は,<選択リスト>の基数と等しい。 

6) <集合限定子> DISTINCTが指定されるならば,Tの各列は,グループ化操作のオペランドとする。

“9.12 グループ化操作”の構文規則及び適合性規則を適用する。 

7) <値式一次子>が<被アスタリスク付け識別子鎖>の形式をとる<全フィールド参照>が曖昧な場合は,

321 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

曖昧さを解決するために,最初は<被アスタリスク付け識別子鎖>として解析しなければならない。 

8) <被アスタリスク付け識別子鎖>が指定されるならば,次による。 

a) <被アスタリスク付け識別子鎖>をICとする。 

b) ICに直に含まれる<被アスタリスク付け識別子>の個数をNとする。 

c) ICに直に含まれる<被アスタリスク付け識別子>を,左から右の順序で,Ii,1 ≤ i ≤ Nとする。 

d) I1をPIC1とする。2からNまでの範囲のJに対して,PICJ-1.IJをPICJとする。PICJを,ICの

J番目の部分識別子鎖 (partial identifier chain) と呼ぶ。 

e) Nと3との最小値をMとする。 

f) 

1からMまでの範囲の高々一つのJに対して,PICJをICの基底 (basis) と呼び,JをICの基底

長 (basis length) と呼ぶ。基底の指示対象 (referent) は,表T,表の列C,又はSQLパラメタSP

とする。ICの基底 及び基底有効範囲 (basis scope) は,次の規則に従って,候補基底 (candidate 

basis) によって定義される。 

i) 

04 ICが<ルーチン名>の有効範囲中に含まれ,その<ルーチン名>に関連付けられた<SQLパラメ

タ宣言リスト>が,I1と等価な<SQLパラメタ名>をもつSQLパラメタSPを含むならば,PIC1

は,ICの候補基底とし,PIC1の有効範囲は,SPの有効範囲とする。 

ii) N = 2で,<ルーチン名> RNの<被修飾識別子>とPIC1が等価で,<ルーチン名> RNの有効範囲

がICを含み,かつ,<ルーチン名> RNに関連付けられた<SQLパラメタ宣言リスト>が,I2と

等価な<SQLパラメタ名>をもつSQLパラメタSPを含むならば,PIC2は,ICの候補基底とし,

PIC2の有効範囲は,SPの有効範囲とし,PIC2の指示対象は,SPとする。 

iii) N > 2で,<ルーチン名> RNの<被修飾識別子>とPIC1が等価で,<ルーチン名> RNの有効範囲

がICを含み,かつ,<ルーチン名> RNに関連付けられた<SQLパラメタ宣言リスト>が,I2と

等価な<SQLパラメタ名>をもつ細分可能なSQLパラメタSPを含むならば,PIC2は,ICの候

補基底とし,PIC2の有効範囲は,SPの有効範囲とし,PIC2の指示対象は,SPとする。 

iv) N = 2で,かつ,有効範囲中にある露出する<相関名>とPIC1が等価ならば,PIC1と等価で,か

つ,最も内側の有効範囲をもつ露出する<相関名>をENとする。I2と等価な<識別子>をもつ行

型の列Cを,ENに関連付けられた表がもつならば,PIC2は,ICの候補基底とし,PIC2の有効

範囲は,ENの有効範囲とする。 

v) N > 2で,かつ,有効範囲中にある露出する<相関名>とPIC1が等価ならば,PIC1と等価で,か

つ,最も内側の有効範囲をもつ露出する<相関名>をENとする。I2と等価な<識別子>をもつ行

型又は構造型の列Cを,ENに関連付けられた表がもつならば,PIC2は,ICの候補基底とし,

PIC2の有効範囲は,ENの有効範囲とする。 

vi) N ≤ 3で,かつ,有効範囲中にある露出する<表名又は問合せ名>とPICNが等価ならば,PICN

と等価で,かつ,最も内側の有効範囲をもつ露出する<表名又は問合せ名>をENとする。PICN

は,ICの候補基底とし,PICNの有効範囲は,ENの有効範囲とする。 

vii) 最も内側の有効範囲をもつただ一つの候補基底CBが存在しなければならない。ICの基底は,

CBとする。その基底有効範囲は,CBの有効範囲とする。 

g) 場合: 

i) 

基底が<表名又は問合せ名>又は<相関名>ならば,基底に関連付けられた表をTQとする。<選

択副リスト>は,<値式>の並びと等価とし,その並び中の各<値式>は,<結合表>の共通列では

ないTQの列を参照する列参照CRとする。共通列ではないTQの各列は,ただ1回参照されな

322 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ければならない。列は,TQ内のそれらの順序位置の昇順に参照されなければならない。 

ii) そうでなければ,ICの基底の長さをBLとする。 

場合: 

1) BL = Nならば,<選択副リスト> IC.* は(IC).* と等価とする。 

2) そうでなければ,<選択副リスト> IC.* は,次の指定と等価とする。 

( PICBL ) . IBL+1 . ... . IN . * 

注記234 どちらの場合にも,等価な構文は,<全フィールド参照> ::= <値式一次子> <ピリ

オド> <アスタリスク> として解析される。 

9) <全フィールド参照> AFR中で指定される<値式一次子> VEPのデータ型は,ある行型VERでなけ

ればならない。VERの次数をnとする。VERのフィールド名をF1,...,Fnとする。 

場合: 

a) <全フィールド列名リスト> AFCNLが指定されるならば,AFCNLに単純に含まれる<列名>の個

数は,nでなければならない。これらの<列名>を,左から右の順序で,AFCNi,1 ≤ i ≤ nとする。

AFRは,次の指定と等価とする。 

VEP . F1 AS AFCN1,  

... ,  

VEP . Fn AS AFCNn 

b) そうでなければ,AFRは,次の指定と等価とする。 

VEP . F1 ,  

... , 

VEP . Fn 

10) ある列をCとする。<問合せ指定>をQSとする。1から<導出列>の個数までの範囲のiに対して,

QSの<選択リスト>に単純に含まれるi番目の<導出列>をDCiとする。 

a) 全てのiに対して,Cが,DCiの<値式>の基となる列であるか,又はCが,QSに直に含まれる<

表式>の基となる列ならば,Cは,DCi,及びDCiを識別する全ての列参照の基となる列 (underlying 

column) とする。 

b) 全てのiに対して,Cが,DCiの<値式>の一般に基となる列であるか,又はCが,QSに直に含ま

れる<表式>の一般に基となる列ならば,Cは,DCi,及びDCiを識別する全ての列参照の一般に

基となる列 (generally underlying column) とする。 

11) <ウィンドウ関数>に含まれる各列参照は,Tの列を曖昧さなく参照しなければならない。 

12) 次の二つの条件の両方を満たすならば,QSは,グループ化され,ウィンドウ化された問合せ 

(grouped, windowed query) とする。 

a) Tがグループ表である。 

b) QSに単純に含まれる<導出列>が<ウィンドウ関数>を単純に含む。 

13) グループ化され,ウィンドウ化された問合せGWQは,次のとおりに等価な<問合せ指定>に変換さ

れる。 

a) GWQが<句内ウィンドウ指定>を含むならば,GWQをWINFUNCとして,“6.10 <ウィンドウ関

数>”の構文規則を適用する。これらの構文規則の適用によって戻されるTRANSFORMをGWQ1

とする。そうでなければ,GWQをGWQ1とする。 

b) GWQ1の<選択リスト>が<アスタリスク>を直に含むか,又は<修飾付きアスタリスク>を単純に含

323 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

むならば,GWQ1をTBLEXPとして,この細分箇条の構文規則を適用する。これらの構文規則の

適用によって戻されるTBLEXP2をGWQ2とする。そうでなければ,GWQ1をGWQ2とする。 

c) 先行する変換があるならば,その結果をGWQ2とする。 

d) GWQ2の<選択リスト>,<FROM句>,<WHERE句>,<GROUP BY句>,<HAVING句>及び

<WINDOW句>を,それぞれ,SL,FC,WC,GBC,HC及びWICとする。<WHERE句>,<GROUP 

BY句>又は<HAVING句>のいずれかがないならば,長さ0の文字列を,それぞれ,WC,GBC及

びHCとする。GWQ2の<問合せ指定>に直に含まれる<集合限定子>があるならば,それをSQと

する。そうでなければ,長さ0の文字列をSQとする。 

注記235 GWQに<WINDOW句>が元々ないならば,“6.10 <ウィンドウ関数>”の構文変換が作

成するので,GWQ2には,<WINDOW句>がないということはあり得ない。 

e) GWQ2に単純に含まれる<集合関数指定>の個数をN1とする。 

f) GWQ2に単純に含まれる<集合関数指定>の列挙をSFSi,1 ≤ i ≤ N1とする。 

g) 互いに異なり,かつ,GWQ2に含まれる全ての<識別子>とも異なる<識別子>のリストをSFSIi,

1 ≤ i ≤ N1とする。 

h) N1 = 0ならば,長さ0の文字列をSFSLとする。そうでなければ,次の指定をSFSLとする。 

SFS1 AS SFSI1, 

SFS2 AS SFSI2, ..., 

SFSN1 AS SFSIN1 

i) 

各<集合関数指定> SFSiを,対応する<識別子> SFSIiに置き換えることによって,HCから得られ

るものをHCNEWとする。 

j) 

<問合せ式>又は<集合関数指定>を介在しないでSL又はWICに含まれる外への参照でない<列参

照>の個数をN2とする。 

k) <問合せ式>又は<集合関数指定>を介在しないでSL又はWICに含まれる外への参照でない<列参

照>の列挙をCRj,1 ≤ j ≤ N2とする。 

l) 

互いに異なり,かつ,GWQ2中の全ての<識別子>と異なり,全てのSFSIiとも異なる<識別子>の

リストをCRIj,1 ≤ j ≤ N2とする。 

m) N2 = 0ならば,長さ0の文字列をCRLとする。そうでなければ,次の指定をCRLとする。 

CR1 AS CRI1, CR2 AS CRI2, ..., CRN2 AS CRIN2 

n) SLに単純に含まれ,<AS句>を指定しない<導出列>の個数をN3とする。 

o) SLに単純に含まれ,<AS句>を指定しない<導出列>をDCOLk,1 ≤ k ≤ N3とする。各kに対して,

次のとおりに決定される<列名>をCOLNkとする。 

場合: 

i) 

DCOLkが単一の列参照ならば,COLNkは,列参照によって示される列の<列名>とする。 

ii) 

04 DCOLkが単一のSQLパラメタ参照ならば,COLNkは,SQLパラメタ参照によって示される

SQLパラメタの<SQLパラメタ名>とする。 

iii) そうでなければ,COLNkは,処理系依存の<列名>とする。 

p) 各<導出列> DCOLkを次の指定に置き換えることによって,SLから得られるものをSL2とする。 

DCOLk AS COLNk 

q) 任意の<識別子>をGWQNとする。 

r) 単純に含まれる各<集合関数指定> SFSiをGWQN.SFSIiに置き換え,各<列参照> CRjを

324 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

GWQN.CRIjに置き換えることによって,SL2から得られる<選択リスト>をSLNEWとする。 

s) 各<集合関数指定> SFSiをGWQN.SFSIiに置き換え,各<列参照> CRjをGWQN.CRIjに置き換

えることによって,WICから得られる<WINDOW句>をWICNEWとする。 

t) SFSL又はCRLのいずれかが長さ0の文字列ならば,長さ0の文字列をCOMMAとする。そうで

なければ,“,”(<コンマ>)をCOMMAとする。 

u) GWQは,次の<問合せ指定>と等価とする。 

SELECT SLNEW 

FROM ( SELECT SQ SFSL COMMA CRL 

        FC 

        WC 

        GBC 

        HC ) AS GWQN 

WICNEW 

14) この細分箇条の構文規則4),構文規則6),構文規則8),構文規則8)g)及び構文規則13)で規定した

構文上の変換の結果である<問合せ式>をXFORMとする。 

15) 次のいずれかの条件が真ならば,<問合せ指定>は,潜在的に非決定的 (possibly non-deterministic) と

する。 

a) <集合限定子> DISTINCTが指定され,かつ,文字列,利用者定義型,TIME WITH TIME ZONE又

はTIMESTAMP WITH TIME ZONEのデータ型をTのいずれかの列がもつ。 

b) 潜在的に非決定的な<値式>,<問合せ指定>又は<問合せ式>を<問合せ指定>が一般に含む。 

c) <選択リスト>,<HAVING句>又は<WINDOW句>が,文字列,利用者定義型,TIME WITH TIME 

ZONE又はTIMESTAMP WITH TIME ZONEのデータ型をもつTの列Cへの参照を含み,T中に

関数従属性G 

Cがある。ここで,Gは,Tのグループ化列から成る集合とする。 

16) <表式>が<GROUP BY句>を直に含まず,かつ,ある<集合関数指定>の集約問合せである<問合せ指

定>に<表式>が単純に含まれるならば,GROUP BY () が暗に想定される。 

注記236 “集約問合せ”は,“6.9 <集合関数指定>”で定義している。 

17) Tがグループ表ならば,Tのグループ化列の集合をGとする。<選択リスト>に含まれる各<値式>中

で,Tの列を参照する各列参照は,Gに関数従属である列Cを参照するか,又は集約問合せがQS

である<集合関数指定>の集約化引数に含まれなければならない。 

注記237 先行する構文規則は,“6.7 <列参照>”中のより包括的なものから得られる。 

18) TQSの各列は,その列を定義する<導出列>に単純に含まれる<値式>のデータ型記述子と同じである

データ型記述子を含む列記述子をもつ。 

19) 場合: 

a) <選択リスト>中のi番目の<導出列>が,<列名> CNを含む<AS句>を指定するならば,結果のi番

目の列の<列名>は,CNとする。 

b) <選択リスト>中のi番目の<導出列>が<AS句>を指定しないで,かつ,その<導出列>の<値式>が

単一の列参照ならば,結果のi番目の列の<列名>は,その列参照によって示される列の<列名>と

する。 

c) 

04 <選択リスト>中のi番目の<導出列>が<AS句>を指定しないで,かつ,その<導出列>の<値式>

が単一のSQLパラメタ参照ならば,結果のi番目の列の<列名>は,そのSQLパラメタ参照によ

325 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

って示されるSQLパラメタの< SQLパラメタ名>とする。 

d) そうでなければ,<問合せ指定>のi番目の列の<列名>は,処理系依存とする。 

20) (<アスタリスク>及び<修飾付きアスタリスク>を取り除くための構文変換を実行した後に,)<列参

照> CRによって参照される列がCRの修飾する表の容易にナルでないことが分かる列であるよう

な,<列参照> CRである<値式>を直に含む<導出列>によって列Cが定義されるならば,TQSの列C

は,容易にナルでないことが分かる (readily known not null)。 

21) TQSの列CKNNがナルでないことが分かる (known not null) ということは,次の条件のうちの少な

くとも一つを満たすことと同値とする。 

a) CKNNが容易にナルでないことが分かっている。 

b) SQL処理系が機能 T101 “拡張ナル可能性決定”を提供し,かつ,CKNNが,次のいずれかを含

む<導出列>によって定義されていない。 

i) 

潜在的にナル可能である列Cに対する列参照。 

ii) <標識パラメタ>。 

iii) <標識変数>。 

iv) 

04 <動的パラメタ指定>。 

v) SQLパラメタ。 

vi) SQLルーチン,又はPARAMETER STYLE SQLを指定するか若しくは暗に想定する外部ルーチ

ンのいずれかであるSQL呼出しルーチンを当該ルーチンとしてもつ<ルーチン呼出し>,<メソ

ッド参照>又は<メソッド呼出し>。 

vii) <問合せ式>。 

viii) CAST ( NULL AS X ) (ここで,Xは,<データ型>又は<定義域名>を表現する。)。 

ix) <順位関数種別>,ROW̲NUMBER,又はCOUNTを単純に含む<集約関数>を<ウィンドウ関数

種別>が含まない<ウィンドウ関数>。 

x) CURRENT̲USER,CURRENT̲ROLE又はSYSTEM̲USER。 

xi) COUNTを単純に含まない<集合関数指定>。 

xii) <CASE式>。 

xiii) <フィールド参照>。 

xiv) <配列要素参照>。 

xv) <マルチ集合要素参照>。 

xvi) <内参照演算>。 

xvii) <参照解決>。 

xviii)<比較述語>,<BETWEEN述語>,<IN述語>又は<限定比較述語> Pに単純に含まれる<行値述

語オペランド>のフィールドの宣言型が,行型,利用者定義型,配列型又はマルチ集合型である

ような,<比較述語>,<BETWEEN述語>,<IN述語>又は<限定比較述語> P。 

xix) <MEMBER述語>。 

xx) <SUBMULTISET述語>。 

c) 列の値がナルであり得ないことを,SQL処理系が正確に推論することができる処理系定義の規則

がある。 

22) <表式>の<FROM句>に単純に含まれる<表参照>をTREFとする。<問合せ指定>の単純に基となる

表 (simply underlying table) は,<導出表>を介在しないで,TREFに含まれる<表名又は問合せ名>及

326 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

び<導出表>とする。 

23) キー保持 (key-preserving) 及び1対1対応 (one-to-one) という用語は,次のとおりに定義される。 

a) QSの単純に基となる表をUTで示し,UTの列の集合をUTCOLSとし,QSの列の集合をQSCOLS

とし,有効範囲句がQSの,UTに対する露出する範囲変数をQSCNとする。 

b) UTの強い候補キーCKUTの全ての要素がQSCOLS中にQSCNの下の対応物をもつような,CKUT

が存在するならば,QSは,UTに関してキー保持 (key-preserving with respect to) であるという。 

注記238 “強い候補キー”は,“4.20 候補キー”で定義している。 

注記239 “対応物”は,“4.19.2 一般規則及び定義”で定義している。この条件から判断すると,

QS中のどの行も,UT中のただ一つの行,すなわち,CKUTの列の組み合わせた値で,

QS中の行と同じ値をもつUT中の行に対応する。UT中の単一行に対応する二つ以上

の行がQS中に存在してもよい。 

c) QSがUTに関して1対1対応 (one-to-one with respect to) であることは,QSがUTに関してキー

保持で,UTが更新可能で,かつ,QSの強い候補キーCKQSのどの要素も,UTの下の,UTCOLS

の要素の対応物であるような,CKQSが存在することと同値とする。 

注記240 この条件から判断すると,UT中のどの行も,QS中の高々一つの行,すなわち,CKQS

の列の組み合わせた値で,UT中の行と同じ値をもつQS中の行に対応する。 

24) <問合せ指定>が潜在的に更新可能 (potentially updatable) であることは,次の全ての条件を満たすこ

とと同値とする。 

a) DISTINCTが指定されない。 

b) 実表中に対応物をもつ列参照である<選択リスト>中の<導出列>から成る表のどの列も,<選択リ

スト>中で2回以上参照されない。 

c) QSに直に含まれる<表式>が,陽に指定されるか又は暗に想定される<GROUP BY句>又は

<HAVING句>を単純に含まない。 

d) QSに直に含まれる<表式>が,FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMPを指定しない

陽に指定されるか又は暗に想定される<問合せシステム時刻期間指定>を単純に含まない。 

e) QSに直に含まれる<表式>が<データ変更差分表>を一般に含まない。 

25) <問合せ指定> QSが潜在的に更新可能であるならば,次による。 

場合: 

a) <表式>の<FROM句>がただ一つの<表参照>を指定するならば,更新可能なTR中にQSの列が対

応物をもつとき,その列は,潜在的に更新可能な列 (potentially updatable column) という。 

注記241 表参照の更新可能な列の概念は,“7.6 <表参照>”で定義している。 

b) そうでなければ,QSが,QSの単純に基となる表UTに関して1対1対応であるようなUTの更

新可能な列の対応物をQSの列がもつならば,その列は,潜在的に更新可能な列 という。 

26) <問合せ指定>が潜在的に更新可能で,かつ,少なくとも一つの潜在的に更新可能な列をもつならば,

その<問合せ指定>は,更新可能 (updatable) とする。 

27) 次の全ての条件を満たすならば,<問合せ指定> QSは,単純に更新可能 (simply updatable) とする。 

a) QSが更新可能である。 

b) QSに直に含まれる<表式>に直に含まれる<FROM句>がただ一つの<表参照>をもち,かつ,その

<表参照>によって参照される表が単純に更新可能である。 

c) QSのどの結果列も,潜在的に更新可能である。 

327 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) QSに直に含まれる<表式>が<WHERE句> WCを直に含むならば,QSの末端で一般に基となるど

の表も,WCに含まれるどの<問合せ式>の一般に基となる表でもない。 

28) <問合せ指定> QSが挿入可能 (insertable-into) であることは,QSの全ての単純に基となる表が挿入

可能であることと同値とする。 

29) 次の少なくとも一つが真ならば,QSの列Cは,更新可能とする。 

a) QSが単純に更新可能である。 

b) QSが更新可能で,Cが潜在的に更新可能で,かつ,SQL処理系が機能T111“更新可能な結合,

和集合及び列”を提供する。 

30) TQSの行型RTは,TQSの列記述子の並びによって示される,その順序どおりの(<フィールド名

>,<データ型>)対の並びによって定義される。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) Tがグループ表でないならば,各<値式>がTの各行に適用され,M個の行から成る表TEMPが生

成される。ここで,Mは,Tの基数とする。表のi番目の列は,i番目の<値式>の評価によって導

出される値を含む。 

b) Tがグループ表ならば,次による。 

場合: 

i) 

Tが0個のグループをもつならば,空の表をTEMPとする。 

ii) Tが一つ以上のグループをもつならば,各<値式>がTの各グループに適用され,M個の行から

成る表TEMPが生成される。ここで,Mは,T中のグループの個数とする。TEMPのi番目の

列は,i番目の<値式>の評価によって導出される値を含む。<値式>がTの与えられたグループ

に適用されるとき,そのグループは,集約問合せがQSである各<集合関数指定>の引数の入力

とする。 

2) 場合: 

a) <集合限定子> DISTINCTが指定されないならば,<問合せ指定>の結果は,TEMPとする。 

b) <集合限定子> DISTINCTが指定されるならば,<問合せ指定>の結果は,冗長な重複行を取り除く

ことによって,TEMPから導出される表とする。いずれかの列の最特定型が文字列,時刻帯付き

日時又は利用者定義型ならば,これらの列の正確な値は,処理系依存の方法で選択される。 

適合性規則 

1) 機能F801“完全な集合関数”なしでは,適合するSQL言語は,DISTINCTを含む<集合限定子>が

QSに含まれる<問合せ式>に含まれる場合を除いて,DISTINCTを含む二つ以上の<集合限定子>を

含む<問合せ指定> QSを含んではならない。 

2) 機能T051“行型”なしでは,適合するSQL言語は,<全フィールド参照>を含んではならない。 

3) 機能T301“関数従属性”なしでは,適合するSQL言語中で,Tがグループ表ならば,<選択リスト

>に含まれる各<値式>中の,Tの列を参照する各<列参照>は,グループ化列を参照するか,又は<集

合関数指定>の集約化引数中で指定されなければならない。 

4) 機能T325“修飾付きSQLパラメタ参照”なしでは,適合するSQL言語は,指示対象がSQLパラメ

タで,かつ,最初の<識別子>が<ルーチン名>の<被修飾識別子>である<被アスタリスク付け識別子

328 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

鎖>を含んではならない。 

5) 機能T053“全フィールド参照のための陽に指定された別名”なしでは,適合するSQL言語は,<全

フィールド列名リスト>を含んではならない。 

注記242 <集合限定子> DISTINCTが指定されるならば,“9.12 グループ化操作”の適合性規則も

適用する。 

6) 機能T285“拡張導出列名”なしでは,適合するSQL言語中で,<選択リスト>中の<導出列>が<AS

句>を指定しないで,かつ,その<導出列>の<値式>が単一の列参照でないならば,その列の<列名>

は,処理系依存とする。 

7.13 <問合せ式> 

この細分箇条は,ISO/IEC 9075-14の“7.2 <問合せ式>”によって修正される。 

機能 

<問合せ式> (<query expression>) は,表を指定する。 

形式 

<問合せ式> ::= 

  [ <WITH句> ] <問合せ式本体> 

      [ <ORDER BY句> ] [<結果OFFSET句> ] [ <FETCH FIRST句> ] 

14 <WITH句> ::= 

  WITH [ RECURSIVE ] <WITHリスト> 

<WITHリスト> ::= 

  <WITHリスト要素> [ { <コンマ> <WITHリスト要素> }... ] 

<WITHリスト要素> ::= 

  <問合せ名> [ <左括弧> <WITH列リスト> <右括弧> ] 

      AS <表副問合せ> [ <SEARCH又はCYCLE句> ] 

<WITH列リスト> ::= 

  <列名リスト> 

<問合せ式本体> ::= 

  <問合せ項> 

| <問合せ式本体> UNION [ ALL | DISTINCT ] 

      [ <CORRESPONDING指定> ] <問合せ項> 

| <問合せ式本体> EXCEPT [ ALL | DISTINCT ] 

      [ <CORRESPONDING指定> ] <問合せ項> 

<問合せ項> ::= 

  <問合せ一次子> 

| <問合せ項> INTERSECT [ ALL | DISTINCT ] 

      [ <CORRESPONDING指定> ] <問合せ一次子> 

<問合せ一次子> ::= 

  <単純表> 

| <左括弧> <問合せ式本体> 

      [ <ORDER BY句> ] [<結果OFFSET句> ] [ <FETCH FIRST句> ] <右括弧> 

<単純表> ::= 

329 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <問合せ指定> 

| <表値構成子> 

| <明示表> 

<明示表> ::= 

  TABLE <表名又は問合せ名> 

<CORRESPONDING指定> ::= 

  CORRESPONDING [ BY <左括弧> <対応列リスト> <右括弧> ] 

<対応列リスト> ::= 

  <列名リスト> 

<ORDER BY句> ::= 

  ORDER BY <ソート指定リスト> 

<結果OFFSET句> ::= 

  OFFSET <変位行数> { ROW | ROWS } 

<FETCH FIRST句> ::= 

  FETCH { FIRST | NEXT } [ <最初の取出し量> ] { ROW | ROWS } { ONLY | WITH TIES } 

<最初の取出し量> ::= 

  <最初の取出し行数> 

| <最初の取出し率> 

<変位行数> ::= 

  <単純値指定> 

<最初の取出し行数> ::= 

  <単純値指定> 

<最初の取出し率> ::= 

  <単純値指定> PERCENT 

構文規則 

1) <問合せ式>をQEとする。 

2) QEが<データ変更差分表>を単純に含むならば,QEに含まれる<問合せ式本体>は,<問合せ指定>

でなければならない。 

3) <WITH句>が指定されるならば,次による。 

a) <WITH句> WCがRECURSIVEを直に含むならば,WC,それの<WITHリスト>及びそれの<WITH

リスト要素>は,潜在的に再帰的 (potentially recursive) という。そうでなければ,それらは,再帰

的でない (non-recursive) という。 

b) 潜在的に再帰的な<WITHリスト要素>は,<データ変更差分表>を一般に含んではならない。 

c) <WITHリスト要素> WLEが<データ変更差分表>を一般に含むならば,WLE中の<データ変更差

分表>の実現値は,ただ一つでなければならない。 

d) <WITHリスト要素>の個数をnとする。各i,1 ≤ i < nに対して,各j,i < j ≤ nに対するj番目の

<WITHリスト要素>は,i番目の<WITHリスト要素>に直に含まれる<問合せ名>と等価な<問合せ

名>を直に含んではならない。 

e) <WITH句>が再帰的でないならば,1からnまでの範囲の全てのiに対して,i番目の<WITHリス

ト要素> WLEiに直に含まれる<問合せ名> WQNの有効範囲は,全ての<WITHリスト要素> WLEk

330 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

に単純に含まれる<問合せ式>,及びQEに直に含まれる<問合せ式本体>とする。ここで,kの範

囲は,i+1からnまでとする。WQNを直に含むこの有効範囲中に含まれる<表名又は問合せ名>

は,有効範囲中の問合せ名 (query name in scope) とする。 

f) 

<WITH句>が潜在的に再帰的ならば,1からnまでの範囲の全てのiに対して,i番目の<WITHリ

スト要素> WLEiに直に含まれる<問合せ名> WQNの有効範囲は,全ての<WITHリスト要素> 

WLEkに単純に含まれる<問合せ式>,及び<問合せ式>に直に含まれる<問合せ式本体>とする。こ

こで,kの範囲は,1からnまでとする。WQNを直に含むこの有効範囲中に含まれる<表名又は

問合せ名>は,有効範囲中の問合せ名 とする。 

g) どの<WITHリスト要素> WLEに対しても,WLEに単純に含まれる<問合せ式>をWQEとし,

WQEによって定義される表をWQTとする。 

i) 

WQTのいずれかの二つの列が等価な名前をもつか,又はWLEが潜在的に再帰的ならば,WLE

は,<WITH列リスト>を指定しなければならない。WLEが<WITH列リスト> WCLを指定する

ならば,次による。 

1) 等価な<列名>をWCL中で2回以上指定してはならない。 

2) WCL中の<列名>の個数は,WQTの次数と同じでなければならない。 

ii) WQT中の文字列型のどの列も,宣言型照合順をもたなければならない。 

h) 潜在的に再帰的である<WITHリスト> WLの問合せ名依存グラフ (query name dependency graph) 

QNDGは,有向グラフとし,1から,WLに単純に含まれる<問合せ名>の個数までの範囲のiに対

して,次のとおりとする。 

i) 

各ノードは,WLの<WITHリスト要素> WLEiに直に含まれる<問合せ名> WQNiを表現する。 

ii) ノードWQNiからノードWQNjへの各アークは,WLEiに単純に含まれる<問合せ式>に含まれ

る<問合せ名>によってWQNjが参照されることを表現する。WQNiは,WQNjに直に依存する 

(depend immediately) という。 

i) 

n個の要素をもつ潜在的に再帰的である<WITHリスト> WLに対して,1からnまでの範囲のiに

対して,WLのi番目の<WITHリスト要素>をWLEiとし,WLEiに直に含まれる<問合せ名>を

WQNiとし,WLEiに単純に含まれる<問合せ式>をWQEiとし,WQEiによって定義される表を

WQTiとし,WLの問合せ名依存グラフをQNDGとする。 

i) 

QNDGが少なくとも一つのサイクルを含むならば,WLは,再帰的 (recursive) という。 

場合: 

1) QNDGがWQNiからそれ自体へのアークを含むならば,WLEi,WQNi及びWQTiは,再帰的 

という。WQNiは,WQEiの層 (stratum) に属するという。 

2) QNDGが,k≠iで,WQNi,…,WQNkから成るサイクルを含むならば,WQNi,…,WQNk

は,再帰的で,かつ,互いに相互再帰的 (mutually recursive) であるといい,WQTi,…,WQTk

は,再帰的で,かつ,互いに相互再帰的 であるといい,WLEi,…,WLEkは,再帰的で,か

つ,互いに相互再帰的 であるという。 

iからkまでの範囲の各jに対して,WQNjは,WQEi,…,及びWQEkの層に属するという。 

3) 与えられた層のWQEi,…,WQEkの中で,WQEjという,次のような少なくとも一つの<問

合せ式>が存在しなければならない。 

A) WQEjが,UNIONを直に含む<問合せ式本体>である。 

B) WQNi,…,WQNkのいずれかを参照する<問合せ名>を含まない一つのオペランドをWQEj

331 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

がもつ。このオペランドは,WQEjの再帰的でないオペランド (non-recursive operand) とい

う。 

C) WQEjは,アンカ式 (anchor expression) といい,WQNjは,アンカ名 (anchor name) とい

う。 

D) WQNi,…,WQNk以外のノードを含まないQNDGの部分グラフをCCCGとする。どのア

ンカ名WQNjに対しても,WQEjに含まれる<問合せ名>によって参照されるこれらの問合

せ名WQNlへのアークを取り除く。残っているグラフSCCGPは,サイクルを含んではな

らない。 

ii) WLEiが再帰的ならば,次による。 

1) 場合: 

A) WQEiの層に属する高々一つのWQNkをWQEiが含むならば,WLEiは,線形再帰 (linearly 

recursive) とする。 

B) そうでなければ,WQEiは,WQNk及びWQNlを参照する二つの<問合せ名>を含み,それ

らの両方がWQEiの層に属する。 

場合: 

I) 

次の各条件を満たすならば,WLEiは,線形再帰 とする。 

1) WQNk及びWQNlを参照する両方の<問合せ名>を含む<表参照リスト>をWQEiが含

まない。 

2) 1番目の<表参照>及び2番目の<表参照>,又は<表参照>及び<表因子>が,それぞれ,

TR1及びTR2で,かつ,TR1及びTR2が,それぞれ,WQNk及びWQNlを参照する<

問合せ名>を含むような<結合表>をWQEiが含まない。 

3) WQNkを含む<FROM句>を直に含み,かつ,WQNlを参照する<問合せ名>を含む<問

合せ式>を含む<WHERE句>を直に含む<表式>をWQEiが含まない。 

II) そうでなければ,WLEiは,非線形再帰 (non-lenearly recursive) という。 

2) WQEiの層に属する<問合せ名>の個数をmとする。1からmまでの範囲のjに対して,次に

よる。 

A) WQEiは,WQNjを参照する<問合せ名>を含み,かつ,EXCEPTの右オペランドがWQNj

を含むEXCEPTを直に含む<問合せ式本体>を含んではならない。 

B) WQEiは,WQNjを参照する<問合せ名>を含む<値式>を直に含む一つ以上の<SQL引数>を

含む<SQL引数リスト>をもつ<ルーチン呼出し>を含んではならない。 

C) WQEiは,WQEiである<問合せ式本体>に直に含まれる<問合せ項>を構成する<問合せ一次

子>を構成する<単純表>を構成する<問合せ指定>に直に含まれる<表式>に直に含まれる

<FROM句>に直に含まれる<表参照>に直に含まれる<表一次子>に直に含まれる<導出表>

に<問合せ式> TSQが単純に含まれない限り,WQNjを参照する<問合せ名>を含むTSQを

含んではならない。 

D) WQEiは,WQNjを参照する<問合せ名>を含む<表式> TEを<問合せ指定> QSが直に含み,

かつ,次のいずれかが真であるようなQSを含んではならない。 

I) QSが<選択リスト> SLを直に含むか又はTEが<HAVING句> HCを直に含み,かつ,SL

又はTEが<集合関数指定>を含む。 

II) QSが,<ウィンドウ関数>を含む<選択リスト> SLを直に含む。 

332 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記243 <ウィンドウ関数>が<ORDER BY句>に含まれるならば,<ウィンドウ関数>

を<選択副リスト>に移動するこの細分箇条中の構文上の変換がこの規則の適

用前に実効的に適用される。 

E) WQEiは,WQNjを参照する<問合せ名>を含み,かつ,INTERSECT ALL又はEXCEPT ALL

を単純に含む<問合せ式本体>を含んではならない。 

F) WQEiは,次の<修飾付き結合> QJを含んではならない。 

I) 

FULLを指定する<結合型>,及びWQNjを参照する<問合せ名>を含む<表参照>又は<分

割結合表>を直に含むQJ。 

II) LEFTを指定する<結合型>,及びWQNjを参照する<問合せ名>を含み,かつ,その<結合

型>に続く<表参照>又は<分割結合表>を直に含むQJ。 

III) RIGHTを指定する<結合型>,及びWQNjを参照する<問合せ名>を含み,かつ,その<結

合型>に先行する<表参照>又は<分割結合表>を直に含むQJ。 

G) WQEiは,次の<自然結合> QJを含んではならない。 

I) 

FULLを指定する<結合型>,及びWQNjを参照する<問合せ名>を含む<表参照>,<表因

子>又は<分割結合表>を直に含むQJ。 

II) LEFTを指定する<結合型>,及びWQNjを参照する<問合せ名>を含み,かつ,その<結合

型>に続く<表因子>又は<分割結合表>を直に含むQJ。 

III) RIGHTを指定する<結合型>,及びWQNjを参照する<問合せ名>を含み,かつ,その<結

合型>に先行する<表参照>又は<分割結合表>を直に含むQJ。 

iii) WLEiが再帰的ならば,WLEiは,線形再帰でなければならない。 

iv) 次の全てが真ならば,WLEiは,展開可能 (expandable) という。 

1) WLEiが再帰的である。 

2) WLEiが線形再帰である。 

3) WQEiが,UNION又はUNION ALLを直に含む<問合せ式本体>である。WQEiに直に含まれ

る<問合せ式本体>をWQEBiとする。WQEBiに直に含まれる<問合せ式本体>及び<問合せ項

>をQELi及びQTRiとする。WQNiは,QELiに含まれてはならず,QTRiは,<問合せ指定>

でなければならない。 

4) WQNiが相互再帰的ではない。 

j) 

<WITHリスト要素> WLEが展開可能でないならば,WLEは,<SEARCH又はCYCLE句>を直に

含んではならない。 

4) <問合せ式>によって指定される表をTとする。 

5) <明示表> 

TABLE <表名又は問合せ名> 

は,次の<問合せ指定>と等価とする。 

 SELECT * FROM <表名又は問合せ名> 

6) UNION ALL,UNION DISTINCT,EXCEPT ALL,EXCEPT DISTINCT,INTERSECT ALL又は

INTERSECT DISTINCTを集合演算子 (set operator) とする。 

7) UNION,EXCEPT又はINTERSECTが指定され,ALLもDISTINCTも指定されないならば,DISTINCT

が暗に想定される。 

8) <問合せ式> QE1が<結果OFFSET句>又は<FETCH FIRST句>を指定しないで,かつ,QE1の<問合

333 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

せ式本体>に単純に含まれるどの<問合せ式>又は<問合せ指定> QE2に対しても,次の全てが真なら

ば,QE1は,単純に更新可能 (simply updatable) とする。 

a) UNION ALL,UNION DISTINCT,EXCEPT ALL又はEXCEPT DISTINCTを指定する<問合せ式本

体>を介在しないで,QE1がQE2を含む。 

b) INTERSECTを指定する<問合せ項>を介在しないで,QE1がQE2を含む。 

c) QE2が単純に更新可能である。 

9) <問合せ式> QE1が<結果OFFSET句>又は<FETCH FIRST句>を指定しないで,かつ,QE1に単純に

含まれるどの<単純表> QE2に対しても,次の全てが真ならば,QE1は,更新可能 (updatable) とす

る。 

a) QE2が<表値構成子>でない。 

b) UNION DISTINCT,EXCEPT ALL又はEXCEPT DISTINCTを指定する<問合せ式本体>を介在しな

いで,QE1がQE2を含む。 

c) UNION ALLを指定する<問合せ式本体> QEBをQE1が単純に含むならば,次の条件を満たす。 

i) 

<問合せ式本体> LOの末端で一般に基となるどの表も,<問合せ項> ROの末端で一般に基とな

る表でないような,LO及びROをQEBが直に含む。 

ii) QEBのどの列に対しても,LO及びROによって識別される表中の基となる列が,それぞれ,

両方とも更新可能であるか又は更新可能でないかのいずれかである。 

d) INTERSECTを指定する<問合せ項>を介在しないで,QE1がQE2を含む。 

e) QE2が更新可能である。 

10) <WITHリスト要素> WLEに直に含まれる<問合せ名>によって指定される表が更新可能 であるこ

とは,WLEに単純に含まれる<問合せ式>が更新可能であることと同値とする。 

11) <WITHリスト要素> WLEに直に含まれる<問合せ名>によって指定される表が単純に更新可能 で

あることは,WLEに単純に含まれる<問合せ式>が単純に更新可能であることと同値とする。 

12) <問合せ式> QE1が<結果OFFSET句>又は<FETCH FIRST句>を指定しないで,かつ,QE1の<問合

せ式本体>が,次のうちの一つである<問合せ一次子>ならば,QE1は,挿入可能 (insertable-into) と

する。 

a) 挿入可能な<問合せ指定>。 

b) 挿入可能な表を識別する<表名又は問合せ名>を含む<明示表>。 

c) <左括弧> <問合せ式本体> <右括弧>という形式から成り,括弧で囲まれた<問合せ式本体>がこの

条件を再帰的に満たす。 

13) <WITHリスト要素> WLEに単純に含まれる<問合せ式>が挿入可能ならば,WLEに直に含まれる<

問合せ名>によって指定される表は,挿入可能 とする。 

14) QEに含まれるどの<単純表> STに対しても,次による。 

場合: 

a) STが<問合せ指定> QSならば,STの各列の列記述子は,QSの対応する列の列記述子と同じとす

る。 

b) STが<明示表> ETならば,STの各列の列記述子は,ETに含まれる<表名又は問合せ名>によって

識別される表の対応する列の列記述子と同じとする。 

c) そうでなければ,STの各列の列記述子は,STに直に含まれる<表値構成子>の対応する列の列記

述子と同じとする。 

334 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

15) QEに含まれるどの<問合せ一次子> QPに対しても,次による。 

場合: 

a) QPが<単純表> STならば,QPの各列の列記述子は,STの対応する列の列記述子と同じとする。 

b) そうでなければ,QPの各列の列記述子は,QPに直に含まれる<問合せ式本体>の対応する列の列

記述子と同じとする。 

16) <問合せ項>又は<問合せ式本体>中に集合演算子が指定されるならば,次による。 

a) <問合せ項>又は<問合せ式本体>の1番目のオペランド,2番目のオペランド及び結果を,それぞ

れ,T1,T2及びTRとする。 

b) T1及びT2の実効的な名前を,それぞれ,TN1及びTN2とする。 

c) 集合演算子がUNION DISTINCT,EXCEPT ALL,EXCEPT DISTINCT,INTERSECT ALL又は

INTERSECT DISTINCTならば,T1及びT2の各列は,グループ化操作のオペランドとする。“9.12 

グループ化操作”の構文規則及び適合性規則を適用する。 

17) <問合せ項>又は<問合せ式本体>中に集合演算子が指定されるならば,集合演算子をOPとする。 

場合: 

a) CORRESPONDINGが指定されるならば,次による。 

i) 

T1の列のうちで,等価な<列名>は,2回以上指定してはならず,T2の列のうちで,等価な<列

名>は,2回以上指定してはならない。 

ii) T1の少なくとも一つの列は,T2のいずれかの列の<列名>である<列名>をもたなければならな

い。 

iii) 場合: 

1) <対応列リスト>が指定されないならば,T1及びT2の両方の<列名>であるこれらの<列名>が

T1中に現れる順序で,これらの<列名>から成る<選択リスト>をSLとする。 

2) <対応列リスト>が指定されるならば,<対応列リスト>中に<列名>が現れる順序で,<対応列

リスト>中に陽に現れるこれらの<列名>から成る<選択リスト>をSLとする。<対応列リスト

>中のどの<列名>も,T1及びT2の両方の<列名>でなければならない。 

iv) <問合せ項>又は<問合せ式本体>は,次の指定と等価とする。 

( SELECT SL FROM TN1 ) OP ( SELECT SL FROM TN2 ) 

b) CORRESPONDINGが指定されないならば,T1とT2とは,同じ次数でなければならない。 

18) <問合せ項>が<問合せ一次子>ならば,<問合せ項>の宣言型は,<問合せ一次子>の宣言型とする。<

問合せ項>のi番目の列の列記述子は,<問合せ一次子>のi番目の列の列記述子と同じとする。 

19) <問合せ項>がINTERSECTを直に含むならば,次による。 

a) T1のi番目の列の<列名>をCとする。T2のi番目の列の<列名>がCならば,TRのi番目の列の

<列名>は,Cとする。そうでなければ,TRのi番目の列の<列名>は,処理系依存とする。 

b) T1のi番目の列の宣言型及びT2のi番目の列の宣言型から成る集合をDTSETとして,“9.5 デー

タ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって戻されるRESTYPE

をTRのi番目の列の宣言型とする。 

c) SQL処理系が機能T101“拡張ナル可能性決定”を提供し,かつ,T1及びT2のうちの少なくとも

一つのi番目の列がナル可能でないことが分かるならば,TRのi番目の列は,ナル可能でないこ

とが分かる。そうでなければ,TRのi番目の列は,潜在的にナル可能とする。 

20) <問合せ項>が<問合せ一次子>ならば,<問合せ項>の列記述子は,<問合せ一次子>の列記述子と同じ

335 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とする。 

21) 場合: 

a) <問合せ式本体>が<問合せ項>ならば,<問合せ式本体>の列記述子は,<問合せ項>の列記述子と同

じとする。 

b) <問合せ式本体>がUNION又はEXCEPTを直に含むならば,次による。 

i) 

T1のi番目の列の<列名>をCとする。T2のi番目の列の<列名>がCならば,TRのi番目の列

の<列名>は,Cとする。そうでなければ,TRのi番目の列の<列名>は,処理系依存とする。 

ii) TRがアンカ式の結果でないならば,T1のi番目の列の宣言型及びT2のi番目の列の宣言型か

ら成る集合をDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの

構文規則の適用によって戻されるRESTYPEをTRのi番目の列の宣言型とする。 

iii) 場合: 

1) SQL処理系が機能T101 “拡張ナル可能性決定”を提供しないならば,TRのi番目の列は,

潜在的にナル可能とする。 

2) <問合せ式本体>がEXCEPTを直に含むならば,次による。T1のi番目の列がナル可能でない

ことが分かるならば,TRのi番目の列は,ナル可能でないことが分かる。そうでなければ,

TRのi番目の列は,潜在的にナル可能とする。 

3) そうでなければ,T1及びT2 の両方のi番目の列がナル可能でないことが分かるならば,TR

のi番目の列は,ナル可能でないことが分かる。そうでなければ,TRのi番目の列は,潜在

的にナル可能とする。 

iv) TRがアンカ式AREの結果であるならば,次による。 

1) AREの層に属する再帰表の個数をlとする。1からlまでの範囲のjに対して,これらの表を

WQTjとする。TRのオペランドT1及びT2のうちで,AREの再帰的でないオペランドの結

果であるオペランドをTNRECとし,もう一方のオペランドをTRECとする。WQTkの列が

TRECのi番目の列の基となる列であるような,少なくとも一つのk,1 ≤ k ≤ lが存在するな

らば,TRのi番目の列は,再帰的に参照される (recursively referred to) という。そうでなけ

れば,その列は,再帰的に参照されない (not recursively referred to) という。 

2) TRのi番目の列が再帰的に参照されないならば,T1のi番目の列の宣言型及びT2のi番目

の列の宣言型から成る集合をDTSETとして,“9.5 データ型組合せの結果”の構文規則を適

用する。これらの構文規則の適用によって戻されるRESTYPEをTRのi番目の列の宣言型と

する。T1及びT2のうちの少なくとも一つのi番目の列がナル可能でないことが分かるなら

ば,TRのi番目の列は,ナル可能でないことが分かる。そうでなければ,TRのi番目の列

は,潜在的にナル可能 とする。 

3) TRのi番目の列が再帰的に参照されるならば,次による。 

A) TRのi番目の列は,潜在的にナル可能 とする。 

B) 場合: 

I) T1がTNRECで,かつ,TRのi番目の列が再帰的に参照されるならば,TRのi番目の

列の宣言型は,T1のi番目の列の宣言型と同じとする。 

II) T2がTNRECで,かつ,TRのi番目の列が再帰的に参照されるならば,TRのi番目の

列の宣言型は,T2のi番目の列の宣言型と同じとする。 

22) QEの単純に基となる表 (simply underlying table) は,QEに直に含まれる<問合せ式本体>に,<導出

336 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表>又は<結合条件>を介在しないで含まれる<表名又は問合せ名>,<問合せ指定>及び<導出表>とす

る。 

23) 次のうちの一つが真ならば,<明示表>は,潜在的に非決定的 (possibly non-deterministic) とする。 

a) <明示表>に単純に含まれる<表名又は問合せ名>が<表名>であり,階層的な<問合せ式>が潜在的

に非決定的であるビュー表をその<表名>が識別する。 

b) <明示表>に単純に含まれる<表名又は問合せ名>が<問合せ名>であり,その<問合せ名>に関連付

けられた<表副問合せ>が潜在的に非決定的である。 

24) 次のいずれかが真ならば,<問合せ式>は,潜在的に非決定的 とする。 

a) <問合せ式>が<結果OFFSET句>を含む。 

b) <問合せ式>が<FETCH FIRST句>を含む。 

c) <問合せ式>が,潜在的に非決定的である<問合せ一次子>である。 

d) UNION,EXCEPT又はINTERSECTが指定され,かつ,1番目及び2番目のオペランドのうちの

少なくとも一つが潜在的に非決定的である。 

e) UNION,EXCEPT又はINTERSECTが指定され,かつ,一方の構成要素が時刻帯付き日時で,も

う一方の構成要素が時刻帯なし日時であるような対応する構成要素を,二つのオペランド中の列

の宣言型DT1及びDT2がもつような結果の列が存在する。 

f) 

次の両方が真である。 

i) 

Tが集合演算子UNIONを含み,かつ,ALLが指定されないか,又はTが集合演算子EXCEPT

若しくはINTERSECTのいずれかを含む。 

ii) 次のうちの少なくとも一つが真である。 

1) 1番目又は2番目のオペランドが,文字列の宣言型をもつ列を含む。 

2) 1番目又は2番目のオペランドが,時刻帯付き日時の宣言型をもつ列を含む。 

3) 1番目又は2番目のオペランドが,利用者定義型である宣言型をもつ列を含む。 

25) QEの各列の基となる列 (underlying column) 及び一般に基となる列 (generally underlying column),

並びにQEの各列自体は,次のように定義される。 

a) <表値構成子>の列は,基となる列をもたず,一般に基となる列をもたない。 

b) <単純表> STの各i番目の列の基となる列及び一般に基となる列は,それぞれ,STに直に含まれ

る表のi番目の列の基となる列及び一般に基となる列とする。 

c) 集合演算子が指定されないならば,QEの各i番目の列の基となる列及び一般に基となる列は,そ

れぞれ,QEに単純に含まれる<単純表>のi番目の列の基となる列及び一般に基となる列とする。 

d) 集合演算子が指定されるならば,QEの各i番目の列の基となる列及び一般に基となる列は,それ

ぞれ,T1のi番目の列の基となる列及び一般に基となる列,並びにT2のi番目の列の基となる列

及び一般に基となる列とする。 

e) ある列をCとする。CがQEの基となる列であることは,CがQEの列の基となる列であること

と同値とする。CがQEの一般に基となる列であることは,CがQEの列の一般に基となる列で

あることと同値とする。 

26) QEの更新可能な列 (updatable column) は,次のとおりに定義される。 

a) <表値構成子>の列は,更新可能な列ではない。 

b) <単純表> STの列は,STの基となる列が更新可能ならば,STの更新可能な列 とする。 

c) 集合演算子が指定されないとき,QEの列は,QEの基となる列が更新可能ならば,QEの更新可

337 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

能な列 とする。 

d) 集合演算子が指定されるならば,次による。 

場合: 

i) 

SQL処理系が機能T111“更新可能な結合,和集合及び列”を提供し,集合演算子UNION ALL

が指定され,かつ,QEのi番目の列の基となる列が両方とも更新可能ならば,QEのi番目の

列は,QEの更新可能な列 とする。 

ii) そうでなければ,QEのi番目の列は,更新可能でない。 

注記244 集合演算子UNION DISTINCT,EXCEPT又はINTERSECTが指定されるか,又は

SQL処理系が機能T111“更新可能な結合,和集合及び列”を提供しないならば,更

新可能な列は,存在しない。 

27) <問合せ式> QEは,SQLデータを潜在的に修正するSQL呼出しルーチンをその当該ルーチンとし

てもつ<ルーチン呼出し>を一般に含んではならない。 

28) <ORDER BY句>が指定されるならば,次による。 

a) <ORDER BY句>をOBCとする。OBC中の<ソート指定>の個数をNSKとする。1からNSKまで

の範囲の各iに対して,OBC中のi番目の<ソート指定>に含まれる<ソートキー>をKiとする。 

b) 各Kiは,<列参照>を含まなければならず,<問合せ式>又は<集合関数指定>を含んではならない。 

c) QEが,<問合せ指定>である<単純表>である<問合せ一次子>である<問合せ項>である<問合せ式

本体>ならば,QEは,単純表問合せ (simple table query) という。 

d) 場合: 

i) 

Tの列でない列への列参照を含む<ソートキー> Kiを<ソート指定リスト>が含むならば,次に

よる。 

1) QEは,単純表問合せでなければならない。 

2) QEに単純に含まれる<問合せ指定> QSに直に含まれる<表式>をTEとする。 

3) QSの<選択リスト>をSLとする。各<列参照>を完全修飾付きの等価なものに置き換えること

によって,SLから得られるものをSLTとする。 

4) TEの列を参照する各<列参照>を完全修飾付きの等価なものに置き換えることによって,OBC

から得られるものをOBCTとする。共通列名の場合には,各共通列名は,完全修飾付きとみ

なす。 

5) 1からNSKまでの範囲の各iに対して,OBCTに含まれるi番目の<ソート指定>に含まれる

<ソートキー>をKTiとする。 

6) 1からNSKまでの範囲の各iに対して,SLTの<導出列> DCに直に含まれる<値式>と同じ左

正規形導出をKTiがもつならば,次による。 

注記245 “左正規形導出 (Left normal form derivation)”は,JIS X 3005-1 [ISO9075-1] の“6.2 

この規格で規定する表記法”で定義している。 

A) 場合: 

I) DCが<AS句>を単純に含むならば,<AS句>に含まれる<列名>をCNとする。 

II) そうでなければ,SLTに含まれる他のどの<導出列>の陽に指定されるか又は暗に想定さ

れる<列名>とも等価でない,処理系依存の<列名>をCNとする。DCに単純に含まれる<

値式>をVEとする。SLT中で,DCは,次の指定に置き換えられる。 

VE AS CN 

338 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

B) OBCT中で,KTiは,次の指定に置き換えられる。 

CN 

7) 先行する変換の後にOBCT中に残っているTEの列への<列参照>の集合をSCRとする。 

8) SCRに含まれる<列参照>の個数をNSCRとする。1からNSCRまでの範囲の各jに対して,

これらの<列参照>の列挙をCjとする。 

9) 場合: 

A) NSCRが0ならば,長さ0の文字列をSKLとする。 

B) そうでなければ,次による。 

I) Tは,グループ表であってはならない。 

II) QSは,<集合限定子> DISTINCTを指定してはならず,一つ以上の<集合関数指定>を直

接含んでもならない。 

III) 次のコンマで区切られた<導出列>のリストをSKLとする。 

, C1, C2, ..., CNSCR 

列Cjは,拡張ソートキー列 (extended sort key column) という。 

10) 次の<問合せ指定>によって指定される表をSORTとする。 

SELECT SLT SKL TE 

11) OBCTをEOBCとする。 

ii) そうでなければ,TをSORTとし,OBCをEOBCとする。 

e) SORTは,QEのソート表 (sort table) という。EOBCは,SORTの拡張ORDER BY句 (extended 

order by clause) という。 

29) <変位行数>の宣言型は,位取り0の真数型でなければならない。 

30) <最初の取出し行数>の宣言型は,位取り0の真数型でなければならない。 

31) <最初の取出し率>に単純に含まれる<単純値指定>の宣言型は,数型でなければならない。 

32) WITH TIESを単純に含む<FETCH FISRT句>を<問合せ式>が単純に含むならば,<問合せ式>は,

<ORDER BY句>を単純に含まなければならない。WITH TIESを単純に含む<FETCH FISRT句>を<

問合せ一次子>が単純に含むならば,<問合せ一次子>は,<ORDER BY句>を単純に含まなければな

らない。 

アクセス規則 

なし。 

一般規則 

1) 再帰的でない<WITH句>が指定されるならば,次による。 

a) <WITHリスト要素>のいずれかが<データ変更差分表>を一般に含むならば,<問合せ式>に単純に

含まれる<WITHリスト要素>は,与えられる順序で評価される。 

b) どの<WITHリスト要素> WLEに対しても,WLEに直に含まれる<問合せ名>をWQNとする。

WLEに単純に含まれる<問合せ式>をWQEとする。WLEに直に含まれる<WITH列リスト>があ

るならば,その<WITH列リスト>の対応する要素に各列名を置き換えて,WQEの評価の結果とし

て得られる表をWLTとする。 

c) <問合せ式>に含まれ,WQNを指定するどの<表参照>も,WLTを識別する。 

2) 潜在的に再帰的である<WITH句> WCが指定されるならば,次による。 

a) WCに直に含まれる<WITHリスト> WLの<WITHリスト要素> WLEiの個数をnとする。1からn

339 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

までの範囲のiに対して,WLEiに単純に含まれる<問合せ名>及び<問合せ式>をWQNi及びWQEi

とする。一つの層に属する全てのWLEiを各WLPjが含むような,WLの分割の要素をWLPjと

し,その区画の個数をmとする。次のような有向グラフをWLの区画依存グラフ (partition 

depencency graph) PDGとする。 

i) 

WLの各区画WLPjは,PDGのただ一つのノードによって表現される。 

ii) WLPjを表現するノードからWLPkを表現するノードへのアークが存在することは,WLPjが少

なくとも一つのWLEiを含み,WLPkが少なくとも一つのWLEhを含み,かつ,WQNhを参照

する<問合せ名>をWQEiが含むことと同値とする。 

b) PDGのノードの集合が空でない間,次のことを行う。 

i) 

出ていくアークをもたないPDGの区画を評価する。 

ii) その区画,及びPDGからそれらに入ってくるアークを取り除く。 

c) WLの区画をLIPとする。LIP中の<WITHリスト要素>の個数をmとし,1からmまでの範囲の

iに対して,LIPの<WITHリスト要素>をWLEiとし,WLEiに単純に含まれる<問合せ名>及び<

問合せ式>をWQNi及びWQEiとする。WQEiに含まれる<問合せ式>の集合をSQEiとする。<問

合せ式>がSQEに属することが,その<問合せ式>がWQEiに含まれることと同値であるような,

<問合せ式>の集合をSQEとする。SQE中の<問合せ式>の個数をpとし,SQEに属するk番目の

<問合せ式>をAQEk,1 ≤ k ≤ pとする。 

i) 

再帰的な問合せ名を有効範囲中に含むどの<問合せ式> AQEkも,再帰的 としてマーク付けさ

れる。 

ii) AQEkの行型を行型としてもつ表をRTk及びWTkとする。最初は,空をRTk及びWTkとす

る。RTk及びWTkは,AQEkに関連付けられ (associated with) るという。AQEkがWQEiに直

に含まれるならば,RTk及びWTkは,それぞれ,<問合せ名> WQNiに関連付けられた,中間

結果表 (intermediate result table) 及び作業表 (working table) という。 

iii) 再帰的としてマーク付けされない<問合せ式> AQEkが,再帰的としてマーク付けされ,かつ,

UNIONを指定する<問合せ式本体>に直に含まれるならば,AQEkは,反復が無視できる 

(iteration ignorable) としてマーク付けされる。 

iv) 各AQEkに対して,次による。 

場合: 

1) DISTINCTを直に含む<問合せ指定>からAQEkが成るならば,AQEkは,重複を取り除く 

(suppress duplicates)。 

2) DISTINCTを直に含むか又は暗に想定する<問合せ式本体>又は<問合せ項>からAQEkが成る

ならば,AQEkは,重複を取り除く。 

3) そうでなければ,AQEkは,重複を取り除かない。 

v) AQEkが再帰的としてマーク付けされないならば,AQEkの結果をRTk及びWTkとする。 

vi) どのRTkに対しても,RTkの名前をRTNkとする。AQEkが再帰的としてマーク付けされない

ならば,AQEkを次の指定に置き換える。 

TABLE RTNk 

vii) LIPのどのWQEiに対しても,関連付けられた結果表を,有効範囲中の再帰的な問合せ名 

(recursive query names in scope) で示す。全てのWQEiを評価する。そのようなWQEiに含まれ

るどのAQEkに対しても,AQEkの結果をRTk及びWTkとする。 

340 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記246 これによって,区画の評価の初期化フェーズを終了する。 

viii) 反復が無視できるとしてマーク付けされたLIPのどのAQEkに対しても,空の表をRTkとす

る。 

ix) LIPのWTkが空でない間,次のことを行う。 

1) 関連付けられた作業表を,LIPの有効範囲中の再帰的な問合せ名で示す。 

2) LIPの全てのWQEiを評価する。 

3) 再帰的としてマーク付けされたどのAQEkに対しても,次による。 

場合: 

A) AQEkが重複を取り除くならば,AQEk EXCEPT RTNkの結果をWTkとする。 

B) そうでなければ,AQEkの結果をWTkとする。 

4) どのWTkに対しても,WTkの表名をWTNkとする。次の結果をRTkとする。 

TABLE WTNk UNION ALL TABLE RTNk 

x) WQNiへのどの参照も,WQNiに関連付けられた中間結果表RTkを識別する。 

3) 場合: 

a) 集合演算子が指定されないならば,Tは,指定された<単純表>の結果とする。 

b) そうでなければ,次による。 

i) 

Tの次数をDとする。 

ii) 各i,1 ≤ i ≤ Dに対して,次による。 

1) 

14 Tのi番目の列の宣言型をDTCiとする。 

2) T1のi番目の列の実効的な名前をTCN1iとする。 

3) T2のi番目の列の実効的な名前をTCN2iとする。 

4) 次の形式の<問合せ式>をET1とする。 

SELECT CAST(TCN11 AS DTC1), 

CAST(TCN12 AS DTC2), 

..., 

CAST(TCN1D AS DTCD) 

FROM TN1 

5) 次の形式の<問合せ式>をET2とする。 

SELECT CAST(TCN21 AS DTC1), 

CAST(TCN22 AS DTC2), 

..., 

CAST(TCN2D AS DTCD) 

FROM TN2 

iii) Tは,次の行を含む。 

1) ET1中の行若しくはET2中の行又は両方の重複である行をRとする。ET1中のRの重複の

個数をmとし,ET2中のRの重複の個数をnとする。ここで,m ≥ 0,かつ,n ≥ 0とする。 

2) DISTINCTが指定されるか又は暗に想定されるならば,次による。 

場合: 

A) UNIONが指定されるならば,次による。 

場合: 

341 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

I) m > 0又はn > 0ならば,Tは,Rのただ一つの重複を含む。 

II) そうでなければ,Tは,Rの重複を含まない。 

B) EXCEPTが指定されるならば,次による。 

場合: 

I) m > 0,かつ,n = 0ならば,Tは,Rのただ一つの重複を含む。 

II) そうでなければ,Tは,Rの重複を含まない。 

C) INTERSECTが指定されるならば,次による。 

場合: 

I) m > 0,かつ,n > 0ならば,Tは,Rのただ一つの重複を含む。 

II) そうでなければ,Tは,Rの重複を含まない。 

3) ALLが指定されるならば,次による。 

場合: 

A) UNIONが指定されるならば,Tが含むRの重複の個数は,(m+n) とする。 

B) EXCEPTが指定されるならば,Tが含むRの重複の個数は,(m-n) と0との最大値とする。 

C) INTERSECTが指定されるならば,Tが含むRの重複の個数は,mとnとの最小値とする。 

注記247 “8.2 <比較述語>”の一般規則参照。 

4) 場合: 

a) EXCEPTが指定され,かつ,ある行RRにTの行Rが置き換えられるならば,Rが導出されるT1

の行は,RRに置き換えられる。 

b) INTERSECTが指定されるならば,次による。 

i) 

行RがTに挿入されるならば,次による。 

1) Rの値と等しい値をもつ行をT1が含まないならば,RがT1に挿入される。 

2) Rの値と等しい値をもつ行をT1が含み,かつ,Tのどの行も,その行から導出されないなら

ば,RがT1に挿入される。 

3) Rの値と等しい値をもつ行をT2が含まないならば,RがT2に挿入される。 

4) Rの値と等しい値をもつ行をT2が含み,かつ,Tのどの行も,その行から導出されないなら

ば,RがT2に挿入される。 

ii) ある行RRにRが置き換えられるならば,次による。 

1) Rが導出されるT1の行は,RRに置き換えられる。 

2) Rが導出されるT2の行は,RRに置き換えられる。 

5) Tの行は,次のとおりに順序付けられる。 

a) <ORDER BY句>をQEが直に含まないならば,T中の行の順序付けは,処理系依存とする。 

b) <ORDER BY句>をQEが直に含むならば,T中の行の順序付けは,“10.10 <ソート指定リスト>”

の一般規則によって決定されるとおりの,QEのソート表及びそれの拡張ORDER BY句での行の

順序付けと同じとする。 

注記248 QEによって指定される表は,実効的に,拡張ソートキー列(があるならば,それら)

の全てを取り除いたQEのソート表である。“拡張ソートキー列”及び“拡張ORDER 

BY句”は,この細分箇条の構文規則で定義している。 

6) Tの基数をOCTとする。 

a) 場合: 

342 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

<結果OFFSET句>が指定されないならば,0をRORCとする。 

ii) そうでなければ,<変位行数>をRORCとする。 

b) RORCが0未満ならば,例外条件:データ例外 (data exception) − 結果OFFSET句の行数が正し

くない (invalid row count in result offset clause) が引き起こされる。 

c) 場合: 

i) 

RORCがOCT以上ならば,全ての行がTから取り除かれ,Tの基数は,0とする。 

ii) そうでなければ,一般規則 5) によって規定される順序で,最初のRORC個の行がTから取り

除かれ,Tの基数は,(OCT ‒ RORC) とする。 

7) <FETCH FIRST句>が指定されるならば,次による。 

a) Tの基数をOCT2とする。 

注記249 OCT2は,先行する一般規則の適用によってTから幾つかの行が取り除かれた後のT

の基数である。 

b) 場合: 

i) 

<最初の取出し行数>が指定されるならば,<最初の取出し行数>の値をFFRCとする。 

ii) <最初の取出し率>が指定されるならば,<最初の取出し率>に単純に含まれる<単純値指定>を

FFPとし,値がOCTである<定数>をLOCTとする。次の値をFFRCとする。 

CEILING ( FFP * LOCT / 100.0E0 )  

注記250 百分率は,<変位行数>によって指定された行を取り除く前の行数を用いて計算する。 

iii) そうでなければ,1をFFRCとする。 

c) FFRCが1未満ならば,例外条件:データ例外 − FETCH FIRST句の行数が正しくない (invalid 

row count in fetch first clause) が引き起こされる。 

d) FFRCがOCT2未満ならば,次による。 

場合: 

i) 

WITH TIESが指定されるならば,この細分箇条の一般規則 6) によって規定される順序で,最

初のFFRC個の行以外の行,及び“10.10 <ソート指定リスト>”で定義するそれらの同位行が

Tから取り除かれ,Tの基数は,T中に残っている行の個数とする。 

ii) そうでなければ,この細分箇条の一般規則 6) によって規定される順序で,最初のFFRC個の

行以外の行がTから取り除かれ,Tの基数は,FFRCとする。 

適合性規則 

1) 機能T121“問合せ式中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語中で,<問合

せ式>は,<WITH句>を含んではならない。 

2) 機能T122“副問合せ中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語中で,<問合

せ式>に含まれる<問合せ式>は,<WITH句>を含んではならない。 

3) 機能T131“再帰的問合せ”なしでは,適合するSQL言語は,RECURSIVEを含む<問合せ式>を含

んではならない。 

4) 機能T132“副問合せ中の再帰的問合せ”なしでは,適合するSQL言語中で,<問合せ式>に含まれ

る<問合せ式>は,RECURSIVEを含んではならない。 

5) 機能F661“単純表”なしでは,適合するSQL言語は,<表値構成子>を直に含む<単純表>を含んで

はならない。 

6) 機能F661“単純表”なしでは,適合するSQL言語は,<明示表>を含んではならない。 

343 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7) 機能F302“INTERSECT表演算子”なしでは,適合するSQL言語は,INTERSECTを含む<問合せ項

>を含んではならない。 

8) 機能F301“問合せ式中のCORRESPONDING”なしでは,適合するSQL言語は,CORRESPONDING

を含む<問合せ式>を含んではならない。 

9) 機能T551“既定構文のための省略可能なキーワード”なしでは,適合するSQL言語は,UNION 

DISTINCT,EXCEPT DISTINCT又はINTERSECT DISTINCTを含んではならない。 

10) 機能F304“EXCEPT ALL表演算子”なしでは,適合するSQL言語は,EXCEPT ALLを含む<問合せ

式>を含んではならない。 

注記251 DISTINCT,INTERSECT又はEXCEPTが指定されるならば,“9.12 グループ化操作”の

適合性規則を適用する。 

11) 機能F850“<問合せ式>中の最上位<ORDER BY句>”なしでは,適合するSQL言語中で,<問合せ

による配列値構成子>又は<カーソル指定>のいずれにも直に含まれない<問合せ式>は,<ORDER BY

句>を直に含んではならない。 

12) 機能F851“副問合せ中の<ORDER BY句>”なしでは,適合するSQL言語中で,別の<問合せ式>に

含まれる<問合せ式>は,<ORDER BY句>を直に含んではならない。 

13) 機能F855“<問合せ式>中の入れ子になった<ORDER BY句>”なしでは,適合するSQL言語中で,

<問合せ一次子>は,<ORDER BY句>を直に含んではならない。 

14) 機能F856“<問合せ式>中の入れ子になった<FETCH FIRST句>”なしでは,適合するSQL言語中で,

<問合せ一次子>は,<FETCH FIRST句>を直に含んではならない。 

15) 機能F857“<問合せ式>中の最上位<FETCH FIRST句>”なしでは,適合するSQL言語中で,<問合

せ式>は,<FETCH FIRST句>を直に含んではならない。 

16) 機能F858“副問合せ中の<FETCH FIRST句>”なしでは,適合するSQL言語中で,別の<問合せ式>

に含まれる<問合せ式>は,<FETCH FIRST句>を直に含んではならない。 

17) 機能F860“<FETCH FIRST句>中の動的な<最初の取出し行数>”なしでは,適合するSQL言語中で,

<FETCH FIRST句>は,<符号なし整数>ではない<最初の取出し行数>を含んではならない。 

18) 機能F861“<問合せ式>中の最上位<結果OFFSET句>”なしでは,適合するSQL言語中で,<問合せ

式>は,<結果OFFSET句>を直に含んではならない。 

19) 機能F862“副問合せ中の<結果OFFSET句>”なしでは,適合するSQL言語中で,別の<問合せ式>

に含まれる<問合せ式>は,<結果OFFSET句>を直に含んではならない。 

20) 機能F863“<問合せ式>中の入れ子になった<結果OFFSET句>”なしでは,適合するSQL言語中で,

<問合せ一次子>は,<結果OFFSET句>を直に含んではならない。 

21) 機能F865“<結果OFFSET句>中の動的な<変位行数>”なしでは,適合するSQL言語中で,<結果

OFFSET句>は,<符号なし整数>ではない<変位行数>を含んではならない。 

22) 機能F866“FETCH FIRST句:PERCENT選択肢”なしでは,適合するSQL言語中で,<FETCH FIRST

句>は,<最初の取出し率>を含んではならない。 

23) 機能F867“FETCH FIRST句:WITH TIES選択肢”なしでは,適合するSQL言語中で,<FETCH 

FIRST句>は,WITH TIESを含んではならない。 

7.14 <SEARCH又はCYCLE句> 

機能 

<SEARCH又はCYCLE句> (<search or cycle clause>) は,再帰的問合せ式の結果中での順序付け及びサイ

344 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

クル検出情報の生成を指定する。 

形式 

<SEARCH又はCYCLE句> ::= 

  <SEARCH句> 

| <CYCLE句> 

| <SEARCH句> <CYCLE句> 

<SEARCH句> ::= 

  SEARCH <再帰的探索順> SET <順序列> 

<再帰的探索順> ::= 

  DEPTH FIRST BY <列名リスト> 

| BREADTH FIRST BY <列名リスト> 

<順序列> ::= 

  <列名> 

<CYCLE句> ::= 

  CYCLE <サイクル列リスト> SET <サイクルマーク列> TO <サイクルマーク値> 

      DEFAULT <非サイクルマーク値> USING <経路列> 

<サイクル列リスト> ::= 

  <サイクル列> [ { <コンマ> <サイクル列> }... ] 

<サイクル列> ::= 

  <列名> 

<サイクルマーク列> ::= 

  <列名> 

<経路列> ::= 

  <列名> 

<サイクルマーク値> ::= 

  <値式> 

<非サイクルマーク値> ::= 

  <値式> 

構文規則 

1) <SEARCH又はCYCLE句>を直に含む展開可能な<WITHリスト要素>をWLECとする。 

2) <問合せ名>をWQNとし,<WITH列リスト>をWCLとし,WLECに単純に含まれる<問合せ式>を

WQEとする。WQEに直に含まれる<問合せ式本体>をWQEBとする。WQEBに直に含まれる集合

演算子をOPとする。OPの1番目のオペランドを構成する<問合せ式本体>をTLOとし,OPの2番

目のオペランドを(必然的に)構成する<問合せ指定>をTROとする。 

a) TROに直に含まれる<選択リスト>をTROSLとする。<表参照> WQNTRがWQNを直に含むよう

な,TROに直に含まれる<表式> TROTEに直に含まれる<FROM句>に単純に含まれる<表参照>

をWQNTRとする。 

場合: 

i) 

WQNTRが<相関名>を単純に含むならば,その<相関名>をWQNCRNとする。 

ii) そうでなければ,WQNをWQNCRNとする。 

345 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) 場合: 

i) 

WLECが<SEARCH句> SCを単純に含むならば,<順序列>をSQCとし,SCに直に含まれる<

再帰的探索順>をSOとする。SOに直に含まれる<列名リスト>をCNLとする。 

1) WCLは,SQCと等価な<列名>を含んではならない。 

2) CNLのどの<列名>も,WCLに含まれるいずれかの<列名>と等価でなければならない。どの

<列名>も,CNLに2回以上含まれてはならない。 

3) 場合: 

A) SOがDEPTHを直に含むならば,次の指定をSCEX1とする。 

WQNCRN.SQC 

次の指定をSCEX2とする。 

SQC || ARRAY [ROW(CNL)] 

次の指定をSCINとする。 

ARRAY [ROW(CNL)] 

B) SOがBREADTHを直に含むならば,次の指定をSCEX1とする。 

( SELECT OC.* 

  FROM ( VALUES (WQNCRN.SQC) ) 

  OC(LEVEL, CNL) ) 

次の指定をSCEX2とする。 

ROW(SQC.LEVEL + 1, CNL) 

次の指定をSCINとする。 

ROW(0, CNL) 

ii) WLECが<CYCLE句> CCを単純に含むならば,<サイクル列リスト>をCCLとし,<サイクルマ

ーク列>をCMCとし,<サイクルマーク値>をCMVとし,<非サイクルマーク値>をCMDとし,

CCに直に含まれる<経路列>をCPAとする。 

1) CCLのどの<列名>も,WCLに含まれるいずれかの<列名>と等価でなければならない。どの

<列名>も,CCLに2回以上含まれてはならない。 

2) CMC及びCPAは,互いに等価であってはならず,WCLのどの<列名>とも等価であってはな

らない。 

3) CMV及びCMDの宣言型は,長さ1の文字列でなければならない。CMV及びCMDは,定数

でなければならず,CMVは,CMDと等しくてはならない。 

4) 次の指定をCCEX1とする。 

WQNCRN.CMC, WQNCRN.CPA 

次の指定をCCEX2とする。 

CASE WHEN ROW(CCL) IN 

  (SELECT P.* FROM TABLE(CPA) P) 

    THEN CMV ELSE CMD END, 

CPA || ARRAY [ROW(CCL)] 

次の指定をCCINとする。 

CMD, ARRAY [ROW(CCL)] 

次の指定をNCCON1とする。 

346 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

CMC <> CMV 

iii) 場合: 

1) WLECが<SEARCH句>を単純に含み,かつ,<CYCLE句>を単純に含まないならば,次の指

定をEWCLとする。 

WCL, SQC 

次の指定をETLOSLとする。 

WCL, SCIN 

次の指定をETROSLとする。 

WCL, SCEX2 

次の指定をETROSL1とする。 

TROSL, SCEX1 

次の指定をNCCONとする。 

TRUE 

2) WLECが<CYCLE句>を単純に含み,かつ,<SEARCH句>を単純に含まないならば,次の指

定をEWCLとする。 

WCL, CMC, CPA 

次の指定をETLOSLとする。 

WCL, CCIN 

次の指定をETROSLとする。 

WCL, CCEX2 

次の指定をETROSL1とする。 

TROSL, CCEX1 

次の指定をNCCONとする。 

NCCON1 

3) WLECが<SEARCH句>及び<CYCLE句> CCを単純に含むならば,次による。 

A) <列名> SQC,CMC及びCPAは,互いに等価であってはならない。 

B) 次の指定をEWCLとする。 

WCL, SQC, CMC, CPA 

次の指定をETLOSLとする。 

WCL, SCIN, CCIN 

次の指定をETROSLとする。 

WCL, SCEX2, CCEX2 

次の指定をETROSL1とする。 

TROSL, SCEX1, CCEX1 

C) 次の指定をNCCONとする。 

NCCON1 

c) WLECは,展開された次の<WITHリスト要素>と等価とする。 

WQN(EWCL) AS 

  ( SELECT ETLOSL FROM (TLO) TLOCRN(WCL) 

    OP 

347 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    SELECT ETROSL 

    FROM (SELECT ETROSL1 TROTE) TROCRN(EWCL) 

    WHERE NCCON 

  ) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

7.15 <副問合せ> 

機能 

<副問合せ> (<subquery>) は,<問合せ式>から導出されるスカラ値,行又は表を指定する。 

形式 

<スカラ副問合せ> ::= 

  <副問合せ> 

<行副問合せ> ::= 

  <副問合せ> 

<表副問合せ> ::= 

  <副問合せ> 

<副問合せ> ::= 

  <左括弧> <問合せ式> <右括弧> 

構文規則 

1) <WITHリスト要素>に単純に含まれない<表副問合せ>に直に含まれるか,<スカラ副問合せ>に直に

含まれるか又は<行副問合せ>に直に含まれる<副問合せ>は,<データ変更差分表>を一般に含んでは

ならない。 

2) <スカラ副問合せ>の次数は,1でなければならない。 

3) <行副問合せ>の次数は,2以上でなければならない。 

4) <副問合せ>に単純に含まれる<問合せ式>をQEとする。 

5) <スカラ副問合せ>の宣言型は,QEの列の宣言型とする。 

6) <行副問合せ>の宣言型は,QEの各列に対して一つのフィールドが対応して構成される行型とする。

この行型の各フィールドの宣言型及びフィールド名は,QEの対応する列の宣言型及び列名とする。 

7) <表副問合せ>の列の宣言型は,QEのそれぞれの列の宣言型とする。 

アクセス規則 

なし。 

一般規則 

1) SQLエージェントに対して,どのSQLトランザクションも動作中でないならば,SQLトランザク

ションが開始される。 

2) <行副問合せ>をRSとする。RSに単純に含まれる<問合せ式>の結果をRRSとする。RRSの次数を

Dとする。 

348 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) RRSの基数が1を超えるならば,例外条件:基数違反 (cardinality violation) が引き起こされる。 

b) RRSの基数が0ならば,<行副問合せ>の値は,次数がDで,かつ,全てのフィールドがナル値の

行とする。 

c) そうでなければ,RSの値は,RRSとする。 

3) <スカラ副問合せ>をSSとする。SSに単純に含まれる<問合せ式>の結果をRSSとする。 

場合: 

a) RSSの基数が1を超えるならば,例外条件:基数違反 が引き起こされる。 

b) RSSの基数が0ならば,<スカラ副問合せ>の値は,ナル値とする。 

c) そうでなければ,SSに単純に含まれる<問合せ式>の列をCとする。SSの値は,<スカラ副問合せ

>の結果の唯一の行中のCの値とする。 

適合性規則 

なし。 

述語 

8.1 

<述語> 

この細分箇条は,ISO/IEC 9075-14の“8.1 <述語>”によって修正される。 

機能 

<述語> (<predicate>) は,ブール値を与えるために評価できる条件を指定する。 

形式 

14 <述語> ::= 

  <比較述語> 

| <BETWEEN述語> 

| <IN述語> 

| <LIKE述語> 

| <SIMILAR述語> 

| <LIKE̲REGEX述語> 

| <NULL述語> 

| <限定比較述語> 

| <EXISTS述語> 

| <UNIQUE述語> 

| <NORMALIZED述語> 

| <MATCH述語> 

| <OVERLAPS述語> 

| <DISTINCT述語> 

| <MEMBER述語> 

| <SUBMULTISET述語> 

| <SET述語> 

| <型述語> 

| <期間述語> 

349 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 

14 <述語>の結果は,それに直に含まれる<比較述語>,<BETWEEN述語>,<IN述語>,<LIKE述語

>,<SIMILAR述語>,<LIKE̲REGEX述語>,<NULL述語>,<限定比較述語>,<EXISTS述語>,

<UNIQUE述語>,<NORMALIZED述語>,<MATCH述語>,<OVERLAPS述語>,<DISTINCT述語

>,<MEMBER述語>,<SUBMULTISET述語>,<SET述語>,<型述語>又は<期間述語>の真理値と

する。 

適合性規則 

なし。 

8.2 

<比較述語> 

この細分箇条は,ISO/IEC 9075-13の“7.1 <比較述語>”によって修正される。 

機能 

<比較述語> (<comparison predicate>) は,二つの行値の比較を指定する。 

形式 

<比較述語> ::= 

  <行値述語オペランド> <比較述語部分2> 

<比較述語部分2> ::= 

  <比較演算子> <行値述語オペランド> 

<比較演算子> ::= 

  <等号演算子> 

| <不等号演算子> 

| <小なり演算子> 

| <大なり演算子> 

| <以下演算子> 

| <以上演算子> 

構文規則 

1) 二つの<行値述語オペランド>は,同じ次数でなければならない。 

2) 二つの<行値述語オペランド>中の同じ順序位置のフィールドを対応するフィールド (corresponding 

field) とする。 

3) 二つの<行値述語オペランド>の対応するフィールドの宣言型は,比較可能でなければならない。 

4) 1番目の<行値述語オペランド>及び2番目の<行値述語オペランド>を,それぞれ,Rx及びRyで示

す。 

5) Rxの宣言型中のフィールドの個数をNとする。Rxの宣言型中のi番目のフィールドをXi,1 ≤ i ≤ 

Nとし,Ryの宣言型中のi番目のフィールドをYiとする。各iに対して,次による。 

a) 場合: 

i) 

<比較演算子>が<等号演算子>又は<不等号演算子>ならば,Xi及びYiは,等値性演算のオペラ

ンドとする。“9.11 等値性演算”の構文規則及び適合性規則を適用する。 

350 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,Xi及びYiは,順序付け操作のオペランドとする。“9.14 順序付け操作”の構

文規則及び適合性規則を適用する。 

b) 場合: 

i) 

Xi及びYiの宣言型が利用者定義型ならば,Xi及びYiの宣言型を,それぞれ,UDT1及びUDT2

とする。UDT1及びUDT2は,同じ下位型族中になければならない。UDT1及びUDT2は,比

較型をもたなければならない。 

注記252 “比較型”は,“4.7.5 利用者定義型の比較及び代入”で定義している。 

注記253 

13 UDT1及びUDT2の両方の利用者定義型記述子に含まれる比較形式及び比較カテ

ゴリは,同じになるように制約され,かつ,UDT1及びUDT2の全ての上位型の利

用者定義型記述子に含まれる比較形式及び比較カテゴリと同じになるように制約さ

れる。比較カテゴリがSTATE又はRELATIVEのいずれかならば,UDT1及びUDT2

は,同じ比較関数をもつように制約される。比較カテゴリがMAPならば,それらが

同じ比較関数をもつように制約されない。 

ii) Xi及びYiの宣言型が参照型ならば,Xiの宣言型の被参照型,及びYiの宣言型の被参照型は,

共通の上位型をもたなければならない。 

iii) Xi及びYiの宣言型が集まり型,又は元型が集まり型の個別型で,それらの要素の宣言型がETx

及びETyならば,宣言型がETx及びETyである<値式>を,それぞれ,RV1及びRV2とする。

この細分箇条の構文規則が次の指定に適用される。 

RV1 <比較演算子> RV2 

iv) Xi及びYiの宣言型が行型ならば,宣言型がXi及びYiの宣言型である<値式>を,それぞれ,

RV1及びRV2とする。この細分箇条の構文規則が次の指定に適用される。 

RV1 <比較演算子> RV2 

6) “Rx <比較演算子> Ry”という<比較述語>をCPとする。Rxの宣言型が,比較カテゴリがRELATIVE

の利用者定義型ならば,次の構文変換が適用されるかどうかは,処理系定義とする。そうでなけれ

ば,次の構文変換が適用される。 

場合: 

a) <比較演算子>が<不等号演算子>ならば,CPは,次の指定と等価とする。 

NOT(Rx = Ry ) 

b) <比較演算子>が<大なり演算子>ならば,CPは,次の指定と等価とする。 

(Ry < Rx ) 

c) <比較演算子>が<以下演算子>ならば,CPは,次の指定と等価とする。 

(Rx < Ry 

    OR 

 Ry = Rx ) 

d) <比較演算子>が<以上演算子>ならば,CPは,次の指定と等価とする。 

(Ry < Rx 

    OR 

 Ry = Rx ) 

アクセス規則 

なし。 

351 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) <値式> X及びYによって表現される二つの値を,それぞれ,XV及びYVとする。次の指定 

X <比較演算子> Y 

の結果は,次のとおりに決定される。 

場合: 

a) XV及びYVのうちの少なくとも一つがナル値ならば,次の指定の結果は,不定 (Unknown) とす

る。 

X <比較演算子> Y 

b) そうでなければ,次による。 

場合: 

i) 

XV及びYVの宣言型が,次数Nの行型ならば,XVのi番目のフィールドの値及び宣言型を値

及び宣言型としてもつ<値式>をXi,1 ≤ i ≤ Nで示し,YVのi番目のフィールドの値及び宣言型

を値及び宣言型としてもつ<値式>をYiで示す。次の指定 

X <比較演算子> Y 

の結果は,次のとおりに決定される。 

1) X = Yが真 (True) であることは,全てのiに対して,Xi = Yiが真 であることと同値とする。 

2) X < Yが真 であることは,i < nである全てのiに対して,Xi = Yiが真 で,かつ,あるnに

対して,Xn < Ynであることと同値とする。 

3) X = Yが偽 (False) であることは,あるiに対して,NOT (Xi = Yi) が真 であることと同値と

する。 

4) X < Yが偽 であることは,X = Yが真 か又はY < Xが真 であることと同値とする。 

5) X <比較演算子> Yが真 でも偽 でもないならば,X <比較演算子> Yは,不定 とする。 

ii) XV及びYVの宣言型が配列型,又は元型が配列型の個別型で,かつ,XV及びYVの基数が,

それぞれ,N1及びN2ならば,XVのi番目の要素の値及び宣言型を値及び宣言型としてもつ<

値式>をXi,1 ≤ i ≤ N1で示し,YVのi番目の要素の値及び宣言型を値及び宣言型としてもつ<

値式>をYiで示す。次の指定 

X <比較演算子> Y 

の結果は,次のとおりに決定される。 

1) N1 = 0で,かつ,N2 = 0ならば,X = Yは,真 とする。 

2) N1 = N2で,かつ,全てのiに対して,Xi = Yiが真 ならば,X = Yは,真 とする。 

3) X = Yが偽 であることは,N1 ≠ N2か,又はあるiに対して,NOT (Xi = Yi) が真 であること

と同値とする。 

4) X <比較演算子> Yが真 でも偽 でもないならば,X <比較演算子> Yは,不定 とする。 

iii) XV及びYVの宣言型がマルチ集合型,又は元型がマルチ集合型の個別型で,かつ,XV及びYV

の基数が,それぞれ,N1及びN2ならば,次の指定 

X <比較演算子> Y 

の結果は,次のとおりに決定される。 

場合: 

1) N1 = 0 で,かつ,N2 = 0ならば,X = Yは,真 とする。 

2) N1 = N2で,かつ,全てのj,1 ≤ j ≤ N1に対して,XVEj = YVEjとなるような,XVの要素の

352 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

列挙XVEj,及びYVの要素の列挙YVEjが存在するならば,X = Yは,真 とする。 

3) N1 = N2で,かつ,全てのj,1 ≤ j ≤ N1に対して,“XVEj = YVEj”が真 又は不定 のいずれか

となるような,XVの要素の列挙XVEj,及びYVの要素の列挙YVEjが存在するならば,X = 

Yは,不定 とする。 

4) そうでなければ,X = Yは,偽 とする。 

iv) XV及びYVの宣言型が利用者定義型ならば,XV及びYVの宣言型を,それぞれ,UDTx及び

UDTyとする。次の指定 

X <比較演算子> Y 

の結果は,次のとおりに決定される。 

1) UDTxの比較カテゴリがMAPならば,UDTxの比較関数の陽に指定される<スキーマ名>をも

つ<ルーチン名>をHF1とし,UDTyの比較関数の陽に指定される<スキーマ名>をもつ<ルー

チン名>をHF2とする。HF1がSQL呼出しメソッドを識別するならば,X.HF1をHFXと

する。そうでなければ,HF1(X) をHFXとする。HF2がSQL呼出しメソッドを識別するな

らば,Y.HF2をHFYとする。そうでなければ,HF2(Y) をHFYとする。 

X <比較演算子> Y 

は,次の指定と同じ結果をもつ。 

HFX <比較演算子> HFY 

2) UDTxの比較カテゴリがRELATIVEならば,次による。 

A) UDTxの比較関数の陽に指定される<スキーマ名>をもつ<ルーチン名>をRFとする。 

B) X = Y 

は,次の指定と同じ結果をもつ。 

RF (X, Y ) = 0 

C) X < Y 

は,次の指定と同じ結果をもつ。 

RF (X, Y ) = -1 

D) X <> Y 

は,次の指定と同じ結果をもつ。 

RF (X, Y ) <> 0 

E) X > Y 

が次の指定と同じ結果をもつか, 

RF (X, Y ) = 1 

又は次の指定と同じ結果をもつかは,処理系依存とする。 

RF (Y, X ) = -1 

F) X <= Y 

は,次の指定と同じ結果をもつ。 

RF (X, Y ) = -1 OR RF (X, Y ) = 0 

G) X >= Y 

が次の指定と同じ結果をもつか, 

RF (X, Y ) = 1 OR RF (X, Y ) = 0 

又は次の指定と同じ結果をもつかは,処理系依存とする。 

353 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

RF (Y, X ) = -1 OR RF (X, Y ) = 0 

注記254 =及び<によって全ての比較を定義する構文変換を用いるかどうかは,処理系定義

なので,可搬性のために,適用業務は,全てのX及びYに対して,RF (X, Y) = -

RF (Y, X) であることを確実にするのがよい。 

3) 

13 UDTxの比較カテゴリがSTATEならば,次による。 

A) UDTxの比較関数の<ルーチン名>をSFとする。 

B) X = Y 

は,次の指定と同じ結果をもつ。 

SF (X, Y ) = TRUE 

v) そうでなければ,次の指定 

X <比較演算子> Y 

の結果は,次のとおりに,真 又は偽 とする。 

1) X = Y 

が真 であることは,XVとYVとが等しいことと同値とする。 

2) X < Y 

が真 であることは,XVがYV未満であることと同値とする。 

3) X <比較演算子> Y 

が偽 であることは, 

X <比較演算子> Y 

が真 でないことと同値とする。 

2) 数は,代数値として比較される。 

3) 二つの文字列の比較は,次のとおりに決定される。 

a) 二つの文字列の宣言型から成る集合をTYPESETとして,“9.15 照合順決定”の構文規則を適用す

る。これらの構文規則の適用によって戻されるCOLLをCSとする。 

b) Xの文字単位での長さが,Yの文字単位での長さと等しくないならば,短い方の文字列は,一つ

以上の詰め込み文字を右側に連結することによって長い方の文字列の長さまで拡張したそれ自体

の写しに,比較のために,実効的に置き換えられる。ここで,詰め込み文字は,CSに基づいて選

択される。CSがNO PAD特性をもつならば,詰め込み文字は,CSの下で照合順がどの文字列よ

りも小さく,X及びYの文字集合中のどの文字とも異なる処理系依存の文字とする。そうでなけ

れば,詰め込み文字は,<空白>とする。 

c) XとYとの比較の結果は,照合順CSによって与えられる。 

d) 照合順によっては,二つの文字列は,それらが異なる長さであっても,又は異なる文字の並びを

含んでいても,等しいものとして比較されてもよい。演算MAX,MIN及びDISTINCT,グループ

化列の参照,並びにUNION,EXCEPT及びINTERSECT演算子のいずれかが,文字列を参照する

とき,そのような等しい値の集合から,これらの演算によって選択される特定の値は,処理系依

存とする。 

4) 少なくとも一つが長大オブジェクト2進オクテット列値である二つの2進オクテット列値X及びY

の比較は,同じ順序位置をもつそれらのオクテットの比較によって決定される。X及びYのi番目

のオクテットの値を,それぞれ,Xi及びYiとし,Xのオクテット単位での長さをLxとし,Yのオ

クテット単位での長さをLyとする。XがYと等しいことは,Lx = Lyで,かつ,全てのiに対して,

354 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

Xi = Yiであることと同値とする。 

5) どちらも長大オブジェクト2進オクテット列値ではない二つの2進オクテット列値X及びYの比較

は,次のとおりに決定される。 

a) Xのオクテット単位での長さをLxとし,Yのオクテット単位での長さをLyとする。Xのi番目

のオクテットの値をXi,1 ≤ i ≤ Lxとし,Yのi番目のオクテットの値をYi,1 ≤ i ≤ Lyとする。 

b) Lx = Lyで,かつ,Xi = Yi,1 ≤ i ≤ Lxならば,Xは,Yと等しい。 

c) Lx < Lyで,全てのi ≤ Lxに対して,Xi = Yiで,かつ,Yの最も右側のLy ‒ Lx個のオクテットが

全てX'00' ならば,XがYと等しいか,又はXがY未満であるかは,処理系定義とする。 

d) Lx < Lyで,全てのi ≤ Lxに対して,Xi = Yiで,かつ,Yの最も右側のLy ‒ Lx個のオクテットの

うちの少なくとも一つがX'00' でないならば,Xは,Y未満とする。 

e) あるj,0 ≤ j ≤ (LxとLyとの最小値) に対して,Xj < Yjで,かつ,全てのi < jに対して,Xi = Yi

ならば,Xは,Y未満とする。 

6) 二つの日時の比較は,それらの減算の結果として得られる時間隔によって決定される。比較される

二つの値をX及びYとし,データ型が時刻又は時刻印ならば,小数秒精度を含めた,X及びYの最

下位有効<基本日時フィールド>をHとする。 

a) XがYと等しいことは,次の述語の結果が真 であることと同値とする。 

( X−Y ) INTERVAL H = INTERVAL '0' H 

b) XがY未満であることは,次の述語の結果が真 であることと同値とする。 

( X−Y ) INTERVAL H < INTERVAL '0' H 

注記255 二つの日時が同じ<基本日時フィールド>をもつときに限り,それらは,比較可能である

(“4.6.2 日時”参照)。 

7) 二つの時間隔の比較は,ある共通の基本単位での整数に変換した後に,それらの対応する値の比較

によって決定される。比較される二つの時間隔をX及びYとする。Xの指定されるか又は暗に想定

される時間隔修飾子をA TO Bとし,Yの指定されるか又は暗に想定される時間隔修飾子をC TO D

とする。B及びDの最下位有効<基本日時フィールド>をTとし,T(N) という形式の時間隔修飾子

をUとする。ここで,Nは,CAST演算で有効桁が失われないような十分な大きさの<時間隔先行フ

ィールド精度>とする。 

次の<値式>をXVEとする。 

CAST ( X AS INTERVAL U ) 

次の<値式>をYVEとする。 

CAST ( Y AS INTERVAL U ) 

a) XがYと等しいことは,次の比較の結果が真 であることと同値とする。 

CAST ( XVE AS INTEGER ) = CAST ( YVE AS INTEGER ) 

b) XがY未満であることは,次の比較の結果が真 であることと同値とする。 

CAST ( XVE AS INTEGER ) < CAST ( YVE AS INTEGER ) 

8) ブール値の比較では,真 が偽 より大きい。 

9) 二つのREF値X及びYの比較の結果は,同じ順序位置でのそれらのオクテットの比較によって決

定される。Xのオクテット単位での長さをLxとし,Yのオクテット単位での長さをLyとする。X

及びYのi番目のオクテットの値を,それぞれ,Xi及びYi,1 ≤ i ≤ Lxとする。XがYと等しいこと

は,Lx = Lyで,かつ,全てのiに対して,Xi = Yiであることと同値とする。 

355 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

なし。 

注記256 <比較演算子>が<等号演算子>又は<不等号演算子>ならば,“9.11 等値性演算”の適合性規

則を適用する。そうでなければ,“9.14 順序付け操作”の適合性規則を適用する。 

8.3 

<BETWEEN述語> 

機能 

<BETWEEN述語> (<between predicate>) は,範囲比較を指定する。 

形式 

<BETWEEN述語> ::= 

  <行値述語オペランド> <BETWEEN述語部分2> 

<BETWEEN述語部分2> ::= 

  [ NOT ] BETWEEN [ ASYMMETRIC | SYMMETRIC ] 

      <行値述語オペランド> AND <行値述語オペランド> 

構文規則 

1) SYMMETRICも,ASYMMETRICも,指定されないならば,ASYMMETRICが暗に想定される。 

2) 1番目,2番目及び3番目の<行値述語オペランド>を,それぞれ,X,Y及びZとする。 

3) “X NOT BETWEEN SYMMETRIC Y AND Z”は,“NOT ( X BETWEEN SYMMETRIC Y AND Z )”と

等価とする。 

4) “X BETWEEN SYMMETRIC Y AND Z”は,“(( X BETWEEN ASYMMETRIC Y AND Z ) OR ( X 

BETWEEN ASYMMETRIC Z AND Y ))”と等価とする。 

5) “X NOT BETWEEN ASYMMETRIC Y AND Z”は,“NOT ( X BETWEEN ASYMMETRIC Y AND Z )”

と等価とする。 

6) “X BETWEEN ASYMMETRIC Y AND Z”は,“X >= Y AND X <= Z”と等価とする。 

7) この細分箇条で規定する全ての構文上の変換の結果に対して,“8.2 <比較述語>”の適合性規則を適

用する。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能T461“対称的BETWEEN述語”なしでは,適合するSQL言語は,SYMMETRIC又は

ASYMMETRICを単純に含む<BETWEEN述語>を含んではならない。 

注記257 <BETWEEN述語>は,順序付け操作なので,“9.14 順序付け操作”の適合性規則も適用

する。 

8.4 

<IN述語> 

機能 

<IN述語> (<in predicate>) は,限定比較を指定する。 

形式 

<IN述語> ::= 

  <行値述語オペランド> <IN述語部分2> 

356 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<IN述語部分2> ::= 

  [ NOT ] IN <IN述語値> 

<IN述語値> ::= 

  <表副問合せ> 

| <左括弧> <IN値リスト> <右括弧> 

<IN値リスト> ::= 

  <行値式> [ { <コンマ> <行値式> }... ] 

構文規則 

1) <IN値リスト>が単一の<行値式>から成るならば,その<行値式>は,<スカラ副問合せ>であっては

ならない。 

注記258 この構文規則は,<IN述語値>が<表副問合せ>として解釈されても,<スカラ副問合せ>と

して解釈されてもよいという曖昧さを解決する。<IN述語値>が<表副問合せ>として解

釈されるという解釈を採用することによって,その曖昧さが解決される。 

2) <IN値リスト>をIVLとする。 

( IVL ) 

は,次の<表値構成子>と等価とする。 

( VALUES IVL ) 

3) <行値述語オペランド>をRVCとし,<IN述語値>をIPVとする。 

4) 式 

RVC NOT IN IPV 

は,次の式と等価とする。 

NOT ( RVC IN IPV ) 

5) 式 

RVC IN IPV 

は,次の式と等価とする。 

RVC = ANY IPV 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能F561“完全な値式”なしでは,適合するSQL言語は,<IN値リスト>に直に含まれる,<値指定

>ではない<行値式>を含んではならない。 

注記259 <IN述語>は,等値性演算なので,“9.11 等値性演算”の適合性規則も適用する。 

8.5 

<LIKE述語> 

機能 

<LIKE述語> (<like predicate>) は,パターン一致比較を指定する。 

形式 

<LIKE述語> ::= 

  <文字LIKE述語> 

357 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <オクテットLIKE述語> 

<文字LIKE述語> ::= 

  <行値述語オペランド> <文字LIKE述語部分2> 

<文字LIKE述語部分2> ::= 

  [ NOT ] LIKE <文字パターン> [ ESCAPE <エスケープ文字> ] 

<文字パターン> ::= 

  <文字値式> 

<エスケープ文字> ::= 

  <文字値式> 

<オクテットLIKE述語> ::= 

  <行値述語オペランド> <オクテットLIKE述語部分2> 

<オクテットLIKE述語部分2> ::= 

  [ NOT ] LIKE <オクテットパターン> [ ESCAPE <エスケープオクテット> ] 

<オクテットパターン> ::= 

  <2進オクテット値式> 

<エスケープオクテット> ::= 

  <2進オクテット値式> 

構文規則 

1) <文字LIKE述語>に直に含まれる<行値述語オペランド>は,<共通値式> CVEである<行値構成子述

語オペランド>でなければならない。CVE,<文字パターン>及び<エスケープ文字>の宣言型は,文

字列でなければならない。CVEと,<文字パターン>と,<エスケープ文字>とは,比較可能でなけれ

ばならない。 

2) <オクテットLIKE述語>に直に含まれる<行値述語オペランド>は,<共通値式> OVEである<行値構

成子述語オペランド>でなければならない。OVE,<オクテットパターン>及び<エスケープオクテッ

ト>の宣言型は,2進オクテット列でなければならない。 

3) <文字LIKE述語>が指定されるならば,次による。 

a) CVEの<文字値式>をMCとし,<文字パターン>の<文字値式>をPCとし,<エスケープ文字>が

指定されるならば,<エスケープ文字>の<文字値式>をECとする。 

b) MC NOT LIKE PC 

は,次の指定と等価とする。 

NOT (MC LIKE PC) 

c) MC NOT LIKE PC ESCAPE EC 

は,次の指定と等価とする。 

NOT (MC LIKE PC ESCAPE EC) 

d) CVE,PC,及び(指定されるならば,)ECの宣言型の集合をTYPESETとして,“9.15 照合順決

定”の構文規則を適用する。これらの構文規則の適用によって戻されるCOLLを<LIKE述語>の

ために用いる照合順とする。 

<LIKE述語>のための照合順として,どの照合順を用いることができるかは,処理系定義とす

る。 

4) <オクテットLIKE述語>が指定されるならば,次による。 

358 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) OVEの<2進オクテット値式>をMBとし,<オクテットパターン>の<2進オクテット値式>をPB

とし,<エスケープオクテット>が指定されるならば,<エスケープオクテット>の<2進オクテット

値式>をEBとする。 

b) MB NOT LIKE PB 

は,次の指定と等価とする。 

NOT (MB LIKE PB) 

c) MB NOT LIKE PB ESCAPE EB 

は,次の指定と等価とする。 

NOT (MB LIKE PB ESCAPE EB) 

アクセス規則 

なし。 

一般規則 

1) MCの値をMCVとし,PCの値をPCVとする。ECが指定されるならば,その値をECVとする。 

2) MBの値をMBVとし,PBの値をPBVとする。EBが指定されるならば,その値をEBVとする。 

3) <文字LIKE述語>が指定されるならば,次による。 

a) 場合: 

i) 

ESCAPEが指定されないで,かつ,MCV及びPCVのうちの少なくとも一つがナル値ならば,

次の指定の結果は,不定 (Unknown) とする。 

MC LIKE PC 

ii) ESCAPEが指定され,かつ,MCV,PCV及びECVのうちの少なくとも一つがナル値ならば,

次の指定の結果は,不定 とする。 

MC LIKE PC ESCAPE EC 

注記260 MCV,PCV,及び(あるならば,)ECVのどれも,ナル値でないならば,結果は,真 

又は偽 のいずれかである。 

b) 場合: 

i) 

<エスケープ文字>が指定されるならば,次による。 

1) ECVの文字単位での長さが1と等しくないならば,例外条件:データ例外 (data exception) − 

エスケープ文字が正しくない (invalid escape character) が引き起こされる。 

2) 各部分文字列の長さが1又は2で,長さ1のどの部分文字列もエスケープ文字ECVではな

く,かつ,長さ2の各部分文字列がエスケープ文字ECV,及びそれに続くエスケープ文字

ECV,<下線文字>文字又は<パーセント>文字のいずれかであるような部分文字列への,文字

列PCVの分割が存在しないならば,例外条件:データ例外 − エスケープ並びが正しくない 

(invalid escape sequence) が引き起こされる。 

そのようなPCVの分割が存在するならば,その分割中で,長さ2の各部分文字列は,その

部分文字列の2番目の文字の単一の実現値を表現し,単一文字指定子 (single character 

specifier) と呼ぶ。 

<下線文字>文字である長さ1の各部分文字列は,任意文字指定子 (arbitrary character 

specifier) を表現する。<パーセント>文字である長さ1の各部分文字列は,任意データ列指定

子 (arbitrary string specifier) を表現する。<下線文字>文字でも<パーセント>文字でもない長

さ1の各部分文字列は,それが含む文字を表現し,単一文字指定子 と呼ぶ。 

359 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) <エスケープ文字>が指定されないならば,PCV中の各<下線文字>文字は,任意文字指定子を表

現し,PCV中の各<パーセント>文字は,任意データ列指定子を表現し,<下線文字>文字でも<

パーセント>文字でもないPCV中の各文字は,それ自体を表現し,単一文字指定子 と呼ぶ。 

c) 文字列PCVは,PCVの各部分がただ一つの部分データ列指定子の部分であるような,最小の個

数の部分データ列指定子の並びとする。部分データ列指定子 (substring specifier) は,任意文字指

定子,任意データ列指定子,又は単一文字指定子の任意の並びのいずれかとする。 

d) 場合: 

i) 

MCV及びPCVの両方の長さが0ならば,次の指定の結果は,真 とする。 

MC LIKE PC 

ii) <述語> 

MC LIKE PC 

は,次のような部分文字列へのMCVの分割が存在するならば,真 とする。 

1) MCVの部分文字列が,MCVの0個以上の連続する文字の並びで,かつ,MCVの各文字が,

ただ一つの部分文字列の部分である。 

2) PCVのi番目の部分データ列指定子が任意文字指定子ならば,MCVのi番目の部分文字列

が,任意の単一文字である。 

3) PCVのi番目の部分データ列指定子が任意データ列指定子ならば,MCVのi番目の部分文字

列が,0個以上の文字の任意の並びである。 

4) PCVのi番目の部分データ列指定子が単一文字指定子ならば,<LIKE述語>の照合順に従っ

て,単一文字指定子によって表現される文字と等しいただ一つの文字を,MCVのi番目の部

分文字列が含む。 

5) MCVの部分文字列の個数が,PCVの部分データ列指定子の個数と等しい。 

iii) そうでなければ,次の指定の結果は,偽 とする。 

MC LIKE PC 

4) <オクテットLIKE述語>が指定されるならば,次による。 

a) 場合: 

i) 

ESCAPEが指定されないで,かつ,MBV及びPBVのうちの少なくとも一つがナル値ならば,

次の指定の結果は,不定 (Unknown) とする。 

MB LIKE PB 

ii) ESCAPEが指定され,かつ,MBV,PBV及びEBVのうちの少なくとも一つがナル値ならば,

次の指定の結果は,不定 とする。 

MB LIKE PB ESCAPE EB 

注記261 MBV,PBV,及び(あるならば,)EBVのどれも,ナル値でないならば,結果は,真 

又は偽 のいずれかである。 

b) <オクテットLIKE述語>の文脈中の<パーセント>は,SQL̲TEXT文字集合中の<パーセント>の符

号化と同じビットパターンをもつ。 

c) <オクテットLIKE述語>の文脈中の<下線文字>は,SQL̲TEXT文字集合中の<下線文字>の符号化

と同じビットパターンをもつ。 

d) 場合: 

i) 

<エスケープオクテット>が指定されるならば,次による。 

360 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) EBVのオクテット単位での長さが1と等しくないならば,例外条件:データ例外 − エスケ

ープオクテットが正しくない (invalid escape octet) が引き起こされる。 

2) 各部分データ列の長さが1又は2で,長さ1のどの部分データ列もエスケープオクテット

EBVではなく,かつ,長さ2の各部分データ列がエスケープオクテットEBV,及びそれに続

くエスケープオクテットEBV,<下線文字>オクテット又は<パーセント>オクテットのいずれ

かであるような部分データ列への,データ列PBVの分割が存在しないならば,例外条件:デ

ータ例外 − エスケープ並びが正しくない が引き起こされる。 

そのようなPBVの分割が存在するならば,その分割中で,長さ2の各部分データ列は,そ

の部分データ列の2番目のオクテットの単一の実現値を表現する。<下線文字>オクテットで

ある長さ1の各部分データ列は,任意オクテット指定子 (arbitrary octet specifier) を表現する。

<パーセント>オクテットである長さ1の各部分データ列は,任意データ列指定子 を表現す

る。<下線文字>オクテットでも<パーセント>オクテットでもない長さ1の各部分データ列は,

それが含むオクテットを表現する。 

ii) <エスケープオクテット>が指定されないならば,PBV中の各<下線文字>オクテットは,任意オ

クテット指定子を表現し,PBV中の各<パーセント>オクテットは,任意データ列指定子を表現

し,<下線文字>オクテットでも<パーセント>オクテットでもないPBV中の各オクテットは,

それ自体を表現する。 

e) データ列PBVは,PBVの各部分がただ一つの部分データ列指定子の部分であるような,最小の

個数の部分データ列指定子の並びとする。部分データ列指定子 (substring specifier) は,任意オク

テット指定子,任意データ列指定子,又は任意オクテット指定子若しくは任意データ列指定子以

外のオクテットの任意の並びのいずれかとする。 

f) 

場合: 

i) 

MBV及びPBVの両方の長さが0ならば,次の指定の結果は,真 とする。 

MB LIKE PB 

ii) <述語> 

MB LIKE PB 

は,次のような部分データ列へのMBVの分割が存在するならば,真 とする。 

1) MBVの部分データ列が,MBVの0個以上の連続するオクテットの並びで,かつ,MBVの各

オクテットが,ただ一つの部分データ列の部分である。 

2) PBVのi番目の部分データ列指定子が任意オクテット指定子ならば,MBVのi番目の部分デ

ータ列が,任意の単一オクテットである。 

3) PBVのi番目の部分データ列指定子が任意データ列指定子ならば,MBVのi番目の部分デー

タ列が,0個以上のオクテットの任意の並びである。 

4) PBVのi番目の部分データ列指定子が任意オクテット指定子でも任意データ列指定子でもな

いならば,部分データ列指定子の長さ及びビットパターンと同じ長さ及びビットパターンを,

MBVのi番目の部分データ列がもつ。 

5) MBVの部分データ列の個数が,PBVの部分データ列指定子の個数と等しい。 

iii) そうでなければ,次の指定の結果は,偽 とする。 

MB LIKE PB 

適合性規則 

361 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 機能T042“拡張LOBデータ型提供”又は機能T022“BINARY及びVARBINARYデータ型の高度

提供”なしでは,適合するSQL言語は,<オクテットLIKE述語>を含んではならない。 

2) 機能F281“LIKE強化”なしでは,適合するSQL言語は,<文字LIKE述語>に直に含まれる<行値

述語オペランド>に単純に含まれる,列参照でない<共通値式>を含んではならない。 

3) 機能F281“LIKE強化”なしでは,適合するSQL言語は,<値指定>でない<文字パターン>を含んで

はならない。 

4) 機能F281“LIKE強化”なしでは,適合するSQL言語は,<値指定>でない<エスケープ文字>を含ん

ではならない。 

5) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中で,<LIKE述語>に単純に含

まれる<文字値式>は,宣言型がCHARACTER LARGE OBJECTであってはならない。 

6) 機能F421“各国文字”及び機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中

で,<LIKE述語>に単純に含まれる<文字値式>は,宣言型がNATIONAL CHARACTER LARGE 

OBJECTであってはならない。 

7) 機能F421“各国文字”なしでは,適合するSQL言語中で,<LIKE述語>に単純に含まれる<文字値

式>は,宣言型がNATIONAL CHARACTER又はNATIONAL CHARACTER VARYINGであってはな

らない。 

8.6 

<SIMILAR述語> 

機能 

<SIMILAR述語> (<similar predicate>) は,正規表現を用いて文字列の類似を指定する。 

形式 

<SIMILAR述語> ::= 

  <行値述語オペランド> <SIMILAR述語部分2> 

<SIMILAR述語部分2> ::= 

  [ NOT ] SIMILAR TO <類似パターン> [ ESCAPE <エスケープ文字> ] 

<類似パターン> ::= 

  <文字値式> 

<正規表現> ::= 

  <正規表現項> 

| <正規表現> <垂直棒> <正規表現項> 

<正規表現項> ::= 

  <正規表現因子> 

| <正規表現項> <正規表現因子> 

<正規表現因子> ::= 

  <正規表現一次子> 

| <正規表現一次子> <アスタリスク> 

| <正規表現一次子> <正符号> 

| <正規表現一次子> <疑問符> 

| <正規表現一次子> <繰返し因子> 

<繰返し因子> ::= 

  <左波括弧> <低値> [ <上端限界> ] <右波括弧> 

362 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<上端限界> ::= 

  <コンマ> [ <高値> ] 

<低値> ::= 

  <符号なし整数> 

<高値> ::= 

  <符号なし整数> 

<正規表現一次子> ::= 

  <文字指定子> 

| <パーセント> 

| <正規表現文字集合> 

| <左括弧> <正規表現> <右括弧> 

<文字指定子> ::= 

  <非エスケープシーケンス文字> 

| <エスケープシーケンス文字> 

<非エスケープシーケンス文字> ::= 

  !! 構文規則参照。 

<エスケープシーケンス文字> ::= 

  !! 構文規則参照。 

<正規表現文字集合> ::= 

  <下線文字> 

| <左角括弧> <文字列挙>... <右角括弧> 

| <左角括弧> <サーカムフレックス> <文字列挙>... <右角括弧> 

| <左角括弧> <含む文字列挙>... 

      <サーカムフレックス> <除く文字列挙>... <右角括弧> 

<含む文字列挙> ::= 

  <文字列挙> 

<除く文字列挙> ::= 

  <文字列挙> 

<文字列挙> ::= 

  <文字指定子> 

| <文字指定子> <負符号> <文字指定子> 

| <左角括弧> <コロン> <正規表現文字集合識別子> <コロン> <右角括弧> 

<正規表現文字集合識別子> ::= 

  <識別子> 

構文規則 

1) <行値述語オペランド>は,<共通値式> CVEである<行値構成子述語オペランド>でなければならな

い。CVE,<類似パターン>及び<エスケープ文字>の宣言型は,文字列でなければならない。CVEと,

<類似パターン>と,<エスケープ文字>とは,比較可能でなければならない。 

注記262 上記の規則は,順々に,<文字値式>を直に含む<データ列値式>をCVEが直に含むこと

を意味する。言い換えれば,CVEは,必然的に<文字値式>である。 

363 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) CVEの<文字値式>をCMとし,<類似パターン>をSPとする。<エスケープ文字> ECが指定される

ならば,次による。 

CM NOT SIMILAR TO SP ESCAPE EC 

は,次の指定と等価とする。 

NOT ( CM SIMILAR TO SP ESCAPE EC ) 

<エスケープ文字> ECが指定されないならば,次による。 

CM NOT SIMILAR TO SP 

は,次の指定と等価とする。 

NOT ( CM SIMILAR TO SP ) 

3) <正規表現文字集合識別子>である<識別子>の値は,ALPHA,UPPER,LOWER,DIGIT,ALNUM,

SPACE又はWHITESPACEのいずれかでなければならない。 

4) CVE,SP,及び(あるならば,)ECの宣言型の集合をTYPESETとして,“9.15 照合順決定”の構

文規則を適用する。これらの構文規則の適用によって戻されるCOLLを<SIMILAR述語>のために

用いる照合順とする。 

<SIMILAR述語>のための照合順として,どの照合順を用いることができるかは,処理系定義とす

る。 

5) <非エスケープシーケンス文字>は,<類似パターン>の文字集合からの文字で,<左角括弧>,<右角

括弧>,<左括弧>,<右括弧>,<垂直棒>,<サーカムフレックス>,<負符号>,<正符号>,<アスタリ

スク>,<下線文字>,<パーセント>,<疑問符>,<左波括弧>,又は<エスケープ文字>の<文字値式>

の結果によって指定される文字ではない任意の単一文字とする。<非エスケープシーケンス文字>で

ある<文字指定子>は,それ自体を表現する。 

6) <エスケープシーケンス文字>は,二つの文字の並びとする。その並びは,<エスケープ文字>の<文

字値式>の結果によって指定される文字,及びそれに続く<左角括弧>,<右角括弧>,<左括弧>,<右

括弧>,<垂直棒>,<サーカムフレックス>,<負符号>,<正符号>,<アスタリスク>,<下線文字>,

<パーセント>,<疑問符>,<左波括弧>,又は<エスケープ文字>の<文字値式>の結果によって指定さ

れる文字である2番目の文字から成る。<エスケープシーケンス文字>である<文字指定子>は,それ

の2番目の文字を表現する。 

7) <低値>の値は,正の整数でなければならない。<高値>の値は,<低値>の値以上でなければならない。 

アクセス規則 

なし。 

一般規則 

1) CVEの<文字値式>の結果をMCVとし,<類似パターン>の<文字値式>の結果をPCVとする。ECが

指定されるならば,それの値をECVとする。 

2) <類似パターン>の<文字値式>の結果が長さ0の文字列でなく,かつ,<正規表現>の形式をもたない

ならば,例外条件:データ例外 (data exception) − 正規表現が正しくない (invalid regular expression) 

が引き起こされる。 

3) <エスケープ文字>が指定されるならば,次による。 

a) ECVの文字単位での長さが1と等しくないならば,例外条件:データ例外 − エスケープ文字が

正しくない (invalid escape character) が引き起こされる。 

b) ECVが,<左角括弧>,<右角括弧>,<左括弧>,<右括弧>,<垂直棒>,<サーカムフレックス>,

364 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<負符号>,<正符号>,<アスタリスク>,<下線文字>,<パーセント>,<疑問符>又は<左波括弧>

のうちの一つで,かつ,<エスケープシーケンス文字>中以外の<正規表現>中にECVが現れるな

らば,例外条件:データ例外 − エスケープ文字の用い方が正しくない (invalid use of escape 

character) が引き起こされる。 

c) ECVが<コロン>で,かつ,<正規表現>が<正規表現文字集合識別子>を含むならば,例外条件:デ

ータ例外 − エスケープ文字衝突 (escape character conflict) が引き起こされる。 

4) 場合: 

a) ESCAPEが指定されないとき,MCV及びPCVのうちの少なくとも一つがナル値ならば,次の指

定の結果は,不定 (Unknown) とする。 

CM SIMILAR TO SP 

b) ESCAPEが指定されるとき,MCV,PCV及びECVのうちの少なくとも一つがナル値ならば,次

の指定の結果は,不定 とする。 

CM SIMILAR TO SP ESCAPE EC 

注記263 MCV,PCV,及び(あるならば,)ECVのどれも,ナル値でないならば,結果は,真 (True) 

又は偽 (False) のいずれかである。 

5) <文字列挙>中の文字の集合は,次のとおりに定義する。 

a) “<文字指定子> <負符号> <文字指定子>”という形式で列挙が指定されるならば,パターンPCV

の照合順に従って,左の<文字指定子>によって表現される文字以上として照合され,かつ,右の

<文字指定子>によって表現される文字以下として照合される全ての文字の集合。 

b) そうでなければ,<文字列挙>中の<文字指定子>が表現する文字。 

6) <繰返し因子> RFに含まれる<低値>の値をLVとする。 

場合: 

a) RFが<上端限界>を含まないならば,LVをHVとする。 

b) <高値>を含む<上端限界>をRFが含むならば,<高値>の値をHVとする。 

c) そうでなければ,CVEの長さ又は最大長をHVとする。 

7) <類似パターン>の<文字値式>の結果をRとする。<類似パターン>の正規言語L(R) は,文字列の

(無限かもしれない)集合とする。それは,次の規則によって,整形式の<正規表現> Q,Q1及びQ2

に対して,再帰的に定義される。 

a) L( Q1 <垂直棒> Q2 ) 

は,L(Q1) とL(Q2) との和集合とする。 

b) L( Q <アスタリスク> ) 

は,L(Q) からの0個以上の文字列の連結によって構成することができる全ての文字列から成る集

合とする。 

c) L( Q <正符号> ) 

は,L(Q) からの1個以上の文字列の連結によって構成することができる全ての文字列から成る集

合とする。 

d) L( Q <繰返し因子> ) 

は,L(Q) からのNS個,LV ≤ NS ≤ HV,の文字列の連結によって構成することができる全ての文

字列から成る集合とする。 

e) L( <文字指定子> ) 

365 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

は,<文字指定子>が表現する文字から成る長さ1の単一の文字列を含む集合とする。 

f) 

L( <パーセント> ) 

は,パターンPCVの文字集合からの任意の長さ(0以上)の全ての文字列から成る集合とする。 

g) L( Q <疑問符> ) 

は,L(Q) からの,正確に0個又は1個の文字列の連結によって構成することができる全ての文字

列から成る集合とする。 

h) L( <左括弧> Q <右括弧> ) 

は,L(Q) と等しい。 

i) 

L( <下線文字> ) 

は,パターンPCVの文字集合からの長さ1の全ての文字列から成る集合とする。 

j) 

L( <左角括弧> <文字列挙> <右角括弧> ) 

は,<文字列挙>中の文字の集合からの長さ1の全ての文字列から成る集合とする。 

k) L( <左角括弧> <サーカムフレックス> <文字列挙> <右角括弧> ) 

は,パターンPCVの文字集合からの文字で,<文字列挙>中の文字の集合中に含まれない文字であ

る長さ1の全ての文字列から成る集合とする。 

l) 

L( <左角括弧> <含む文字列挙> <サーカムフレックス> <除く文字列挙> <右角括弧> ) 

は,<含む文字列挙>中の文字の集合からの長さ1の全ての文字列から,<除く文字列挙>中の文字

の集合からの長さ1のそれらの文字列を除いた集合とする。 

m) L( <左角括弧> <コロン> ALPHA <コロン> <右角括弧> ) 

は,<単純ラテン文字>である長さ1の全ての文字列から成る集合とする。 

n) L( <左角括弧> <コロン> UPPER <コロン> <右角括弧> ) 

は,<単純ラテン大文字>である長さ1の全ての文字列から成る集合とする。 

o) L( <左角括弧> <コロン> LOWER <コロン> <右角括弧> ) 

は,<単純ラテン小文字>である長さ1の全ての文字列から成る集合とする。 

p) L( <左角括弧> <コロン> DIGIT <コロン> <右角括弧> ) 

は,<数字>である長さ1の全ての文字列から成る集合とする。 

q) L( <左角括弧> <コロン> SPACE <コロン> <右角括弧> ) 

は,<空白>文字である長さ1の全ての文字列から成る集合とする。 

r) L( <左角括弧> <コロン> WHITESPACE <コロン> <右角括弧> ) 

は,空白類の文字である長さ1の全ての文字列から成る集合とする。 

注記264 “空白類”は,“3.1.6 第2部で規定する定義”で定義している。 

s) L( <左角括弧> <コロン> ALNUM <コロン> <右角括弧> ) 

は,<単純ラテン文字>又は<数字>である長さ1の全ての文字列から成る集合とする。 

t) 

L( Q1 || Q2 ) 

は,L(Q1) の一つの要素と,L(Q2) の一つの要素との連結によって構成することができる全ての

文字列から成る集合とする。 

u) L( Q ) 

は,Qが空の正規表現ならば,長さ0の文字列から成る集合とする。 

8) 次の<SIMILAR述語>は,<SIMILAR述語>の照合順に従って,MCVと等しいような,L(R) の要素

が少なくとも一つ存在するならば,真 とする。そうでなければ,偽 とする。 

366 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

CM SIMILAR TO SP 

注記265 <SIMILAR述語>は,等価な形式のLIKE述語と定義が異なる。特に,パターンの最後の

空白,及び照合順の扱いが異なる。 

適合性規則 

1) 機能T141“SIMILAR述語”なしでは,適合するSQL言語は,<SIMILAR述語>を含んではならな

い。 

2) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中で,<SIMILAR述語>に単純

に含まれる<文字値式>は,宣言型がCHARACTER LARGE OBJECTであってはならない。 

8.7 

<LIKE̲REGEX述語> 

機能 

<LIKE̲REGEX述語> (<regex like predicate>) は,XQuery正規表現を用いたパターン一致比較を指定する。 

形式 

<LIKE̲REGEX述語> ::= 

  <行値述語オペランド> <LIKE̲REGEX述語部分2> 

<LIKE̲REGEX述語部分2> ::= 

[ NOT ] LIKE̲REGEX <XQueryパターン> [ FLAG <XQueryオプションフラグ> ] 

構文規則 

1) <LIKE̲REGEX述語>に直に含まれる<行値述語オペランド>は,宣言型が文字列である<共通値式> 

CVEである<行値構成子述語オペランド>でなければならない。 

2) <XQueryオプションフラグ>が指定されないならば,長さ0の文字列が暗に想定される。 

3) <XQueryパターン>をPATとし,暗に想定されるか又は陽に指定される<XQueryオプションフラグ

>をFLとする。 

CVE NOT LIKE̲REGEX PAT FLAG FL 

は,次の指定と等価とする。 

NOT ( CVE LIKE̲REGEX PAT FLAG FL ) 

アクセス規則 

なし。 

一般規則 

1) 次の<述語> 

CVE LIKE̲REGEX PAT FLAG FL 

の値は,次による。 

場合: 

a) CVE,PAT及びFLのうちの少なくとも一つがナル値ならば,不定 (Unknown) とする。 

b) CVEをSTRINGとして,PATをPATTERNとして,1をPOSITIONとして,CHARACTERSを

UNITSとして,FLをFLAGとして,“9.18 XQuery正規表現照合” の一般規則を適用する。これ

らの一般規則の適用によって戻されるLISTをLOMVとする。 

c) LOMV中の一致ベクトルのリストが空でないならば,真 (True) とする。 

d) そうでなければ,偽 (False) とする。 

適合性規則 

1) 機能F841“LIKE̲REGEX述語”なしでは,適合するSQL言語は,<LIKE̲REGEX述語>を含んでは

background image

367 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ならない。 

2) 機能F847“値式正規表現”なしでは,適合するSQL言語中で,<XQueryパターン>及び<XQueryオ

プションフラグ>は,<値指定>でなければならない。 

8.8 

<NULL述語> 

機能 

<NULL述語> (<null predicate>) は,ナル値のテストを指定する。 

形式 

<NULL述語> ::= 

  <行値述語オペランド> <NULL述語部分2> 

<NULL述語部分2> ::= 

  IS [ NOT ] NULL 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <行値述語オペランド>をRとし,Rの値をVとする。 

2) 場合: 

a) Vがナル値ならば,“R IS NULL”の値は,真 (True) とし,“R IS NOT NULL”の値は,偽 (False) 

とする。 

b) そうでなければ,次による。 

i) 

“R IS NULL”の値は,次による。 

場合: 

1) Vの全てのフィールドの値がナル値ならば,真 とする。 

2) そうでなければ,偽 とする。 

ii) “R IS NOT NULL”の値は,次による。 

場合: 

1) Vのどのフィールドの値も,ナル値でないならば,真 とする。 

2) そうでなければ,偽 とする。 

注記266 全てのRに対して,“R IS NOT NULL”が“NOT R IS NULL”と同じ結果をもつことは,

Rが次数1であることと同値とする。表14“<NULL述語>の意味”は,この振る舞いを

規定する。 

表14−<NULL述語>の意味 

式 

R IS NULL 

R IS NOT NULL 

NOT R IS NULL 

NOT R IS NOT NULL 

次数1:ナル 

真 

偽 

偽 

真 

次数1:ナルでない 

偽 

真 

真 

偽 

次数>1:全てナル 

真 

偽 

偽 

真 

次数>1:幾つかナル 

偽 

偽 

真 

真 

次数>1:どれもナルでない 

偽 

真 

真 

偽 

368 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

なし。 

8.9 

<限定比較述語> 

機能 

<限定比較述語> (<quantified comparison predicate>) は,限定比較を指定する。 

形式 

<限定比較述語> ::= 

  <行値述語オペランド> <限定比較述語部分2> 

<限定比較述語部分2> ::= 

  <比較演算子> <限定子> <表副問合せ> 

<限定子> ::= 

  <ALL> 

| <SOME> 

<ALL> ::= 

  ALL 

<SOME> ::= 

  SOME 

| ANY 

構文規則 

1) <行値述語オペランド>の宣言型及び<表副問合せ>の行型を宣言型としてもつ<行値述語オペランド

>を,それぞれ,RV1及びRV2とする。“8.2 比較述語”の構文規則及び適合性規則を次の指定に適

用する。 

RV1 <比較演算子> RV2 

アクセス規則 

なし。 

一般規則 

1) <行値述語オペランド>の結果をRとし,<表副問合せ>の結果をTとする。 

2) “R <比較演算子> <限定子> T”の結果は,T中の全ての行RTへの,暗に想定される<比較述語>“R 

<比較演算子> RT”の適用によって導出される。 

場合: 

a) Tが空か,又はT中の全ての行RTに対して,暗に想定される<比較述語>が真 (True) ならば,“R 

<比較演算子> <ALL> T”は,真 とする。 

b) T中の少なくとも一つの行RTに対して,暗に想定される<比較述語>が偽 (False) ならば,“R <

比較演算子> <ALL> T”は,偽 とする。 

c) T中の少なくとも一つの行RTに対して,暗に想定される<比較述語>が真 ならば,“R <比較演算

子> <SOME> T”は,真 とする。 

d) Tが空か,又はT中の全ての行RTに対して,暗に想定される<比較述語>が偽 ならば,“R <比較

演算子> <SOME> T”は,偽 とする。 

e) “R <比較演算子> <限定子> T”が真 でも偽 でもないならば,不定 (Unknown) とする。 

適合性規則 

369 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

注記267 <等号演算子>又は<不等号演算子>が指定されるならば,<限定比較述語>は,等値性演算で

あり,“9.11 等値性演算”の適合性規則を適用する。そうでなければ,<限定比較述語>は,

順序付け操作であり,“9.14 順序付け操作”の適合性規則を適用する。 

8.10 <EXISTS述語> 

機能 

<EXISTS述語> (<exists predicate>) は,空でない集合のテストを指定する。 

形式 

<EXISTS述語> ::= 

  EXISTS <表副問合せ> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <表副問合せ>の結果をTとする。 

2) Tの基数が0よりも大きいならば,<EXISTS述語>の結果は,真 (True) とする。そうでなければ,

<EXISTS述語>の結果は,偽 (False) とする。 

適合性規則 

1) 機能T501“拡張EXISTS述語”なしでは,適合するSQL言語は,<表副問合せ>に直接含まれる<問

合せ指定>の<選択リスト>が<アスタリスク>又は単一の<導出列>のいずれかから成らない<表副問

合せ>を単純に含む<EXISTS述語>を含んではならない。 

8.11 <UNIQUE述語> 

機能 

<UNIQUE述語> (<unique predicate>) は,重複行の存在のテストを指定する。 

形式 

<UNIQUE述語> ::= 

  UNIQUE <表副問合せ> 

構文規則 

1) <表副問合せ>の結果中の利用者定義型の各列は,比較型をもたなければならない。 

2) <表副問合せ>の各列は,グループ化操作のオペランドとする。“9.12 グループ化操作”の構文規則

及び適合性規則を適用する。 

アクセス規則 

なし。 

一般規則 

1) <表副問合せ>の結果をTとする。 

2) 一方の行中の各列の値が,ナルでなく,かつ,他方の行中の対応する列の値と異ならないような,

二つの行がT中に存在しないならば,<UNIQUE述語>の結果は,真 (True) とする。そうでなけれ

ば,<UNIQUE述語>の結果は,偽 (False) とする。 

適合性規則 

370 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 機能F291“UNIQUE述語”なしでは,適合するSQL言語は,<UNIQUE述語>を含んではならない。 

注記268 “9.12 グループ化操作”の適合性規則も適用する。 

8.12 <NORMALIZED述語> 

機能 

<NORMALIZED述語> (<normalized predicate>) は,文字列値が正規化されているかどうかを決定する。 

形式 

<NORMALIZED述語> ::= 

  <行値述語オペランド> <NORMALIZED述語部分2> 

<NORMALIZED述語部分2> ::= 

  IS [ NOT ] [ <正規形式> ] NORMALIZED 

構文規則 

1) <行値述語オペランド>は,<共通値式> CVEである<行値構成子述語オペランド>でなければならな

い。CVEの宣言型は,文字列でなければならず,CVEの文字集合は,UTF8,UTF16又はUTF32で

なければならない。 

2) 場合: 

a) <正規形式>が指定されるならば,<正規形式>をNFとする。 

b) そうでなければ,NFCをNFとする。 

3) 式 

CVE IS NOT NF NORMALIZED 

は,次の指定と等価とする。 

NOT ( CVE IS NF NORMALIZED ) 

アクセス規則 

なし。 

一般規則 

1) CVE IS NF NORMALIZEDの結果は,次による。 

場合: 

a) CVEの値がナル値ならば,不定 (Unknown) とする。 

b) CVEの値が,[Unicode15] によって定義されるとおりの,NFによって指定される正規化形式であ

るならば,真 (True) とする。 

c) そうでなければ,偽 (False) とする。 

適合性規則 

1) 機能T061“UCS提供”なしでは,適合するSQL言語は,<NORMALIZED述語>を含んではならな

い。 

2) 機能F394“選択可能な正規形式指定”なしでは,適合するSQL言語は,<正規形式>を含んではな

らない。 

8.13 <MATCH述語> 

機能 

<MATCH述語> (<match predicate>) は,一致行のテストを指定する。 

形式 

<MATCH述語> ::= 

371 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <行値述語オペランド> <MATCH述語部分2> 

<MATCH述語部分2> ::= 

  MATCH [ UNIQUE ] [ SIMPLE | PARTIAL | FULL ] <表副問合せ> 

構文規則 

1) <行値述語オペランド>の行型と,<表副問合せ>の行型とは,比較可能でなければならない。 

2) <行値述語オペランド>の各フィールド及び<表副問合せ>の各列は,等値性演算のオペランドとす 

る。“9.11 等値性演算”の構文規則及び適合性規則を適用する。 

3) SIMPLE,PARTIAL及びFULLのどれも指定されないならば,SIMPLEが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) <行値述語オペランド>をRとする。 

2) SIMPLEが指定されるか又は暗に想定されるならば,次による。 

場合: 

a) Rがナル値ならば,<MATCH述語>は,真 (True) とする。 

b) そうでなければ,次による。 

i) 

R中のいずれかのフィールドの値がナル値ならば,<MATCH述語>は,真 とする。 

ii) R中のどのフィールドの値も,ナル値でないならば,次による。 

場合: 

1) UNIQUEが指定されないで,かつ,次の条件を満たすような,<表副問合せ>の行RTiが存在

するならば,<MATCH述語>は,真 とする。 

R = RTi 

2) UNIQUEが指定され,かつ,<表副問合せ>の評価の結果中に,次の条件を満たすようなただ

一つの行RTiが存在するならば,<MATCH述語>は,真 とする。 

R = RTi 

3) そうでなければ,<MATCH述語>は,偽 (False) とする。 

3) PARTIALが指定されるならば,次による。 

場合: 

a) Rがナル値ならば,<MATCH述語>は,真 とする。 

b) そうでなければ,次による。 

場合: 

i) 

R中の全てのフィールドの値がナル値ならば,<MATCH述語>は,真 とする。 

ii) そうでなければ,次による。 

場合: 

1) UNIQUEが指定されないで,かつ,Rのナルでない各値がRTi中のそれに対応する値と等し

いような,<表副問合せ>の行RTiが存在するならば,<MATCH述語>は,真 とする。 

2) UNIQUEが指定され,かつ,<表副問合せ>の評価の結果中に,Rのナルでない各値がRTi中

のそれに対応する値と等しいようなただ一つの行RTiが存在するならば,<MATCH述語>は,

真 とする。 

3) そうでなければ,<MATCH述語>は,偽 とする。 

372 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) FULLが指定されるならば,次による。 

場合: 

a) Rがナル値ならば,<MATCH述語>は,真 とする。 

b) そうでなければ,次による。 

場合: 

i) 

R中の全てのフィールドの値がナル値ならば,<MATCH述語>は,真 とする。 

ii) R中のどのフィールドの値も,ナル値でないならば,次による。 

場合: 

1) UNIQUEが指定されないで,かつ,次の条件を満たすような,<表副問合せ>の行RTiが存在

するならば,<MATCH述語>は,真 とする。 

R = RTi 

2) UNIQUEが指定され,かつ,<表副問合せ>の評価の結果中に,次の条件を満たすようなただ

一つの行RTiが存在するならば,<MATCH述語>は,真 とする。 

R = RTi 

3) そうでなければ,<MATCH述語>は,偽 とする。 

iii) そうでなければ,<MATCH述語>は,偽 とする。 

適合性規則 

1) 機能F741“参照MATCH型”なしでは,適合するSQL言語は,<MATCH述語>を含んではならな

い。 

注記269 “9.11 等値性演算”の適合性規則も適用する。 

8.14 <OVERLAPS述語> 

機能 

<OVERLAPS述語> (<overlaps predicate>) は,二つの日時期間の間の重なりのテストを指定する。 

形式 

<OVERLAPS述語> ::= 

  <OVERLAPS述語部分1> <OVERLAPS述語部分2> 

<OVERLAPS述語部分1> ::= 

  <行値述語オペランド1> 

<OVERLAPS述語部分2> ::= 

  OVERLAPS <行値述語オペランド2> 

<行値述語オペランド1> ::= 

  <行値述語オペランド> 

<行値述語オペランド2> ::= 

  <行値述語オペランド> 

構文規則 

1) <行値述語オペランド1>及び<行値述語オペランド2>の次数は,両方とも2でなければならない。 

2) <行値述語オペランド1>の1番目のフィールド及び<行値述語オペランド2>の1番目のフィールド

の宣言型は,両方とも日時データ型でなければならず,これらのデータ型は,比較可能でなければ

ならない。 

注記270 二つの日時は,それらが同じ<基本日時フィールド>をもつときに限り,比較可能である

373 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(“4.6.2 日時”参照)。 

3) 各<行値述語オペランド>の2番目のフィールドの宣言型は,日時データ型又はINTERVALでなけれ

ばならない。 

場合: 

a) 宣言型がINTERVALならば,宣言型の精度は,その時間隔を<行値述語オペランド>の1番目の列

の日時データ型に加算できるような精度でなければならない。 

b) 宣言型が日時データ型ならば,それは,<行値述語オペランド>の1番目の列の日時データ型と比

較可能でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <行値述語オペランド1>及び<行値述語オペランド2>のうちの少なくとも一つがナル値ならば,

<OVERLAPS述語>の結果は,不定 (Unknown) とし,この細分箇条の一般規則は,これ以上適用し

ない。 

2) <行値述語オペランド1>の1番目のフィールドの値をD1とし,<行値述語オペランド2>の1番目

のフィールドの値をD2とする。 

3) 場合: 

a) <行値述語オペランド1>の2番目のフィールドの最特定型が日時データ型ならば,<行値述語オペ

ランド1>の2番目のフィールドの値をE1とする。 

b) <行値述語オペランド1>の2番目のフィールドの最特定型がINTERVALならば,<行値述語オペ

ランド1>の2番目のフィールドの値をI1とする。E1 = D1 + I1とする。 

4) D1がナル値か,又はE1 < D1ならば,S1 = E1とし,T1 = D1とする。そうでなければ,S1 = D1 と

し,T1 = E1とする。 

5) 場合: 

a) <行値述語オペランド2>の2番目のフィールドの最特定型が日時データ型ならば,<行値述語オペ

ランド2>の2番目のフィールドの値をE2とする。 

b) <行値述語オペランド2>の2番目のフィールドの最特定型がINTERVALならば,<行値述語オペ

ランド2>の2番目のフィールドの値をI2とする。E2 = D2 + I2とする。 

6) D2がナル値か,又はE2 < D2ならば,S2 = E2 とし,T2 = D2とする。そうでなければ,S2 = D2 と

し,T2 = E2とする。 

7) <OVERLAPS述語>の結果は,次の式の結果とする。 

( S1 > S2 AND NOT ( S1 >= T2 AND T1 >= T2 ) ) 

    OR 

( S2 > S1 AND NOT ( S2 >= T1 AND T2 >= T1 ) ) 

    OR 

( S1 = S2 AND ( T1 <> T2 OR T1 = T2 ) ) 

適合性規則 

1) 機能F053“OVERLAPS述語”なしでは,適合するSQL言語は,<OVERLAPS述語>を含んではな

らない。 

8.15 <DISTINCT述語> 

374 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

機能 

<DISTINCT述語> (<distinct predicate>) は,二つの行値が異なるかどうかのテストを指定する。 

形式 

<DISTINCT述語> ::= 

  <行値述語オペランド3> <DISTINCT述語部分2> 

<DISTINCT述語部分2> ::= 

  IS [ NOT ] DISTINCT FROM <行値述語オペランド4> 

<行値述語オペランド3> ::= 

  <行値述語オペランド> 

<行値述語オペランド4> ::= 

  <行値述語オペランド> 

構文規則 

1) 二つの<行値述語オペランド>は,同じ次数でなければならない。 

2) 同じ順序位置をもつ値を,それぞれの値 (respective values) とする。 

3) 二つの<行値述語オペランド>のそれぞれの値の宣言型は,比較可能でなければならない。 

4) 1番目の<行値述語オペランド>をXとし,2番目の<行値述語オペランド>をYとする。 

5) 各<行値述語オペランド>の各フィールドは,等値性演算のオペランドとする。“9.11 等値性演算”

の構文規則及び適合性規則を適用する。 

6) <DISTINCT述語部分2>がNOTを直に含むならば,<DISTINCT述語>は,次の指定と等価とする。 

NOT ( X IS DISTINCT FROM Y ) 

アクセス規則 

なし。 

一般規則 

1) <行値述語オペランド3>の値をV1とし,<行値述語オペランド4>の値をV2とする。 

場合: 

a) V1及びV2の両方がナル値ならば,結果は,偽 (False) とする。 

b) V1がナル値で,かつ,V2がナル値でないか,又はV1がナル値でなく,かつ,V2がナル値なら

ば,結果は,真 (True) とする。 

c) そうでなければ,次による。 

i) 

V1及びV2が,既定義型又は参照型の値ならば,次による。 

場合: 

1) V1とV2とが等しくないならば,結果は,真 とする。 

2) そうでなければ,結果は,偽 とする。 

ii) V1及びV2が,比較形式がRELATIVE又はMAPである利用者定義型の値ならば,次による。 

場合: 

1) “8.2 <比較述語>”に従って,等値性に対してV1とV2とを比較した結果が不定 ならば,結

果が真 か又は偽 かは,処理系依存とする。 

2) V1がV2と等しくないならば,結果は,真 とする。 

3) そうでなければ,結果は,偽 とする。 

iii) V1及びV2が,比較形式がSTATEである利用者定義型の値ならば,次による。 

375 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

1) V1及びV2の最特定型が異なるならば,結果は,真 とする。 

2) V1中の属性Aの値と,V2中の属性Aの値とが異なるような,それらの共通な最特定型の属

性Aが存在するならば,結果は,真 とする。 

3) そうでなければ,結果は,偽 とする。 

iv) V1及びV2が行型の値ならば,次による。 

1) それぞれのフィールドのそれらの対の少なくとも一つが異なるならば,結果は,真 とする。 

2) そうでなければ,結果は,偽 とする。 

v) V1及びV2が配列型の値又は元型が配列型である個別型の値ならば,次による。 

場合: 

1) V1とV2とが同じ基数をもたないならば,結果は,真 とする。 

2) V1とV2とが同じ基数をもち,V1中の位置Pの配列要素がV2中の位置Pの配列要素と異な

るような,少なくとも一つの順序位置Pが存在するならば,結果は,真 とする。 

3) そうでなければ,結果は,偽 とする。 

vi) V1及びV2がマルチ集合型の値又は元型がマルチ集合型である個別型の値ならば,次による。 

場合: 

1) 値Vとは異ならないV1中の要素の個数が,値Vとは異ならないV2中の要素の個数と等し

くないような値Vが,ナル値も含めて,V1又はV2の要素型の中に存在するならば,結果は,

真 とする。 

2) そうでなければ,結果は,偽 とする。 

注記271 “異なる”は,“3.1.6 第2部で規定する定義”及び“4.1.5 異なることの特性”で定義し

ている。 

2) 二つの<行値述語オペランド>が異ならないならば,それらを,重複 (duplicates) という。多数の<行

値述語オペランド>が全て互いに重複ならば,一つを除く全てを,冗長な重複 (redundant duplicates) 

という。 

適合性規則 

1) 機能T151“DISTINCT述語”なしでは,適合するSQL言語は,<DISTINCT述語>を含んではならな

い。 

注記272 “9.11 等値性演算”の適合性規則も適用する。 

2) 機能T152“否定付きDISTINCT述語”なしでは,適合するSQL言語は,NOTを直に含む<DISTINCT

述語部分2>を含んではならない。 

8.16 <MEMBER述語> 

機能 

<MEMBER述語> (<member predicate>) は,値がマルチ集合の要素かどうかのテストを指定する。 

形式 

<MEMBER述語> ::= 

  <行値述語オペランド> <MEMBER述語部分2> 

<MEMBER述語部分2> ::= 

  [ NOT ] MEMBER [ OF ] <マルチ集合値式> 

構文規則 

376 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <マルチ集合値式>をMVEとし,MVEの宣言要素型をETとする。 

2) 場合: 

a) <行値述語オペランド>が,単一の<共通値式>又は<ブール値式> CVEである<行値構成子述語オペ

ランド>ならば,CVEをXとする。 

b) そうでなければ,<行値述語オペランド>をXとする。 

3) Xの宣言型は,ETと比較可能でなければならない。 

4) Xは,等値性演算のオペランドとする。“9.11 等値性演算”の構文規則及び適合性規則を適用する。 

5) <MEMBER述語部分2>がNOTを直に含むならば,<MEMBER述語>は,次の指定と等価とする。 

NOT ( X MEMBER OF MVE ) 

アクセス規則 

なし。 

一般規則 

1) Xの値をXVとし,MVEの値をMVとする。 

2) CARDINALITY (MVE) の結果をNとする。 

3) <MEMBER述語> 

XV MEMBER OF MVE 

は,次のとおりに評価される。 

場合: 

a) Nが0ならば,<MEMBER述語>は,偽 (False) とする。 

b) XV及びMVのうちの少なくとも一つがナル値ならば,<MEMBER述語>は,不定 (Unknown) と

する。 

c) そうでなければ,MVの要素の列挙をMEi,1 ≤ i ≤ Nとする。 

場合: 

i) 

いずれかのiに対して,CV = MEiならば,<MEMBER述語>は,真 (True) とする。 

ii) いずれかのiに対して,MEiがナル値ならば,<MEMBER述語>は,不定 とする。 

iii) そうでなければ,<MEMBER述語>は,偽 とする。 

適合性規則 

1) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<MEMBER述語>を含んではな

らない。 

注記273 “9.11 等値性演算”の適合性規則も適用する。 

8.17 <SUBMULTISET述語> 

機能 

<SUBMULTISET述語> (<submultiset predicate>) は,マルチ集合が別のマルチ集合の部分マルチ集合かど

うかのテストを指定する。 

形式 

<SUBMULTISET述語> ::= 

  <行値述語オペランド> <SUBMULTISET述語部分2> 

<SUBMULTISET述語部分2> ::= 

  [ NOT ] SUBMULTISET [ OF ] <マルチ集合値式> 

構文規則 

377 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <行値述語オペランド>は,単一の<共通値式> CVEである<行値構成子述語オペランド>でなければ

ならない。CVEの宣言型は,マルチ集合型,又は元型がマルチ集合型の個別型でなければならない。

CVEの宣言要素型をCVETとする。 

2) <マルチ集合値式>をMVEとする。MVEの宣言要素型をMVETとする。 

3) CVETは,MVETと比較可能でなければならない。 

4) CVE及びMVEは,マルチ集合要素グループ化操作のマルチ集合オペランドとする。“9.13 マルチ

集合要素グループ化操作”の構文規則及び適合性規則を適用する。 

5) <SUBMULTISET述語部分2>がNOTを直に含むならば,<SUBMULTISET述語>は,次の指定と等

価とする。 

NOT ( CVE SUBMULTISET OF MVE ) 

アクセス規則 

なし。 

一般規則 

1) CVEの値をCVとし,MVEの値をMVとする。 

2) CARDINALITY (CV) の結果をMとし,CARDINALITY (MV) の結果をNとする。 

3) <SUBMULTISET述語> 

CVE SUBMULTISET OF MVE 

は,次のとおりに評価される。 

場合: 

a) Mが0ならば,<SUBMULTISET述語>は,真 (True) とする。 

b) CV及びMVのうちの少なくとも一つがナル値ならば,<SUBMULTISET述語>は,不定 (Unknown) 

とする。 

c) そうでなければ,次による。 

場合: 

i) 

M > Nならば,<SUBMULTISET述語>は,偽 (False) とする。 

ii) 全てのi,1 ≤ i ≤ Mに対して,全てのj,1 ≤  j ≤ Mに対して,CEi = MEjであるようなCVの要

素の1 ≤ i ≤ Mに対する列挙CEi,及びMVの要素の1 ≤ j ≤ Nに対する列挙MEjが存在するな

らば,<SUBMULTISET述語>は,真 とする。 

iii) 全てのi,1 ≤ i ≤ Mに対して,CEi = MEiが真 又は不定 のいずれかであるようなCVの要素の

1 ≤ i ≤ Mに対する列挙CEi,及びMVの要素の1 ≤ i ≤ Nに対する列挙MEiが存在するならば,

<SUBMULTISET述語>は,不定 とする。 

iv) そうでなければ,<SUBMULTISET述語>は,偽 とする。 

適合性規則 

1) 機能S275“高度マルチ集合提供”なしでは,適合するSQL言語は,<SUBMULTISET述語>を含ん

ではならない。 

注記274 “9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

8.18 <SET述語> 

機能 

<SET述語> (<set predicate>) は,マルチ集合が集合(すなわち,どの重複も含まない)かどうかのテスト

を指定する。 

378 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<SET述語> ::= 

  <行値述語オペランド> <SET述語部分2> 

<SET述語部分2> ::= 

  IS [ NOT ] A SET 

構文規則 

1) <行値述語オペランド>は,単一の<共通値式> CVEである<行値構成子述語オペランド>でなければ

ならない。CVEの宣言型は,マルチ集合型,又は元型がマルチ集合型の個別型でなければならない。

CVEの要素型をCVETとする。 

2) CVEは,マルチ集合要素グループ化操作のオペランドとする。“9.13 マルチ集合要素グループ化操

作”の構文規則及び適合性規則を適用する。 

3) <SET述語部分2>がNOTを直に含むならば,<SET述語>は,次の指定と等価とする。 

NOT ( CVE IS A SET ) 

4) <SET述語部分2>がNOTを直に含まないならば,<SET述語>は,次の指定と等価とする。 

CARDINALITY ( CVE ) = CARDINALITY ( SET ( CVE ) ) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<SET述語>を含んではならな

い。 

注記275 “9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

8.19 <型述語> 

機能 

<型述語> (<type predicate>) は,型テストを指定する。 

形式 

<型述語> ::= 

  <行値述語オペランド> <型述語部分2> 

<型述語部分2> ::= 

  IS [ NOT ] OF <左括弧> <型リスト> <右括弧> 

<型リスト> ::= 

  <利用者定義型指定> 

      [ { <コンマ> <利用者定義型指定> } ... ] 

<利用者定義型指定> ::= 

  <包含的利用者定義型指定> 

| <排他的利用者定義型指定> 

<包含的利用者定義型指定> ::= 

  <パス解決利用者定義型名> 

<排他的利用者定義型指定> ::= 

379 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  ONLY <パス解決利用者定義型名> 

構文規則 

1) <型述語>に直に含まれる<行値述語オペランド>は,<共通値式> CVEである<行値構成子述語オペラ

ンド>でなければならない。 

2) CVEの宣言型は,利用者定義型でなければならない。 

3) <利用者定義型指定>に含まれる各<利用者定義型名> UDTNに対して,UDTNの暗に想定されるか

又は陽に指定されるスキーマ名によって識別されるスキーマは,UDTNの<被修飾識別子>と等価な

名前をもつ利用者定義型記述子を含んでいなければならない。 

4) <利用者定義型指定>に含まれる<利用者定義型名>によって指定される利用者定義型を,指定される

型 (specified type) という用語で参照する。<包含的利用者定義型指定>によって指定される型は,包

含的に指定される (inclusively specified)。<排他的利用者定義型指定>によって指定される型は,排他

的に指定される (exclusively specified)。 

5) <包含的利用者定義型指定>又は<排他的利用者定義型指定>によって指定される型をTとする。Tは,

CVEの宣言型の下位型でなければならない。 

注記276 “下位型族”という用語は,“4.7.3.4 下位型及び上位型”で定義している。T1がT2の下

位型族の要素ならば,T1の下位型族とT2の下位型族とは,型の同じ集合ということに

なる。 

6) <型リスト>をTLとする。 

7) 形式 

CVE IS NOT 

OF (TL) 

の<型述語>は,次の指定と等価とする。 

NOT ( CVE IS 

OF (TL) ) 

アクセス規則 

なし。 

一般規則 

1) <行値述語オペランド>を評価した結果をVとする。 

2) 排他的に指定される型か,又は包含的に指定される型の下位型のいずれかである全ての型から成る

集合をSTとする。 

3) <型述語>を評価した結果をTPRとする。 

場合: 

a) Vがナル値ならば,TPRは,不定 (Unknown) とする。 

b) Vの最特定型がSTの要素ならば,TPRは,真 (True) とする。 

c) そうでなければ,TPRは,偽 (False) とする。 

適合性規則 

1) 機能S151“型述語”なしでは,適合するSQL言語は,<型述語>を含んではならない。 

8.20 <期間述語> 

機能 

<期間述語> (<period predicate>) は,期間の間の関係を決定するためのテストを指定する。 

380 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<期間述語> ::= 

  <期間OVERLAPS述語> 

| <期間EQUALS述語> 

| <期間CONTAINS述語> 

| <期間PRECEDES述語> 

| <期間SUCCEEDS述語> 

| <期間IMMEDIATELY PRECEDES述語> 

| <期間IMMEDIATELY SUCCEEDS述語> 

<期間OVERLAPS述語> ::= 

  <期間述語オペランド1> <期間OVERLAPS述語部分2> 

<期間OVERLAPS述語部分2> ::= 

  OVERLAPS <期間述語オペランド2> 

<期間述語オペランド1> ::= 

  <期間述語オペランド> 

<期間述語オペランド2> ::= 

  <期間述語オペランド> 

<期間述語オペランド> ::= 

  <期間参照> 

| PERIOD <左括弧> <期間開始値> <コンマ> <期間終了値> <右括弧> 

<期間参照> ::= 

  <基本識別子鎖> 

<期間開始値> ::= 

  <日時値式> 

<期間終了値> ::= 

  <日時値式> 

<期間EQUALS述語> ::= 

  <期間述語オペランド1> <期間EQUALS述語部分2> 

<期間EQUALS述語部分2> ::= 

  EQUALS <期間述語オペランド2> 

<期間CONTAINS述語> ::= 

  <期間述語オペランド1> <期間CONTAINS述語部分2> 

<期間CONTAINS述語部分2> ::= 

  CONTAINS <期間又は時点述語オペランド> 

<期間又は時点述語オペランド> ::= 

  <期間述語オペランド> 

| <日時値式> 

<期間PRECEDES述語> ::= 

  <期間述語オペランド1> <期間PRECEDES述語部分2> 

<期間PRECEDES述語部分2> ::= 

381 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  PRECEDES <期間述語オペランド2> 

<期間SUCCEEDS述語> ::= 

<期間述語オペランド1> <期間SUCCEEDS述語部分2> 

<期間SUCCEEDS述語部分2> ::= 

  SUCCEEDS <期間述語オペランド2> 

<期間IMMEDIATELY PRECEDES述語> ::= 

  <期間述語オペランド1> <期間IMMEDIATELY PRECEDES述語部分2> 

<期間IMMEDIATELY PRECEDES述語部分2> ::= 

  IMMEDIATELY PRECEDES <期間述語オペランド2> 

<期間IMMEDIATELY SUCCEEDS述語> ::= 

  <期間述語オペランド1> <期間IMMEDIATELY SUCCEEDS述語部分2> 

<期間IMMEDIATELY SUCCEEDS述語部分2> ::= 

  IMMEDIATELY SUCCEEDS <期間述語オペランド2> 

構文規則 

1) PERIODを指定する各<期間述語オペランド>に対して,次による。 

a) <期間開始値>及び<期間終了値>の宣言型は,TIME WITH TIME ZONE又はTIME WITHOUT TIME 

ZONEであってはならない。 

b) そのような<期間述語オペランド>に直に含まれる<期間開始値>の宣言型は,それと同じ<期間述

語オペランド>に直に含まれる<期間終了値>の宣言型と同じでなければならない。 

2) <期間又は時点述語オペランド>に直に含まれる<日時値式>の宣言型は,TIME WITH TIME ZONE又

はTIME WITHOUT TIME ZONEであってはならない。 

アクセス規則 

なし。 

一般規則 

1) <期間述語>の結果は,<期間述語>に直に含まれる<期間OVERLAPS述語>,<期間EQUALS述語>,

<期間CONTAINS述語>,<期間PRECEDES述語>,<期間SUCCEEDS述語>,<期間IMMEDIATELY 

PRECEDES述語>又は<期間IMMEDIATELY SUCCEEDS述語>の真理値とする。 

2) 一つ以上の<期間述語オペランド>がPERIODを指定するならば,指定された<期間述語オペランド

>の個数をmとする。i,1 ≤ i ≤ mに対して,i番目の<期間述語オペランド>中の<期間開始値>の値

をPSViとし,i番目の<期間述語オペランド>中の<期間終了値>の値をPEViとする。 

場合: 

a) PSVi及びPEVi,1 ≤ i ≤ m,のうちの少なくとも一つがナル値ならば,指定された<期間OVERLAPS

述語>,<期間EQUALS述語>,<期間CONTAINS述語>,<期間PRECEDES述語>,<期間SUCCEEDS

述語>,<期間IMMEDIATELY PRECEDES述語>又は<期間IMMEDIATELY SUCCEEDS述語>の結

果は,不定 (Unknown) とし,この細分箇条の一般規則は,これ以上適用しない。 

b) いずれかのi,1 ≤ i ≤ mに対して,PSVi ≥ PEViならば,例外条件:データ例外 (data exception) −

期間値が正しくない (invalid period value) が引き起こされる。 

3) <時刻印精度>の処理系定義の最大値をnとする。 

4) 場合: 

a) <期間述語>が<期間CONTAINS述語>を直に含むならば,次による。 

382 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

場合: 

1) <期間述語オペランド1>に直に含まれる<期間述語オペランド>がPERIODを指定するならば,

<期間開始値>をPSV1とし,<期間終了値>をPEV1とする。 

2) <期間述語オペランド1>に直に含まれる<期間述語オペランド>が<期間参照> PRを直に含む

ならば,PRによって識別される期間の期間記述子をPDとする。PDに含まれる期間の名前

をPNとする。PDに含まれるPN期間開始列の名前をPSV1とし,PDに含まれるPN期間終

了列の名前をPEV1とする。 

ii) CAST(PSV1 AS TIMESTAMP(n) WITH TIME ZONE)の結果をSV1とする。CAST(PEV1 AS 

TIMESTAMP(n) WITH TIME ZONE) の結果をEV1とする。 

iii) 場合: 

1) <期間又は時点述語オペランド>が<日時値式>を直に含むならば,その<日時値式>をDVEと

する。 

2) <期間又は時点述語オペランド>に直に含まれる<期間述語オペランド>がPERIODを指定す

るならば,<期間開始値>をPSV2とし,<期間終了値>をPEV2とする。 

3) <期間又は時点述語オペランド>に直に含まれる<期間述語オペランド>が<期間参照> PRを直

に含むならば,PRによって識別される期間の期間記述子をPDとする。PDに含まれる期間

の名前をPNとする。PDに含まれるPN期間開始列の名前をPSV2とし,PDに含まれるPN

期間終了列の名前をPEV2とする。 

iv) 場合: 

1) <期間又は時点述語オペランド>が<日時値式>を直に含むならば,CAST(DVE AS 

TIMESTAMP(n) WITH TIME ZONE) の結果をVEとする。 

2) そうでなければ,CAST(PSV2 AS TIMESTAMP(n) WITH TIME ZONE) の結果をSV2とす

る。CAST(PEV2 AS TIMESTAMP(n) WITH TIME ZONE) の結果をEV2とする。 

v) 場合: 

1) <期間又は時点述語オペランド>が<日時値式>を直に含み,かつ,VEがナル値ならば,<期間

CONTAINS述語>の結果は,不定 (Unknown) とする。 

2) <期間又は時点述語オペランド>が<日時値式>を直に含み,SV1 ≤ VE,かつ,EV1 > VEなら

ば,<期間CONTAINS述語>の結果は,真 (True) とする。 

3) <期間又は時点述語オペランド>が<日時値式>を直に含まないで,SV1 ≤ SV2,かつ,EV1 ≥ 

EV2ならば,<期間CONTAINS述語>の結果は,真 (True) とする。 

4) そうでなければ,<期間CONTAINS述語>の結果は,偽 (False) とする。 

b) そうでなければ,次による。 

i) 

場合: 

1) <期間述語オペランド1>に直に含まれる<期間述語オペランド>がPERIODを指定するならば,

<期間開始値>をPSV1とし,<期間終了値>をPEV1とする。 

2) <期間述語オペランド1>に直に含まれる<期間述語オペランド>が<期間参照> PRを直に含む

ならば,PRによって識別される期間の期間記述子をPDとする。PDに含まれる期間の名前

をPNとする。PDに含まれるPN期間開始列の名前をPSV1とし,PDに含まれるPN期間終

了列の名前をPEV1とする。 

ii) 場合: 

383 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <期間述語オペランド2>に直に含まれる<期間述語オペランド>がPERIODを指定するならば,

<期間開始値>をPSV2とし,<期間終了値>をPEV2とする。 

2) <期間述語オペランド2>に直に含まれる<期間述語オペランド>が<期間参照> PRを直に含む

ならば,PRによって識別される期間の期間記述子をPDとする。PDに含まれる期間の名前

をPNとする。PDに含まれるPN期間開始列の名前をPSV2とし,PDに含まれるPN期間終

了列の名前をPEV2とする。 

iii) CAST(PSV1 AS TIMESTAMP(n) WITH TIME ZONE)の結果をSV1とする。CAST(PEV1 AS 

TIMESTAMP(n) WITH TIME ZONE) の結果をEV1とする。CAST(PSV2 AS TIMESTAMP(n) 

WITH TIME ZONE) の結果をSV2とする。CAST(PEV2 AS TIMESTAMP(n) WITH TIME 

ZONE) の結果をEV2とする。 

iv) <期間述語>が<期間OVERLAPS述語>を直に含むならば,次による。 

場合: 

1) SV1 < EV2,かつ,EV1 > SV2ならば,<期間OVERLAPS述語>の結果は,真 (True) とする。 

2) そうでなければ,<期間OVERLAPS述語>の結果は,偽 (False) とする。 

v) <期間述語>が<期間EQUALS述語>を直に含むならば,次による。 

場合: 

1) SV1 = SV2,かつ,EV1 = EV2ならば,<期間EQUALS述語>の結果は,真 (True) とする。 

2) そうでなければ,<期間EQUALS述語>の結果は,偽 (False) とする。 

vi) <期間述語>が<期間PRECEDES述語>を直に含むならば,次による。 

場合: 

1) EV1 ≤ SV2ならば,<期間PRECEDES述語>の結果は,真 (True) とする。 

2) そうでなければ,<期間PRECEDES述語>の結果は,偽 (False) とする。 

vii) <期間述語>が<期間SUCCEEDS述語>を直に含むならば,次による。 

場合: 

1) SV1 ≥ EV2ならば,<期間SUCCEEDS述語>の結果は,真 (True) とする。 

2) そうでなければ,<期間SUCCEEDS述語>の結果は,偽 (False) とする。 

viii) <期間述語>が<期間IMMEDIATELY PRECEDES述語>を直に含むならば,次による。 

場合: 

1) EV1 = SV2ならば,<期間IMMEDIATELY PRECEDES述語>の結果は,真 (True) とする。 

2) そうでなければ,<期間IMMEDIATELY PRECEDES述語>の結果は,偽 (False) とする。 

ix) <期間述語>が<期間IMMEDIATELY SUCCEEDS述語>を直に含むならば,次による。 

場合: 

1) SV1 = EV2ならば,<期間IMMEDIATELY SUCCEEDS述語>の結果は,真 (True) とする。 

2) そうでなければ,<期間IMMEDIATELY SUCCEEDS述語>の結果は,偽 (False) とする。 

適合性規則 

1) 機能T502“期間述語”なしでは,適合するSQL言語は,<期間述語>を含んではならない。 

8.21 <探索条件> 

機能 

<探索条件> (<search condition>) は,<ブール値式>の値に応じて,真 (True),偽 (False) 又は不定 

(Unknown) になる条件を指定する。 

384 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<探索条件> ::= 

  <ブール値式> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <探索条件>の結果は,<ブール値式>の結果とする。 

適合性規則 

なし。 

その他の共通規則 

9.1 

取出し代入 

この細分箇条は,ISO/IEC 9075-9の“9.1 取出し代入”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.1 取出し代入”によって修正される。 

細分箇条署名 

“取出し代入” [構文規則] ( 

パラメタ: “TARGET”, 

パラメタ: “VALUE” 

“取出し代入” [一般規則] ( 

パラメタ: “TARGET”, 

パラメタ: “VALUE” 

機能 

取出し代入 (retrieval assignment) は,ナル値をサポートしない代入相手,又は標識パラメタ付きでナル

値をサポートする代入相手への代入(例えば,ホストパラメタ又はホスト変数へのSQLデータの代入)の

規則を規定する。 

構文規則 

1) この細分箇条の構文規則の適用では,TARGETをTとし,VALUEをVとする。 

2) T及びVの宣言型を,それぞれ,TD及びSDとする。 

3) TDが数,ブール,日時,時間隔又は利用者定義型ならば,SDは,TDに代入可能であるか,又は

SDからTDへの適切な利用者定義の型変換関数UDCFが存在しなければならない。 

注記277 “適切な利用者定義の型変換関数”は,“4.11 データ変換”で定義している。 

4) TDが2進オクテット列ならば,次による。 

場合: 

a) Tが,外部ルーチンの位置付け子パラメタ,位置付け子変数,又は2進オクテット長大オブジェ

クト位置付け子パラメタであるホストパラメタのいずれかならば,SDは,BINARY LARGE 

OBJECTで,かつ,TDに代入可能でなければならない。 

385 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) そうでなければ,SDは,TDに代入可能であるか,又はSDからTDへの適切な利用者定義の型

変換関数UDCFが存在するかのいずれかでなければならない。 

5) TDが文字列ならば,次による。 

場合: 

a) Tが,外部ルーチンの位置付け子パラメタ,位置付け子変数,又は文字長大オブジェクト位置付

け子パラメタであるホストパラメタのいずれかならば,SDは,CHARACTER LARGE OBJECTで,

かつ,TDに代入可能でなければならない。 

b) そうでなければ,SDは,TDに代入可能であるか,又はSDからTDへの適切な利用者定義の型

変換関数UDCFが存在するかのいずれかでなければならない。 

6) Tの宣言型が参照型ならば,Vの宣言型は,Tの被参照型の下位型である被参照型をもつ参照型で

なければならない。 

7) Tの宣言型が行型ならば,次による。 

a) Vの宣言型は,行型でなければならない。 

b) Vの次数は,Tの次数と同じでなければならない。その次数をnとする。 

c) Tのi番目のフィールドの宣言型をTTi,1 ≤ i ≤ nとし,Vのi番目のフィールドの宣言型をVTi

とし,宣言型がTTiである一時的な格納場所をT1iとし,宣言型がVTiである任意の式をV1iと

する。各i,1 ≤ i ≤ nに対して,T1iをTARGETとして,V1iをVALUEとして,この細分箇条の

構文規則を適用する。 

8) Tの宣言型が集まり型,又は元型が集まり型の個別型ならば,次による。 

a) Tの宣言型が配列型,又は元型が配列型の個別型DTATならば,Vの宣言型は,配列型又はDTAT

でなければならない。 

b) Tの宣言型がマルチ集合型,又は元型がマルチ集合型の個別型DTMTならば,Vの宣言型は,マ

ルチ集合型又はDTMTでなければならない。 

c) Tの宣言型の要素型をTTとし,Vの宣言型の要素型をVTとし,宣言型がTTである一時的な格

納場所をT1とし,宣言型がVTである任意の式をV1とする。T1をTARGETとして,V1をVALUE

として,この細分箇条の構文規則を適用する。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,TARGETをTとし,VALUEをVとする。 

2) Vの宣言型がTの宣言型に代入可能でないならば,この細分箇条の残りの一般規則に対しては,式

UDCF(V) を評価した結果によって,Vが実効的に置き換えられる。 

3) Vがナル値で,かつ,Tがホストパラメタならば,次による。 

場合: 

a) Tに対して,標識パラメタが指定されるならば,その標識パラメタには,-1が設定される。 

b) Tに対して,標識パラメタが指定されないならば,例外条件:データ例外 (data exception) − ナ

ル値,標識パラメタなし (null value, no indicator parameter) が引き起こされる。 

4) Vがナル値で,かつ,Tがホスト変数ならば,次による。 

場合: 

a) Tに対して,標識変数が指定されるならば,その標識変数には,-1が設定される。 

386 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) Tに対して,標識変数が指定されないならば,例外条件:データ例外 − ナル値,標識パラメタ

なし が引き起こされる。 

5) Vがナル値でなく,Tがホストパラメタで,かつ,Tが標識パラメタをもつならば,次による。 

場合: 

a) Tの宣言型が文字列又は2進オクテット列で,かつ,それぞれ,Vの文字単位又はオクテット単

位での長さMがTの文字単位又はオクテット単位での長さを超えるならば,標識パラメタには,

Mが設定される。標識パラメタに格納できる最大値をMが超えるならば,例外条件:データ例外 

− 標識あふれ (indicator overflow) が引き起こされる。 

b) そうでなければ,標識パラメタには,0が設定される。 

6) Vがナル値でなく,Tがホスト変数で,かつ,Tが標識変数をもつならば,次による。 

場合: 

a) Tの宣言型が文字列又は2進オクテット列で,かつ,それぞれ,Vの文字単位又はオクテット単

位での長さMがTの文字単位又はオクテット単位での長さを超えるならば,標識変数には,Mが

設定される。標識変数に格納できる最大値をMが超えるならば,例外条件:データ例外 − 標識

あふれ が引き起こされる。 

b) そうでなければ,標識変数には,0が設定される。 

7) 

09 14 Vがナル値でないならば,次による。 

場合: 

a) Tの宣言型が,文字単位での長さLの固定長文字列で,かつ,Vの文字単位での長さがLと等し

いならば,Tには,Vの値が設定される。 

b) Tの宣言型が,文字単位での長さLの固定長文字列で,かつ,Vの文字単位での長さがLを超え

るならば,Tには,Vの最初のL個の文字が設定され,終了条件:警告 (warning) − データ列デ

ータ,右切捨て (string data, right truncation) が引き起こされる。 

c) Tの宣言型が,文字単位での長さLの固定長文字列で,かつ,Vの文字単位での長さMがL未満

ならば,Tの最初のM個の文字には,Vが設定され,Tの最後のL ‒ M個の文字には,<空白>が

設定される。 

d) Tの宣言型が可変長文字列で,かつ,Vの文字単位での長さMがTの文字単位での最大長を超え

ないならば,Tには,Vの値が設定され,Tの文字単位の長さには,Mが設定される。 

e) Tの宣言型が可変長文字列で,かつ,Vの文字単位での長さがTの文字単位での最大長Lを超え

るならば,Tには,Vの最初のL個の文字が設定され,Tの文字単位での長さは,Lになり,終了

条件:警告 − データ列データ,右切捨て が引き起こされる。 

f) Tの宣言型が文字長大オブジェクト型で,かつ,Vの文字単位での長さMがTの文字単位での最

大長を超えないならば,Tには,Vの値が設定され,Tの文字単位での長さには,Mが設定され

る。 

g) Tの宣言型が文字長大オブジェクト型で,かつ,Vの文字単位での長さがTの文字単位での最大

長Lを超えるならば,Tには,Vの最初のL個の文字が設定され,Tの文字単位での長さは,Lに

なり,終了条件:警告 − データ列データ,右切捨て が引き起こされる。 

h) Tの宣言型が,オクテット単位での長さLの固定長2進オクテット列で,かつ,Vのオクテット

単位での長さがLと等しいならば,Tには,Vの値が設定される。 

i) 

Tの宣言型が,オクテット単位での長さLの固定長2進オクテット列で,かつ,Vのオクテット

387 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

単位での長さがLを超えるならば,Tには,Vの最初のL個のオクテットが設定され,終了条件:

警告 − データ列データ,右切捨て が引き起こされる。 

j) Tの宣言型が,オクテット単位での長さLの固定長2進オクテット列で,かつ,Vのオクテット

単位での長さMがL未満ならば,Tの最初のM個のオクテットには,Vが設定され,Tの最後の

L-M個のオクテットには,Xʼ00ʼ が設定される。 

k) Tの宣言型が可変長2進オクテット列で,かつ,Vのオクテット単位での長さMがTのオクテッ

ト単位での最大長を超えないならば,Tには,Vの値が設定され,Tのオクテット単位での長さに

は,Mが設定される。 

l) 

Tの宣言型が可変長2進オクテット列で,かつ,Vのオクテット単位での長さがTのオクテット

単位での最大長Lを超えるならば,Tには,Vの最初のL個のオクテットが設定され,Tのオク

テット単位での長さは,Lになり,終了条件:警告 − データ列データ,右切捨て が引き起こさ

れる。 

m) Tの宣言型が長大オブジェクト2進オクテット列で,かつ,Vのオクテット単位での長さMがT

のオクテット単位での最大長を超えないならば,Tには,Vの値が設定され,Tのオクテット単位

での長さには,Mが設定される。 

n) Tの宣言型が長大オブジェクト2進オクテット列で,かつ,Vのオクテット単位での長さがTの

オクテット単位での最大長Lを超えるならば,Tには,Vの最初のL個のオクテットが設定され,

Tのオクテット単位での長さは,Lになり,終了条件:警告 − データ列データ,右切捨て が引

き起こされる。 

o) Tの宣言型が数ならば,次による。 

場合: 

i) 

VがTの宣言型の要素ならば,Tには,Vの値が設定される。 

ii) Tの宣言型の要素を,丸め又は切捨てによってVから得ることができるならば,Tには,その

値が設定される。Tの宣言型が真数ならば,近似が丸めによって得られるか,又は切捨てによ

って得られるかは,処理系定義とする。 

iii) そうでなければ,例外条件:データ例外 − 数値範囲外 (numeric value out of range) が引き起こ

される。 

p) Tの宣言型がブールならば,Tには,Vの値が設定される。 

q) Tの宣言型DTが日時ならば,次による。 

i) 

DT,及びVの宣言型のうちの一つだけが時刻帯付き日時ならば,Vは,次のCAST指定の結果

によって,実効的に置き換えられる。 

CAST ( V AS DT ) 

ii) 場合: 

1) VがTの宣言型の要素ならば,Tには,Vの値が設定される。 

2) Tの宣言型の要素を,丸め又は切捨てによってVから得ることができるならば,Tには,そ

の値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,処

理系定義とする。 

3) そうでなければ,例外条件:データ例外 − 日時フィールドあふれ (datetime field overflow) が

引き起こされる。 

r) Tの宣言型が時間隔ならば,次による。 

388 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

i) 

VがTの宣言型の要素ならば,Tには,Vの値が設定される。 

ii) Tの宣言型の要素を,丸め又は切捨てによってVから得ることができるならば,Tには,その

値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,処理系

定義とする。 

iii) そうでなければ,例外条件:データ例外 − 時間隔フィールドあふれ (interval field overflow) が

引き起こされる。 

s) Tの宣言型が行型ならば,次による。 

i) 

Tの次数をnとする。 

ii) 1からnまでの範囲のiに対して,Tのi番目の要素,及びVのi番目の要素を,それぞれ,

TARGET及びVALUEとして,この細分箇条の一般規則を適用する。 

t) Tの宣言型が参照型ならば,Tには,Vの値が設定される。 

u) Tの宣言型が配列型,又は元型が配列型の個別型ならば,次による。 

場合: 

i) 

Tの最大基数LがVの基数Mと等しいならば,Tの要素をTARGETとして,Vの要素をVALUE

として,要素の各対に,この細分箇条の一般規則を適用することによって,Tの要素には,Vの

対応する要素の値が設定される。 

ii) Tの最大基数LがVの基数M未満ならば,Tの要素をTARGETとして,Vの要素をVALUEと

して,要素の各対に,この細分箇条の一般規則を適用することによって,Tの要素には,Vの

最初のL個の対応する要素の値が設定され,終了条件:警告 − 配列データ,右切捨て (array 

data, right truncation) が引き起こされる。 

iii) Tの最大基数LがVの基数Mを超えるならば,Tの要素をTARGETとして,Vの要素をVALUE

として,要素の各対に,この細分箇条の一般規則を適用することによって,Tの最初のM個の

要素には,Vの対応する要素の値が設定される。Tの値の基数は,Mとする。 

注記278 Tの最大基数Lは,変更されない。 

v) Tの宣言型がマルチ集合型,又は元型がマルチ集合型の個別型ならば,Tには,Vの値が設定され

る。 

w) Tの宣言型が利用者定義型ならば,Tには,Vの値が設定される。 

適合性規則 

なし。 

9.2 

格納代入 

この細分箇条は,ISO/IEC 9075-9の“9.2 格納代入”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.2 格納代入”によって修正される。 

細分箇条署名 

“格納代入” [構文規則] ( 

パラメタ: “TARGET”, 

パラメタ: “VALUE” 

“格納代入” [一般規則] ( 

パラメタ: “TARGET”, 

389 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

パラメタ: “VALUE” 

機能 

格納代入 (store assignment) は,SQLデータの格納又はSQLパラメタの値の設定のように,標識パラメ

タ又は標識変数の利用なしで代入相手がナルを許す代入の規則を規定する。 

構文規則 

1) この細分箇条の構文規則の適用では,TARGETをTとし,VALUEをVとする。 

2) T及びVの宣言型を,それぞれ,TD及びSDとする。 

3) TDが文字列,2進オクテット列,数,ブール,日時,時間隔又は利用者定義型ならば,SDがTDに

代入可能か,又はSDからTDへの適切な利用者定義の型変換関数UDCFが存在するかのいずれか

でなければならない。 

注記279 “適切な利用者定義の型変換関数”は,“4.11 データ変換”で定義している。 

4) Tの宣言型が参照型ならば,Vの宣言型は,Tの被参照型の下位型である被参照型をもつ参照型で

なければならない。 

5) Tの宣言型が行型ならば,次による。 

a) Vの宣言型は,行型でなければならない。 

b) Vの次数は,Tの次数と同じでなければならない。その次数をnとする。 

c) Tのi番目のフィールドの宣言型をTTi,1 ≤ i ≤ nとし,Vのi番目のフィールドの宣言型をVTi

とし,宣言型がTTiである一時的な格納場所をT1iとし,宣言型がVTiである任意の式をV1iと

する。各i,1 ≤ i ≤ nに対して,T1iをTARGETとして,V1iをVALUEとして,この細分箇条の

構文規則を適用する。 

6) Tの宣言型が集まり型,又は元型が集まり型の個別型ならば,次による。 

a) Tの宣言型が配列型,又は元型が配列型の個別型DTATならば,Vの宣言型は,配列型又はDTAT

でなければならない。 

b) Tの宣言型がマルチ集合型,又は元型がマルチ集合型の個別型DTMTならば,Vの宣言型は,マ

ルチ集合型又はDTMTでなければならない。 

c) Tの宣言型の要素型をTTとし,Vの宣言型の要素型をVTとし,宣言型がTTである一時的な格

納場所をT1とし,宣言型がVTである任意の式をV1とする。T1をTARGETとして,V1をVALUE

として,この細分箇条の構文規則を適用する。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,TARGETをTとし,VALUEをVとする。 

2) Vの宣言型がTの宣言型に代入可能でないならば,この細分箇条の残りの一般規則に対しては,式

UDCF(V)を評価した結果によって,Vが実効的に置き換えられる。 

3) 場合: 

a) Vがナル値ならば,次による。 

場合: 

i) 

VがNULLを用いて指定されるならば,Tには,ナル値が設定される。 

ii) Vがホストパラメタで,かつ,標識パラメタを含むならば,次による。 

390 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

1) 標識パラメタの値が-1と等しいならば,Tには,ナル値が設定される。 

2) 標識パラメタの値が-1より小さいならば,例外条件:データ例外 (data exception) − 標識パ

ラメタの値が正しくない (invalid indicator parameter value) が引き起こされる。 

iii) Vがホスト変数で,かつ,標識変数を含むならば,次による。 

場合: 

1) 標識変数の値が-1と等しいならば,Tには,ナル値が設定される。 

2) 標識変数の値が-1より小さいならば,例外条件:データ例外 − 標識パラメタの値が正しく

ない が引き起こされる。 

iv) そうでなければ,Tには,ナル値が設定される。 

b) 

09 14 そうでなければ,次による。 

場合: 

i) 

Tの宣言型が,文字単位での長さLの固定長文字列で,かつ,Vの文字単位での長さがLと等

しいならば,Tには,Vの値が設定される。 

ii) Tの宣言型が,文字単位での長さLの固定長文字列で,かつ,Vの文字単位での長さMがLを

超えるならば,次による。 

場合: 

1) Vの最も右側のM-L個の文字が全て<空白>ならば,Tには,Vの最初のL個の文字が設定さ

れる。 

2) Vの最も右側のM-L個の文字のうちの一つ以上が<空白>でないならば,例外条件:データ

例外 − データ列データ,右切捨て (string data, right truncation) が引き起こされる。 

iii) Tの宣言型が,文字単位での長さLの固定長文字列で,かつ,Vの文字単位での長さMがL未

満ならば,Tの最初のM個の文字には,Vの値が設定され,Tの最後のL ‒ M個の文字には,

<空白>が設定される。 

iv) Tの宣言型が可変長文字列で,かつ,Vの文字単位での長さMがTの文字単位での最大長を超

えないならば,Tには,Vの値が設定され,Tの文字単位での長さには,Mが設定される。 

v) Tの宣言型が可変長文字列で,かつ,Vの文字単位での長さMがTの文字単位での最大長Lを

超えるならば,次による。 

場合: 

1) Vの最も右側のM-L個の文字が全て<空白>ならば,Tには,Vの最初のL個の文字が設定さ

れ,Tの文字単位での長さには,Lが設定される。 

2) Vの最も右側のM-L個の文字のうちの一つ以上が<空白>でないならば,例外条件:データ

例外 − データ列データ,右切捨て が引き起こされる。 

vi) Tの宣言型が文字長大オブジェクト型で,かつ,Vの文字単位での長さMがTの文字単位での

最大長を超えないならば,Tには,Vの値が設定され,Tの文字単位での長さには,Mが設定

される。 

vii) Tの宣言型が文字長大オブジェクト型で,かつ,Vの文字単位での長さMがTの文字単位での

最大長Lを超えるならば,次による。 

場合: 

1) Vの最も右側のM ‒ L個の文字が全て<空白>ならば,Tには,Vの最初のL個の文字が設定

391 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

され,Tの文字単位での長さには,Lが設定される。 

2) Vの最も右側のM ‒ L個の文字のうちの一つ以上が<空白>でないならば,例外条件:データ

例外 − データ列データ,右切捨て が引き起こされる。 

viii) Tの宣言型が,オクテット単位での長さLの固定長2進オクテット列で,かつ,Vのオクテッ

ト単位での長さがLと等しいならば,Tには,Vの値が設定される。 

ix) Tの宣言型が,オクテット単位での長さLの固定長2進オクテット列で,かつ,Vのオクテッ

ト単位での長さMがLを超えるならば,次による。 

場合: 

1) Vの最も右側のM ‒ L個のオクテットが全てXʼ00ʼ と等しいならば,Tには,Vの最初のL

個のオクテットが設定される。 

2) Vの最も右側のM ‒ L個のオクテットのうちの一つ以上がXʼ00ʼ と等しくないならば,例外

条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

x) Tの宣言型が,オクテット単位での長さLの固定長2進オクテット列で,かつ,Vのオクテッ

ト単位での長さMがL未満ならば,Tの最初のM個のオクテットには,Vの値が設定され,T

の最後のL ‒ M個のオクテットには,Xʼ00ʼ が設定される。 

xi) Tの宣言型が可変長2進オクテット列で,かつ,Vのオクテット単位での長さMがTのオクテ

ット単位での最大長を超えないならば,Tには,Vの値が設定され,Tのオクテット単位での長

さには,Mが設定される。 

xii) Tの宣言型が可変長2進オクテット列で,かつ,Vのオクテット単位での長さMがTのオクテ

ット単位での最大長Lを超えるならば,次による。 

場合: 

1) Vの最も右側のM ‒ L個のオクテットが全てXʼ00ʼ と等しいならば,Tには,Vの最初のL

個のオクテットが設定され,Tのオクテット単位での長さには,Lが設定される。 

2) Vの最も右側のM ‒ L個のオクテットのうちの一つ以上がXʼ00ʼ と等しくないならば,例外

条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

xiii) Tの宣言型が長大オブジェクト2進オクテット列で,かつ,Vのオクテット単位での長さMが

Tのオクテット単位での最大長を超えないならば,Tには,Vの値が設定され,Tのオクテット

単位での長さには,Mが設定される。 

xiv) Tの宣言型が長大オブジェクト2進オクテット列で,かつ,Vのオクテット単位での長さMが

Tのオクテット単位での最大長Lを超えるならば,次による。 

場合: 

1) Vの最も右側のM-L個のオクテットが全てXʼ00ʼ と等しいならば,Tには,Vの最初のL個

のオクテットが設定され,Tのオクテット単位での長さには,Lが設定される。 

2) Vの最も右側のM-L個のオクテットのうちの一つ以上がXʼ00ʼ と等しくないならば,例外

条件:データ例外 − データ列データ,右切捨て が引き起こされる。 

xv) Tの宣言型が数型ならば,次による。 

場合: 

1) VがTの宣言型の要素ならば,Tには,Vの値が設定される。 

2) Tの宣言型の要素を,丸め又は切捨てによってVから得ることができるならば,Tには,そ

の値が設定される。Tの宣言型が真数ならば,近似が丸めによって得られるか,又は切捨て

392 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

によって得られるかは,処理系定義とする。 

3) そうでなければ,例外条件:データ例外 − 数値範囲外 (numeric value out of range) が引き起

こされる。 

xvi) Tの宣言型DTが日時ならば,次による。 

1) DT,及びVの宣言型のうちの一つだけが時刻帯付き日時ならば,Vは,次のCAST指定の結

果によって実効的に置き換えられる。 

CAST ( V AS DT ) 

2) 場合: 

A) VがTの宣言型の要素ならば,Tには,Vの値が設定される。 

B) Tの宣言型の要素を,丸め又は切捨てによってVから得ることができるならば,Tには,

その値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,

処理系定義とする。 

C) そうでなければ,例外条件:データ例外 − 日時フィールドあふれ (datetime field overflow) 

が引き起こされる。 

xvii) Tの宣言型が時間隔ならば,次による。 

場合: 

1) VがTの宣言型の要素ならば,Tには,Vの値が設定される。 

2) Tの宣言型の要素を,丸め又は切捨てによってVから得ることができるならば,Tには,そ

の値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,処

理系定義とする。 

3) そうでなければ,例外条件:データ例外 − 時間隔フィールドあふれ (interval field overflow) 

が引き起こされる。 

xviii) Tの宣言型がブールならば,Tには,Vの値が設定される。 

xix) Tの宣言型が行型ならば,次による。 

1) Tの次数をnとする。 

2) 1からnまでの範囲のiに対して,Tのi番目の要素,及びVのi番目の要素を,それぞれ,

TARGET及びVALUEとして,この細分箇条の一般規則を適用する。 

xx) Tの宣言型が参照型ならば,Tには,Vの値が設定される。 

xxi) Tの宣言型が配列型,又は元型が配列型の個別型ならば,次による。 

場合: 

1) Tの最大基数LがVの基数Mと等しいならば,Tの要素をTARGETとして,Vの要素を

VALUEとして,要素の各対に,この細分箇条の一般規則を適用することによって,Tの要素

には,Vの対応する要素の値が設定される。 

2) Tの最大基数LがVの基数M未満ならば,次による。 

場合: 

A) Vの最も右側のM-L個の要素が全てナルならば,Tの要素をTARGETとして,Vの要素

をVALUEとして,要素の各対に,この細分箇条の一般規則を適用することによって,Tの

要素には,Vの最初のL個の対応する要素の値が設定される。 

B) Vの最も右側のM-L個の要素のうち一つ以上がナル値でないならば,例外条件:データ例

外 − 配列データ,右切捨て (array data, right truncation) が引き起こされる。 

393 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) Tの最大基数LがVの基数Mを超えるならば,Tの要素をTARGETとして,Vの要素を

VALUEとして,要素の各対に,この細分箇条の一般規則を適用することによって,Tの最初

のM個の要素には,Vの対応する要素の値が設定される。Tの値の基数には,Mが設定され

る。 

注記280 Tの最大基数Lは,変更されない。 

xxii) Tの宣言型がマルチ集合型,又は元型がマルチ集合型の個別型ならば,Tには,Vの値が設定さ

れる。 

xxiii) Tの宣言型が利用者定義型ならば,Tには,Vの値が設定される。 

適合性規則 

なし。 

9.3 

ホスト言語からSQLサーバへの値の受渡し 

細分箇条署名 

“ホスト言語からSQLサーバへの値の受渡し” [一般規則] ( 

パラメタ: “LANGUAGE” 

パラメタ: “SQL TYPE” 

パラメタ: “HOST VALUE” 

) 戻り: “SQL VALUE” 

機能 

ホスト言語からSQLサーバへの値の受渡し (Passing a value from a host language to the SQL-server) は,ホ

スト言語からSQLサーバに値を受け渡す規則を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,LANGUAGEをLANGとし,SQL TYPEをDTとし,HOST 

VALUEをPIとする。この細分箇条の適用の結果は,SVとする。それは,SQL VALUEとして戻さ

れる。 

注記281 DTは,<ホストパラメタデータ型>又は<パラメタの型>のいずれかである。 

2) 宣言型がSQL TYPEに含まれる<データ型>の格納場所をSVとする。 

3) LANGがADA,C,COBOL,FORTRAN,M,PASCAL又はPLIを指定するかどうかに依存して,

それぞれ,表16“Adaのためのデータ型対応”,表17“Cのためのデータ型対応”,表18“COBOL

のためのデータ型対応”,表19“Fortranのためのデータ型対応”,表20“Mのためのデータ型対応”,

表21“Pascalのためのデータ型対応”又は表22“PL/Iのためのデータ型対応”を適用データ型対応

表 (operative data type correspondences table) とする。適用データ型対応表の二つの列を,“SQLデー

タ型 (SQL data type)”の列及び“ホストデータ型 (host data type)”の列として参照する。 

4) 次のホスト言語データ型をHDTとする。 

場合: 

a) DTが<位置付け子標識>を含むならば,次による。 

場合: 

394 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

LANGがADAならば,Interfaces.SQL.INT。 

ii) LANGがCならば,unsigned long。 

iii) LANGがCOBOLならば,PIC S9(9) USAGE IS BINARY。 

iv) LANGがFORTRANならば,INTEGER。 

v) LANGがMならば,character。 

vi) LANGがPASCALならば,INTEGER。 

vii) LANGがPLIならば,FIXED BINARY(31)。 

b) そうでなければ,適用データ型対応表中で,“SQLデータ型”の列の値がDTである行の“ホスト

データ型”の列に記載されたホスト言語データ型。 

注記282 PIのホスト言語データ型は,HDTである。 

5) 場合: 

a) DTが<位置付け子標識>を含むならば,次による。 

場合: 

i) 

PIが無効な位置付け子ならば,例外条件:位置付け子例外 (locator exception) − 指定が正しく

ない (invalid specification) が引き起こされ,この細分箇条の一般規則は,これ以上適用しない。 

ii) そうでなければ,PIに対応する長大オブジェクト2進オクテット列値,長大オブジェクト文字

列値,配列値,マルチ集合値又は利用者定義型値をSVの値とする。 

b) DTがCHARACTER(L) 又はCHARACTER VARYING (L) のデータ型を識別し,かつ,LANGがC

ならば,DTの文字集合での文字列型の値として暗に扱ったPIをSVの値とする。ここで,PIの

オクテットは,SVの対応するオクテットとする。 

C文字列を終了させる処理系定義のナル文字をNCとする。 

場合: 

i) 

DTがCHARACTER(L) のデータ型を識別し,かつ,PIの最下位有効C文字に先行するあるC

文字がNCを含むならば,SVの文字には,NCの最初の実現値からSVの最後まで<空白>が設

定される。 

ii) DTがCHARACTER VARYING (L) のデータ型を識別するならば,SVの文字単位での長さには,

PI中のNCの最初の実現値に先行するPIの文字の個数が設定される。 

iii) 値PIの最下位有効C文字がNCを含まないならば,例外条件:データ例外 (data exception) − 

C文字列が終了していない (unterminated C string) が引き起こされる。そうでなければ,その最

下位有効C文字は,PI中のどの文字にも対応せず,無視される。 

注記283 “C文字列を終了させる処理系定義のナル文字”という句は,ビットの全てが0から成

り,オクテット数がDTの文字集合の最も大きい文字のオクテット数と等しい一つ以上

のオクテットを意味する。このようなオクテットの個数は,文字集合の定義に依存する。

したがって,処理系定義である。 

c) 次のうちの一つが真ならば,DTの文字集合での文字列型の値として暗に扱ったPIをSVの値と

する。ここで,PIのオクテットは,SVの対応するオクテットとする。 

i) 

DTがCHARACTER(L) のデータ型を識別し,かつ,LANGがADA,COBOL,FORTRAN又は

PASCALである。 

ii) DTがCHARACTER VARYING (L) のデータ型を識別し,かつ,LANGがMである。 

iii) DTがCHARACTER(L) 又はCHARACTER VARYING (L) のデータ型を識別し,かつ,LANGが

395 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

PLIである。 

d) DTがINT,DEC又はREALを識別し,かつ,LANGがMならば,PIと等価なSQL文字列を

TEMPとし,次のCAST指定の値をSVの値とする。 

CAST (TEMP AS DT ) 

e) DTがBOOLEAN型を識別するならば,次による。 

場合: 

i) 

LANGがADAならば,次による。 

1) PIの値がFalseならば,偽 (False) をSVの値とする。 

2) そうでなければ,真 (True) をSVの値とする。 

ii) LANGがCならば,次による。 

1) PIの値が0ならば,偽 (False) をSVの値とする。 

2) そうでなければ,真 (True) をSVの値とする。 

iii) LANGがCOBOLならば,次による。 

1) PIの値が 'F' ならば,偽 (False) をSVの値とする。 

2) そうでなければ,真 (True) をSVの値とする。 

iv) LANGがFORTRANならば,次による。 

1) PIの値が.FALSE. ならば,偽 (False) をSVの値とする。 

2) そうでなければ,真 (True) をSVの値とする。 

v) LANGがPASCALならば,PIをSVの値とする。 

注記284 Pascalには,真 及び偽 の値をもつブール型がある。 

vi) LANGがPLIならば,次による。 

1) PIの値が '0'Bならば,偽 (False) をSVの値とする。 

2) そうでなければ,真 (True) をSVの値とする。 

f) DTがCHARACTER LARGE OBJECT型又はBINARY LARGE OBJECT型を識別するならば,次に

よる。 

場合: 

i) 

DTがCHARACTER LARGE OBJECT型を識別するならば,DTに含まれ,陽に指定されたか又

は暗に想定された<文字長単位>をCLUとする。次の値をSVとする。 

場合: 

1) CLUがCHARACTERSならば,文字単位での長さLENがPIの長さ部分の値で,かつ,値が

PIのデータ部分中の最初のLEN個の文字である長大オブジェクト文字列。 

2) そうでなければ,オクテット単位での長さLENがPIの長さ部分の値で,かつ,値がPIのデ

ータ部分中の最初のLEN個のオクテットである長大オブジェクト文字列。 

ii) DTがBINARY LARGE OBJECT型を識別するならば,長さLENがPIの長さ部分の値で,か

つ,値がPIのデータ部分中の最初のLEN個のオクテットである長大オブジェクト2進オクテ

ット列をSVとする。 

注記285 PIの長さ部分及びデータ部分は,適用データ型対応表の脚注 (footnotes) で定義してい

る。 

g) DTがBINARY(L) 又はBINARY VARYING(L) のデータ型を識別し,かつ,LANGがADAなら

ば,次による。 

396 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

i) 

DTがBINARY (L) のデータ型を識別するならば,オクテットがPIの対応するオクテットであ

る2進オクテット列をSVの値とする。 

ii) DTがBINARY VARYING (L) のデータ型を識別するならば,長さLENがPIの長さ部分の値

で,かつ,値がPIのデータ部分中の最初のLEN個のオクテットである2進オクテット列をSV

の値とする。 

h) DTがBINARY(L) 又はBINARY VARYING(L) のデータ型を識別し,かつ,LANGがCならば,

次による。 

場合: 

i) 

DTがBINARY (L) のデータ型を識別するならば,オクテットがPIの対応するオクテットで,

L個のオクテットから成る2進オクテット列をSVの値とする。 

ii) DTがBINARY VARYING (L) のデータ型を識別するならば,長さLENがPIの長さ部分の値

で,かつ,値がPIのデータ部分中の最初のLEN個のオクテットである2進オクテット列をSV

の値とする。 

i) 

次のうちの一つが真ならば,オクテットがPIの対応するオクテットである2進オクテット列を

SVの値とする。 

i) 

DTがBINARY (L) のデータ型を識別し,かつ,LANGがCOBOL,FORTRAN又はPASCALで

ある 

ii) DTがBINARY(L) 又はBINARY VARYING(L) のデータ型を識別し,かつ,LANGがPLIであ

る。 

j) 

そうでなければ,値PIをSVの値とする。 

適合性規則 

なし。 

9.4 

SQLサーバからホスト言語への値の受渡し 

細分箇条署名 

“SQLサーバからホスト言語への値の受渡し” [一般規則] ( 

パラメタ: “LANGUAGE” 

パラメタ: “SQL TYPE” 

パラメタ: “SQL VALUE” 

) 戻り: “HOST VALUE” 

機能 

SQLサーバからホスト言語への値の受渡し (Passing a value from the SQL-server to a host language) は,

SQLサーバからホスト言語に値を受け渡す規則を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,LANGUAGEをLANGとし,SQL TYPEをDTとし,SQL 

VALUEをSVとする。この細分箇条の適用の結果は,PIとする。それは,HOST VALUEとして戻

397 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

される。 

2) LANGがADA,C,COBOL,FORTRAN,M,PASCAL又はPLIを指定するかどうかに依存して,

それぞれ,表16“Adaのためのデータ型対応”,表17“Cのためのデータ型対応”,表18“COBOL

のためのデータ型対応”,表19“Fortranのためのデータ型対応”,表20“Mのためのデータ型対応”,

表21“Pascalのためのデータ型対応”又は表22“PL/Iのためのデータ型対応”を適用データ型対応

表 (operative data type correspondences table) とする。適用データ型対応表の二つの列を,“SQLデー

タ型 (SQL data type) ”の列及び“ホストデータ型 (host data type) ”の列として参照する。 

3) 次のホスト言語データ型をHDTとする。 

場合: 

a) DTが<位置付け子標識>を含むならば,次による。 

場合: 

i) 

LANGがADAならば,Interfaces.SQL.INT。 

ii) LANGがCならば,unsigned long。 

iii) LANGがCOBOLならば,PIC S9(9) USAGE IS BINARY。 

iv) LANGがFORTRANならば,INTEGER。 

v) LANGがMならば,character。 

vi) LANGがPASCALならば,INTEGER。 

vii) LANGがPLIならば,FIXED BINARY(31)。 

b) そうでなければ,適用データ型対応表中で,“SQLデータ型”の列の値がDTである行の“ホスト

データ型”の列に記載されたホスト言語データ型。 

注記286 PIのホスト言語データ型は,HDTである。 

4) ホスト言語データ型HDTの格納場所をPIとする。 

5) 場合: 

a) DTが<位置付け子標識>を含むならば,SVを一意に識別する2進オクテット長大オブジェクト位

置付け子の値,文字長大オブジェクト位置付け子の値,配列位置付け子の値,マルチ集合位置付

け子の値又は利用者定義型位置付け子の値をPIの値とする。 

b) DTがCHARACTER(L) 又はCHARACTER VARYING (L) のデータ型を識別し,かつ,LANGがC

ならば,DTのオクテット単位での可能な最大長よりk大きい長さをCLとする。ここで,kは,

DTの文字集合中の最も大きい文字のオクテット単位での大きさとする。値のオクテットがSVの

対応するオクテットで,必要に応じて,長さCL ‒ kになるまで右側に<空白>を埋めて,C文字列

を終了させる処理系定義の単一のナル文字を連結したC文字列をPIの値とする。 

注記287 “C文字列を終了させる処理系定義のナル文字”という句は,ビットの全てが0から

成るk個のオクテットを意味する。 

c) DTがCHARACTER(L) のデータ型を識別し,かつ,LANGがADA,COBOL,FORTRAN又は

PASCALならば,DTのオクテット単位での可能な最大長をCLとする。値のオクテットがSVの

対応するオクテットで,必要に応じて,長さCLオクテットになるまで右側に<空白>を埋めたホ

スト言語データ型HDTの値をPIの値とする。 

d) DTがCHARACTER VARYING(L) のデータ型を識別し,かつ,LANGがMならば,DTのオクテ

ット単位での可能な最大長をCLとする。値のオクテットがSVの対応するオクテットで,必要に

応じて,長さCLオクテットになるまで右側に<空白>を埋めたM文字列をPIの値とする。 

398 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) DTがCHARACTER(L) 又はCHARACTER VARYING (L) のデータ型を識別し,かつ,LANGが

PLIならば,DTのオクテット単位での可能な最大長をCLとする。 

場合: 

i) 

DTがCHARACTER(L) のデータ型を識別するならば,値のオクテットがSVの対応するオクテ

ットであるPL/I文字列をPIの値とする。 

ii) そうでなければ,値のオクテットがSVの対応するオクテットで,必要に応じて,長さCLにな

るまで右側に<空白>を埋めたPL/I文字列をPIの値とする。 

f) DTがINT,DEC又はREALを識別し,かつ,LANGがMならば,オクテットが次のCAST指定

のオクテットであるM文字列をPIとする。 

CAST ( SV AS CHARACTER VARYING(ML) ) 

ここで,MLは,可変長文字列の処理系定義の最大長とする。 

g) DTがBOOLEAN型を識別するならば,次による。 

場合: 

i) 

LANGがADAならば,次による。 

1) SVが偽 (False) ならば,値FalseをPIの値とする。 

2) SVが真 (True) ならば,値TrueをPIの値とする。 

ii) LANGがCならば,次による。 

1) SVが偽 (False) ならば,値0をPIの値とする。 

2) SVが真 (True) ならば,値1をPIの値とする。 

iii) LANGがCOBOLならば,次による。 

1) SVが偽 (False) ならば,値 'F'をPIの値とする。 

2) SVが真 (True) ならば,値 'T'をPIの値とする。 

iv) LANGがFORTRANならば,次による。 

1) SVが偽 (False) ならば,値.FALSE.をPIの値とする。 

2) SVが真 (True) ならば,値.TRUE.をPIの値とする。 

v) LANGがPASCALならば,SVをPIの値とする。 

注記288 Pascalには,真 及び偽 の値をもつブール型がある。 

vi) LANGがPLIならば,次による。 

1) SVが偽 (False) ならば,値 '0'BをPIの値とする。 

2) SVが真 (True) ならば,値 '1'BをPIの値とする。 

h) DTがCHARACTER LARGE OBJECT型又はBINARY LARGE OBJECT型を識別するならば,次に

よる。 

場合: 

i) 

DTがCHARACTER LARGE OBJECT型を識別するならば,DTに含まれ,陽に指定されたか又

は暗に想定された<文字長単位>をCLUとする。 

場合: 

1) CLUがCHARACTERSならば,SV中の文字の個数LENをPIの長さ部分とし,SVと等価な

文字列を,PIのデータ部分中の最初のLEN個の文字とする。 

2) そうでなければ,SV中のオクテットの個数LENをPIの長さ部分とし,SVと等価な文字列

を,PIのデータ部分中の最初のLEN個のオクテットとする。 

399 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) DTがBINARY LARGE OBJECT型を識別するならば,SV中のオクテットの個数LENをPIの

長さ部分とし,SVと等価な2進オクテット列を,PIのデータ部分中の最初のLEN個のオクテ

ットとする。 

注記289 PIの長さ部分及びデータ部分は,適用データ型対応表の脚注 (footnotes) で定義してい

る。 

i) 

DTがBINARY(L) のデータ型を識別するならば,長さLで,オクテットがSVの対応するオクテ

ットであるホスト言語データ型HDTの2進オクテット列をPIとする。 

j) DTがBINARY VARYING(L) のデータ型を識別し,かつ,LANGがADA又はCならば,

OCTET̲LENGTH(SV) をLENとし,LENをPIの長さ部分とし,値SVを,PIのデータ部分中の

最初のLEN個のオクテットとする。 

k) BINARY VARYING(L) のデータ型を識別し,かつ,LANGがPLIならば,値のオクテットがSV

の対応するオクテットで,必要に応じて,長さLになるまで右側にX'00'を埋めたホスト言語デー

タ型HDTの2進オクテット列をPIとする。 

l) 

そうでなければ,SVをPIの値とする。LANGがADAで,かつ,PIに値が代入されなかったな

らば,処理系依存の値がPIに代入される。 

適合性規則 

なし。 

9.5 

データ型組合せの結果 

この細分箇条は,ISO/IEC 9075-9の“9.3 データ型組合せの結果”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.3 データ型組合せの結果”によって修正される。 

細分箇条署名 

“データ型組合せの結果” [構文規則] ( 

パラメタ: “DTSET” 

) 戻り: “RESTYPE” 

機能 

データ型組合せの結果 (result of data type combination) は,<CASE式>,<集まり値式>,又は<問合せ式>

の結果中の列のような,互換であるデータ型の値の特定の組合せの結果の宣言型を規定する。 

構文規則 

1) この細分箇条の構文規則の適用では,DTSETをIDTSとする。この細分箇条の適用の結果は,結果

の宣言型とする。それは,RESTYPEとして戻される。 

2) 未定義のデータ型を除く,IDTS中のデータ型の集合をDTSとする。DTSの基数が0ならば,結果

の宣言型は,未定義とし,この細分箇条の規則は,これ以上評価されない。 

注記290 “未定義のデータ型 (undefined data type)”の概念は,“20.6 <PREPARE文>”で定義して

いる。 

3) 場合: 

a) DTS中のデータ型のいずれかが文字列ならば,次による。 

i) 

DTS中の全てのデータ型が文字列でなければならず,かつ,それらの全てが同じ文字レパート

リをもたなければならない。結果の文字集合は,最も高い優先順序の文字符号化形式をもつ,

DTS中のデータ型の文字集合とする。 

ii) 結果の照合順起源及び宣言型照合順は,次のとおりに決定される。 

400 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

1) DTS中のいずれかのデータ型が,明示 (explicit) の照合順起源及び宣言型照合順EC1をもつ

ならば,明示 の照合順起源をもつDTS中のどのデータ型も,EC1である宣言型照合順をも

たなければならない。照合順起源は,明示 とし,照合順は,EC1とする。 

2) DTS中の全てのデータ型が暗黙 (implicit) の照合順起源をもつならば,次による。 

場合: 

A) DTS中の全てのデータ型が同じ宣言型照合順IC1をもつならば,照合順起源は,暗黙 と

し,宣言型照合順は,IC1とする。 

B) そうでなければ,照合順起源は,なし (none) とする。 

3) そうでなければ,照合順起源は,なし とする。 

iii) 場合: 

1) DTS中のデータ型のいずれかが文字長大オブジェクト型ならば,結果の宣言型は,DTS中の

データ型の,文字単位での長さ及び文字単位での最大長の最大値と等しい文字単位での最大

長をもつ文字長大オブジェクト型とする。 

2) DTS中のデータ型のいずれかが可変長文字列ならば,結果の宣言型は,DTS中のデータ型の,

文字単位での長さ及び文字単位での最大長の最大値と等しい文字単位での最大長をもつ可変

長文字列とする。 

3) そうでなければ,結果の宣言型は,DTS中のデータ型の文字単位での長さの最大値と等しい

文字単位での長さをもつ固定長文字列とする。 

b) DTS中のデータ型のいずれかが2進オクテット列ならば,次による。 

場合: 

i) 

DTS中のデータ型のいずれかが2進オクテット長大オブジェクト型ならば,結果の宣言型は,

DTS中のデータ型の,オクテット単位での長さ及びオクテット単位での最大長の最大値と等し

いオクテット単位での最大長をもつ2進オクテット長大オブジェクト型とする。 

ii) DTS中のデータ型のいずれかが可変長2進オクテット列型ならば,結果の宣言型は,DTS中の

データ型の,オクテット単位での長さ及びオクテット単位での最大長の最大値と等しいオクテ

ット単位での最大長をもつ可変長2進オクテット列型とする。 

iii) そうでなければ,結果の宣言型は,DTS中のデータ型のオクテット単位での長さの最大値と等

しいオクテット単位での長さをもつ固定長2進オクテット列型とする。 

c) DTS中の全てのデータ型が真数ならば,結果の宣言型は,処理系定義の精度,及びDTS中のデー

タ型の位取りの最大値と等しい位取りをもつ真数とする。 

d) DTS中のいずれかのデータ型が概数ならば,DTS中の各データ型は,数でなければならず,結果

の宣言型は,処理系定義の精度をもつ概数とする。 

e) DTS中のいずれかのデータ型が日時データ型ならば,DTS中のどのデータ型も,同じ日時フィー

ルドをもつ日時データ型でなければならない。結果の宣言型は,同じ日時フィールドをもつ日時

データ型とし,その小数秒精度は,DTS中の小数秒精度のうちの最大のものとする。DTS中のい

ずれかのデータ型が時刻帯時差値をもつならば,その結果は,時刻帯時差値をもつ。そうでなけ

れば,その結果は,時刻帯時差値をもたない。 

f) DTS中のいずれかのデータ型が時間隔ならば,DTS中の各データ型は,時間隔でなければならな

い。DTS中のいずれかのデータ型の精度がYEAR又はMONTHを指定するならば,各データ型の

401 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

精度は,YEAR又はMONTHだけを指定しなければならない。DTS中のいずれかのデータ型の精

度がDAY,HOUR,MINUTE又はSECOND(N) を指定するならば,DTS中のどのデータ型の精度

も,<基本日時フィールド> YEAR及びMONTHを指定してはならない。結果の宣言型は,精度“S 

TO E”をもつ時間隔とする。ここで,S及びEは,それぞれ,DTS中のデータ型の<開始フィー

ルド>のうちの最上位有効フィールド,及び<終了フィールド>のうちの最下位有効フィールドと

する。 

g) 

09 14 DTS中のいずれかのデータ型がブールならば,DTS中の各データ型は,ブールでなければな

らない。結果の宣言型は,ブールとする。 

h) DTS中のいずれかのデータ型が行型ならば,DTS中の各データ型は,同じ次数をもつ行型でなけ

ればならず,どの行型も,同じ順序位置の各フィールドのデータ型は,比較可能でなければなら

ない。結果の宣言型は,(<フィールド名>,データ型)の対FDiの順序付けられた並びによって

定義される行型とする。ここで,そのデータ型は,DTS中の全ての行型の,FDiと同じ順序位置

のフィールドのデータ型の集合に,この細分箇条を適用した結果として得られるデータ型とし,

その<フィールド名>は,次のとおりに決定される。 

場合: 

i) 

DTS中のどの行型も,FDiと同じ順序位置のフィールドが名前Fをもつならば,FDiの<フィ

ールド名>は,Fとする。 

ii) そうでなければ,FDiの<フィールド名>は,処理系依存とする。 

i) 

DTS中のいずれかのデータ型が配列型か又は元型が配列型の個別型ならば,DTS中のどのデータ

型も,配列型か又は元型が配列型の個別型でなければならない。結果の宣言型は,要素データ型

ETRをもつ配列型とする。ここで,ETRは,DTSの配列型の要素型の集合に,この細分箇条を適

用した結果として得られるデータ型とし,最大基数は,DTS中のデータ型の最大基数の最大値と

等しい。 

j) DTS中のいずれかのデータ型がマルチ集合型か又は元型がマルチ集合型の個別型ならば,DTS中

のどのデータ型も,マルチ集合型か又は元型がマルチ集合型の個別型でなければならない。結果

の宣言型は,要素データ型ETRをもつマルチ集合型とする。ここで,ETRは,DTSのマルチ集

合型の要素型の集合に,この細分箇条を適用した結果として得られるデータ型とする。 

k) DTS中のいずれかのデータ型が参照型ならば,DTS中の各データ型が下位型族STFの要素であ

るような下位型族STFが存在しなければならない。DTS中の各データ型の最小共通上位型をRT

とする。 

 場合: 

i) 

DTS中のどのデータ型のデータ型記述子も,参照型の有効範囲を識別する参照可能表の名前を

含み,かつ,そのような全ての名前が,ある名前STNと等価ならば,結果の宣言型は,次の型

とする。 

RT SCOPE ( STN ) 

ii) そうでなければ,結果の宣言型は,RTとする。 

l) 

そうでなければ,DTS中の各データ型が下位型族STFの要素であるような下位型族STFが存在

しなければならない。結果の宣言型は,DTS中の各データ型の最小共通上位型とする。 

注記291 最小共通上位型 (minimal common supertype) は,“4.7.3.4 下位型及び上位型”で定義し

ている。 

402 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.6 

当該ルーチン決定 

細分箇条署名 

“当該ルーチン決定” [構文規則] ( 

パラメタ: “SET OF SQL-INVOKED ROUTINES”, 

パラメタ: “SQL ARGUMENT LIST” 

) 戻り: “SET OF SUBJECT ROUTINES” 

機能 

当該ルーチン決定 (subject routine determination) は,与えられたルーチン呼出しの当該ルーチンを決定す

る。 

構文規則 

1) この細分箇条の構文規則の適用では,SET OF SQL-INVOKED ROUTINESをSRとし,SQL 

ARGUMENT LISTをALとする。この細分箇条の適用の結果は,SQL呼出しルーチンの集合とする。

それは,SET OF SUBJECT ROUTINESとして戻される。 

2) SR中のSQL呼出しルーチンの個数をnとする。SRの順序付けでのSR中のi番目のSQL呼出しル

ーチンをRi,1 ≤ i ≤ nとする。 

3) AL中のSQL引数の個数をmとする。AL中のj番目のSQL引数をAj,1 ≤ j ≤ mとする。 

4) Aj,1 ≤ j ≤ mに対しては,Ajの宣言型をSDTAjとする。 

5) Riのj番目のSQLパラメタの宣言型の型指示子をSDTPi,jとする。 

6) 1からmまでの範囲のrに対して,Arが<動的パラメタ指定>でなく,かつ,SR中に二つ以上のSQL

呼出しルーチンがあるならば,SR中のSQL呼出しルーチンの各対{Rp,Rq }に対して,次による。 

a) SDTArをDATA TYPEとして,“9.7 型優先順序リスト決定”の構文規則を適用する。これらの構

文規則の適用によって戻されるTYPE PRECEDENCE LISTをTPLrとする。 

b) TPLr中で,SDTPp,r < SDTPq,rならば,SRからRqを取り除く。 

7) SR中に残っているSQL呼出しルーチンの集合は,この細分箇条の適用の結果とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.7 

型優先順序リスト決定 

この細分箇条は,ISO/IEC 9075-9の“9.4 型優先順序リスト決定”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.4 型優先順序リスト決定”によって修正される。 

細分箇条署名 

403 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

“型優先順序リスト決定” [構文規則] ( 

パラメタ: “DATA TYPE” 

) 戻り: “TYPE PRECEDENCE LIST” 

機能 

型優先順序リスト決定 (Type precedence list determination) は,与えられた型の型優先順序リストを決定

する。 

構文規則 

1) この細分箇条の構文規則の適用では,DATA TYPEをDTとする。この細分箇条の適用の結果は,型

優先順序リスト (type precedence list) TPLとする。それは,TYPE PRECEDENCE LISTとして戻され

る。 

2) この細分箇条の構文規則によって決定される型指示子 (type designator) のリストをTPLとする。 

3) “AがBより高い優先順序をもつ”ことを“A < B”で表現し,“AがBと同じ優先順序をもつ”こ

とを“A ≃B”で表現する。 

4) DTが利用者定義型ならば,次による。 

a) DTの上位型の集合をSTとする。ST中のデータ型の個数をnとする。 

b) ST中の二つのデータ型TA及びTBに対して,TA < TBであることは,TAがTBの真下位型であ

ることと同値とする。 

c) DTをT1とし,Tiの直接上位型をTi+1,1 ≤ i ≤ n‒1とする。 

d) Tiのデータ型指示子をDTNi,1 ≤ i ≤ nとする。 

注記292 利用者定義型の型指示子は,その利用者定義型記述子に含まれる型名である。 

e) TPLは,DTN1,DTN2,...,DTNnとする。 

5) DTが固定長文字列ならば,TPLは,次のリストとする。 

CHARACTER, CHARACTER VARYING, CHARACTER LARGE OBJECT 

6) DTが可変長文字列ならば,TPLは,次のリストとする。 

CHARACTER VARYING, CHARACTER LARGE OBJECT 

7) DTが固定長2進オクテット列ならば,TPLは,次のリストとする。 

BINARY, BINARY VARYING, BINARY LARGE OBJECT 

8) DTが可変長2進オクテット列ならば,TPLは,次のリストとする。 

BINARY VARYING, BINARY LARGE OBJECT 

9) DTが数ならば,次による。 

a) 次の数型の集合をNDTとする。NUMERIC,DECIMAL,SMALLINT,INTEGER,BIGINT,REAL,

FLOAT及びDOUBLE PRECISION。NDT中の各型Tに対して,実効的2進精度 (effective binary 

precision) を次のとおりに定義する。 

場合: 

i) 

TがDECIMAL又はNUMERICならば,実効的2進精度は,log2(10) と,Tの処理系定義の最

大精度との積とする。 

ii) TがFLOATならば,実効的2進精度は,Tの処理系定義の最大精度とする。 

iii) Tの基数が10進ならば,実効的2進精度は,log2(10) と,Tの処理系定義の精度との積とする。 

iv) そうでなければ,実効的2進精度は,Tの処理系定義の精度とする。 

b) 次のとおりに決定される全ての優先順序関係の集合をPTCとする。NDT中の必ずしも異ならな

404 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

い二つの型T1及びT2に対して,次による。 

場合: 

i) 

T1が真数で,かつ,T2が概数ならば,T1 < T2とする。 

ii) T1が概数で,かつ,T2が真数ならば,T1 > T2とする。 

iii) T1の実効的2進精度がT2の実効的2進精度より大きいならば,T2 < T1とする。 

iv) T1の実効的2進精度がT2の実効的2進精度と等しいならば,T2 ≃T1とする。 

v) そうでなければ,T1 < T2とする。 

c) TPLは,次のとおりに決定される。 

i) 

TPLは,最初は空とする。 

ii) DTと,優先順序関係DT < T又はDT ≃TがPTC中にあるNDT中の全ての型Tとを含む型の

集合をSTとする。 

iii) ST中の型の個数をnとする。 

iv) 1からnまでの範囲のiに対して,次による。 

1) PTCに従ってTj < Tkを満たす他のどの型TjもST中に存在しないようなST中の型Tkの集

合をNTとする。 

2) 場合: 

A) NT中にただ一つの型Tkが存在するならば,TkがTPL中の最後に追加され,Tk < Trとい

う形式の全ての関係がPTCから取り除かれる。ここで,Trは,ST中のいずれかの型とす

る。 

B) NT中に二つ以上の型Tkが存在するならば,NT中のどの型Tsも,TPL中のTkと同じ位

置に割り当てられ,Tk < Tr,Tk ≃Tr,Ts < Tr及びTs ≃Trという形式の全ての関係がPTC

から取り除かれる。ここで,Trは,ST中のいずれかの型とする。 

10) DTが年月時間隔を指定するならば,TPLは,次のリストとする。 

INTERVAL YEAR 

11) DTが日時刻時間隔を指定するならば,TPLは,次のリストとする。 

INTERVAL DAY 

12) DTがDATEを指定するならば,TPLは,次のリストとする。 

DATE, TIMESTAMP 

注記293 この細分箇条の適合性規則1) 参照。 

13) DTがTIMEを指定するならば,TPLは,次のリストとする。 

TIME 

14) DTがTIMESTAMPを指定するならば,TPLは,次のリストとする。 

TIMESTAMP 

15) DTがBOOLEANを指定するならば,TPLは,次のリストとする。 

BOOLEAN 

16) DTが集まり型ならば,DT中で指定される集まりの種別(ARRAY又はMULTISETのいずれか)を

CTCとする。 

DTの要素型に対する型優先順序リスト中の要素の個数をnとする。1からnまでの範囲のiに対

して,そのようなi番目の要素をRIOiとする。TPLは,次のリストとする。 

RIO1 CTC, 

405 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

RIO2 CTC, ..., 

RIOn CTC 

17) DTが参照型ならば,DTの被参照型に対する型優先順序リスト中の要素の個数をnとする。1から

nまでの範囲のiに対して,そのようなi番目の要素をKAWiとする。TPLは,次のリストとする。 

REF(KAW1), 

REF(KAW2), ..., 

REF(KAWn) 

18) DTが行型ならば,TPLは,次のリストとする。 

ROW 

注記294 この規則は,この細分箇条中で行型が言及されなかったならば,引き起こしたかもしれ

ない混乱を避けるためだけに記述されている。行型は,<パラメタの型>として用いるこ

とができないので,行型の型優先順序リストは,決して参照されることがない。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能F054“DATE型優先順序リスト中のTIMESTAMP”なしでは,DATEの型優先順序リストは,

次のリストとする。 

DATE 

9.8 

ホストパラメタモード決定 

細分箇条署名 

“ホストパラメタモード決定” [構文規則] ( 

パラメタ: “HOST PARAM DECL”, 

パラメタ: “SQL PROC STMT” 

機能 

ホストパラメタモード決定 (Host parameter mode determination) は,与えられたホストパラメタに対する

パラメタモードを決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,HOST PARAM DECLをPDとし,SQL PROC STMTをSPSと

する。 

2) PDによって指定されるホストパラメタをPとし,PDに直に含まれる<ホストパラメタ名>をPNと

する。 

3) Pが入力ホストパラメタか,出力ホストパラメタか,又は入出力ホストパラメタ(入力ホストパラ

メタで,かつ,出力ホストパラメタ)かは,次のとおりに決定される。 

場合: 

a) PDが<状態パラメタ>ならば,Pは,出力ホストパラメタとする。 

b) そうでなければ,次による。 

場合: 

406 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

SPSに含まれる<CALL文>に直に含まれる<ルーチン呼出し>の<SQL引数リスト>の<SQL引数

> AiにPNが含まれるならば,次による。 

1) <ルーチン呼出し>の当該ルーチンをRとする。 

2) Rのi番目のSQLパラメタをPRiとする。 

3) 場合: 

A) Aiに単純に含まれる<相手指定>である<ホストパラメタ指定>にPNが含まれ,かつ,PRi

が出力SQLパラメタならば,Pは,出力ホストパラメタとする。 

B) Aiに単純に含まれる<相手指定>である<ホストパラメタ指定>にPNが含まれ,かつ,PRi

が入出力SQLパラメタ(入力SQLパラメタで,かつ,出力SQLパラメタ)ならば,Pは,

入出力ホストパラメタとする。 

C) そうでなければ,Pは,入力ホストパラメタとする。 

ii) SPSに含まれる<値指定>又は<単純値指定>にPNが含まれ,かつ,SPSに含まれる<相手指定>

又は<単純相手指定>にPNが含まれないならば,Pは,入力ホストパラメタとする。 

iii) SPSに含まれる<相手指定>又は<単純相手指定>にPNが含まれ,かつ,SPSに含まれる<値指

定>又は<単純値指定>にPNが含まれないならば,Pは,出力ホストパラメタとする。 

iv) SPSに含まれる<値指定>又は<単純値指定>にPNが含まれ,かつ,SPSに含まれる<相手指定>

又は<単純相手指定>にPNが含まれるならば,Pは,入出力ホストパラメタとする。 

v) そうでなければ,Pは,入力ホストパラメタでも,出力ホストパラメタでもない。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.9 

型名決定 

この細分箇条は,ISO/IEC 9075-14の“10.5 型名決定”によって修正される。 

細分箇条署名 

“型名決定” [構文規則] ( 

パラメタ: “TYPE” 

) 戻り: “IDENTIFIER” 

機能 

型名決定 (Type name determination) は,既定義型又は集まり型の名前に与える<識別子>を決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,TYPEをDTとする。この細分箇条の適用の結果は,FNSDT

とする。それは,IDENTIFIERとして戻される。 

2) 

14 FNSDTは,次のとおりに定義される。 

場合: 

a) DTがCHARACTERを指定するならば,“CHAR”をFNSDTとする。 

b) DTがCHARACTER VARYINGを指定するならば,“VARCHAR”をFNSDTとする。 

c) DTがCHARACTER LARGE OBJECTを指定するならば,“CLOB”をFNSDTとする。 

407 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) DTがBINARYを指定するならば,“BINARY”をFNSDTとする。 

e) DTがBINARY VARYINGを指定するならば,“VARBINARY”をFNSDTとする。 

f) DTがBINARY LARGE OBJECTを指定するならば,“BLOB”をFNSDTとする。 

g) DTがSMALLINTを指定するならば,“SMALLINT”をFNSDTとする。 

h) DTがINTEGERを指定するならば,“INTEGER”をFNSDTとする。 

i) 

DTがBIGINTを指定するならば,“BIGINT”をFNSDTとする。 

j) DTがDECIMALを指定するならば,“DECIMAL”をFNSDTとする。 

k) DTがNUMERICを指定するならば,“NUMERIC”をFNSDTとする。 

l) 

DTがREALを指定するならば,“REAL”をFNSDTとする。 

m) DTがFLOATを指定するならば,“FLOAT”をFNSDTとする。 

n) DTがDOUBLE PRECISIONを指定するならば,“DOUBLE”をFNSDTとする。 

o) DTがDATEを指定するならば,“DATE”をFNSDTとする。 

p) DTがTIMEを指定するならば,“TIME”をFNSDTとする。 

q) DTがTIMESTAMPを指定するならば,“TIMESTAMP”をFNSDTとする。 

r) DTがINTERVALを指定するならば,“INTERVAL”をFNSDTとする。 

s) DTがARRAYを指定するならば,“ARRAY”をFNSDTとする。 

t) DTがMULTISETを指定するならば,“MULTISET”をFNSDTとする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.10 同一値の決定 

この細分箇条は,ISO/IEC 9075-9の“9.5 同一値の決定”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.6 同一値の決定”によって修正される。 

細分箇条署名 

“同一値の決定” [一般規則] ( 

パラメタ: “FIRST VALUE”, 

パラメタ: “SECOND VALUE” 

機能 

同一値の決定 (Determination of identical values) は,値の二つの実現値が同一であるか,すなわち,同じ

値の出現であるかどうかを決定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,FIRST VALUEをV1とし,SECOND VALUEをV2とする。 

408 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記295 二つの値が同一 (identical) という語が用いられるところではどこでも,この細分箇条が

暗に呼び出される。 

2) 場合: 

a) V1及びV2が両方ともナル値ならば,V1は,V2と同一とする。 

b) V1がナル値で,かつ,V2がナル値でないか,又はV1がナル値でなく,かつ,V2がナル値なら

ば,V1は,V2と同一ではない。 

c) V1及びV2が比較可能な既定義型の値ならば,次による。 

場合: 

i) 

V1及びV2が文字列ならば,CHARACTER̲LENGTH(V1) をLとする。 

場合: 

1) CHARACTER̲LENGTH(V2) がLと等しく,かつ,全てのi,1 ≤ i ≤ Lに対して,V1のi番目

の文字がV2のi番目の文字と,JIS X 0221 [ISO10646] の同じ文字位置に対応するならば,

V1は,V2と同一とする。 

2) そうでなければ,V1は,V2と同一ではない。 

ii) V1及びV2がTIME WITH TIME ZONE又はTIMESTAMP WITH TIME ZONEで,それらが異な

らず,かつ,それらの時刻帯時差フィールドが異ならないならば,V1は,V2と同一とする。 

iii) そうでなければ,V1がV2と同一であることは,V1がV2と異ならないことと同値とする。 

d) 

09 14 V1及びV2が構成型の値ならば,次による。 

場合: 

i) 

V1及びV2が行で,かつ,それらのそれぞれのフィールドが同一ならば,V1は,V2と同一と

する。 

ii) V1及びV2が配列で,同じ基数をもち,かつ,二つの配列中の同じ順序位置にある要素が同一

ならば,V1は,V2と同一とする。 

iii) V1及びV2がマルチ集合で,同じ基数Nをもち,かつ,全てのiに対して,VE1iがVE2iと同

一であるようなV1の列挙VE1i,1 ≤ i ≤ N及びV2の列挙VE2i,1 ≤ i ≤ Nが存在するならば,

V1は,V2と同一とする。 

iv) V1及びV2が参照で,かつ,V1がV2と異ならないならば,V1は,V2と同一とする。 

v) そうでなければ,V1は,V2と同一ではない。 

e) V1及びV2が同じ最特定型MSTの値で,かつ,MSTが利用者定義型ならば,次による。 

場合: 

i) 

MSTが個別型で,その元型がSDTで,かつ,SDT(V1) 及びSDT(V2) の結果が同一ならば,

V1は,V2と同一とする。 

ii) MSTが構造型で,かつ,MSTに対して定義されるどの観測関数Oに対しても,呼出しO(V1) 

及びO(V2) の結果が同一ならば,V1は,V2と同一とする。 

iii) そうでなければ,V1は,V2と同一ではない。 

f) 

そうでなければ,V1は,V2と同一ではない。 

適合性規則 

なし。 

9.11 等値性演算 

この細分箇条は,ISO/IEC 9075-9の“9.6 等値性演算”によって修正される。 

409 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

この細分箇条は,ISO/IEC 9075-14の“10.8 等値性演算”によって修正される。 

機能 

等値性演算 (Equality operations) は,等値性のテストを含む演算でのデータ型による禁止及び制限を規定

する。 

構文規則 

1) 等値性演算 (equality operation) は,次のいずれかとする。 

a) <等号演算子>又は<不等号演算子>を指定する<比較述語>。 

b) <等号演算子>又は<不等号演算子>を指定する<限定比較述語>。 

c) <IN述語>。 

d) <DISTINCT述語>。 

e) <MATCH述語>。 

f) 

<MEMBER述語>。 

g) NATURAL又はUSINGを指定する<結合表>。 

h) MAPを指定する<利用者定義順序付け定義>。 

i) 

<POSITION式>。 

2) 等値性演算のオペランド (operand of an equality operation) は,次のいずれかとする。 

a) <等号演算子>又は<不等号演算子>を指定する<比較述語>に単純に含まれる<行値述語オペランド

>の宣言行型のフィールド。 

b) <等号演算子>又は<不等号演算子>を指定する<限定比較述語>に単純に含まれる<行値述語オペラ

ンド>の宣言行型のフィールド。 

c) <等号演算子>又は<不等号演算子>を指定する<限定比較述語>に単純に含まれる<表副問合せ>の

列。 

d) <IN述語>に単純に含まれる<行値述語オペランド>又は<行値式>の宣言行型のフィールド。 

e) <IN述語>に単純に含まれる<表副問合せ>の列。 

f) 

<DISTINCT述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。 

g) <MATCH述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。 

h) <MATCH述語>に単純に含まれる<表副問合せ>の列。 

i) 

<MEMBER述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。 

j) 

NATURAL又はUSINGを指定する<結合表>の対応する結合列。 

k) MAPを指定する<利用者定義順序付け定義>に単純に含まれる<写像関数指定>によって識別され

るSQL呼出し関数の<戻りデータ型>。 

l) 

<POSITION式>に単純に含まれる<データ列値式>。 

m) <POSITION式>に単純に含まれる<2進オクテット値式>。 

3) 等値性演算のオペランドの宣言型は,UDT-NC順序付けであってはならない。 

4) 等値性演算のオペランドの宣言型の集合をVSとする。VSが文字列型から成るならば,VSを

TYPESETとして,“9.15 照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻

されるCOLLを等値性演算で用いるべき照合順とする。 

5) 等値性演算のオペランドOPの宣言型がマルチ集合型ならば,OPは,マルチ集合要素グループ化操

作のマルチ集合オペランドとする。“9.13 マルチ集合要素グループ化操作”の構文規則及び適合性

規則を適用する。 

410 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語中で,等値性演算のオペランドの宣言型は,

ST順序付けであってはならない。 

2) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中で,等値性演算のオペランド

の宣言型は,LOB順序付けであってはならない。 

3) 機能S275“高度マルチ集合提供”なしでは,適合するSQL言語中で,等値性演算のオペランドの宣

言型は,マルチ集合順序付けであってはならない。 

注記296 等値性演算のオペランドOPの宣言型がマルチ集合型ならば,OPは,マルチ集合要素グ

ループ化操作のマルチ集合オペランドとする。“9.13 マルチ集合要素グループ化操作”の

適合性規則を適用する。 

9.12 グループ化操作 

この細分箇条は,ISO/IEC 9075-9の“9.7 グループ化操作”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.9 グループ化操作”によって修正される。 

機能 

グループ化操作 (Grouping operations) は,データのグループ化を含む操作でのデータ型による禁止及び

制限を規定する。 

構文規則 

1) グループ化操作 (grouping operation) は,次のいずれかとする。 

a) <GROUP BY句>。 

b) <ウィンドウ区画句>。 

c) DISTINCTを指定する<集約関数>。 

d) DISTINCTを直に含む<問合せ指定>。 

e) UNION DISTINCTを単純に含むか又は暗に想定する<問合せ式本体>。 

f) 

EXCEPTを単純に含む<問合せ式本体>。 

g) INTERSECTを単純に含む<問合せ項>。 

h) <UNIQUE述語>。 

i) 

<一意性制約定義>。 

j) 

<参照制約定義>。 

2) グループ化操作のオペランド (operand of a grouping operation) は,次のいずれかとする。 

a) <GROUP BY句>のグループ化列。 

b) <ウィンドウ区画句>の分割列。 

c) DISTINCTを指定する<集約関数>に単純に含まれる<値式>。 

d) DISTINCTを直に含む<問合せ指定>の結果の列。 

e) UNION DISTINCTを単純に含むか又は暗に想定する<問合せ式本体>の結果の列。 

f) 

EXCEPTを単純に含む<問合せ式本体>の結果の列。 

g) INTERSECTを単純に含む<問合せ項>の結果の列。 

411 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

h) <UNIQUE述語>に単純に含まれる<表副問合せ>の列。 

i) 

<一意性制約定義>の<一意列リスト>によって識別される列。 

j) 

<参照制約定義>の参照列。 

3) グループ化操作のオペランドの宣言型は,LOB順序付け,配列順序付け,マルチ集合順序付け,UDT-

EC順序付け又はUDT-NC順序付けであってはならない。 

4) グループ化操作のオペランドの宣言型の集合をVSとする。VSが文字列型から成るならば,VSを

TYPESETとして,“9.15 照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻

されるCOLLをグループ化操作で用いるべき照合順とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語中で,グループ化操作のオペランドの宣言型

は,ST順序付けであってはならない。 

9.13 マルチ集合要素グループ化操作 

この細分箇条は,ISO/IEC 9075-9の“9.8 マルチ集合要素グループ化操作”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.10 マルチ集合要素グループ化操作”によって修正される。 

機能 

マルチ集合要素グループ化操作 (Multiset element grouping operations) は,マルチ集合の要素のグループ

化を含む操作のためのマルチ集合の宣言要素型のデータ型による禁止及び制限を規定する。 

構文規則 

1) マルチ集合要素グループ化操作 (multiset element grouping operation) は,次のいずれかとする。 

a) 等値性演算のオペランドの宣言型がマルチ集合型であるような等値性演算。 

b) <マルチ集合SET関数>。 

c) MULTISET UNION DISTINCTを指定する<マルチ集合値式>。 

d) MULTISET EXCEPTを指定する<マルチ集合値式>。 

e) MULTISET INTERSECTを指定する<マルチ集合項>。 

f) 

<SUBMULTISET述語>。 

g) <SET述語>。 

h) INTERSECTIONを指定する<一般集合関数>。 

2) マルチ集合要素グループ化操作のマルチ集合オペランド (multiset operand) は,次のいずれかとする。 

a) <マルチ集合SET関数>に単純に含まれる<マルチ集合値式>。 

b) MULTISET UNION DISTINCTを単純に含む<マルチ集合値式>に単純に含まれる<マルチ集合値式

>又は<マルチ集合項>。 

c) MULTISET EXCEPTを単純に含む<マルチ集合値式>に単純に含まれる<マルチ集合値式>又は<マ

ルチ集合項>。 

d) MULTISET INTERSECTを単純に含む<マルチ集合項>に単純に含まれる<マルチ集合項>又は<マ

ルチ集合一次子>。 

e) オペランドの宣言型がマルチ集合型であるような等値性演算のオペランド。 

412 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

f) 

<SUBMULTISET述語>に単純に含まれる<行値述語オペランド>のフィールド。 

g) <SUBMULTISET述語>に単純に含まれる<マルチ集合値式>。 

h) <SET述語>に単純に含まれる<行値述語オペランド>のフィールド。 

i) 

INTERSECTIONを指定する<一般集合関数>に単純に含まれる<値式>。 

3) マルチ集合要素グループ化操作のマルチ集合オペランドの宣言要素型は,LOB順序付け,配列順序

付け,マルチ集合順序付け,UDT-EC順序付け又はUDT-NC順序付けであってはならない。 

4) マルチ集合要素グループ化操作のマルチ集合オペランドの宣言要素型の集合をVSとする。VSが文

字列型から成るならば,VSをTYPESETとして,“9.15 照合順決定”の構文規則を適用する。これ

らの構文規則の適用によって戻されるCOLLをマルチ集合要素グループ化操作で用いるべき照合順

とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語中で,マルチ集合要素グループ化操作のマル

チ集合オペランドの宣言要素型は,ST順序付けであってはならない。 

9.14 順序付け操作 

この細分箇条は,ISO/IEC 9075-9の“9.9 順序付け操作”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“10.11 順序付け操作”によって修正される。 

機能 

順序付け操作 (Ordering operations) は,データの順序付けを含む操作でのデータ型による禁止及び制限

を規定する。 

構文規則 

1) 順序付け操作 (ordering operation) は,次のいずれかとする。 

a) <等号演算子>又は<不等号演算子>を指定しない<比較述語>。 

b) <等号演算子>又は<不等号演算子>を指定しない<限定比較述語>。 

c) <BETWEEN述語>。 

d) <OVERLAPS述語>。 

e) MAX又はMINを指定する<集約関数>。 

f) 

<ソート指定リスト>。 

g) ORDER FULL BY MAPを指定する<利用者定義順序付け定義>。 

2) 順序付け操作のオペランド (operand of an ordering operation) は,次のいずれかとする。 

a) <等号演算子>又は<不等号演算子>を指定しない<比較述語>に単純に含まれる<行値述語オペラン

ド>の宣言行型のフィールド。 

b) <等号演算子>又は<不等号演算子>を指定しない<限定比較述語>に単純に含まれる<行値述語オペ

ランド>の宣言行型のフィールド。 

c) <等号演算子>又は<不等号演算子>を指定しない<限定比較述語>に単純に含まれる<表副問合せ>

の列。 

d) <BETWEEN述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。 

413 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) MAX又はMINを指定する<集約関数>に単純に含まれる<値式>。 

f) 

<ソートキー>に単純に含まれる<値式>。 

g) ORDER FULL BY MAPを指定する<利用者定義順序付け定義>に単純に含まれる<写像関数指定>

によって識別されるSQL呼出し関数の<戻りデータ型>。 

3) 順序付け操作のオペランドの宣言型は,LOB順序付け,配列順序付け,マルチ集合順序付け,参照

順序付け,UDT-EC順序付け又はUDT-NC順序付けであってはならない。 

注記297 さらに,“10.9 <集約関数>”の構文規則によって,MAX又はMINのオペランドは,行順

序付けであってはならない。これは,ナルでない行順序付け値の順序付けが全順序付け

ではない[例えば,行 (1, NULL) 及び (NULL, 1) の相対的な順序は,決まらない]から

である。“10.10 <ソート指定リスト>”の一般規則は,ナル値を含む行を全順序付けする

ための特殊な規則を提供するが,これらの規則は,MAX又はMINには用いない。他の

順序付け操作では,全順序付けを必要としない。 

4) 順序付け操作のオペランドの宣言型の集合をVSとする。VSが文字列型から成るならば,VSを

TYPESETとして,“9.15 照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻

されるCOLLを順序付け操作で用いるべき照合順とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語中で,順序付け操作のオペランドの宣言型

は,ST順序付けであってはならない。 

9.15 照合順決定 

細分箇条署名 

“照合順決定” [構文規則] ( 

パラメタ: “TYPESET” 

) 戻り: “COLL” 

機能 

照合順決定 (Collation determination) は,文字列の比較で用いるべき照合順を決定するための規則を規定

する。 

構文規則 

1) この細分箇条の構文規則の適用では,TYPESETをTSとする。この細分箇条の適用の結果は,用い

るべき照合順とし,それは,COLLとして戻される。 

2) TS中の少なくとも一つの宣言型は,宣言型照合順をもたなければならない。 

3) TSをDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規則の適

用によって戻されるRESTYPEをRDTとする。RDTの文字集合CCSとする。 

4) 場合: 

a) 比較演算が<参照制約定義>ならば,各参照列に対して,用いるべき照合順は,被参照表の対応す

る列の宣言型照合順とする。 

b) 少なくとも一つのオペランドが明示 (explicit) の照合順起源をもつならば,明示 である照合順起

414 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

源をもつどのオペランドも,同じ宣言型照合順EDTCをもたなければならず,用いるべき照合順

は,EDTCとする。 

c) <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備される

<準備可能文>,又は直接起動される<直接SQL文>に比較演算が含まれ,かつ,CCSがSQLセシ

ョン照合順をもつならば,用いるべき照合順は,そのSQLセション照合順とする。 

d) CCSがSQLクライアントモジュール照合順をもつならば,用いるべき照合順は,その照合順とす

る。 

e) そうでなければ,暗黙 (implicit) である照合順起源をもつどのオペランドも,同じ宣言型照合順

IDTCをもたなければならず,用いるべき照合順は,IDTCとする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.16 配列戻し関数の実行 

この細分箇条は,ISO/IEC 9075-13の“8.5 配列戻し関数の実行”によって修正される。 

細分箇条署名 

“配列戻し関数の実行” [一般規則] ( 

パラメタ: “ARRAY”, 

パラメタ: “EFFECTIVE SQL PARAMETER LIST”, 

パラメタ: “PROGRAM” 

機能 

配列戻し関数の実行 (Execution of array-returning function) は,配列の値を戻す外部関数の実行を定義す

る。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,ARRAYをARとし,EFFECTIVE SQL PARAMETER LISTを

ESPLとし,PROGRAMをPとする。 

2) ARの基数をARCとする。 

3) ESPL中の項目の個数をENとする。 

4) ESPL中のi番目のパラメタをESPi,1 ≤ i ≤ ENとする。 

5) 結果データ項目の個数をFRNとする。 

6) 

13 Pの静的SQL引数リスト中の値の個数をPN及びNとする。 

7) Pは,ホスト言語データ型が次のとおりに決定されるEN個のパラメタPDiのリストをもつ。 

a) Pの言語がADA,C,COBOL,FORTRAN,M,PASCAL又はPLIを指定するかどうかに依存し

background image

415 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

て,それぞれ,表16“Adaのためのデータ型対応”,表17“Cのためのデータ型対応”,表18“COBOL

のためのデータ型対応”,表19“Fortranのためのデータ型対応”,表20“Mのためのデータ型対

応”,表21“Pascalのためのデータ型対応”又は表22“PL/Iのためのデータ型対応”を適用デー

タ型対応表 (operative data type correspondences table) とする。適用データ型対応表の二つの列を,

“SQLデータ型 (SQL data type) ”の列及び“ホストデータ型 (host data type) ”の列として参照

する。 

b) 1からENまでの範囲のiに対して,ESPiの<データ型>をPTiとし,適用データ型対応表中で,

“SQLデータ型”の列の値がPTiの行の“ホストデータ型”の列に記載されたデータ型を,PDi

のホスト言語データ型DTiとする。 

8) 0をEとする。 

9) 

13(“open call”を示す)-1の値を呼出し型データ項目がもつならば,次による。 

a) 1からENまでの範囲のiに対して,パラメタPDiには,次のとおりに値が設定される。Pの言語

をLANGUAGEとして,PTiをSQL TYPEとして,ESPiの値をSQL VALUEとして,“9.4 SQLサ

ーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用によって

戻されるHOST VALUEをPDiとする。 

b) Pが実行される。 

c) 1からENまでの範囲のiに対して,Pの言語をLANGUAGEとして,PTiをSQL TYPEとして,

PDiの値をHOST VALUEとして,“9.3ホスト言語からSQLサーバへの値の受渡し”の一般規則

を適用する。これらの一般規則の適用によって戻されるSQL VALUEをESPiとする。 

10) 13 場合: 

a) 

13 例外データ項目の値が[終了条件 成功終了 (successful completion) に対応する]ʼ00000ʼか,又

は例外データ項目の値の最初の2文字が[終了条件 部分条件付き警告 (warning) に対応する]

“01”ならば,呼出し型データ項目に(“fetch call”を示す)0を設定する。 

b) 

13 例外データ項目の値が[終了条件 データなし (no data) に対応する]ʼ02000ʼならば,次によ

る。 

i) 

(PN + FRN)+ N + 1から (PN + FRN)+ N + FRNまでの範囲のiに対して,各PDi(すなわち,

結果データ項目に対応するSQL標識引数)が負の値ならば,ARにナル値を設定する。 

ii) 呼出し型データ項目に(“close call”を示す)1を設定する。 

c) 

13 そうでなければ,呼出し型データ項目に(“close call”を示す)1を設定する。 

11) 呼出し型データ項目が(“fetch call”を示す)値0をもつ限り,次の手順が適用される。 

a) 

13 EN個のパラメタPDiのリストの値が次のとおりに設定される。 

i) 

1からEN -2までの範囲のiに対して,Pの言語をLANGUAGEとして,PTiをSQL TYPEとし

て,ESPiの値をSQL VALUEとして,“9.4 SQLサーバからホスト言語への値の受渡し”の一般

規則を適用する。これらの一般規則の適用によって戻されるHOST VALUEをPDiとする。 

ii) 保存領域データ項目に対して,EN -1と等しいiに対して,PDiには,Pの前の実行によって

PDi中に戻された値が設定される。 

iii) 呼出し型データ項目に対して,ENと等しいiに対して,PDiには,値0が設定される。 

b) Pが実行される。 

c) 1からENまでの範囲のiに対して,Pの言語をLANGUAGEとして,PTiをSQL TYPEとして,

PDiの値をHOST VALUEとして,“9.3ホスト言語からSQLサーバへの値の受渡し”の一般規則

416 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

を適用する。これらの一般規則の適用によって戻されるSQL VALUEをESPiとする。 

d) 

13 場合: 

i) 

13 例外データ項目の値が(終了条件 成功終了 に対応する)ʼ00000ʼか,又は例外データ項目

の値の最初の2文字が(終了条件 部分条件付き警告 に対応する)“01”ならば,次による。 

1) Eの値を1増加させる。 

2) E > ARCならば,例外条件:データ例外 (data exception) − 配列要素誤り (array element error) 

が引き起こされる。 

3) 呼出し型データ項目が0ならば,次による。 

場合: 

A) 

13 (PN + FRN)+ N + 1から (PN + FRN)+ N + FRNまでの範囲のiに対して,各PDi(すな

わち,結果データ項目に対応するSQL標識引数)が負の値ならば,ナル値をARのE番目

の要素とする。 

B) そうでなければ,次による。 

場合: 

I) 

13  FRNが1ならば,結果データ項目の値をARのE番目の要素とする。 

II) そうでなければ,次による。 

1) i番目の結果データ項目の値をRDIi,1 ≤ i ≤ FRNとする。 

2) 次の<行値式>の値をARのE番目の要素とする。 

ROW ( RDI1, ... , 

RDIFRN ) 

ii) 

13 例外データ項目の値が(終了条件 データなし に対応する)ʼ02000ʼならば,次による。 

1) Eの値が0ならば,ARに基数が0の配列を設定する。 

2) 呼出し型データ項目に(“close call”を示す)1を設定する。 

iii) そうでなければ,呼出し型データ項目に(“close call”を示す)1を設定する。 

12) 13 呼出し型データ項目が(“close call”を示す)値1をもつならば,次のとおりに値が設定され

たEN個のパラメタPDiのリストを用いてPが実行される。 

a) 1からEN -2までの範囲のiに対して,Pの言語をLANGUAGEとして,PTiをSQL TYPEとし

て,ESPiの値をSQL VALUEとして,“9.4 SQLサーバからホスト言語への値の受渡し”の一般規

則を適用する。これらの一般規則の適用によって戻されるHOST VALUEをPDiとする。 

b) 保存領域データ項目に対して,EN -1と等しいiに対して,PDiには,Pの前の実行によってPDi

中に戻された値が設定される。 

c) 呼出し型データ項目に対して,ENと等しいiに対して,PDiには,値1が設定される。 

d) Pが実行される。 

注記298 “close call”の出力引数は,無視される。この細分箇条の結果ARは,既に計算されてい

る。 

適合性規則 

なし。 

9.17 マルチ集合戻し関数の実行 

細分箇条署名 

 “マルチ集合戻し関数の実行” [一般規則] ( 

417 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

パラメタ: “MULTISET”, 

パラメタ: “EFFECTIVE SQL PARAMETER LIST”, 

パラメタ: “PROGRAM” 

機能 

マルチ集合戻し関数の実行 (Execute of multiset-returning functions) は,マルチ集合の値を戻す外部関数の

実行を定義する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,MULTISETをMUとし,EFFECTIVE SQL PARAMETER LIST

をESPLとし,PROGRAMをPとする。 

2) MUの要素型をETとする。 

3) 要素型ETをもつ配列型の処理系定義の最大基数をCとする。 

4) 配列型ET ARRAY[C] をATとする。 

5) 宣言型がATである配列をARとする。 

6) ARをARRAYとして,ESPLをEFFECTIVE SQL PARAMETER LISTとして,PをPROGRAMとし

て,“9.16 配列戻し関数の実行”の一般規則を適用する。 

7) “6.13 <CAST指定>”の一般規則に従って,ARをMUのマルチ集合型に型変換した結果をMUと

する。 

適合性規則 

なし。 

9.18 XQuery正規表現照合 

細分箇条署名 

“XQuery正規表現照合” [一般規則] ( 

パラメタ: “STRING”, 

パラメタ: “PATTERN”, 

パラメタ: “POSITION”, 

パラメタ: “UNITS”, 

パラメタ: “FLAG” 

) 戻り: “LIST” 

機能 

XQuery正規表現照合 (XQuery regular expression matching) は,文字列中でのXQuery正規表現との一致

ベクトルのリストを決定する。 

構文規則 

なし。 

アクセス規則 

なし。 

418 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) この細分箇条の一般規則の適用では,STRINGをSとし,PATTERNをPATとし,POSITIONをSP

とし,UNITSをUとし,FLAGをFLとする。この細分箇条の適用の結果は,LOMVとする。それ

は,LISTとして戻される。 

2) 場合: 

a) PATの文字レパートリがUCSならば,PATをPとする。 

b) そうでなければ,PATのUCSへの処理系定義の文字変換の結果をPとする。 

3) 場合: 

a) FLの文字レパートリがUCSならば,FLをFとする。 

b) そうでなければ,FLのUCSへの処理系定義の文字変換の結果をFとする。 

4) PがXQuery正規表現でないならば,例外条件:データ例外 (data exception) − XQuery正規表現が

正しくない (invalid XQuery regular expression) が引き起こされる。 

5) FがXQueryオプションフラグでないならば,例外条件:データ例外 − XQueryオプションフラグ

が正しくない (invalid XQuery option flag) が引き起こされる。 

6) Sの文字単位での長さをLENとする。 

7) 位置/長さPLは,P = 0で,かつ,L = 0か,又はPが正の値で,Lが負でない値で,かつ,P + L ≤ 

LEN + 1かのいずれかであるような,真数値の位置Pと長さLとの対とする。Pが正の値ならば,

PLは,Sの部分文字列を表現し,その開始位置は,Pとし,その長さは,Lとする。Pが0ならば,

PLは,Sの部分文字列を表現しない。 

注記299 例えば,Sが'a'ならば,四つの位置/長さ,すなわち,Sの先頭からの長さ0の部分文字

列を示す (1,0),Sの最後からの長さ0の部分文字列を示す (2,0),Sの文字列全体を示す 

(1,1) 及びSの部分文字列ではないことを示す (0,0) がある。 

8) PAT中の括弧付きグループの個数をGとする。 

9) XQuery正規表現一致 (XQuery regular expression match) は,次のとおりに定義される。 

場合: 

a) Sの文字レパートリがUCSならば,XQuery正規表現一致は,次の修正を行った [XQueryFO] に

よって,Fをパラメタ$flagsの値として関数fn:matches()に対して定義される一致とする。 

i) 

メタ文字“^”,“$”及び“.”は,[Unicode18] の“RL1.6 Line boundaries(行境界)”の指針に

従って解釈する。 

ii) 複数文字エスケープ (multi-character escape) “\s”は,U+0020 (space),U+0009 (tab),又は 

[Unicode18] の“RL1.6 Line boundaries”によってnewline sequence(改行並び)として識別され

る任意の単一文字若しくは2文字の並びと一致する。 

iii) 複数文字エスケープ“\s”は,複数文字エスケープ“\s”と一致する単一文字と一致しない

任意の単一文字と一致する。 

b) そうでなければ,XQuery正規表現一致の定義は,処理系定義とする。 

10) 一致ベクトルMVは,添え字が0からGまでのG+1個の位置/長さの配列とする。MVは,キャプ

チャグループについての情報を含む,PATのXQuery正規表現一致を表現する。MV[0] は,PATの

XQuery正規表現一致全体を示す位置/長さとする。1からGまでの範囲のiに対して,MV[i] は,

MV[0] によって示されるXQuery正規表現一致内のi番目のキャプチャグループを示す位置/長さと

する。PATのi番目の括弧付き部分表現が一致しないならば,MV[i]の位置は,0とする。 

419 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記300 PATのXQuery正規表現一致が“部分文字列ではない (no substring)”になり得ないので,

MV[0] の位置は,決して0ではない。Sが'a'で,かつ,PATが'(a)|(b)'のときに,

一致しないキャプチャグループの例が発生する。この例では,2番目の括弧付き部分表

現に一致がないので,一致ベクトルは,MV[0] = (1,1),MV[1] = (1,1) 及びMV[2] = (0,0) 

によって与えられる。 

11) この細分箇条の結果は,次のとおりに定義される一致ベクトルのリストLOMVとする。 

a) SP ‒1をP0とし,0をL0とする。 

b) i ≥ 1に対して,Pi及びLiは,次のとおりに再帰的に定義される。Pi > Pi-1 + Li-1‒1及びPi > Pi-1

を満たすような,S中でのPATの最初のXQuery正規表現一致のU単位での位置をPiとし,この

一致のU単位での長さをLiとする。 

注記301 並びPiは,厳密に増加し,LEN+1によって上に限界があるので,この再帰的な定義

は,共通要素をもたない有限個数の一致を見つけた後で終了する。 

c) 見つかったXQuery正規表現一致の個数をNとする。 

注記302 一致が存在しない可能性があり,その場合には,Nは,0で,LOMVは,空である。

(P0, L0) = (SP ‒ 1, 0) は,結果中に含まれない。それは,単に,最初の一致の探索を開

始するための位置として用いる。 

d) 1からNまでの範囲のiに対して,次のような一致ベクトルをMViとする。 

i) 

MVi [0] が,位置がPiで,かつ,長さがLiの位置/長さである。 

ii) 1からGまでの範囲のjに対して,MVi [j] が次の位置/長さである。 

場合: 

1) i番目のXQuery正規表現一致中で,PATのj番目の括弧付き部分表現が一致しないならば,

位置0及び長さ0。 

2) そうでなければ,i番目のXQuery正規表現一致内のj番目のキャプチャグループの位置及び

長さ。 

e) 1〜Nの順序でのN個の一致ベクトルMViのリストをLOMVとする。 

適合性規則 

なし。 

9.19 XQuery正規表現置換 

細分箇条署名 

“XQuery正規表現置換” [一般規則] ( 

パラメタ: “STRING”, 

パラメタ: “PATTERN”, 

パラメタ: “MATCH”, 

パラメタ: “REPLACEMENT”, 

パラメタ: “FLAG” 

) 戻り: “RESULT” 

機能 

XQuery正規表現置換 (XQuery regular expression replacement) は,XQuery正規表現と一致する部分文字

列を置換文字列に置き換える。 

構文規則 

420 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,STRINGをSTRとし,PATTERNをPATとし,MATCHをMV

とし,REPLACEMENTをREPとし,FLAGをFLとする。この細分箇条の適用の結果は,文字列

とする。それは,RESULTとして戻される。 

2) MV[0] をPLとする。PLの位置をPとし,PLの長さをLとする。 

3) Lが0ならば,例外条件:データ例外 (data exception) − 長さ0のデータ列の置換えを試みた 

(attempt to replace a zero-length string) が引き起こされる。 

4) 場合: 

a) REPの文字レパートリがUCSならば,REPをRとする。 

b) そうでなければ,REPのUCSへの処理系定義の変換の結果をRとする。 

5) RがXQuery置換文字列でないならば,例外条件:データ例外 − XQuery置換文字列が正しくない 

(invalid XQuery replacement string) が引き起こされる。 

6) STRの最初の (P -1) 個の文字から成る文字列をSTR1とする。 

7) STRのP番目から (P + L -1) 番目までの文字から成る文字列をSTR2とする。 

8) STRの (P + L) 番目から最後までの文字から成る文字列をSTR3とする。 

9) 場合: 

a) STR,PAT,REP及びFLの文字レパートリがUCSならば,XQuery関数fn:replace()の結果

をTとする。ここで,$input引数の値は,STR2とし,$pattern引数の値は,PATとし,

$replacement引数の値は,Rとし,$flags引数の値は,FLとする。 

b) そうでなければ,Tの値は,処理系定義とする。 

10) この細分箇条の結果は,STR1とTとSTR3との連結とする。 

適合性規則 

なし。 

9.20 データ型の同一性 

細分箇条署名 

 “データ型の同一性” [構文規則] ( 

パラメタ: “TYPE1”, 

パラメタ: “TYPE2” 

)  

機能 

データ型の同一性 (Data type identity) は,二つのデータ型が互換で,かつ,同じ特性をもつかどうかを

決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,TYPE1をPMとし,TYPE2をPとする。 

2) PMとPとは,互換でなければならない。 

3) PMが固定長文字列型ならば,PMの長さは,Pの長さと等しくなければならない。 

4) PMが可変長文字列型ならば,PMの最大長は,Pの最大長と等しくなければならない。 

421 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) PMが真数型ならば,PMの精度及び位取りは,それぞれ,Pの精度及び位取りと等しくなければな

らない。 

6) PMが概数型ならば,PMの精度は,Pの精度と等しくなければならない。 

7) PMが固定長2進オクテット列型ならば,PMの長さは,Pの長さと等しくなければならない。 

8) PMが可変長2進オクテット列型ならば,PMの最大長は,Pの最大長と等しくなければならない。 

9) PMが<時刻小数秒精度>をもつ日時データ型ならば,PMの<時刻小数秒精度>は,Pの<時刻小数秒

精度>と等しくなければならない。 

10) PMが時間隔型ならば,PMの<時間隔修飾子>は,Pの<時間隔修飾子>と等価でなければならない。 

11) PMが集まり型ならば,次による。 

a) PMの集まりの種類(ARRAY又はMULTISET)とPの集まりの種類とが同じでなければならな

い。 

b) PMが配列型ならば,PMの最大基数は,Pの最大基数と等しくなければならない。 

c) PMの要素型及びPの要素型を二つのデータ型として,この細分箇条の構文規則を適用する。 

12) PMが行型ならば,次による。 

a) PMの次数をNとする。 

b) PMのi番目のフィールドのデータ型,及びPのi番目のフィールドのデータ型を,それぞれ,

DTFPMi及びDTFPiとする。1からNまでの範囲のiに対して,DTFPMi及びDTFPiを二つの

データ型として,この細分箇条の構文規則を適用する。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.21 FROM-SQL関数の決定 

細分箇条署名 

 “FROM-SQL関数の決定” [構文規則] ( 

パラメタ: “TYPE”, 

パラメタ: “GROUP” 

)  

機能 

FROM-SQL関数の決定 (Determination of a from-sql function) は,利用者定義型の名前及びグループの名

前が与えられた利用者定義型のFROM-SQL関数を決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,TYPEをUDTとし,GROUPをGNとする。 

2) UDTの上位型の集合をSSUDTとする。 

3) GNと等価なグループ名を含むグループ記述子GDを,データ型記述子に含まれる変換記述子が含

むようなデータ型がSSUDT中にあるならば,そのデータ型をSUDTとする。 

4) 適用可能なFROM-SQL関数 (applicable from-sql function) は,GD中にFROM-SQL関数があるなら

ば,そのFROM-SQL関数の特定名によって識別されるSQL呼出し関数とする。 

422 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.22 置換メソッドのためのFROM-SQL関数の決定 

細分箇条署名 

 “置換メソッドのためのFROM-SQL関数の決定” [構文規則] ( 

パラメタ: “ROUTINE”, 

パラメタ: “POSITION” 

)  

機能 

置換メソッドのためのFROM-SQL関数の決定 (Determination of a from-sql function for an overriding 

method) は,置換メソッドの名前及びSQLパラメタの順序位置が与えられた利用者定義型のFROM-SQL

関数を決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,ROUTINEをRとし,POSITIONをNとする。 

2) Rの原メソッドをOMとする。 

3) 適用可能なFROM-SQL関数 (applicable from-sql function) は,OMがあるならば,そのN番目のSQL

パラメタに関連付けられたFROM-SQL関数とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.23 TO-SQL関数の決定 

細分箇条署名 

 “TO-SQL関数の決定” [構文規則] ( 

パラメタ: “TYPE”, 

パラメタ: “GROUP” 

)  

機能 

TO-SQL関数の決定 (Determination of a to-sql function) は,利用者定義型の名前及びグループの名前が与

えられた利用者定義型のTO-SQL関数を決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,TYPEをUDTとし,GROUPをGNとする。 

2) UDTの上位型の集合をSSUDTとする。 

3) GNと等価なグループ名を含むグループ記述子GDを,データ型記述子に含まれる変換記述子が含

423 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

むようなデータ型がSSUDT中にあるならば,そのデータ型をSUDTとする。 

4) 適用可能なTO-SQL関数 (applicable to-sql function) は,GD中にTO-SQL関数があるならば,その

TO-SQL関数の特定名によって識別されるSQL呼出し関数とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.24 置換メソッドのためのTO-SQL関数の決定 

細分箇条署名 

 “置換メソッドのためのTO-SQL関数の決定” [構文規則] ( 

パラメタ: “ROUTINE” 

)  

機能 

置換メソッドのためのTO-SQL関数の決定 (Determination of a to-sql function for an overriding method) は,

置換メソッドの名前が与えられた利用者定義型のTO-SQL関数を決定する。 

構文規則 

1) この細分箇条の構文規則の適用では,ROUTINEをRとする。 

2) Rの原メソッドをOMとする。 

3) 適用可能なTO-SQL関数 (applicable to-sql function) は,OMがあるならば,その結果に関連付けら

れたTO-SQL関数とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

9.25 順序数生成子の次値の生成 

細分箇条署名 

“順序数生成子の次値の生成” [一般規則] ( 

パラメタ: “SEQUENCE” 

) 戻り: “RESULT” 

機能 

順序数生成子の次値の生成 (Generation of the next value of a sequence generator) は,順序数生成子の次値

を生成して戻す。 

構文規則 

なし。 

アクセス規則 

なし。 

424 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) この細分箇条の一般規則の適用では,SEQUENCEをSEQとする。この細分箇条の適用の結果は,

V1とする。それは,RESULTとして戻される。 

2) SEQのデータ型,現在基底値,増分,最大値及び最小値を,それぞれ,DT,CBV,INC,SMAX及

びSMINとする。 

3) SMIN ≤ CBV + N * INC ≤ SMAXで,かつ,値 (CBV + N * INC) が現行の周期でまだ戻されていない

ような,負でない整数Nが存在するならば,(CBV + N * INC) をV1とする。そうでなければ,次に

よる。 

場合: 

a) SEQの周期選択肢がNO CYCLEならば,例外条件:データ例外 (data exception) − 順序数生成

子の限界を超えた (sequence generator limit exceeded) が引き起こされる。 

b) そうでなければ,新しい周期が開始される。 

場合: 

i) 

SEQが昇順順序数生成子ならば,SMINをV1とする。 

ii) そうでなければ,SMAXをV1とする。 

4) 場合: 

a) SEQが昇順順序数生成子ならば,SEQの現在基底値には,周期中の最も低い未発行の値が設定さ

れる。 

b) そうでなければ,SEQの現在基底値には,周期中の最も高い未発行の値が設定される。 

5) V1は,RESULTとして戻される。 

適合性規則 

なし。 

9.26 順序数生成子の作成 

細分箇条署名 

 “順序数生成子の作成” [構文規則] ( 

パラメタ: “OPTIONS”, 

パラメタ: “DATA TYPE” 

 “順序数生成子の作成” [一般規則] ( 

パラメタ: “OPTIONS”, 

パラメタ: “DATA TYPE” 

) 戻り: “SEQGENDESC” 

機能 

順序数生成子の作成 (Creation of a sequence generator) は,外部順序数生成子又は内部順序数生成子の定

義を完了する。 

構文規則 

1) この細分箇条の構文規則の適用では,OPTIONSをOPTとし,DATA TYPEをDTとする。 

2) OPTは,<共通順序数生成子選択肢>の形式に適合しなければならない。この細分箇条の残りの部分

で用いるBNF非終端記号は,OPTの内容を参照する。 

3) <順序数生成子START WITH選択肢>,<順序数生成子INCREMENT BY選択肢>,<順序数生成子

425 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

MAXVALUE選択肢>,<順序数生成子MINVALUE選択肢>及び<順序数生成子CYCLE選択肢>のそ

れぞれは,高々1回指定しなければならない。 

4) <順序数生成子INCREMENT BY選択肢>が指定されるならば,<順序数生成子増分>をINCとする。

そうでなければ,値が1の<符号付き数定数>をINCとする。 

5) INCの値は,0であってはならない。 

6) INCが負の値ならば,作成される順序数生成子SEQは,降順順序数生成子 (descending sequence 

generator) とする。そうでなければ,SEQは,昇順順序数生成子 (ascending sequence generator) と

する。 

7) 場合: 

a) <順序数生成子MAXVALUE選択肢>が指定されるならば,次による。 

場合: 

i) 

NO MAXVALUEが指定されるならば,宣言型DTの処理系定義の<符号付き数定数>をSMAX

とする。 

ii) そうでなければ,<順序数生成子最大値>をSMAXとする。 

b) そうでなければ,宣言型DTの処理系定義の<符号付き数定数>をSMAXとする。 

8) 場合: 

a) <順序数生成子MINVALUE選択肢>が指定されるならば,次による。 

場合: 

i) 

NO MINVALUEが指定されるならば,宣言型DTの処理系定義の<符号付き数定数>をSMINと

する。 

ii) そうでなければ,<順序数生成子最小値>をSMINとする。 

b) そうでなければ,宣言型DTの処理系定義の<符号付き数定数>をSMINとする。 

9) 場合: 

a) <順序数生成子START WITH選択肢>が指定されるならば,<順序数生成子開始値>をSTARTとす

る。 

b) そうでなければ,次による。 

場合: 

i) 

SEQが昇順順序数生成子ならば,SMINをSTARTとする。 

ii) そうでなければ,SMAXをSTARTとする。 

10) INC,START,SMAX及びSMINの値は,全て,DTの精度及び位取りで正確に表現可能でなければ

ならない。 

11) SMAXの値は,SMINの値より大きくなければならない。 

12) STARTの値は,SMINの値以上で,かつ,SMAXの値以下でなければならない。 

13) <順序数生成子CYCLE選択肢>が指定されるならば,<順序数生成子CYCLE選択肢>をCYCとす

る。そうでなければ,NO CYCLEをCYCとする。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,OPTIONSをOPTとし,DATA TYPEをDTとする。この細分

箇条の適用の結果は,SEQを記述する順序数生成子記述子SEQDSとする。それは,SEQGENDESC

426 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

として戻される。 

2) SEQDSは,次の項目を含む。 

a) 長さ0の文字列である順序数生成子名。 

注記303 外部順序数生成子の名前は,“11.72 <順序数生成子定義>”の一般規則1)によって後で

設定される。しかし,内部順序数生成子は,名前がない。 

b) DTのデータ型記述子。 

c) STARTが設定された開始値。 

d) SMINによって指定される最小値。 

e) SMAXによって指定される最大値。 

f) INCによって指定される増分。 

g) CYCによって指定される周期選択肢。 

h) STARTが設定された現在基底値。 

適合性規則 

なし。 

9.27 順序数生成子の変更 

細分箇条署名 

 “順序数生成子の変更” [構文規則] ( 

パラメタ: “OPTIONS”, 

パラメタ: “SEQUENCE” 

 “順序数生成子の変更” [一般規則] ( 

パラメタ: “OPTIONS”, 

パラメタ: “SEQUENCE” 

機能 

順序数生成子の変更 (Alterling a sequence generator) は,内部順序数生成子又は外部順序数生成子の変更

を完了する。 

構文規則 

1) この細分箇条の構文規則の適用では,OPTIONSをOPTとし,SEQUENCEをSEQとする。 

2) OPTは,<順序数生成子変更選択肢>の形式に適合しなければならない。この細分箇条の残りの部分

で用いるBNF非終端記号は,OPTの内容を参照する。 

3) SEQに含まれるデータ型記述子を,DTとする。 

4) <順序数生成子変更RESTART選択肢>,<順序数生成子INCREMENT BY選択肢>,<順序数生成子

MAXVALUE選択肢>,<順序数生成子MINVALUE選択肢>及び<順序数生成子CYCLE選択肢>のそ

れぞれは,高々一つ指定しなければならない。 

5) 場合: 

a) <順序数生成子増分>が指定されるならば,次による。 

i) 

<順序数生成子増分>をNEWIVとする。 

ii) NEWIVの値は,0であってはならない。 

b) そうでなければ,SEQの増分をNEWIVとする。 

427 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) 場合: 

a) <順序数生成子MAXVALUE選択肢>が指定されるならば,次による。 

場合: 

i) 

NO MAXVALUEが指定されるならば,宣言型DTの処理系定義の<符号付き数定数>をNEWMAX

とする。 

ii) そうでなければ,<順序数生成子最大値>をNEWMAXとする。 

b) そうでなければ,SEQの最大値をNEWMAXとする。 

7) 場合: 

a) <順序数生成子MINVALUE選択肢>が指定されるならば,次による。 

場合: 

i) 

NO MINVALUEが指定されるならば,宣言型DTの処理系定義の<符号付き数定数>をNEWMIN

とする。 

ii) そうでなければ,<順序数生成子最小値>をNEWMINとする。 

b) そうでなければ,SEQの最小値をNEWMINとする。 

8) <順序数生成子CYCLE選択肢>が指定されるならば,<順序数生成子CYCLE選択肢>をNEWCYCLE

とする。そうでなければ,SEQの周期選択肢をNEWCYCLEとする。 

9) 場合: 

a) <順序数生成子変更RESTART選択肢>が指定されないならば,SEQの現在基底値をNEWVALと

する。 

b) <順序数生成子変更RESTART選択肢>が指定され,かつ,<順序数生成子再開始値>を含むならば,

<順序数生成子再開始値>をNEWVALとする。 

c) そうでなければ(<順序数生成子変更RESTART選択肢>が指定されるが,<順序数生成子再開始値

>を含まないならば),SEQの開始値をNEWVALとする。 

10) NEWIV,NEWMAX,NEWMIN及びNEWVALの値は,全て,DTの精度及び位取りで正確に表現可

能でなければならない。 

11) NEWMINの値は,NEWMAXの値未満でなければならない。 

12) NEWVALの値は,NEWMINの値以上,NEWMAXの値以下でなければならない。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,OPTIONSをOPTとし,SEQUENCEをSEQとする。 

2) SEQは,次のとおりに修正される。 

a) 増分には,NEWIVが設定される。 

b) 最大値には,NEWMAXが設定される。 

c) 最小値には,NEWMINが設定される。 

d) 周期選択肢には,NEWCYCLEが設定される。 

e) 現在基底値には,NEWVALが設定される。 

適合性規則 

なし。 

9.28 ビューの階層的な<問合せ式>の生成 

428 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

細分箇条署名 

 “ビューの階層的な<問合せ式>の生成” [一般規則] ( 

パラメタ: “VIEW” 

機能 

ビューの階層的な<問合せ式>の生成 (Generation of the hierarchical <query expression> of a view) は,ビュ

ーの階層的な<問合せ式>を生成する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,VIEWをVとする。 

2) Vの元の<問合せ式>をOQEとする。 

3) 場合: 

a) Vが真下位表をもたないならば,OQEをQEとする。 

b) そうでなければ,次による。 

i) 

Vの真下位表の個数をNとする。 

ii) Vの真下位表の<表名>の列挙をTN1,...,TNNとする。 

iii) 次の問合せ式をQEとする。 

  OQE 

UNION ALL CORRESPONDING 

  SELECT * FROM ONLY (TN1) 

UNION ALL CORRESPONDING 

  ... 

UNION ALL CORRESPONDING 

  SELECT * FROM ONLY (TNN) 

4) Vのビュー記述子中の階層的な<問合せ式>は,QEによって置き換えられる。 

適合性規則 

なし。 

9.29 ビュー権限の決定 

細分箇条署名 

“ビュー権限の決定” [一般規則] ( 

パラメタ: “VIEW” 

)  

機能 

ビュー権限の決定 (Determination of view privileges) は,<動作>がINSERT,UPDATE又はDELETEであ

るビューの権限記述子を決定する。さらに,ビューのビュー権限依存記述子を決定する。 

構文規則 

なし。 

429 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,VIEWをVとする。 

2) Vの<表名>の暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマを所

有する<認可識別子>をAとする。 

3) VをVIEWとして,“9.30 ビュー構成要素権限の決定”の一般規則を適用する。これらの一般規則

の適用によって戻されるDESCRIPTOR SETをビュー構成要素権限記述子の集合SVCPDとする。 

4) SVCPD中のビュー構成要素権限記述子SPDは,SPDが別の権限記述子PDに直に依存しているか,

又はSPDがビュー構成要素権限記述子SPD2に直に依存していて,かつ,SPD2がPDに単純に依

存しているようなSPD2が存在するならば,PDに単純に依存している (simply dependent)。 

5) Vのビュー記述子に含まれる元の<問合せ式>であるビュー構成要素をVCNとする。 

a) 識別されるオブジェクトがVCNであるSVCPD中の各ビュー構成要素表権限記述子VCTPDに対

して,次による。 

i) 

権限記述子PD1が次のとおりに作成される。識別されるオブジェクトは,Vとし,動作は,

VCTPDの動作と同じとし,権限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受領者

は,Aとし,権限が付与可能であることは,VCTPDが付与可能であることと同値とする。 

ii) VCTPDが権限記述子PDに単純に依存していて,かつ,PDのオブジェクトがビュー構成要素

又はビュー構成要素の列ではないような各権限記述子PDに対して,ビュー権限依存記述子が

次のとおりに作成される。支援権限記述子は,PDとし,従属権限記述子は,PD1とする。 

b) 識別されるオブジェクトがVCNであるSVCPD中の各ビュー構成要素列権限記述子VCCPDに対

して,次による。 

i) 

権限記述子PD2が次のとおりに作成される。識別されるオブジェクトは,VCCPDによって識

別される列の対応物であるVの列とし,動作は,VCCPDの動作と同じとし,権限付与者は,

特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとし,権限が付与可能であることは,

VCCPDが付与可能であることと同値とする。 

ii) VCCPDが権限記述子PDに単純に依存していて,PDのオブジェクトがビュー構成要素又はビ

ュー構成要素の列ではないような各権限記述子PDに対して,ビュー権限依存記述子が次のと

おりに作成される。支援権限記述子は,PDとし,従属権限記述子は,PD2とする。 

6) Vのどの列Cに対しても,識別されるオブジェクトがCで,動作がUPDATEで,権限付与者が特別

な付与者の値“̲SYSTEM”で,かつ,権限受領者がAである列権限記述子CPDが存在するならば,

識別されるオブジェクトがVで,動作がUPDATEで,権限付与者が特別な付与者の値“̲SYSTEM”

で,かつ,権限受領者がAである表権限記述子TPDが作成されるかどうかは,処理系定義とする。

そのような表権限記述子が作成されるならば,それは,そのようなどの列権限記述子にも直接依存

していて,かつ,権限が付与可能であることを示す標識をそのような全ての列権限記述子がもつな

らば,権限が付与可能であることを示す標識をもつ。 

TPDが作成されるならば,Vの各列Cに対して一つのビュー権限依存記述子で,ビュー権限依存

記述子の集まりが作成され,そのビュー権限依存記述子の支援権限記述子は,CPDとし,従属権限

記述子は,TPDとする。 

7) Vのどの列Cに対しても,識別されるオブジェクトがCで,動作がINSERTで,権限付与者が特別

430 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

な付与者の値“̲SYSTEM”で,かつ,権限受領者がAである列権限記述子CPDが存在するならば,

識別されるオブジェクトがVで,動作がINSERTで,権限付与者が特別な付与者の値“̲SYSTEM”

で,かつ,権限受領者がAである表権限記述子TPDが作成されるかどうかは,処理系定義とする。

そのような表権限記述子が作成されるならば,それは,そのようなどの列権限記述子にも直接依存

していて,かつ,権限が付与可能であることを示す標識をそのような全ての列権限記述子がもつな

らば,権限が付与可能であることを示す標識をもつ。 

TPDが作成されるならば,Vの各列Cに対して一つのビュー権限依存記述子で,ビュー権限依存

記述子の集まりが作成され,そのビュー権限依存記述子の支援権限記述子は,CPDとし,従属権限

記述子は,TPDとする。 

8) SVCPD中の全てのビュー構成要素権限記述子が破壊される。 

適合性規則 

なし。 

9.30 ビュー構成要素権限の決定 

細分箇条署名 

“ビュー構成要素権限の決定” [一般規則] ( 

パラメタ: “VIEW” 

) 戻り: “DESCRIPTOR SET” 

機能 

ビュー構成要素権限の決定 (Determination of view component privileges) は,ビューの全てのビュー構成

要素に対するビュー構成要素権限記述子を決定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,VIEWをVとする。この細分箇条の適用の結果は,SVCPDと

する。それは,DESCRIPTOR SETとして戻される。 

2) Vの<表名>の暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマを所

有する<認可識別子>をAとする。 

3) Vのビュー構成要素の列挙をVC1,...,VCNとする。列挙は,次の特性をもたなければならない。 

a) 1からNまでの範囲の全てのi及びjに対して,VCiがVCjに含まれるならば,i < jとする。 

b) 1からNまでの範囲の全てのi及びjに対して,VCiが,<WITHリスト要素>に単純に含まれる<

問合せ式>で,かつ,VCjがVCiによって定義される表を参照するならば,i < jとする。 

注記304 Vの元の<問合せ式> OQEのBNFの深さ優先の左から右への走査が,そのような列挙

を得るための一つの方法である。必然的に,VCNは,OQEである。 

4) Vが実効的に更新可能ならば,幾つかのビュー構成要素権限記述子を再帰的に作成するために,次

の部分規則が実行される。次の部分規則は,ビュー構成要素権限が別の権限記述子に直に依存して

いる (immediately dependent) ときも,再帰的に定義する。 

1からNまでの範囲の各iに対して,その順で,次による。 

場合: 

431 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) VCiが更新可能な<問合せ指定>ならば,次による。 

i) 

VCiの<FROM句>が,ただ一つの<表参照> TRを含むならば,次による。 

1) 場合: 

A) TRが<表名>又は<遷移表名>ならば,TRによって参照される表に関するAに適用可能な権

限の集合をSとする。 

B) そうでなければ,TRは,<問合せ名>で,VCjを参照する。ここで,j < iとする。識別され

るオブジェクトがVCjか又はVCjの列であるビュー構成要素権限記述子の集合をSとす

る。 

2) 動作がDELETEである表権限記述子PDをSが含むならば,ビュー構成要素表権限記述子が

次のとおりに作成される。識別されるオブジェクトは,VCiとし,動作は,DELETEとし,

権限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとする。権限が付与

可能であることは,PDが付与可能な権限を示すことと同値とする。 

3) VCiの更新可能な各列Cに対して,TRによって識別される表中のCの対応物をCCとする。 

A) 動作がUPDATE(CC) である列権限記述子PDをSが含むならば,ビュー構成要素表権限記

述子が次のとおりに作成される。識別されるオブジェクトは,Cとし,動作は,UPDATEと

し,権限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとする。権限

が付与可能であることは,PDが付与可能な権限を示すことと同値とする。権限記述子は,

PDに直に依存している。 

B) Vが挿入可能で,かつ,動作がINSERT(CC) である列権限記述子PDをSが含むならば,

ビュー構成要素表権限記述子が次のとおりに作成される。識別されるオブジェクトは,Cと

し,動作は,INSERTとし,権限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受

領者は,Aとする。権限が付与可能であることは,PDが付与可能な権限を示すことと同値

とする。権限記述子は,PDに直に依存している。 

ii) そうでなければ,次による。 

1) VCiが表LUTに関して1対1対応であるようなVCiのどの末端で基となる表LUTに対して

も,Aに適用可能な権限が,LUTに関するDELETEを含むならば,識別されるオブジェクト

がVCiで,動作がDELETEで,権限付与者が特別な付与者の値“̲SYSTEM”で,かつ,権

限受領者がAであるビュー構成要素表権限記述子が作成される。権限が付与可能であること

は,Aに適用可能な権限が,そのようなそれぞれのLUTに関する付与可能なDELETE権限

を含むことと同値とする。権限記述子は,識別されるオブジェクトがそのような末端で基と

なる表で,動作がDELETEで,かつ,権限受領者がAであるどの権限記述子にも直に依存し

ている。 

2) VCiの更新可能な各列Cに対して,Cに対する対応物CCをもつVCiの末端で基となる表を

LUTとする。 

A) Aに適用可能な権限が,LUTに関するUPDATE(CC) を含むならば,ビュー構成要素列権

限記述子VCCPDが次のとおりに作成される。識別されるオブジェクトは,Cとし,動作

は,UPDATEとし,権限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受領者は,

Aとする。権限が付与可能であることは,Aに適用可能な権限が,LUTに関する付与可能

なUPDATE(CC) 権限を含むことと同値とする。権限記述子は,識別されるオブジェクトが

CCで,動作がUPDATEで,かつ,権限受領者がAであるどの権限記述子にも直に依存し

432 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ている。 

B) Vが挿入可能で,かつ,Aに適用可能な権限が,LUTに関するINSERT (CC) を含むなら

ば,ビュー構成要素列権限記述子VCCPDが次のとおりに作成される。識別されるオブジ

ェクトは,Cとし,動作は,INSERTとし,権限付与者は,特別な付与者の値“̲SYSTEM”

とし,権限受領者は,Aとする。権限が付与可能であることは,Aに適用可能な権限が,

LUTに関する付与可能なINSERT(CC) 権限を含むことと同値とする。権限記述子は,識別

されるオブジェクトがCCで,動作がINSERTで,かつ,権限受領者がAであるどの権限

記述子にも直に依存している。 

b) VCiが<表値構成子>ならば,VCiをオブジェクトとして識別するどのビュー構成要素権限記述子

も,存在しない。 

c) VCiが<明示表>ならば,<明示表>によって識別される表をTとする。 

i) 

Aに適用可能な権限がTに関するDELETEを含むならば,識別されるオブジェクトがVCiで,

動作がDELETEで,権限付与者が特別な付与者の値“̲SYSTEM”で,かつ,権限受領者がAで

あるビュー構成要素表権限記述子が作成される。権限が付与可能であることは,Aに適用可能

な権限が,Tに関する付与可能なDELETE権限を含むことと同値とする。権限記述子は,識別

されるオブジェクトがTで,動作がDELETEで,かつ,権限受領者がAである権限記述子に直

に依存している。 

ii) VCiの更新可能な各列Cに対して,T中のCに対する対応物をCCとする。Aに適用可能な権

限が,Tに関するUPDATE(CC) を含むならば,ビュー構成要素列権限記述子VCCPDが次のと

おりに作成される。識別されるオブジェクトは,Cとし,動作は,UPDATEとし,権限付与者

は,特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとする。権限が付与可能であるこ

とは,Aに適用可能な権限が,Tに関する付与可能なUPDATE(CC) 権限を含むことと同値とす

る。権限記述子は,識別されるオブジェクトがCCで,動作がUPDATEで,かつ,権限受領者

がAである権限記述子に直に依存している。 

iii) VCiの更新可能な各列Cに対して,T中のCに対する対応物をCCとする。Aに適用可能な権

限が,Tに関するINSERT (CC) を含むならば,ビュー構成要素列権限記述子VCCPDが次のと

おりに作成される。識別されるオブジェクトは,Cとし,動作は,INSERTとし,権限付与者は,

特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとする。権限が付与可能であることは,

Aに適用可能な権限が,Tに関する付与可能なINSERT (CC) 権限を含むことと同値とする。権

限記述子は,識別されるオブジェクトがCCで,動作がINSERTで,かつ,権限受領者がAで

ある権限記述子に直に依存している。 

d) VCiが<問合せ式>ならば,次による。 

場合: 

i) 

VCiが<単純表> STならば,STがVCjであるようなj < iが存在する。 

1) VCjの各ビュー構成要素表権限記述子VCTPDに対して,新しいビュー構成要素表権限記述

子が次のとおりに作成される。識別されるオブジェクトは,VCiとし,権限付与者は,特別

な付与者の値“̲SYSTEM”とし,権限受領者は,Aとし,動作,及び権限が付与可能かどう

かを示す標識は,VCTPDと同じとする。権限記述子は,VCTPDに直に依存している。 

2) VCjの各ビュー構成要素列権限記述子VCCPDに対して,VCiの新しいビュー構成要素列権

限記述子が次のとおりに作成される。識別されるオブジェクトは,VCCPDによって識別され

433 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

るVCjの列の対応物であるVCiの列とし,権限付与者は,特別な付与者の値“̲SYSTEM”と

し,権限受領者は,Aとし,動作,及び権限が付与可能かどうかを示す標識は,VCCPDと同

じとする。権限記述子は,VCCPDに直に依存している。 

ii) そうでなければ,VCiは,UNION ALLを直に含む。VCiの左側のオペランド及び右側のオペラ

ンドを,それぞれ,VCl及びVCrとする。 

1) 識別されるオブジェクトがVClで,動作がDELETEであるビュー構成要素表権限記述子

VCTPDlが存在し,かつ,識別されるオブジェクトがVCrで,動作がDELETEであるビュー

構成要素表権限記述子VCTPDrが存在するならば,新しいビュー構成要素表権限記述子が次

のとおりに作成される。識別されるオブジェクトは,VCiとし,動作は,DELETEとし,権

限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとし,権限が付与可能

であることは,権限が付与可能であることをVCTPDl及びVCTPDrの両方が示すことと同値

とする。権限記述子は,VCTPDl及びVCTPDrに直に依存している。 

2) VCiの更新可能な各列Cに対して,VCl及びVCr中のCの対応物を,それぞれ,Cl及びCr

とする。識別されるオブジェクトがClで,動作がUPDATEであるビュー構成要素列権限記

述子VCCPDlが存在し,かつ,識別されるオブジェクトがCrで,動作がUPDATEであるビ

ュー構成要素列権限記述子VCCPDrが存在するならば,新しいビュー構成要素列権限記述子

が次のとおりに作成される。識別されるオブジェクトは,Cとし,動作は,UPDATEとし,

権限付与者は,特別な付与者の値“̲SYSTEM”とし,権限受領者は,Aとし,権限が付与可

能であることは,権限が付与可能であることをVCCPDl及びVCCPDrの両方が示すことと同

値とする。権限記述子は,VCCPDl及びVCCPDrに直に依存している。 

5) この細分箇条の一般規則によって作成されるビュー構成要素表権限記述子及びビュー構成要素列権

限記述子の集合SVCPDは,この細分箇条の適用の結果とする。 

適合性規則 

なし。 

10 その他の共通要素 

10.1 <時間隔修飾子> 

機能 

<時間隔修飾子> (<interval qualifier>) は,時間隔データ型の精度を指定する。 

形式 

<時間隔修飾子> ::= 

  <開始フィールド> TO <終了フィールド> 

| <単一日時フィールド> 

<開始フィールド> ::= 

  <非秒基本日時フィールド> 

      [ <左括弧> <時間隔先行フィールド精度> <右括弧> ] 

<終了フィールド> ::= 

  <非秒基本日時フィールド> 

| SECOND [ <左括弧> <時間隔小数秒精度> <右括弧> ] 

<単一日時フィールド> ::= 

434 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <非秒基本日時フィールド> 

      [ <左括弧> <時間隔先行フィールド精度> <右括弧> ] 

| SECOND [ <左括弧> <時間隔先行フィールド精度> 

      [ <コンマ> <時間隔小数秒精度> ] <右括弧> ] 

<基本日時フィールド> ::= 

  <非秒基本日時フィールド> 

| SECOND 

<非秒基本日時フィールド> ::= 

  YEAR 

| MONTH 

| DAY 

| HOUR 

| MINUTE 

<時間隔小数秒精度> ::= 

  <符号なし整数> 

<時間隔先行フィールド精度> ::= 

  <符号なし整数> 

構文規則 

1) <基本日時フィールド>には,有効性の順序がある。その順序は,最上位有効フィールドから最下位

有効フィールドの順に,YEAR,MONTH,DAY,HOUR,MINUTE及びSECONDとする。i > jな

らば,<時間隔先行フィールド精度> iをもつ<開始フィールド>又は<単一日時フィールド>は,<時

間隔先行フィールド精度> jをもつ<開始フィールド>又は<単一日時フィールド>よりも上位とする。

i > jならば,<時間隔小数秒精度> iをもつ<終了フィールド>又は<単一日時フィールド>は,<時間

隔小数秒精度> jをもつ<終了フィールド>又は<単一日時フィールド>よりも下位とする。 

2) TOが指定されるならば,<開始フィールド>は,<終了フィールド>よりも上位でなければならず,<

開始フィールド>は,MONTHを指定してはならない。<開始フィールド>がYEARを指定するなら

ば,<終了フィールド>は,MONTHを指定しなければならない。 

3) <時間隔先行フィールド精度>の最大値は,処理系定義とするが,2以上でなければならない。 

4) <時間隔小数秒精度>の最大値は,処理系定義とするが,6以上でなければならない。 

5) <時間隔先行フィールド精度>が指定されるならば,それは,1以上で,かつ,処理系定義の最大値

以下でなければならない。<時間隔先行フィールド精度>が指定されないならば,2の<時間隔先行フ

ィールド精度>が暗に想定される。 

6) <時間隔小数秒精度>が指定されるならば,それは,0以上で,かつ,処理系定義の最大値以下でな

ければならない。SECONDが指定され,かつ,<時間隔小数秒精度>が指定されないならば,6の<時

間隔小数秒精度>が暗に想定される。 

7) <開始フィールド>又は<単一日時フィールド>以外のフィールドの精度は,次による。 

場合: 

a) フィールドがSECONDでないならば,2とする。 

b) そうでなければ,小数点以上は,2桁とし,小数点以下は,陽に指定されるか又は暗に想定される

<時間隔小数秒精度>とする。 

435 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

1) <時間隔修飾子>によって修飾される項目は,<時間隔修飾子>によって識別される日時フィールドを

含む。 

場合: 

a) <時間隔修飾子>が<単一日時フィールド>を指定するならば,<時間隔修飾子>は,単一の<基本日

時フィールド>を識別する。その項目の最上位有効 (most significant) <基本日時フィールド>又は最

下位有効 (least signifgicant) <基本日時フィールド>の参照は,その<基本日時フィールド>を参照

する。 

b) そうでなければ,<時間隔修飾子>は,<開始フィールド>から<終了フィールド>までの,両端を含

めたそれらの日時フィールドを識別する。 

2) <時間隔先行フィールド精度>は,次の精度を指定する。 

場合: 

a) <基本日時フィールド>がSECONDならば,秒の<基本日時フィールド>の指定されるか又は暗に

想定される小数点以上の10進桁数の精度を指定する。 

b) そうでなければ,最初の<基本日時フィールド>の10進桁数の精度を指定する。 

3) <時間隔小数秒精度>は,<基本日時フィールド> SECOND中で指定されるか又は暗に想定される小

数点以下の10進桁数の精度を指定する。 

4) 時間隔型の項目の位置単位での長さは,次のとおりに計算する。 

場合: 

a) 項目が年月時間隔ならば,次による。 

場合: 

i) 

<時間隔修飾子>が<単一日時フィールド>ならば,項目の位置単位での長さは,<単一日時フィ

ールド>の暗に想定されるか又は陽に指定される<時間隔先行フィールド精度>とする。 

ii) そうでなければ,項目の位置単位での長さは,<開始フィールド>の暗に想定されるか又は陽に

指定される<時間隔先行フィールド精度>と,(<終了フィールド>である<非秒基本日時フィール

ド>の長さ)2と,(<年月定数>中の<年>と<月>との間の<負符号>の長さ)1との和とする。 

b) そうでなければ,次による。 

場合: 

i) 

<時間隔修飾子>が,SECONDを指定しない<単一日時フィールド>ならば,項目の位置単位での

長さは,<単一日時フィールド>の暗に想定されるか又は陽に指定される<時間隔先行フィール

ド精度>とする。 

ii) <時間隔修飾子>が,SECONDを指定する<単一日時フィールド>ならば,項目の位置単位での長

さは,<単一日時フィールド>の暗に想定されるか又は陽に指定される<時間隔先行フィールド

精度>と,暗に想定されるか又は陽に指定される<時間隔小数秒精度>との和とする。<時間隔小

数秒精度>が1以上ならば,項目の位置単位での長さに,(<整数秒値>と<小数秒>との間の<ピ

リオド>の位置単位での長さ)1を加える。 

iii) そうでなければ,<時間隔修飾子>の<開始フィールド>よりも下位で,かつ,<終了フィールド>

よりも上位の日時フィールドを関係する日時フィールド (participating datetime field) とする。

436 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

各関係する日時フィールドの位置単位での長さは,2とする。 

場合: 

1) <終了フィールド>がSECONDならば,項目の位置単位での長さは,暗に想定されるか又は陽

に指定される<時間隔先行フィールド精度>と,関係する日時フィールドの個数の3倍(各関

係する日時フィールドは,位置単位で長さ2をもち,それらに先行する<負符号>又は<コロ

ン>は,位置単位で長さ1をもつ。)と,暗に想定されるか又は陽に指定される<時間隔小数秒

精度>と,(<時間隔小数秒精度>以外の<終了フィールド>の位置単位での長さに,先行する<

コロン>の位置単位での長さを加えた長さ)3との和とする。<時間隔小数秒精度>が1以上な

らば,項目の位置単位での長さに,(<終了フィールド>によって識別されるフィールド内の<

ピリオド>の位置単位での長さ)1を加える。 

2) そうでなければ,項目の位置単位での長さは,暗に想定されるか又は陽に指定される<時間隔

先行フィールド精度>と,関係する日時フィールドの個数の3倍(各関係する日時フィールド

は,位置単位で長さ2をもち,それらに先行する<負符号>又は<コロン>は,位置単位で長さ

1をもつ。)と,(<終了フィールド>の位置単位での長さ)2と,(<終了フィールド>に先行す

る<コロン>の位置単位での長さ)1との和とする。 

適合性規則 

1) 機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔修飾子>を含んでは

ならない。 

10.2 <LANGUAGE句> 

この細分箇条は,ISO/IEC 9075-13の“8.4 <LANGUAGE句>”によって修正される。 

機能 

<LANGUAGE句> (<language clause>) は,プログラム言語を指定する。 

形式 

<LANGUAGE句> ::= 

  LANGUAGE <言語名> 

13 <言語名> ::= 

  ADA 

| C 

| COBOL 

| FORTRAN 

| M | MUMPS 

| PASCAL 

| PLI 

| SQL 

構文規則 

1) MUMPSが指定されるならば,Mが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) <LANGUAGE句>によって指定されるホスト言語は,<言語名>のキーワードによって識別される規

background image

437 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

格で規定される。表15“標準プログラム言語”は,この関係を規定する。 

13 表15−標準プログラム言語 

言語キーワード 

関連規格 

ADA 

[ISO8652] 

JIS X 3010 [ISO9899] 

COBOL 

JIS X 3002 [ISO1989] 

FORTRAN 

JIS X 3001-1 [ISO1539] 

[ISO11756] 

PASCAL 

JIS X 3008 [ISO7185] 及び [ISO10206] 

PLI 

[ISO6160] 

SQL 

JIS X 3005規格群(ISO/IEC 9075) 

適合性規則 

なし。 

10.3 <パス指定> 

機能 

<パス指定> (<path specification>) は,SQL呼出しルーチンを探索する順序を指定する。 

形式 

<パス指定> ::= 

PATH <スキーマ名リスト> 

<スキーマ名リスト> ::= 

<スキーマ名> [ { <コンマ> <スキーマ名> }... ] 

構文規則 

1) <スキーマ名リスト>に含まれるどの二つの<スキーマ名>も,等価であってはならない。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<パス指定>を

含んではならない。 

10.4 <ルーチン呼出し> 

この細分箇条は,ISO/IEC 9075-4の“8.1 <ルーチン呼出し>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“7.1 <ルーチン呼出し>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“8.3 <ルーチン呼出し>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“11.1 <ルーチン呼出し>”によって修正される。 

細分箇条署名 

 “<ルーチン呼出し>” [構文規則] ( 

パラメタ: “ROUTINE INVOCATION”, 

パラメタ: “SQLPATH”, 

パラメタ: “UDT” 

438 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

 “<ルーチン呼出し>” [一般規則] ( 

パラメタ: “STATIC SQL ARG LIST”, 

パラメタ: “SUBJECT ROUTINE” 

機能 

<ルーチン呼出し> (<routine invocation>) は,SQL呼出しルーチンを呼び出す。 

形式 

<ルーチン呼出し>  ::= 

<ルーチン名> <SQL引数リスト> 

<ルーチン名>  ::= 

[ <スキーマ名> <ピリオド> ] <被修飾識別子> 

<SQL引数リスト>  ::= 

<左括弧> [<SQL引数> [ { <コンマ> <SQL引数> }... ] ] <右括弧> 

<SQL引数>  ::= 

  <値式> 

| <一般式> 

| <相手指定> 

| <文脈型付き値指定> 

| <名前付き引数指定> 

<一般式>  ::= 

<値式> AS <パス解決利用者定義型名> 

<名前付き引数指定>  ::= 

<SQLパラメタ名> <名前付き引数代入トークン> 

 <名前付き引数SQL引数> 

<名前付き引数SQL引数>  ::= 

  <値式> 

| <相手指定> 

| <文脈型付き値指定> 

構文規則 

1) この細分箇条の構文規則の適用では,ROUTINE INVOCATIONをRIとし,SQLPATHをTPとし,

UDTをUDTSMとする。 

2) RIに直に含まれる<ルーチン名>をRNとする。 

3) 場合: 

a) RIが<CALL文>に直に含まれるならば,RIの<SQL引数リスト>は,<ルーチン呼出し>を介在し

ないで<一般式>を含んではならない。 

b) RIが<CALL文>に直に含まれないならば,RIの<SQL引数リスト>は,<名前付き引数指定>又は

<文脈型付き値指定>を含んではならない。 

4) <SQL引数リスト>が,<名前付き引数指定>である<SQL引数>を含むならば,その<SQL引数リスト

>に含まれる全ての<SQL引数>が<名前付き引数指定>でなければならない。<SQL引数リスト>に含

439 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

まれるどの二つの<SQLパラメタ名>も,等価であってはならない。 

5) 場合: 

a) RIが<CALL文>に直に含まれるとき,SQL呼出しルーチンRがSQL呼出し手続で,かつ,Rの

<ルーチン名>の<被修飾識別子>がRNの<被修飾識別子>と等価ならば,Rは,RIに対する潜在的

な候補ルーチン (possibly candidate routine) とする(以下,単純に“潜在的な候補ルーチン”とい

う。)。 

b) RIが<メソッド選択>に直に含まれるとき,SQL呼出しルーチンRがインスタンスSQL呼出しメ

ソッドで,かつ,Rの<ルーチン名>の<被修飾識別子>がRNの<被修飾識別子>と等価ならば,R

は,RIに対する潜在的な候補ルーチン とする。 

c) RIが<構成メソッド選択>に直に含まれるとき,SQL呼出しルーチンRがSQL呼出し構成メソッ

ドで,かつ,Rの<ルーチン名>の<被修飾識別子>がRNの<被修飾識別子>と等価ならば,Rは,

RIに対する潜在的な候補ルーチン とする。 

d) RIが<静的メソッド選択>に直に含まれるとき,SQL呼出しルーチンRが静的SQL呼出しメソッ

ドで,Rの<ルーチン名>の<被修飾識別子>がRNの<被修飾識別子>と等価で,かつ,Rのメソッ

ド指定記述子が,UDTSMの利用者定義型記述子又はUDTSMの上位型の利用者定義型記述子に

含まれるならば,Rは,RIに対する潜在的な候補ルーチン とする。 

e) そうでなければ,SQL呼出しルーチンRがSQL呼出し通常関数で,かつ,Rの<ルーチン名>の<

被修飾識別子>がRNの<被修飾識別子>と等価ならば,Rは,RIに対する潜在的な候補ルーチン 

とする。 

6) 

04 場合: 

a) RIが<SQLスキーマ文>に含まれるならば,SQL呼出しルーチンRが実行可能ルーチン (executable 

routine) であることは,Rが潜在的な候補ルーチンで,かつ,その<SQLスキーマ文>を含むスキ

ーマを所有する<認可識別子>に適用可能な権限が,Rに関するEXECUTEを含むことと同値とす

る。 

b) そうでなければ,SQL呼出しルーチンRが実行可能ルーチン であることは,Rが潜在的な候補

ルーチンで,かつ,現行の権限がRに関するEXECUTEを含むことと同値とする。 

7) 場合: 

a) RIが<メソッド選択>,<静的メソッド選択>又は<構成メソッド選択>に直に含まれるならば,TP

をDPとする。 

b) SQL呼出しルーチンが動作中であることを現行SQLセションのルーチン実行文脈が示すならば,

そのルーチン実行文脈のルーチンSQLパスをDPとする。 

c) 

04 RIが<スキーマ定義>に含まれるならば,その<スキーマ定義>のSQLパスをDPとする。 

d) <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備される

<準備可能文>,又は直接起動される<直接SQL文>にRIが含まれるならば,現行SQLセション

のSQLパスをDPとする。 

e) そうでなければ,RIを含む<SQLクライアントモジュール定義>のSQLパスをDPとする。 

8) RIの<SQL引数リスト> AL中の<SQL引数>の個数をNAとする。 

9) RIが<CALL文>に直に含まれるならば,次による。 

a) 呼出し可能ルーチン (invocable routine) は,次の条件が全て真となるような実行可能ルーチンで

あるSQL呼出しルーチンSIRとする。 

440 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

SIRがSIRNA個のSQLパラメタをもつ。ここで,SIRNA ≥ NAとする。 

ii) <SQL引数リスト>が,<名前付き引数指定>である<SQL引数>を含まないならば,各k,NA < k 

≤ SIRNAに対して,k番目のSQLパラメタが既定値をもつことを示す標識をSIRのルーチン記

述子が含む。 

b) RIの候補ルーチン (candidate routine) の集合は,次のとおりに定義される。 

場合: 

i) 

RNが<スキーマ名>を含まないならば,RIの候補ルーチンは,<スキーマ名>がDP中にある全

てのスキーマの呼出し可能ルーチンの和集合とする。 

ii) RNが<スキーマ名> SNを含むならば,SNは,スキーマSの<スキーマ名>でなければならない。

RIの候補ルーチンは,(あるならば,)Sに含まれる呼出し可能ルーチンとする。 

c) RIの各候補ルーチンPCRに対して,ALが少なくとも一つの<名前付き引数指定>を含むならば,

次による。 

i) 

<名前付き引数指定>に直に含まれる各<SQLパラメタ名>の,名前が等価なPCRのパラメタ名

との全ての対応付けをMAPとする。MAPが存在しないならば,PCRは,候補ルーチンの集合

から取り除かれる。 

ii) 等価な<SQLパラメタ名>をもつ<名前付き引数指定>がAL中にないSQLパラメタSPWODが

存在し,SPWODが既定値をもつことを示す標識をPCRのルーチン記述子が含まないならば,

PCRは,候補ルーチンの集合から取り除かれる。 

d) 場合: 

i) 

RNが<スキーマ名>を含まないならば,DP中で先行し,かつ,RIの少なくとも一つの候補ルー

チンを含む他のどのスキーマも存在しないような,DPに含まれ,RIの少なくとも一つの候補

ルーチンを含むスキーマをS1とする。S1に含まれないどのルーチンも,候補ルーチンの集合

から取り除かれる。 

ii) RNが<スキーマ名>を含むならば,<スキーマ名>によって識別されるスキーマをS1とする。S1

は,RIの少なくとも一つの候補ルーチンを含まなければならない。S1に含まれないどのルーチ

ンも,候補ルーチンの集合から取り除かれる。 

e) RIの最小パラメタ数の候補ルーチン (candidate routines with minimal number of parameters) の集合

は,より少ないパラメタをもつ他のどの候補ルーチンも存在しないようなそれらの候補ルーチン

から成る。 

注記305 最小パラメタ数の候補ルーチンの集合中には,高々一つのルーチンが存在する。 

f) RIの当該ルーチンSRは,最小パラメタ数の候補ルーチンがほかに存在しないような,RIの最小

パラメタ数の候補ルーチンであるSQL呼出しルーチンとする。 

g) SRのSQLパラメタの個数をSRNPとする。SRのi番目のSQLパラメタをPi,1 ≤ i ≤ SRNPとす

る。 

i) 

場合: 

1) ALが少なくとも一つの<名前付き引数指定>を直に含まないならば,次による。 

A) ALに含まれるi番目の<SQL引数>をAi,1 ≤ i ≤ NAとする。 

B) DEFAULTをAi,NA < i ≤ SRNPとする。 

C) i番目の<SQL引数>がAi,1 ≤ i ≤ SRNPである<SQL引数リスト>をXALとする。 

注記306 SRNP = 0ならば,XALは,SQL引数の空のリストである。 

441 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) そうでなければ,次による。 

A) Piと等価な<SQLパラメタ名>をもつAL中の<名前付き引数指定>に直に含まれる<名前付

き引数SQL引数>をNPSAi,1 ≤ i ≤ SRNPとする。 

B) 等価な<SQLパラメタ名>をもつ<名前付き引数指定>がAL中に存在しない各SQLパラメ

タPi,1 ≤ i ≤ SRNPに対して,DEFAULTをNPSAi,1 ≤ i ≤ SRNPとする 

C) i番目の<SQL引数>がNPSAi,1 ≤ i ≤ SRNPである<SQL引数リスト>をXALとする。 

ii) XAL中のi番目の<SQL引数>をXAi,1 ≤ i ≤ SRNPとする。 

iii) 出力SQLパラメタ又は入出力SQLパラメタ(入力SQLパラメタで,かつ,出力SQLパラメ

タ)である各SQLパラメタPi,1 ≤ i ≤ SRNPに対して,XAiは,<相手指定>でなければならな

い。 

1) AFTERトリガの<被トリガSQL文>にRIが含まれるならば,XAiは,<列参照>であってはな

らない。 

2) 

10 XAiが<埋込み変数指定>又は<ホストパラメタ指定>ならば,XAiをTARGETとして,Piを

VALUEとして,“9.1 取出し代入”の構文規則を適用する。 

3) 

04 XAiが<SQLパラメタ参照>,<列参照>又は<相手配列要素指定>ならば,XAiをTARGETと

して,PiをVALUEとして,“9.2 格納代入”の構文規則を適用する。 

注記307 <列参照>は,遷移新変数列参照だけがあり得る。 

iv) 入力SQLパラメタであるが,出力SQLパラメタでない各SQLパラメタPi,1 ≤ i ≤ SRNPに対

して,XAiは,<値式>又は<文脈型付き値指定>のいずれかでなければならない。 

v) 入力SQLパラメタ又は入出力SQLパラメタである各SQLパラメタPi,1 ≤ i ≤ SRNP,及び<文

脈型付き値指定>でない各XAiに対して,PiをTARGETとして,XAiをVALUEとして,“9.2 

格納代入”の構文規則を適用する。 

10) RIが<CALL文>に直に含まれないならば,次による。 

場合: 

a) <SQL引数リスト>が少なくとも一つの<SQL引数>を直に含まないならば,次による。 

i) 

SQL引数の空のリストをALとする。呼出し可能ルーチン は,SQLパラメタをもたない実行可

能ルーチンとする。 

ii) RNが<スキーマ名>を含まないならば,RIの当該ルーチン (subject routine) は,次のようなSQL

呼出しルーチンSIRSRとする。 

1) SIRSRが呼出し可能ルーチンである。 

2) SIRSRのスキーマの<スキーマ名>がDP中にある。 

3) 場合: 

A) SIRSRのルーチン記述子がSTATICを示す標識を含まないならば,次のような別の呼出し

可能ルーチンR2が存在しない。DP中で,R2を含むスキーマの<スキーマ名>が,SIRSR

を含むスキーマの<スキーマ名>に先行する。 

B) SIRSRのルーチン記述子がSTATICを示す標識を含むならば,次のような別の呼出し可能

ルーチンR2が存在しない。R2のルーチン記述子を含む記述子によって記述される利用者

定義型が,SIRSRのルーチン記述子を含む利用者定義型記述子によって記述される利用者

定義型の下位型である。 

iii) RNが<スキーマ名> SNを含むならば,SNは,スキーマSの<スキーマ名>でなければならない。

442 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

RIの当該ルーチン は,(あるならば,)Sに含まれる呼出し可能ルーチンとする。 

iv) RIのただ一つの当該ルーチンが存在しなければならない。 

v) RIの実効的戻りデータ型 (effective returns data type) は,RIの当該ルーチンの結果データ型と

する。 

b) <SQL引数リスト>が少なくとも一つの<SQL引数>を直に含むならば,次による。 

i) 

呼出し可能ルーチン は,NA個のSQLパラメタをもつような実行可能ルーチンであるSQL呼

出しルーチンSIRとする。AL中のi番目の<SQL引数>をAi,1 ≤ i ≤ NAとする。SIRのi番目

のSQLパラメタをPiとする。<動的パラメタ指定>でない各Aiに対して,次による。 

場合: 

1) Piの宣言型が利用者定義型ならば,次による。 

A) Aiの宣言型の下位型の集合をSTiとする。 

B) STi中のある型のデータ型をDATA TYPEとして,“9.7 型優先順序リスト決定”の構文規

則を適用する。これらの構文規則の適用によって戻されるTYPE PRECEDENCE LISTを

TPLiとする。 

C) Piの宣言型の型指示子がTPLi中になければならない。 

2) そうでなければ,次による。 

A) Aiの宣言型をDATA TYPEとして,“9.7 型優先順序リスト決定”の構文規則を適用する。

これらの構文規則の適用によって戻されるTYPE PRECEDENCE LISTをTPLiとする。 

B) Piの宣言型の型指示子がTPLi中になければならない。 

ii) <一般式>に直に含まれる各<値式>の宣言型は,<一般式>に直に含まれる<パス解決利用者定義

型名>に単純に含まれる<利用者定義型名>によって識別される構造型の下位型でなければなら

ない。 

iii) RIの候補ルーチン (candidate routine) の集合は,次のとおりに定義される。 

場合: 

1) RNが<スキーマ名>を含まないならば,RIの候補ルーチンは,<スキーマ名>がDP中にある

全てのスキーマの呼出し可能ルーチンの和集合とする。 

2) RNが<スキーマ名> SNを含むならば,SNは,スキーマSの<スキーマ名>でなければならな

い。RIの候補ルーチンは,(あるならば,)Sに含まれる呼出し可能ルーチンとする。 

iv) 全てのi,1 ≤ i ≤ NAに対して,Aiは,<値式>又は<一般式>でなければならない。 

v) 全てのi,1 ≤ i ≤ NAに対して,次による。 

場合: 

1) Aiが<一般式>ならば,<一般式>に直に含まれる<パス解決利用者定義型名>に単純に含まれ

る<利用者定義型名>によって識別されるデータ型を,TSiとする。 

2) そうでなければ,Aiのデータ型のデータ型記述子にデータ型名が含まれるデータ型をTSiと

する。 

vi) 当該ルーチン は,次のとおりに定義される。 

1) 各Ai,1 ≤ i ≤ NAに対して,次による。 

場合: 

A) Aiが<動的パラメタ指定>ならば,AiをViとする。 

B) そうでなければ,宣言型がTSiの任意に選ばれた値をViとする。 

443 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) XAL中の順序位置iに従って順序付けられたViから導出されるN個の<SQL引数>をもつ

<SQL引数リスト>をXALとする。 

3) XALをSQL ARGUMENT LISTとして,RIの候補ルーチンをSET OF SQL-INVOKED 

ROUTINESとして,“9.6 当該ルーチン決定”の構文規則を適用する。これらの構文規則の適

用によって戻されるSET OF SUBJECT ROUTINESを候補当該ルーチンの集合CSRとする。 

4) 場合: 

A) RNが<スキーマ名>を含むならば,CSR中にただ一つの候補当該ルーチンが存在しなけれ

ばならない。当該ルーチンSRは,CSR中の候補当該ルーチンとする。 

B) そうでなければ,次による。 

I) CSR中に少なくとも一つの候補当該ルーチンが存在しなければならない。 

II) 場合: 

1) CSR中にただ一つの候補当該ルーチンが存在するならば,当該ルーチンSRは,CSR

中の候補当該ルーチンとする。 

2) CSR中に二つ以上の候補当該ルーチンが存在するならば,次による。 

場合: 

a) RIが<静的メソッド選択>に直に含まれないならば,次のようなSQL呼出しルーチ

ンSIRCR2がCSR中に存在しなければならない。次のいずれかが真となる別の候補

当該ルーチンR2がCSR中に存在しない。 

i) 

DP中で,R2を含むスキーマの<スキーマ名>が,SIRCR2を含むスキーマの<スキ

ーマ名>に先行する。 

ii) R2を含むスキーマの<スキーマ名>が,SIRCR2を含むスキーマの<スキーマ名>と

等価である。 

当該ルーチンSRは,SIRCR2とする。 

b) そうでなければ,次のようなSQL呼出しルーチンSIRCR3がCSR中に存在しなけ

ればならない。別の候補当該ルーチンR2のルーチン記述子を含む利用者定義型記

述子によって記述される利用者定義型が,SIRCR3のルーチン記述子を含む利用者

定義型記述子によって記述される利用者定義型の下位型であるようなR2 がCSR中

に存在しない。当該ルーチンSRは,SIRCR3とする。 

vii) RIの当該ルーチンは,当該ルーチンSRとする。 

viii) SRのSQLパラメタPiのリストをPLとする。 

ix) 各Piに対して,PiをTARGETとして,AiをVALUEとして,“9.2 格納代入”の構文規則を適

用する。 

x) RIの実効的戻りデータ型 は,次のとおりに定義される。 

1) 場合: 

A) SRが型保持関数ならば,SRの結果SQLパラメタをPiとする。Aiが<一般式>を含むなら

ば,Aiの<一般式>に含まれる<値式>の宣言型をRTとする。そうでなければ,Aiの宣言型

をRTとする。 

B) そうでなければ,SRの結果データ型をRTとする。 

2) RIの実効的戻りデータ型 は,RTとする。 

11) SRが構成関数ならば,RIは,<新呼出し>に単純に含まれなければならない。 

444 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

12) 場合: 

a) RIが<CALL文>に直に含まれないで,かつ,<SQL引数リスト>が少なくとも一つの<SQL引数>

を直に含まないならば,SQL引数の空のリストをRIの静的SQL引数リスト (static SQL argument 

list) とする。 

b) そうでなければ,XALをRIの静的SQL引数リスト とする。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,STATIC SQL ARG LISTをSALとし,SUBJECT ROUTINEを

SRとする。 

注記308 “静的SQL引数リスト”及び“当該ルーチン”は,この細分箇条の構文規則で定義して

いる。 

2) 場合: 

a) SALが空のリストならば,SALを動的SQL引数リスト (dynamic SQL argument list) DALとする。 

b) そうでなければ,次による。 

i) 

値Viを得るために,処理系依存の順序で,SAL中の<既定値指定>でない各SQL引数Ai,1 ≤ i 

≤ SRNPが評価される。 

ii) SAL中の<既定値指定>である各SQL引数Ai,1 ≤ i ≤ SRNPに対して,次のとおりに,処理系依

存の順序で,値Viが得られる。 

場合: 

1) SQLパラメタPiが既定値をもつことを示す標識をSRの記述子が含まないならば,Viは,ナ

ル値とする。 

2) そうでなければ,値Viを得るために,SRの記述子に含まれる<パラメタ既定値>が評価され

る。 

iii) 値Vi,1 ≤ i ≤ SRNPのこの順序でのリストを動的SQL引数リスト DALとする。 

iv) SRが型保持で,かつ,ナル値で結果パラメタを置き換えるならば,次による。 

場合: 

1) SRが変異関数ならば,例外条件:データ例外 (data exception) − ナル値で変異当該パラメタ

を置き換えた (null value substituted for mutator subject parameter) が引き起こされ,この細分

箇条の一般規則は,これ以上適用しない。 

2) そうでなければ,RIの値は,ナル値とし,この細分箇条の一般規則は,これ以上適用しない。 

v) 場合: 

1) SRが,インスタンスSQL呼出しメソッドならば,次による。 

A) V1がナル値ならば,RIの値は,ナル値とし,この細分箇条の残りの一般規則は,適用しな

い。 

B) 次の条件を満たすSQL呼出しメソッドMの集合をSMとする。 

I) SRの<ルーチン名>及びMの<ルーチン名>が等価な<被修飾識別子>をもつ。 

II) SR及びMが,同じ個数NのSQLパラメタをもつ。SRのi番目のSQLパラメタをPSRi,

1 ≤ i ≤ Nとし,Mのi番目のSQLパラメタをPMi,1 ≤ i ≤ Nとする。 

III) Mの当該パラメタの宣言型が,SRの当該パラメタの宣言型の下位型である。 

445 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

IV) 2からNまでの範囲のjに対して,PMjの宣言型をTYPE1として,PSRjの宣言型を

TYPE2として,“9.20 データ型の同一性”の構文規則を適用する。 

注記309 SRは,集合SMの要素である。 

C) SMは,SRの置換メソッドの集合 (set of overriding methods) とし,SM中のどのSQL呼出

しメソッドMも,SRの置換メソッド (overriding method) とする。 

D) 場合: 

I) SAL中の最初のSQL引数A1が<一般式>を含むならば,A1の<一般式>に含まれる<利用

者定義型名>によって識別されるデータ型をDT1とする。 

II) そうでなければ,V1の最特定型をDT1とする。 

E) 次のような,SM中のSQL呼出しメソッドをRとする。DT1の型優先順位リスト中で,別

のSQL呼出しメソッドM1の当該パラメタの宣言型の型指示子が,Rの当該パラメタの宣

言型の型指示子に先行するようなM1がSM中に存在しない。 

2) そうでなければ,SRをRとする。 

3) DAL中の値Viの個数をN及びPNとする。Rのi番目のSQLパラメタPiの宣言型をTiとする。1

からPNまでの範囲のiに対して,次による。 

a) Viの宣言型がDATEで,かつ,TiがTIMESTAMP WITHOUT TIME ZONE又はTIMESTAMP WITH 

TIME ZONEのいずれかならば,次のCAST指定から得られる値によって,Viが実効的に置き換

えられる。 

CAST (Vi AS TIMESTAMP ) 

注記310 DATEの型優先順序リストがTIMESTAMPを含むときに限り,この選択が可能である。

“9.7 型優先順序リスト決定”の構文規則12) 参照。 

b) 場合: 

i) 

14 Piが入力SQLパラメタ又は入出力SQLパラメタならば,ViをVALUEとして,宣言型がTi

の一時的な格納場所STをTARGETとして,“9.2 格納代入”の一般規則を適用する。STの値

をCPViとする。 

ii) そうでなければ,次による。 

場合: 

1) 

13 RがSQLルーチンならば,ナル値をCPViとする。 

2) そうでなければ,最特定型Tiの処理系定義の値をCPViとする。 

4) 

13 Rが外部ルーチンならば,次による。 

a) Rの外部名によって識別されるプログラムをPとする。 

b) 1からNまでの範囲のiに対して,Rのi番目のSQLパラメタをPiとし,Piの宣言型をTiとす

る。 

場合: 

i) 

Piが入力SQLパラメタ又は入出力SQLパラメタならば,次による。 

場合: 

1) 

14 Piが位置付け子パラメタならば,CPViは,CPViの値を一意に識別する,位置付け子の値

に置き換えられる。 

2) Tiが利用者定義型で,かつ,Piが位置付け子パラメタでないならば,次による。 

A) Rのルーチン記述子中の,Piに関連付けられたFROM-SQL関数の特定名によって識別さ

446 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

れるSQL呼出しルーチンをFSFiとする。FSFiの結果データ型をRTiとする。 

B) CPViである単一引数をもつ静的SQL引数リストをSTATIC SQL ARG LISTとして,当該

ルーチンFSFiをSUBJECT ROUTINEとして,この細分箇条の一般規則を適用する。 

C) FSFiの呼出しの結果をRViとする。CPViは,RViによって置き換えられる。 

ii) そうでなければ,次による。 

場合: 

1) 

14 Piが位置付け子パラメタならば,CPViは,型INTEGERの処理系依存の値に置き換えられ

る。 

2) Tiが利用者定義型で,かつ,Piが位置付け子パラメタでないならば,次による。 

A) Rのルーチン記述子中の,Piと関連付けられたFROM-SQL関数の特定名によって識別さ

れるSQL呼出しルーチンをFSFiとする。FSFiの結果データ型をRTiとする。 

B) CPViは,型RTiの処理系定義の値に置き換えられる。 

5) 現行SQLセション文脈CSCを保存し,CSCから導出される新しいSQLセション文脈RSCを次の

とおりに作成する。 

a) 現行既定カタログ名,現行既定修飾なしスキーマ名,現行既定文字集合名,現行SQLセションの

SQLパス,SQLパスを定義するテキスト,現行SQLセションの現行既定時刻帯時差,全ての動

的SQL記述子領域の内容,既定変換グループ名を定義するテキスト,利用者によって陽に設定さ

れた,各利用者定義型に対する利用者定義型名と変換グループ名との対を定義するテキスト,及

び文実行文脈に,処理系定義の値を設定する。 

b) 現行SQLセション識別子,SQLセション利用者識別子,大域一時表の全ての実現値の識別体,

SQLセションでアクセス可能な開いている全てのカーソルのカーソル実現値記述子,各整合性制

約に対する現行制約モード,現行のトランザクションアクセスモード,現行のトランザクション

隔離性水準,現行の条件領域限界,当該表制限フラグ及び制限当該表名リストに,CSC中のそれ

らの値を設定する。 

c) 原時刻帯時差に,CSC中の現行既定時刻帯時差の値を設定する。 

d) CSC中の全ての有効な位置付け子の値の集合をRSCに写す。 

e) RSCは,最初,どんなトリガ実行文脈も被準備文ももたない。 

f) CSC中の診断領域スタックをRSCに写し,“PUSH”をOPERATIONとして,RSC中の診断領域

スタックをSTACKとして,“23.2 診断領域スタックに対する押込み及び取出し”の一般規則を適

用する。 

g) 場合: 

i) 

04 RがSQLルーチンならば,作成局所一時表,<SQLクライアントモジュール定義>に含まれる

<一時表宣言>によって定義される宣言局所一時表,大域拡張動的カーソルでない全ての開いて

いるカーソルのカーソル実現値記述子,大域拡張名をもたない被準備文,及び大域拡張名をも

たないSQL記述子領域の全ての実現値の識別体を,RSCから取り除く。 

ii) 

13 そうでなければ,次による。 

1) 

04 Pの<SQLクライアントモジュール定義>ではない<SQLクライアントモジュール定義>中で

参照される作成局所一時表,Pの<SQLクライアントモジュール定義>ではない<SQLクライ

アントモジュール定義>に含まれる<一時表宣言>によって定義される宣言局所一時表,及び

大域拡張動的カーソルでなく,かつ,SQLクライアントモジュールがPのSQLクライアン

447 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

トモジュールではない全ての開いているカーソルのカーソル実現値記述子の全ての実現値の

識別体をRSCから取り除く。 

2) Pの<SQLクライアントモジュール定義>中で参照される作成局所一時表,Pの<SQLクライ

アントモジュール定義>に含まれる<一時表宣言>によって定義される宣言局所一時表,大域

拡張動的カーソルでなく,かつ,SQLクライアントモジュールがPのSQLクライアントモ

ジュールである全ての開いているカーソルのカーソル実現値記述子,大域拡張名をもたない

被準備文,及び大域拡張名をもたないSQL記述子領域の全ての実現値の識別体をRSCから

取り除くかどうかは,処理系定義とする。 

h) SQL呼出しルーチンRが動作中であることをRSCのルーチン実行文脈中の標識で示す。 

i) 

場合: 

i) 

CSCのSQLデータアクセス指示がSQLを潜在的に含むことを指定し,かつ,RがSQLデータ

を潜在的に読むか又はSQLデータを潜在的に修正するならば,次による。 

1) Rが外部ルーチンならば,例外条件:外部ルーチン例外 (external routine exception) − SQLデ

ータを読むことは許されない (reading SQL-data not permitted) が引き起こされる。 

2) そうでなければ,例外条件:SQLルーチン例外 (SQL routine exception) − SQLデータを読む

ことは許されない が引き起こされる。 

ii) CSCのSQLデータアクセス指示がSQLデータを潜在的に読むことを指定し,かつ,RがSQL

データを潜在的に修正するならば,次による。 

1) Rが外部ルーチンならば,例外条件:外部ルーチン例外 − SQLデータを修正することは許

されない (modifying SQL-data not permitted) が引き起こされる。 

2) そうでなければ,例外条件:SQLルーチン例外 − SQLデータを修正することは許されない 

が引き起こされる。 

j) 

場合: 

i) 

RがSQLを潜在的に含まないならば,RSCのルーチン実行文脈中のSQLデータアクセス指示

に,SQLを潜在的に含まない (does not possibly contain SQL) ことを設定する。 

ii) RがSQLを潜在的に含むならば,RSCのルーチン実行文脈中のSQLデータアクセス指示に,

SQLを潜在的に含む (possibly contains SQL) ことを設定する。 

iii) RがSQLデータを潜在的に読むならば,RSCのルーチン実行文脈中のSQLデータアクセス指

示に,SQLデータを潜在的に読む (possibly reads SQL-data) ことを設定する。 

iv) RがSQLデータを潜在的に修正するならば,RSCのルーチン実行文脈中のSQLデータアクセ

ス指示に,SQLデータを潜在的に修正する (possibly modifies SQL-data) ことを設定する。 

k) RSCの認可スタックには,CSCの認可スタックの写しが設定される。 

l) 

最上部セルの写しが,RSCの認可スタックに押し込まれる。 

m) 場合: 

i) 

Rが外部ルーチンならば,次による。 

1) 場合: 

A) Rの外部安全保護特性がIMPLEMENTATION DEFINEDならば,RSCの現行利用者識別子

及び現行役割名は,処理系定義とする。 

B) Rの外部安全保護特性がDEFINERならば,RSCの認可スタックの最上部セルは,Rのル

ーチン認可識別子だけを含むように設定される。 

448 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) RSCのルーチンSQLパスには,Rの外部ルーチンSQLパスが設定される。 

ii) そうでなければ,次による。 

1) RのSQL安全保護特性がDEFINERならば,RSCの認可スタックの最上部セルは,Rのルー

チン認可識別子だけを含むように設定される。 

2) RSCのルーチンSQLパスには,RのルーチンSQLパスが設定される。 

n) 当該ルーチンがSQL呼出し手続SIPならば,次による。 

i) 

起源がSIPの<特定ルーチン指示子>であるどの受取りカーソルRCに対しても,RCのカーソ

ル宣言記述子及びカーソル実現値記述子が破壊される。 

ii) SIPに関連付けられたどの結果集合並びも,破壊される。 

iii) SIPの呼出し元をINVとする。SQL呼出し手続SIP及び呼出し元INVに対して,空の結果集

合並びRSSがRSCに追加される。 

注記311 SIPの呼出し元は,“4.28.5 SQL呼出し手続によって戻される結果集合”で定義して

いる。 

o) RSCが現行SQLセション文脈になる。 

6) Rが呼び出されるときに新しい保存点水準が確立されることを示す標識を,Rの記述子が含むなら

ば,新しい保存点水準が確立される。 

7) RがSQLルーチンならば,次による。 

場合: 

a) Rがナル呼出し関数で,かつ,CPViのいずれかがナル値ならば,ナル値をRVとする。 

b) そうでなければ,次による。 

i) 

1からPNまでの範囲のiに対して,PiにCPViの値を設定する。 

ii) RのSQLルーチン本体をEXECUTING STATEMENTとして,“13.4 <SQL手続文>”の一般規則

を適用する。 

iii) RのSQLルーチン本体の実行の完了前に,SQLコネクション文を実行しようとするならば,例

外条件:SQLルーチン例外 − 禁止されているSQL文を試みた (prohibited SQL-statement 

attempted) が引き起こされる。 

iv) 場合: 

1) SQL処理系が機能T272“拡張保存点管理”を提供しておらず,かつ,RのSQLルーチン本

体の実行の完了前に,SQLトランザクション文を実行しようとするならば,例外条件:SQL

ルーチン例外 − 禁止されているSQL文を試みた が引き起こされる。 

2) RのSQLルーチン本体の実行の完了前に,<SAVEPOINT文>でも,<RELEASE SAVEPOINT

文>でも,<SAVEPOINT句>を指定する<ROLLBACK文>でもないSQLトランザクション文を

実行しようとするならば,例外条件:SQLルーチン例外 − 禁止されているSQL文を試みた 

が引き起こされる。 

v) SQL処理系が機能T651“SQLルーチン中のSQLスキーマ文”を提供しておらず,かつ,Rの

SQLルーチン本体の実行の完了前に,SQLスキーマ文を実行しようとするならば,例外条件:

SQLルーチン例外 − 禁止されているSQL文を試みた が引き起こされる。 

vi) SQL処理系が機能T652“SQLルーチン中の動的SQL文”を提供しておらず,かつ,RのSQL

ルーチン本体の実行の完了前に,動的SQL文を実行しようとするならば,例外条件:SQLルー

チン例外 − 禁止されているSQL文を試みた が引き起こされる。 

449 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

vii) RSCのSQLデータアクセス指示が,SQLを潜在的に含むことを指定し,かつ,RのSQLルー

チン本体の実行の完了前に,SQLデータを潜在的に読むSQL文を実行しようとするか,又は

SQLデータを潜在的に修正するSQL文を実行しようとするならば,例外条件:SQLルーチン

例外 − SQLデータを読むことは許されない が引き起こされる。 

viii) RSCのSQLデータアクセス指示が,SQLデータを潜在的に読むことを指定し,かつ,RのSQL

ルーチン本体の実行の完了前に,SQLデータを潜在的に修正するSQL文を実行しようとする

ならば,例外条件:SQLルーチン例外 − SQLデータを修正することは許されない が引き起

こされる。 

ix) RがSQL呼出し関数ならば,次による。 

場合: 

1) RのSQLルーチン本体の実行の完了前に,<RETURN文>が実行されないならば,例外条件:

SQLルーチン例外 − 関数がRETURN文を実行しなかった (function executed no return 

statement) が引き起こされる。 

2) そうでなければ,RのSQLルーチン本体の実行の戻り値をRVとする。 

注記312 “戻り値”は,“16.2 <RETURN文>”で定義している。 

x) RがSQL呼出し手続ならば,出力SQLパラメタ又は入出力SQLパラメタであるRの各SQL

パラメタに対して,CPViにPiの値を設定する。 

8) Rが外部ルーチンならば,次による。 

a) 

04 Rを含むスキーマへのPの結合方法及び結合時機は,処理系定義とする。 

b) RがPARAMETER STYLE SQLを指定するならば,次による。 

i) 

場合: 

1) RがSQL呼出し関数ならば,Rの実効的SQLパラメタリストESPLは,次のとおりに設定さ

れる。 

A) Rが,行型である要素型をもつ配列戻し外部関数又はマルチ集合戻し外部関数ならば,要

素型の次数をFRNとする。そうでなければ,1をFRNとする。 

B) 1からPNまでの範囲のiに対して,ESPL中のi番目の項目には,CPViが設定される。 

C) PN + 1からPN + FRNまでの範囲のiに対して,ESPL中のi番目の項目は,結果データ項

目 (result data item) とする。 

D) (PN + FRN) + 1から (PN + FRN) + Nまでの範囲のiに対して,ESPL中のi番目の項目は,

CPVi−(PN + FRN) に対応するSQL標識引数 (SQL indicator argument) とする。 

E) (PN + FRN) + N + 1から (PN + FRN) + N+ FRNまでの範囲のiに対して,ESPL中のi番目

の項目は,結果データ項目に対応するSQL標識引数とする。 

F) (PN + FRN) + (N + FRN) + 1と等しいiに対して,ESPL中のi番目の項目は,例外データ

項目 (exception data item) とする。 

G) (PN + FRN) + (N + FRN) + 2と等しいiに対して,ESPL中のi番目の項目は,ルーチン名

テキスト項目 (routine name text item) とする。 

H) (PN + FRN) + (N + FRN) + 3と等しいiに対して,ESPL中のi番目の項目は,特定名テキ

スト項目 (specific name text item) とする。 

I) (PN + FRN) + (N + FRN) + 4と等しいiに対して,ESPL中のi番目の項目は,メッセージ

テキスト項目 (message text item) とする。 

450 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

J) Rが配列戻し外部関数又はマルチ集合戻し外部関数ならば,(PN + FRN) + (N + FRN) + 5と

等しいiに対して,ESPL中のi番目の項目は,保存領域データ項目 (save area data item) と

し,(PN + FRN) + (N + FRN) + 6と等しいiに対して,ESPL中のi番目の項目は,呼出し

種別データ項目 (call type data item) とする。 

K) 結果データ項目に対応するSQL標識引数[すなわち,(PN + FRN) + N + 1から (PN + FRN) 

+ N + FRNまでのSQL引数値リスト項目]に,値0を設定する。 

L) 1からPNまでの範囲のiに対して,CPViがナル値ならば,(PN + FRN) + i番目の項目(す

なわち,CPViに対応するi番目のSQL標識引数)に,値-1を設定し,そうでなければ,

(PN + FRN) + i番目の項目(すなわち,CPViに対応するi番目のSQL標識引数)に,値0

を設定する。 

M) Rが配列戻し外部関数又はマルチ集合戻し外部関数ならば,保存領域データ項目[すなわ

ち,(PN + FRN) + (N + FRN) + 5番目のSQL引数値リスト項目]に,値0を設定し,呼出

し種別データ項目[すなわち,(PN + FRN) + (N + FRN) + 6番目のSQL引数値リスト項目]

に,値-1を設定する。 

2) そうでなければ,Rの実効的SQLパラメタリストESPLは,次のとおりに設定される。 

A) 1からPNまでの範囲のiに対して,ESPL中のi番目の項目は,CPViとする。 

B) PN + 1からPN + Nまでの範囲のiに対して,ESPL中のi番目の項目は,CPVi-PNに対応

するSQL標識引数 とする。 

C) (PN + N) + 1と等しいiに対して,ESPL中のi番目の項目は,例外データ項目 とする。 

D) (PN + N) + 2と等しいiに対して,ESPL中のi番目の項目は,ルーチン名テキスト項目 と

する。 

E) (PN + N) + 3と等しいiに対して,ESPL中のi番目の項目は,特定名テキスト項目 とす

る。 

F) (PN + N) + 4と等しいiに対して,ESPL中のi番目の項目は,メッセージテキスト項目 と

する。 

G) 1からPNまでの範囲のiに対して,CPViがナル値ならば,ESPL中のPN + i番目の項目

(すなわち,CPViに対応するi番目のSQL標識引数)に,値-1を設定し,そうでなけれ

ば,ESPL中のPN + i番目の項目(すなわち,CPViに対応するi番目のSQL標識引数)

に,値0を設定する。 

ii) 例外データ項目には,'00000' が設定される。 

iii) ルーチン名テキスト項目には,Rのルーチン名の<スキーマ修飾付き名前>が設定される。 

iv) 特定名テキスト項目には,Rの特定名の<被修飾識別子>が設定される。 

v) メッセージテキスト項目には,長さ0の文字列が設定される。 

c) RがPARAMETER STYLE GENERALを指定するならば,Rの実効的SQLパラメタリストESPL

は,次のとおりに設定される。 

i) 

Rがナル呼出し関数でなく,かつ,1からPNまでの範囲のiに対して,CPViのいずれかがナ

ル値ならば,例外条件:外部ルーチン呼出し例外 (external routine invocation exception) − ナル

値は許されない (null value not allowed) が引き起こされる。 

ii) 1からPNまでの範囲のiに対して,どのCPViも,ナル値でないならば,1からPNまでの範

囲のjに対して,ESPL中のj番目の項目には,CPVjが設定される。 

background image

451 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) 

13 RがDETERMINISTICを指定し,かつ,同一のSQL引数値リストでのPの異なる実行が同一の

結果を生じないならば,結果は,処理系依存とする。 

e) ESPL中の項目の個数をENとする。ESPL中のi番目の実効的SQLパラメタをESPiとする。 

f) 

1からENまでの範囲のiに対して,ESPiの<データ型>をPTiとする。 

g) 場合: 

i) 

Rがナル呼出し関数で,かつ,CPViのいずれかがナル値ならば,Pは,実行されたと仮定され

る。 

ii) そうでなければ,次による。 

1) 

13 Rが配列戻し外部関数又はマルチ集合戻し外部関数でないならば,パラメタ名がPNiで,

かつ,値が次のとおりに設定されるEN個のパラメタPDiのリストでPが実行される。 

A) Rの言語がADA,C,COBOL,FORTRAN,M,PASCAL又はPLIならば,それぞれ,表

16“Adaのためのデータ型対応”,表17“Cのためのデータ型対応”,表18“COBOLのた

めのデータ型対応”,表19“Fortranのためのデータ型対応”,表20“Mのためのデータ型

対応”,表21“Pascalのためのデータ型対応”又は表22“PL/Iのためのデータ型対応”を

適用データ型対応表 (operative data type correspondences table) とする。適用データ型対応

表の二つの列を,“SQLデータ型 (SQL data type) ”の列及び“ホストデータ型 (host data 

type) ”の列として参照する。 

B) 1からENまでの範囲のiに対して,PDiのホスト言語データ型DTiは,適用データ型対応

表中で,“SQLデータ型”の列の値がPTiに対応する行の“ホストデータ型”の列に記載さ

れたデータ型とする。 

2) Pの言語をLANGUAGEとして,PTiをSQL TYPEとして,ESPiの値をSQL VALUEとして,

“9.4 SQLサーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則

の適用によって戻されるHOST VALUEをPDiとする。 

3) 

13 Rが配列戻し外部関数ならば,次による。 

A) 宣言型がRの結果データ型である配列をARとする。 

B) ARをARRAYとして,ESPLをEFFECTIVE SQL PARAMETER LISTとして,PをPROGRAM

として,“9.16 配列戻し関数の実行”の一般規則を適用する。 

4) Rがマルチ集合戻し外部関数ならば,次による。 

A) 宣言型がRの結果データ型であるマルチ集合をMUとする。 

B) MUをMULTISETとして,ESPLをEFFECTIVE SQL PARAMETER LISTとして,Pを

PROGRAMとして,“9.17 マルチ集合戻し関数の実行”の一般規則を適用する。 

5) 

13 RSCのSQLデータアクセス指示が,SQLを潜在的に含まないことを指定し,かつ,Pの実

行の完了前に,SQL文を実行しようとするならば,例外条件:外部ルーチン例外 − SQLを

含むことは許されない (containing SQL not permitted) が引き起こされる。 

6) Pの実行の完了前に,SQLコネクション文を実行しようとするならば,例外条件:外部ルー

チン例外 − 禁止されているSQL文を試みた が引き起こされる。 

7) 場合: 

A) SQL処理系が機能T272“拡張保存点管理”を提供しておらず,かつ,Pの実行の完了前に,

SQLトランザクション文を実行しようとするならば,例外条件:外部ルーチン例外 − 禁

止されているSQL文を試みた が引き起こされる。 

452 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

B) Pの実行の完了前に,<SAVEPOINT文>でも,<RELEASE SAVEPOINT文>でも,

<SAVEPOINT句>を指定する<ROLLBACK文>でもないSQLトランザクション文を実行し

ようとするならば,例外条件:外部ルーチン例外 − 禁止されているSQL文を試みた が

引き起こされる。 

8) SQL処理系が機能T653“外部ルーチン中のSQLスキーマ文”を提供しておらず,かつ,Pの

実行の完了前に,SQLスキーマ文を実行しようとするならば,例外条件:外部ルーチン例外 

− 禁止されているSQL文を試みた が引き起こされる。 

9) SQL処理系が機能T654“外部ルーチン中の動的SQL文”を提供しておらず,かつ,Pの実

行の完了前に,動的SQL文を実行しようとするならば,例外条件:外部ルーチン例外 − 禁

止されているSQL文を試みた が引き起こされる。 

10) RSCのSQLデータアクセス指示が,SQLを潜在的に含むことを指定し,かつ,Pの実行の完

了前に,SQLデータを潜在的に読むSQL文を実行しようとするか,又はSQLデータを潜在

的に修正するSQL文を実行しようとするならば,例外条件:外部ルーチン例外 − SQLデー

タを読むことは許されない が引き起こされる。 

11) RSCのSQLデータアクセス指示が,SQLデータを潜在的に読むことを指定し,かつ,Pの実

行の完了前に,SQLデータを潜在的に修正するSQL文を実行しようとするならば,例外条

件:外部ルーチン例外 − SQLデータを修正することは許されない が引き起こされる。 

12) Pが,Rのための規格に従って規格に適合するプログラムでないならば,Pの実行の結果は,

処理系依存とする。 

h) Pの実行の完了後は,次による。 

i) 

13 次によるかどうかは,処理系定義とする。 

1) RSCに関連付けられた,作成局所一時表の全ての実現値及び宣言局所一時表の全ての実現値

が破壊される。 

2) 現行SQLトランザクション中でPによって準備され,Pによって解放されなかった全ての被

準備文PSに対して,次による。 

A) PSを識別する<SQL文名>をSSNとする。 

B) 次のSQL文が実効的に実行される。 

DEALLOCATE PREPARE SSN 

ii) 

13 1からENまでの範囲のiに対して,Pの言語をLANGUAGEとして,PTiをSQL TYPEとし

て,PDiの値をHOST VALUEとして,“9.3ホスト言語からSQLサーバへの値の受渡し”の一

般規則を適用する。これらの一般規則の適用によって戻されるSQL VALUEをESPiとする。 

iii) RがPARAMETER STYLE SQLを指定するならば,次による。 

場合: 

1) 例外データ項目が値 '00000' をもつならば,Pの実行が成功した。 

2) 例外データ項目の最初の2文字が,警告 (warning) に対するSQLSTATEクラスコードと等し

いならば,例外データ項目の値の最後の3文字と等しいサブクラスコードを用いて,終了条

件:警告 が引き起こされる。 

3) そうでなければ,例外データ項目の値の最初の2文字と等しいクラスコード及び例外データ

項目の値の最後の3文字と等しいサブクラスコードを用いて,例外条件が引き起こされる。 

iv) 例外データ項目が '00000' でなく,RがPARAMETER STYLE SQLを指定したならば,メッセ

453 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ージテキスト項目が1番目の診断領域中に格納される。 

i) 

RがSQL呼出し関数ならば,次による。 

i) 

場合: 

1) RがSQL呼出しメソッドで,そのSQL呼出しメソッドのルーチン記述子がSTATICを示す

標識を含まないで,かつ,CPV1がナル値ならば,ナル値をRDIとする。 

2) Rがナル呼出し関数で,Rが配列戻し外部関数又はマルチ集合戻し外部関数でなく,かつCPVi

のいずれかがナル値ならば,ナル値をRDIとする。 

3) 

13 Rがナル呼出し関数でなく,Rが配列戻し外部関数又はマルチ集合戻し外部関数でなく,R

がPARAMETER STYLE SQLを指定し,かつ,EPSL中の (PN + 1) + N + 1番目の項目(すな

わち,結果データ項目に対応するN + 1番目のSQL標識引数)が負の値ならば,ナル値をRDI

とする。 

4) そうでなければ,次による。 

A) 場合: 

I) Rが配列戻し外部関数又はマルチ集合戻し外部関数でなく,RがPARAMETER STYLE 

SQLを指定し,かつ,EPSL中の (PN + 1) + N + 1番目の項目(すなわち,結果データ項

目に対応するN + 1番目のSQL標識引数)が負の値でないならば,結果データ項目の値

をERDIとする。 

II) Rが配列戻し外部関数で,かつ,RがPARAMETER STYLE SQLを指定するならば,AR

をERDIとする。 

III) Rがマルチ集合戻し外部関数で,かつ,RがPARAMETER STYLE SQLを指定するなら

ば,MUをERDIとする。 

IV) RがPARAMETER STYLE GENERALを指定するならば,Pから戻されるホスト言語の値

をHLVとする。Rの<戻りデータ型>をRDTとする。RDTが<位置付け子標識>を含むな

らば,INTEGERをEDTとする。そうでなければ,RDTに含まれる<データ型>をEDT

とする。Rの言語をLANGUAGEとして,EDTをSQL TYPEとして,HLVをHOST 

VALUEとして,“9.3ホスト言語からSQLサーバへの値の受渡し”の一般規則を適用す

る。これらの一般規則の適用によって戻されるSQL VALUEをERDIとする。 

注記313 Pから戻されるホスト言語の値は,処理系依存の方法でSQL処理系に渡され

る。引数値リスト項目は,このためには用いない。 

B) 場合: 

I) ERDIが無効な位置付け子ならば,例外条件:位置付け子例外 (locator exception) − 指

定が正しくない (invalid specification) が引き起こされ,この細分箇条の一般規則は,こ

れ以上適用しない。 

II) 戻り値が位置付け子であることを,Rのルーチン記述子が示すならば,次による。 

場合: 

1) RTが2進オクテット長大オブジェクト型ならば,ERDIに対応する2進オクテット長

大オブジェクト値をRDIとする。 

2) RTが文字長大オブジェクト型ならば,ERDIに対応する長大オブジェクト文字列を

RDIとする。 

3) RTが配列型ならば,ERDIに対応する配列値をRDIとする。 

454 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) RTがマルチ集合型ならば,ERDIに対応するマルチ集合値をRDIとする。 

5) RTが利用者定義型ならば,ERDIに対応する利用者定義型値をRDIとする。 

III) そうでなければ,次による。Rが<結果型変換>を指定するならば,<結果型変換>中に指

定される<データ型>をCRTとし,そうでなければ,Rの<戻りデータ型>をCRTとする。 

場合: 

1) Rが<結果型変換>を指定し,かつ,<結果型変換>が位置付け子標識をもつことを,R

のルーチン記述子が示すならば,次による。 

場合: 

a) CRTが2進オクテット長大オブジェクト型ならば,ERDIに対応する2進オクテッ

ト長大オブジェクト値をRDIとする。 

b) CRTが文字長大オブジェクト型ならば,ERDIに対応する長大オブジェクト文字列

をRDIとする。 

c) CRTが配列型ならば,ERDIに対応する配列値をRDIとする。 

d) CRTがマルチ集合型ならば,ERDIに対応するマルチ集合値をRDIとする。 

e) CRTが利用者定義型ならば,ERDIに対応する利用者定義型値をRDIとする。 

2) そうでなければ,次による。 

場合: 

a) CRTが利用者定義型ならば,次による。 

i) 

Rの結果に関連付けられたTO-SQL関数の特定名によって識別されるSQL呼出し

ルーチンをTSFとする。 

ii) 場合: 

1) TSFがSQL呼出しメソッドならば,次による。 

A) Rが型保持関数ならば,Rの結果SQLパラメタを置き換える引数の値の最特

定型をMATとし,そうでなければ,CRTをMATとする。 

B) 1番目の要素が次の呼出しによって戻される値で,かつ,2番目の要素がERDI

である静的SQL引数リストをSTATIC SQL ARG LISTとして,当該ルーチン

TSFをSUBJECT ROUTINEとして,この細分箇条の一般規則を適用する。 

MAT() 

2) そうでなければ,ERDIである単一のSQL引数をもつ静的SQL引数リストを

STATIC SQL ARG LISTとして,当該ルーチンTSFをSUBJECT ROUTINEとし

て,この細分箇条の一般規則を適用する。 

iii) TSFの呼出しの結果をRDIとする。 

b) 

14 そうでなければ,ERDIをRDIとする。 

ii) Rが<結果型変換>を指定するならば,Rの<戻りデータ型>をRTとし,次の型変換の結果をRV

とする。 

CAST ( RDI  AS RT ) 

そうでなければ,RDIをRVとする。 

j) RがSQL呼出し手続ならば,出力SQLパラメタ又は入出力SQLパラメタである各Pi,1 ≤ i ≤ PN

に対して,次による。 

場合: 

455 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

RがPARAMETER STYLE SQLを指定し,かつ,ESPL中の (PN + i) 番目の項目(すなわち,

CPViに対応するi番目のSQL標識引数)が負の値ならば,CPViには,ナル値が設定される。 

ii) 

13 RがPARAMETER STYLE SQLを指定し,ESPL中の (PN + i) 番目の項目(すなわち,CPVi

に対応するi番目のSQL標識引数)が負の値でなく,かつ,ESPL中のi番目の項目に値が代

入されなかったならば,CPViには,型Tiの処理系定義の値が設定される。 

iii) そうでなければ,次による。 

注記314 この場合は,RがPARAMETER STYLE SQLを指定し,ESPL中の (PN + i) 番目の

項目(すなわち,CPViに対応するi番目のSQL標識引数)が負の値でなく,かつ,

ESPL中のi番目の項目に値が代入されたか,又はRがPARAMETER STYLE 

GENERALを指定するかのいずれかである。 

1) ESPL中のi番目の項目をEViとする。Piの宣言型をTiとする。 

2) EViが無効な位置付け子ならば,例外条件:位置付け子例外 − 指定が正しくない が引き起

こされ,この細分箇条の一般規則は,これ以上適用しない。 

3) 場合: 

A) Piが位置付け子パラメタならば,次による。 

場合: 

I) Tiが2進オクテット長大オブジェクト型ならば,CPViには,EViに対応する2進オクテ

ット長大オブジェクト値が設定される。 

II) Tiが文字長大オブジェクト型ならば,CPViには,EViに対応する長大オブジェクト文字

列が設定される。 

III) Tiが配列型ならば,CPViには,EViに対応する配列値が設定される。 

IV) Tiがマルチ集合型ならば,CPViには,EViに対応するマルチ集合値が設定される。 

V) Tiが利用者定義型ならば,CPViには,EViに対応する利用者定義型値が設定される。 

B) Tiが利用者定義型ならば,次による。 

I) Rのルーチン記述子中の,Piと関連付けられたTO-SQL関数の特定名によって識別され

るSQL呼出し関数をTSFiとする。 

II) 場合: 

1) TSFiがSQL呼出しメソッドならば,1番目の要素が次の呼出しによって戻される値

で,かつ,2番目の要素がEViである静的SQL引数リストをSTATIC SQL ARG LIST

として,当該ルーチンTSFiをSUBJECT ROUTINEとして,この細分箇条の一般規則

を適用する。 

 Ti () 

2) そうでなければ,EViである単一のSQL引数をもつ静的SQL引数リストをSTATIC 

SQL ARG LISTとして,当該ルーチンTSFiをSUBJECT ROUTINEとして,この細分

箇条の一般規則を適用する。 

III) CPViには,TSFiの呼出しの結果が設定される。 

C) 

14 そうでなければ,CPViには,EViが設定される。 

9) 場合: 

a) RがSQL呼出し関数ならば,次による。 

i) 

Rが型保持関数ならば,次による。 

background image

456 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) Rの結果SQLパラメタを置き換える引数の値の最特定型をMATとする。 

2) RVがナル値でなく,かつ,RVの最特定型がMATと互換でないならば,例外条件:データ

例外 − 最特定型不一致 (most specific type mismatch) が引き起こされる。 

ii) <ルーチン呼出し>の実効的戻りデータ型をERDTとする。 

iii) 

14 RVをVALUEとして,宣言型がERDTの一時的な格納場所STをTARGETとして,“9.2 格

納代入”の一般規則を適用する。STの値を<ルーチン呼出し>の結果とする。 

b) そうでなければ,出力SQLパラメタ又は入出力SQLパラメタであるRの各SQLパラメタPiに

対して,対応する<SQL引数> Aiの<相手指定>をTSiとする。 

場合: 

i) 

TSiが<ホストパラメタ指定>又は<埋込み変数指定>ならば,TSiをTARGETとして,CPViを

VALUEとして,“9.1 取出し代入”の一般規則を適用する。 

ii) 

04 TSiが<SQLパラメタ参照>,<列参照>又は<相手配列要素指定>ならば,次による。 

注記315 <列参照>は,遷移新変数列参照だけがあり得る。 

場合: 

1) <相手配列要素指定>が指定されるならば,次による。 

場合: 

A) TSiの値がナル値ならば,例外条件:データ例外 − 配列相手にナル値 (null value in array 

target) が引き起こされる。 

B) そうでなければ,次による。 

I) TSiの最大基数をNとする。 

II) TSiの値の基数をMとする。 

III) TSiに直に含まれる<単純値指定>の値をIとする。 

IV) TSiの要素型をEDTとする。 

V) 場合: 

1) Iが0より大きく,かつ,M以下ならば,TSiの値は,要素型EDT及び基数Mをも

ち,次のとおりに導出される配列Aによって置き換えられる。 

a) 1からI -1まで及びI +1からMまでの範囲のjに対して,A中のj番目の要素は,

TSi中のj番目の要素の値とする。 

b) 

14 AのI番目の要素をTARGETとして,CPViの値をVALUEとして,“9.2 格納代

入”の一般規則を適用する。 

2) IがMより大きく,かつ,N以下ならば,TSiの値は,要素型EDT及び基数Iをもち,

次のとおりに導出される配列Aによって置き換えられる。 

a) 1からMまでの範囲のjに対して,A中のj番目の要素は,TSi中のj番目の要素の

値とする。 

b) M +1からIまでの範囲のjに対して,A中のj番目の要素は,ナル値とする。 

c) 

14 AのI番目の要素をTARGETとして,CPViの値をVALUEとして,“9.2 格納代

入”の一般規則を適用する。 

3) そうでなければ,例外条件:データ例外 − 配列要素誤り (array element error) が引き

起こされる。 

2) 

14 そうでなければ,TSiをTARGETとして,CPViをVALUEとして,“9.2 格納代入”の一

457 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

般規則を適用する。 

10) RSSが空でないならば,SIPの記述子をPRとする。 

a) PRに含まれる戻り結果集合の最大個数をMAXとする。 

b) 

13 RSSに含まれる戻り結果集合の実際の個数をOPNとする。 

c) 場合: 

i) 

OPNがMAXを超えるならば,次による。 

1) MAXをRTNとする。 

2) 終了条件:警告 − 多すぎる結果集合を戻そうと試みた (attempt to return too many result sets) 

が引き起こされる。 

ii) そうでなければ,OPNをRTNとする。 

d) 

13 各i,1 ≤ i ≤ RTNに対して,RSS中のi番目の戻り結果集合RSiのWITH RETURNカーソルを

FRCiとする。 

e) 各i,1 ≤ i ≤ RTNに対して,次による。 

場合: 

i) 

FRCiがスクロール可能カーソルならば,RSiの初期カーソル位置は,FRCiの現在カーソル位

置とする。 

ii) そうでなければ,次による。 

場合: 

1) FRCiがRSi中のある行の前に位置付けられているならば,RSi中のその行の前に順序付けら

れている行の個数をRNとする。 

2) FRCiがRSi中のある行の上に位置付けられているならば,RSi中のその行の順序位置をRN

とする。 

3) そうでなければ,RSi中の行の個数をRNとする。 

最初のRN個の行がRSiから削除され,RSiの初期カーソル位置は,残っている行のうちの最

初の行の前とする。 

f) 

13 終了条件:警告 − 結果集合が戻された (result sets returned) が引き起こされる。 

11) RがSQLルーチンならば,宣言カーソル又は局所拡張動的カーソルのいずれかであり,かつ,Rの

実行中に開かれた全ての開いているカーソルCRに対して,CRをCURSORとして,SAVEを

DISPOSITIONとして“15.4 カーソルを閉じることの効果”の一般規則を適用する。 

12) Rが外部ルーチンならば,宣言カーソル又は局所拡張動的カーソルのいずれかであり,かつ,Rの

実行中に開かれた全ての開いているカーソルCRに対して,次のとおりとするかどうかは,処理系

定義とする。 

a) CRをCURSORとして,SAVEをDISPOSITIONとして,“15.4 カーソルを閉じることの効果”の

一般規則を適用する。 

b) CRのカーソル実現値記述子が破壊される。 

13) 13 CSCを現行SQLセション文脈にするために,次のとおりに準備する。 

a) CSC中の各整合性制約に対する現行制約モードに,RSC中の各整合性制約に対する現行制約モー

ドの値を設定する。 

b) CSC中の現行のトランザクションアクセスモードに,RSC中の現行のトランザクションアクセス

モードの値を設定する。 

458 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) CSC中の現行のトランザクション隔離性水準に,RSC中の現行のトランザクション隔離性水準の

値を設定する。 

d) CSC中の全ての有効な位置付け子の値の集合を,RSC中の全ての有効な位置付け子の値の集合に

よって置き換える。 

e) CSCの当該表制限フラグ及び制限当該表名リストに,RSCの当該表制限フラグの値及び制限当該

表名リストを設定する。 

f) CSC中の現行の条件領域限界に,RSC中の現行の条件領域限界の値CALを設定する。 

g) RSCの1番目の診断領域中の占有された各条件領域CAに対して,CA中のRETURNED̲SQLSTATE

の値が成功終了 (successful completion) を表さないならば,次による。 

場合: 

i) 

CSC中の1番目の診断領域DA1中の占有された条件領域の個数がCAL未満ならば,CAは,

DA1中の最初の空きの条件領域に写される。 

注記316 これによって,DA1中の最初の空きの条件領域は,占有される。 

ii) そうでなければ,DA1の文情報領域中のMOREには,値ʼYʼが設定される。 

h) CSC中の大域一時表の全ての実現値の識別体を,RSC中の大域一時表の実現値の識別体に置き換

える。 

i) 

RSCの認可スタックから最上部セルを取り除き,CSCの認可スタックにRSCの認可スタックの

写しを設定する。 

注記317 RSCの認可スタックをCSCに写すことは,SQLセション利用者識別子の変更を元に

戻すために必要である。 

j) 

当該ルーチンがSQL呼出し手続ならば,結果集合並びRSSがCSCに追加される。 

注記318 これで,<受取りカーソル割当て文> によって参照するためにRSSが利用可能となる。 

注記319 CSC中の他の全ての項目は,RSCの作成前にもっていた値を保持する。 

14) RがSQL呼出し関数であるか,又はRがSQL呼出し手続で,かつ,Rが呼び出されるときに新し

い保存点水準が確立されることを示す標識をRの記述子が含むならば,現行保存点水準は,破壊さ

れる。 

15) CSCが現行SQLセション文脈になる。 

適合性規則 

1) 機能S023“基本構造型”なしでは,適合するSQL言語は,<一般式>を含んではならない。 

2) 機能S201“配列に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,宣言型が配列型

である<SQL引数>を含んではならない。 

3) 機能S202“マルチ集合に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,宣言型が

マルチ集合型である<SQL引数>を含んではならない。 

4) 機能B033“SQL呼出し関数の型付きでない引数”なしでは,適合するSQL言語は,<CALL文>に

単純に含まれないで,かつ,<動的パラメタ指定>である<SQL引数>を単純に含む<ルーチン呼出し

>を含んではならない。 

5) 機能T521“CALL文中の名前付き引数”なしでは,適合するSQL言語は,<名前付き引数指定>を

含んではならない。 

6) 機能T522“SQL呼出し手続の入力パラメタのための既定値”なしでは,適合するSQL言語中で,

<SQL引数>は,<文脈型付き値指定>であってはならない。 

459 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

10.5 <文字集合指定> 

機能 

<文字集合指定> (<character set specification>) は,文字集合を識別する。 

形式 

<文字集合指定> ::= 

  <標準文字集合名> 

| <処理系定義文字集合名> 

| <利用者定義文字集合名> 

<標準文字集合名> ::= 

  <文字集合名> 

<処理系定義文字集合名> ::= 

  <文字集合名> 

<利用者定義文字集合名> ::= 

  <文字集合名> 

構文規則 

1) 提供される<標準文字集合名>及び<処理系定義文字集合名>は,処理系定義とする。 

2) <標準文字集合名>又は<処理系定義文字集合名>によって識別される文字集合には,次の<GRANT文

>によって実効的に定義された権限記述子が関連付けられる。 

GRANT USAGE ON 

CHARACTER SET CS 

TO PUBLIC 

ここで,CSは,<文字集合指定>に含まれる<文字集合名>とする。権限記述子の権限付与者には,特

別な付与者の値“̲SYSTEM”が設定される。 

3) <標準文字集合名>は,SQL̲CHARACTER,並びにこの規格及び他の規格によって定義されるとおり

の“4.2.7 文字集合”で規定する文字集合を含まなければならない。 

4) <処理系定義文字集合名>は,SQL̲TEXT及びSQL̲IDENTIFIERを含まなければならない。 

5) <文字集合指定>に含まれる<文字集合名>をCとする。<文字集合名>の陽に指定されるか又は暗に

想定される<スキーマ名>によって識別されるスキーマは,Cの記述子を含んでいなければならない。 

6) <文字集合指定>が<スキーマ定義>に含まれないならば,<文字集合定義>に直に含まれる<文字集合

名>は,INFORMATION̲SCHEMAと等価でない陽に指定される<スキーマ名>を含まなければならな

い。 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<文字集合指定>が

<SQLスキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識

別子>の適用可能な権限は,Cに関するUSAGEを含まなければならない。 

b) そうでなければ,現行の権限は,Cに関するUSAGEを含まなければならない。 

一般規則 

1) <文字集合指定>は,文字集合を識別する。CSを識別される文字集合とする。 

2) <標準文字集合名>は,各国規格又は国際規格によって定義される文字集合の名前を指定する。CSの

460 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

文字レパートリは,その<標準文字集合名>によって識別される文字集合を定義する規格によって定

義される。文字集合の既定照合順は,規格中で文字の順序によって定義され,PAD SPACE特性をも

つ。 

3) <処理系定義文字集合名>は,処理系定義の文字集合の名前を指定する。CSの文字レパートリは,処

理系定義とする。文字集合の既定照合順,及び照合順がNO PAD特性をもつかPAD SPACE特性を

もつかは,処理系定義とする。 

4) <利用者定義文字集合名>は,INFORMATION̲SCHEMAと等価でない<スキーマ名>をもつスキーマ

に記述子が含まれる文字集合を識別する。 

注記320 文字集合の既定照合順は,“11.41 <文字集合定義>”で定義している。 

5) <文字集合指定>によって指定できるどの文字集合に対しても,文字集合記述子が存在する。 

適合性規則 

1) 機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<文字集合指定>を含んではなら

ない。 

10.6 <特定ルーチン指示子> 

機能 

<特定ルーチン指示子> (<specific routine designator>) は,SQL呼出しルーチンを指定する。 

形式 

<特定ルーチン指示子> ::= 

  SPECIFIC <ルーチン種別> <特定名> 

| <ルーチン種別> <メンバ名> [ FOR <スキーマ解決利用者定義型名> ] 

<ルーチン種別> ::= 

  ROUTINE 

| FUNCTION 

| PROCEDURE 

| [ INSTANCE | STATIC | CONSTRUCTOR ] METHOD 

<メンバ名> ::= 

  <メンバ名代替手段> [ <データ型リスト> ] 

<メンバ名代替手段> ::= 

  <スキーマ修飾付きルーチン名> 

| <メソッド名> 

<データ型リスト> ::= 

  <左括弧> [ <データ型> [ { <コンマ> <データ型> }... ] ] <右括弧> 

構文規則 

1) <特定名> SNが指定されるならば,<特定ルーチン指示子>は,<特定名>がSNであるSQL呼出しル

ーチンを識別しなければならない。 

2) <ルーチン種別>がMETHODを指定し,かつ,INSTANCE,STATIC又はCONSTRUCTORのどれも,

指定されないならば,INSTANCEが暗に想定される。 

3) <メンバ名> MNが指定されるならば,次による。 

a) <スキーマ解決利用者定義型名>が指定されるならば,<ルーチン種別>は,METHODを指定しな

ければならない。METHODが指定されるならば,<スキーマ解決利用者定義型名>を指定しなけれ

461 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ばならない。 

b) 場合: 

i) 

<ルーチン種別>がMETHODを指定するならば,<メンバ名>を指定しなければならない。<スキ

ーマ解決利用者定義型名>の暗に想定されるか又は陽に指定される<スキーマ名>をSCNとし,

<メソッド名>をMETHとし,SCN.METHをRNとする。 

ii) そうでなければ,<スキーマ修飾付きルーチン名>を指定しなければならない。MNの<スキーマ

修飾付きルーチン名>をRNとし,MNの<スキーマ名>をSCNとする。 

c) 場合: 

i) 

MNが<データ型リスト>を含むならば,次による。 

1) <ルーチン種別>がFUNCTIONを指定するならば,全てのi,1 ≤ i ≤引数の個数に対して,i番

目のSQLパラメタの宣言型をTYPE1として,MNの<データ型リスト>中のi番目の<データ

型>をTYPE2として,“9.20 データ型の同一性”の構文規則を適用すると,それらの構文規

則を満たし,かつ,RNである<スキーマ修飾付きルーチン名>をもつただ一つのSQL呼出し

通常関数が,SCNによって識別されるスキーマ中に存在しなければならない。<特定ルーチ

ン指示子>は,そのSQL呼出し関数を識別する。 

2) <ルーチン種別>がPROCEDUREを指定するならば,全てのi,1 ≤ i ≤引数の個数に対して,i

番目のSQLパラメタの宣言型をTYPE1として,MNの<データ型リスト>中のi番目の<デー

タ型>をTYPE2として,“9.20 データ型の同一性”の構文規則を適用すると,それらの構文

規則を満たし,かつ,RNである<スキーマ修飾付きルーチン名>をもつただ一つのSQL呼出

し手続が,SCNによって識別されるスキーマ中に存在しなければならない。<特定ルーチン

指示子>は,そのSQL呼出し手続を識別する。 

3) <ルーチン種別>がMETHODを指定するならば,次による。 

場合: 

A) STATICが指定されるならば,全てのi,1 ≤ i ≤引数の個数に対して,i番目のSQLパラメタ

の宣言型をTYPE1として,MNの<データ型リスト>中のi番目の<データ型>をTYPE2と

して,“9.20 データ型の同一性”の構文規則を適用すると,それらの構文規則を満たし,か

つ,METHである<メソッド名>をもつ,<スキーマ解決利用者定義型名>によって識別され

る利用者定義型のただ一つの静的SQL呼出しメソッドが存在しなければならない。<特定

ルーチン指示子>は,その静的SQL呼出しメソッドを識別する。 

B) CONSTRUCTORが指定されるならば,全てのi,1 ≤ i ≤引数の個数に対して,非拡張<SQL

パラメタ宣言リスト>中のi番目のSQLパラメタの宣言型をTYPE1として,MNの<デー

タ型リスト>中のi番目の<データ型>をTYPE2として,“9.20 データ型の同一性”の構文

規則を適用すると,それらの構文規則を満たし,かつ,METHである<メソッド名>をもつ,

<スキーマ解決利用者定義型名>によって識別される利用者定義型のただ一つのSQL呼出

し構成メソッドが存在しなければならない。<特定ルーチン指示子>は,そのSQL呼出し構

成メソッドを識別する。 

C) そうでなければ,全てのi,1 ≤ i ≤引数の個数に対して,非拡張<SQLパラメタ宣言リスト>

中のi番目のSQLパラメタの宣言型をTYPE1として,MNの<データ型リスト>中のi番目

の<データ型>をTYPE2として,“9.20 データ型の同一性”の構文規則を適用すると,それ

らの構文規則を満たし,かつ,METHである<メソッド名>をもつ,<スキーマ解決利用者

462 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

定義型名>によって識別される利用者定義型のただ一つのインスタンスSQL呼出しメソッ

ドが存在しなければならない。<特定ルーチン指示子>は,そのインスタンスSQL呼出しメ

ソッドを識別する。 

4) <ルーチン種別>がROUTINEを指定するならば,全てのi,1 ≤ i ≤引数の個数に対して,i番

目のSQLパラメタの宣言型をTYPE1として,MNの<データ型リスト>中のi番目の<データ

型>をTYPE2として,“9.20 データ型の同一性”の構文規則を適用すると,それらの構文規

則を満たし,かつ,RNである<スキーマ修飾付きルーチン名>をもつ,ただ一つのSQL呼出

しルーチンが,SCNによって識別されるスキーマ中に存在しなければならない。<特定ルー

チン指示子>は,そのSQL呼出しルーチンを識別する。 

ii) そうでなければ,次による。 

1) <ルーチン種別>がFUNCTIONを指定するならば,RNである<スキーマ修飾付きルーチン名

>をもつただ一つのSQL呼出し通常関数が,SCNによって識別されるスキーマ中に存在しな

ければならない。<特定ルーチン指示子>は,そのSQL呼出し関数を識別する。 

2) <ルーチン種別>がPROCEDUREを指定するならば,RNである<スキーマ修飾付きルーチン

名>をもつただ一つのSQL呼出し手続が,SCNによって識別されるスキーマ中に存在しなけ

ればならない。<特定ルーチン指示子>は,そのSQL呼出し手続を識別する。 

3) <ルーチン種別>がMETHODを指定するならば,次による。 

場合: 

A) STATICが指定されるならば,METHである<メソッド名>をもつ,<スキーマ解決利用者定

義型名>によって識別される利用者定義型のただ一つの静的SQL呼出しメソッドが存在し

なければならない。<特定ルーチン指示子>は,その静的SQL呼出しメソッドを識別する。 

B) CONSTRUCTORが指定されるならば,METHである<メソッド名>をもつ,<スキーマ解決

利用者定義型名>によって識別される利用者定義型のただ一つのSQL呼出し構成メソッド

が存在しなければならない。<特定ルーチン指示子>は,そのSQL呼出し構成メソッドを識

別する。 

C) そうでなければ,METHである<メソッド名>をもつ,<スキーマ解決利用者定義型名>によ

って識別される利用者定義型のただ一つのインスタンスSQL呼出しメソッドが存在しな

ければならない。<特定ルーチン指示子>は,そのインスタンスSQL呼出しメソッドを識別

する。 

4) <ルーチン種別>がROUTINEを指定するならば,RNである<スキーマ修飾付きルーチン名>

をもつただ一つのSQL呼出しルーチンが,SCNによって識別されるスキーマ中に存在しな

ければならない。<特定ルーチン指示子>は,そのSQL呼出しルーチンを識別する。 

4) FUNCTIONが指定されるならば,識別されるSQL呼出しルーチンは,SQL呼出し通常関数でなけ

ればならない。PROCEDUREが指定されるならば,識別されるSQL呼出しルーチンは,SQL呼出

し手続でなければならない。STATIC METHODが指定されるならば,識別されるSQL呼出しルーチ

ンは,静的SQL呼出しメソッドでなければならない。CONSTRUCTOR METHODが指定されるなら

ば,識別されるSQL呼出しルーチンは,SQL呼出し構成メソッドでなければならない。INSTANCE 

METHODが指定されるか又は暗に想定されるならば,識別されるSQL呼出しルーチンは,インス

タンスSQL呼出しメソッドでなければならない。ROUTINEが指定されるならば,識別されるSQL

呼出しルーチンは,SQL呼出し関数又はSQL呼出し手続のいずれかとする。 

463 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語は,METHODを直に含む<ルーチン種別>を

含む<特定ルーチン指示子>を含んではならない。 

10.7 <COLLATE句> 

機能 

<COLLATE句> (<collate clause>) は,既定照合順を指定する。 

形式 

<COLLATE句> ::= 

  COLLATE <照合順名> 

構文規則 

1) <COLLATE句>に含まれる<照合順名>をCとする。<照合順名>の陽に指定されるか又は暗に想定さ

れる<スキーマ名>によって識別されるスキーマは,Cの記述子を含んでいなければならない。 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<COLLATE句>が

<SQLスキーマ文>に含まれるならば,その<SQLスキーマ文>を含むスキーマを所有する<認可識

別子>の適用可能な権限は,Cに関するUSAGEを含まなければならない。 

b) そうでなければ,現行の権限は,Cに関するUSAGEを含まなければならない。 

一般規則 

なし。 

適合性規則 

1) 機能F690“照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を含んではならない。 

10.8 <制約名定義>及び<制約特性> 

機能 

<制約名定義>及び<制約特性> (<constraint name definition> and <constraint characteristics>) は,制約の名前

及びその特性を指定する。 

形式 

<制約名定義> ::= 

  CONSTRAINT <制約名> 

<制約特性> ::= 

  <制約検査時期> [ [ NOT ] DEFERRABLE ] [<制約強制> ] 

| [ NOT ] DEFERRABLE [ <制約検査時期> ] [<制約強制> ] 

| [<制約強制> ] 

<制約検査時期> ::= 

  INITIALLY DEFERRED 

| INITIALLY IMMEDIATE 

464 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<制約強制> ::= 

  [ NOT ] ENFORCED 

構文規則 

1) <制約検査時期>が指定されないならば,INITIALLY IMMEDIATEが暗に想定される。 

2) 場合: 

a) INITIALLY DEFERREDが指定されるならば,次による。 

i) 

NOT DEFERRABLEを指定してはならない。 

ii) DEFERRABLEが指定されないならば,DEFERRABLEが暗に想定される。 

b) INITIALLY IMMEDIATEが指定されるか又は暗に想定され,かつ,DEFERRABLEも,NOT 

DEFERRABLEも,指定されないならば,NOT DEFERRABLEが暗に想定される。 

3) ENFORCEDも,NOT ENFORCEDも,指定されないならば,ENFORCEDが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) <制約名>によって識別される制約をCとする。 

2) NOT DEFERRABLEが指定されるならば,Cは,遅延可能でない。そうでなければ,遅延可能とす

る。 

3) <制約検査時期>がINITIALLY DEFERREDならば,Cの初期制約モードは,遅延 (deferred) とする。

そうでなければ,Cの初期制約モードは,即時 (immediate) とする。 

4) NOT ENFORCEDが指定されるならば,Cは,強制でない。そうでなければ,強制とする。 

適合性規則 

1) 機能F721“遅延可能制約”なしでは,適合するSQL言語は,<制約強制>以外の<制約特性>を含ん

ではならない。 

注記321 これは,INITIALLY IMMEDIATE NOT DEFERRABLEが暗に想定されることを意味する。 

2) 機能F491“制約管理”なしでは,適合するSQL言語は,<制約名定義>を含んではならない。 

3) 機能F492“選択可能な表制約強制”なしでは,適合するSQL言語は,<制約強制>を指定する<制約

特性>を含んではならない。 

10.9 <集約関数> 

この細分箇条は,ISO/IEC 9075-14の“11.2 <集約関数>”によって修正される。 

機能 

<集約関数> (<aggregate function>) は,行の集まりから計算される値を指定する。 

形式 

14 <集約関数> ::= 

  COUNT <左括弧> <アスタリスク> <右括弧> [ <FILTER句> ] 

| <一般集合関数> [ < FILTER句> ] 

| <2項集合関数> [ < FILTER句> ] 

| <順序付け集合関数> [ < FILTER句> ] 

| <配列集約関数> [ < FILTER句> ] 

<一般集合関数> ::= 

  <集合関数種別> <左括弧> [ <集合限定子> ] 

465 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      <値式> <右括弧> 

<集合関数種別> ::= 

  <計算操作> 

<計算操作> ::= 

  AVG 

| MAX 

| MIN 

| SUM 

| EVERY 

| ANY 

| SOME 

| COUNT 

| STDDEV̲POP 

| STDDEV̲SAMP 

| VAR̲SAMP 

| VAR̲POP 

| COLLECT 

| FUSION 

| INTERSECTION 

<集合限定子> ::= 

  DISTINCT 

| ALL 

<FILTER句> ::= 

  FILTER <左括弧> WHERE <探索条件> <右括弧> 

<2項集合関数> ::= 

  <2項集合関数種別> <左括弧> <従属変数式> <コンマ> 

      <独立変数式> <右括弧> 

<2項集合関数種別> ::= 

  COVAR̲POP 

| COVAR̲SAMP 

| CORR 

| REGR̲SLOPE 

| REGR̲INTERCEPT 

| REGR̲COUNT 

| REGR̲R2 

| REGR̲AVGX 

| REGR̲AVGY 

| REGR̲SXX 

| REGR̲SYY 

| REGR̲SXY 

466 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<従属変数式> ::= 

  <数値式> 

<独立変数式> ::= 

  <数値式> 

<順序付け集合関数> ::= 

  <仮説集合関数> 

| <逆分布関数> 

<仮説集合関数> ::= 

  <順位関数種別> <左括弧> 

      <仮説集合関数値式リスト> <右括弧> 

      <WITHIN GROUP指定> 

<WITHIN GROUP指定> ::= 

  WITHIN GROUP <左括弧> ORDER BY <ソート指定リスト> <右括弧> 

<仮説集合関数値式リスト> ::= 

  <値式> [ { <コンマ> <値式> }... ] 

<逆分布関数> ::= 

  <逆分布関数種別> <左括弧> 

      <逆分布関数引数> <右括弧> 

      <WITHIN GROUP指定> 

<逆分布関数引数> ::= 

  <数値式> 

<逆分布関数種別> ::= 

  PERCENTILE̲CONT 

| PERCENTILE̲DISC 

<配列集約関数> ::= 

  ARRAY̲AGG 

      <左括弧> <値式> [ ORDER BY <ソート指定リスト> ] <右括弧> 

構文規則 

1) <集約関数>をAFとする。 

2) STDDEV̲POP,STDDEV̲SAMP,VAR̲POP又はVAR̲SAMPが指定されるならば,<集合限定子>

を指定してはならない。 

3) <一般集合関数>が指定され,かつ,<集合限定子>が指定されないならば,ALLが暗に想定される。 

4) COUNTが指定されるならば,結果の宣言型は,位取り0をもつ処理系定義の真数型とする。 

5) <一般集合関数>が指定されるならば,次による。 

a) <値式> VEは,<ウィンドウ関数>を含んではならない。 

b) <値式>の宣言型をDTとする。 

c) <集合限定子>がDISTINCTである<一般集合関数>をAFが指定するならば,VEは,グループ化

操作のオペランドとする。“9.12 グループ化操作”の構文規則及び適合性規則を適用する。 

d) MAX又はMINである<集合関数種別>をAFが指定するならば,VEは,順序付け操作のオペラ

ンドとする。 

467 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

“9.14 順序付け操作”の構文規則及び適合性規則を適用する。 

ii) DTは,行順序付けであってはならない。 

e) EVERY,ANY又はSOMEが指定されるならば,DTは,ブール型でなければならず,結果の宣言

型は,ブール型とする。 

f) 

MAX又はMINが指定されるならば,結果の宣言型は,DTとする。 

g) SUM又はAVGが指定されるならば,次による。 

i) 

DTは,数型又は時間隔型でなければならない。 

ii) SUMが指定され,かつ,DTが,位取りSの真数ならば,結果の宣言型は,位取りSをもつ処

理系定義の真数型とする。 

iii) AVGが指定され,かつ,DTが真数ならば,結果の宣言型は,DTの精度以上の精度及びDTの

位取り以上の位取りをもつ処理系定義の真数型とする。 

iv) DTが概数ならば,結果の宣言型は,DTの精度以上の精度をもつ処理系定義の概数型とする。 

v) DTが時間隔ならば,結果の宣言型は,DTと同じ精度をもつ時間隔型とする。 

h) VAR̲POP又はVAR̲SAMPが指定されるならば,結果の宣言型は,処理系定義の概数型とする。

DTが概数型ならば,結果の精度は,DTの精度以上とする。 

i) 

STDDEV̲POP(X) は,SQRT(VAR̲POP(X)) と等価とする。 

j) 

STDDEV̲SAMP(X) は,SQRT(VAR̲SAMP(X)) と等価とする。 

k) COLLECTが指定されるならば,結果の宣言型は,DT MULTISETとする。 

l) 

COLLECT (X) は,FUSION (MULTISET [X]) と等価とする。 

m) FUSIONが指定されるならば,DTは,マルチ集合型でなければならず,DISTINCTを指定しては

ならない。結果の宣言型は,DTとする。 

n) INTERSECTIONが指定されるならば,DTは,マルチ集合型でなければならず,DISTINCTを指

定してはならない。VEは,マルチ集合要素グループ化操作のマルチ集合オペランドとし,“9.13 

マルチ集合要素グループ化操作”の構文規則及び適合性規則を適用する。結果の宣言型は,DTと

する。 

6) <FILTER句>は,<問合せ式>,<ウィンドウ関数>又は外への参照を含んではならない。 

7) <2項集合関数>が指定されるならば,次による。 

a) <従属変数式> DVE及び<独立変数式> IVEは,<ウィンドウ関数>を含んではならない。 

b) DVEの宣言型をDTDVEとし,IVEの宣言型をDTIVEとする。 

c) 場合: 

i) 

REGR̲COUNTが指定されるならば,結果の宣言型は,位取り0をもつ処理系定義の真数型と

する。 

ii) そうでなければ,結果の宣言型は,処理系定義の概数型とする。DTDVEが概数型ならば,結果

の精度は,DTDVEの精度以上とする。DTIVEが概数型ならば,結果の精度は,DTIVEの精度

以上とする。 

8) <仮説集合関数>が指定されるならば,次による。 

a) <仮説集合関数>は,<ウィンドウ関数>,<集合関数指定>又は<問合せ式>を含んではならない。 

b) <仮説集合関数値式リスト>に単純に含まれる<値式>の個数は,<ソート指定リスト>に単純に含ま

れる<ソートキー>の個数と同じでなければならない。 

c) <仮説集合関数値式リスト>に単純に含まれる各<値式> HSFVEに対して,<ソート指定リスト>に

468 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

単純に含まれる対応する<ソートキー>をSKとする。 

場合: 

i) 

HSFVEの宣言型が文字列型ならば,SKの宣言型は,HSFVEの宣言型と同じ文字レパートリ

をもつ文字列型でなければならない。HSFVE及びSKの宣言型の集合をTYPESETとして,

“9.15 照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻されるCOLL

を照合順とする。 

ii) そうでなければ,HSFVE及びSKの宣言型は,互換でなければならない。 

d) 場合: 

i) 

RANK又はDENSE̲RANKが指定されるならば,結果の宣言型は,処理系定義の精度及び位取

り0をもつ真数型とする。 

ii) そうでなければ,結果の宣言型は,処理系定義の精度をもつ概数型とする。 

9) <逆分布関数>が指定されるならば,次による。 

a) <WITHIN GROUP指定>は,単一の<ソート指定>を含まなければならない。 

b) <逆分布関数>は,<ウィンドウ関数>,<集合関数指定>又は<問合せ式>を含んではならない。 

c) <ソート指定>に単純に含まれる<値式>の宣言型をDTとする。 

d) DTは,数型又は時間隔型でなければならない。 

e) 結果の宣言型は,次による。 

場合: 

i) 

DTが数型ならば,処理系定義の精度をもつ概数型とする。 

ii) DTが時間隔型ならば,DTとする。 

10) <配列集約関数> AAGが指定されるならば,次による。 

a) AAGに直に含まれる<値式>の宣言型をVETとする。 

b) AAGの宣言型は,要素型VET,及び配列型に対する処理系定義の最大基数IDMCと等しい最大

基数をもつ配列型とする。 

アクセス規則 

なし。 

一般規則 

1) <集約関数>の引数の入力 (argument source) は,次による。 

場合: 

a) AFが<集合関数指定> SFSに直に含まれるならば,SFSの集約問合せのグループ表のグループと

する。 

b) そうでなければ,“7.11 <WINDOW句>”で定義するとおりに,AFを単純に含む<ウィンドウ関数

>によって識別されるウィンドウ構造記述子によって定義される現在行のウィンドウ枠中の行の

集まりとする。 

2) AFの引数の入力をTとする。 

3) AFの結果の計算中に,中間結果が,その中間結果を含む格納場所の宣言型で表現可能でないなら

ば,次による。 

場合: 

a) AFの結果の最特定型が時間隔型ならば,例外条件:データ例外 (data exception) − 時間隔値範囲

外 (interval value out of range) が引き起こされる。 

469 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) 

14 AFの結果の最特定型がマルチ集合型ならば,例外条件:データ例外 − マルチ集合値あふれ 

(multiset value overflow) が引き起こされる。 

c) AFの結果の最特定型が配列型ならば,例外条件:データ例外 − 配列データ,右切捨て (array 

data, right truncation) が引き起こされる。 

d) そうでなければ,例外条件:データ例外 − 数値範囲外 (numeric value out of range) が引き起こさ

れる。 

4) 場合: 

a) <FILTER句>が指定されるならば,Tの各行に対して<探索条件>が実効的に評価される。<探索条

件>の結果が真 (True) であるTの行の集まりをT1とする。 

b) そうでなければ,TをT1とする。 

5) COUNT(*) が指定されるならば,結果は,T1の基数とする。 

6) <一般集合関数>が指定されるならば,次による。 

a) T1の各行に<値式>を適用し,ナル値を取り除いた結果の単一列の表をTXとする。一つ以上のナ

ル値が取り除かれるならば,終了条件:警告 (warning) − 集合関数中でナル値がなくなった (null 

value eliminated in set function) が引き起こされる。 

b) 場合: 

i) 

DISTINCTが指定されるならば,冗長な重複値を識別するために,“8.2 <比較述語>”で規定す

る比較規則を用いて,TXから冗長な重複値を取り除いた結果をTXAとする。 

ii) そうでなければ,TXをTXAとする。 

c) TXAの基数をNとする。 

d) 場合: 

i) 

COUNTが指定されるならば,結果は,Nとする。 

ii) TXAが空ならば,結果は,ナル値とする。 

iii) AVGが指定されるならば,結果は,TXA中の値の平均とする。 

iv) MAX又はMINが指定されるならば,結果は,それぞれ,TXA中の最大値又は最小値とする。

これらの結果は,“8.2 <比較述語>”で規定する比較規則を用いて決定される。DTが利用者定義

型で,かつ,TXA中の二つの値の比較の結果が不定 (Unknown) になるならば,TXAの最大値

又は最小値は,処理系依存とする。 

v) SUMが指定されるならば,結果は,TXA中の値の合計とする。合計が結果の宣言型の範囲内に

ないならば,例外条件:データ例外 − 数値範囲外 が引き起こされる。 

vi) EVERYが指定されるならば,次による。 

場合: 

1) TXAのいずれかの要素の値が偽 (False) ならば,結果は,偽とする。 

2) そうでなければ,結果は,真 (True) とする。 

vii) ANY又はSOMEが指定されるならば,次による。 

場合: 

1) TXAのいずれかの要素の値が真 ならば,結果は,真 とする。 

2) そうでなければ,結果は,偽 とする。 

viii) VAR̲POP又はVAR̲SAMPが指定されるならば,TXAの列の値の合計をS1とし,TXAの列の

値の2乗の合計をS2とする。 

470 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) VAR̲POPが指定されるならば,結果は,(S2-S1*S1/N)/Nとする。 

2) VAR̲SAMPが指定されるならば,次による。 

場合: 

A) Nが1ならば,結果は,ナル値とする。 

B) そうでなければ,結果は,(S2-S1*S1/N)/(N-1) とする。 

ix) FUSIONが指定されるならば,結果は,次のようなマルチ集合Mとする。ナル値を含むDTの

要素型中の各値Vに対して,Vと同一であるMの要素の個数が,TXAの各行の列の値である

マルチ集合中のVの同一の写しの個数の合計である。 

x) INTERSECTIONが指定されるならば,結果は,次のような,あるマルチ集合Mとする。ナル

値を含むDTの要素型中の各値Vに対して,M中のVの重複の個数が,TXAの各行の列の値で

あるマルチ集合中のVの重複の個数の最小値である。 

注記322 正確な重複値を規定していないので,この規則は,“結果は,マルチ集合”ではなく,

“結果は,あるマルチ集合”としている。したがって,この計算は,幾つかの要素

型,すなわち,文字列,時刻帯付き日時及び利用者定義型を基にする要素型に対し

て,非決定的である。 

注記323 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義して

いる。 

7) <2項集合関数種別>が指定されるならば,次による。 

a) T1の各行に<従属変数式>及び<独立変数式>を適用し,<従属変数式>又は<独立変数式>のいずれ

かがナル値である各行を取り除いた結果の2列の表をTXAとする。一つ以上のナル値が取り除か

れるならば,終了条件:警告 − 集合関数中でナル値がなくなった が引き起こされる。 

b) TXAの基数をNとし,<独立変数式>の値の列の合計をSUMXとし,<従属変数式>の値の列の合

計をSUMYとし,<独立変数式>の列中の値の2乗の合計をSUMX2とし,<従属変数式>の列中の

値の2乗の合計をSUMY2とし,<独立変数式>の列中の値と<従属変数式>の列中の値との同じ行

での積の合計をSUMXYとする。 

c) 場合: 

i) 

REGR̲COUNTが指定されるならば,結果は,Nとする。 

ii) Nが0ならば,結果は,ナル値とする。 

iii) REGR̲SXXが指定されるならば,結果は,(SUMX2-SUMX*SUMX/N) とする。 

iv) REGR̲SYYが指定されるならば,結果は,(SUMY2-SUMY*SUMY/N) とする。 

v) REGR̲SXYが指定されるならば,結果は,(SUMXY-SUMX*SUMY/N) とする。 

vi) REGR̲AVGXが指定されるならば,結果は,SUMX/Nとする。 

vii) REGR̲AVGYが指定されるならば,結果は,SUMY/Nとする。 

viii) COVAR̲POPが指定されるならば,結果は,(SUMXY-SUMX*SUMY/N)/Nとする。 

ix) COVAR̲SAMPが指定されるならば,次による。 

場合: 

1) Nが1ならば,結果は,ナル値とする。 

2) そうでなければ,結果は,(SUMXY-SUMX*SUMY/N)/(N-1) とする。 

x) CORRが指定されるならば,次による。 

場合: 

471 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) N*SUMX2がSUMX*SUMXと等しいならば,結果は,ナル値とする。 

注記324 この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

<独立変数式>が<従属変数式>と相関関係にない。 

2) N*SUMY2がSUMY*SUMYと等しいならば,結果は,ナル値とする。 

注記325 この場合には,<従属変数式>の残っている全ての値が等しく,その結果として,

<従属変数式>が<独立変数式>と相関関係にない。 

3) そうでなければ,結果は,SQRT(POWER(N*SUMXY-SUMX*SUMY,2) / ((N*SUMX2-

SUMX*SUMX)*(N*SUMY2-SUMY*SUMY))) とする。演算の概算結果の指数が結果の宣言型

に対する処理系定義の指数の範囲内にないならば,結果は,ナル値とする。 

xi) REGR̲R2が指定されるならば,次による。 

場合: 

1) N*SUMX2がSUMX*SUMXと等しいならば,結果は,ナル値とする。 

注記326 この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

最小2乗線が垂直になるか,又はN=1ならば,一意に決定される最小2乗線が存

在しない。 

2) N*SUMY2がSUMY*SUMYと等しいならば,結果は,1とする。 

注記327 この場合には,<従属変数式>の残っている全ての値が等しく,その結果として,

最小2乗線が水平になる。 

3) そうでなければ,結果は,POWER(N*SUMXY-SUMX*SUMY,2) / ((N*SUMX2-SUMX*SUMX) 

* (N*SUMY2-SUMY*SUMY)) とする。演算の概算結果の指数が結果の宣言型に対する処理

系定義の指数の範囲内にないならば,結果は,ナル値とする。 

xii) REGR̲SLOPE(Y, X) が指定されるならば,次による。 

場合: 

1) N*SUMX2がSUMX*SUMXと等しいならば,結果は,ナル値とする。 

注記328 この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

最小2乗線が垂直になるか,又はN=1ならば,一意に決定される最小2乗線が存

在しない。 

2) そうでなければ,結果は,(N*SUMXY-SUMX*SUMY) / (N*SUMX2-SUMX*SUMX) とする。

演算の概算結果の指数が結果の宣言型に対する処理系定義の指数の範囲内にないならば,結

果は,ナル値とする。 

xiii) REGR̲INTERCEPTが指定されるならば,次による。 

場合: 

1) N*SUMX2がSUMX*SUMXと等しいならば,結果は,ナル値とする。 

注記329 この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

最小2乗線が垂直になるか,又はN=1ならば,一意に決定される最小2乗線が存

在しない。 

2) そうでなければ,結果は,(SUMY*SUMX2-SUMX*SUMXY) / (N*SUMX2-SUMX*SUMX) とす

る。演算の概算結果の指数が結果の宣言型に対する処理系定義の指数の範囲内にないならば,

結果は,ナル値とする。 

8) <仮説集合関数>が指定されるならば,次による。 

472 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) <順位関数種別>をWIFTとする。 

b) T1の処理系依存の名前をTNAMEとする。 

c) <仮説集合関数値式リスト>に単純に含まれる<値式>の個数をKとする。 

d) <仮説集合関数値式リスト>に単純に含まれる<値式>をVE1,...,VEKとする。 

e) 互いに異なる処理系依存の列名を,WIFTVAL,MARKER及びCN1,...,CNKとする。 

f) 

<ソート指定リスト>に単純に含まれる<ソート指定>をSP1,...,SPKとする。各iに対して,<ソ

ートキー>をCNiに置き換えることによってSPiから得られる<ソート指定>をWSPiとする。 

g) 結果は,次の<スカラ副問合せ>の結果とする。 

( SELECT WIFTVAL 

  FROM ( SELECT MARKER, WIFT() OVER 

            ( ORDER BY WSP1, ..., WSPK ) 

        FROM ( SELECT 0, SK1, ..., SKK 

                FROM TNAME 

                  UNION ALL 

                    VALUES (1, VE1, ..., VEK) ) 

                  AS TXNAME (MARKER, CN1, ..., CNK ) 

        ) AS TEMPTABLE (MARKER, WIFTVAL) 

  WHERE MARKER = 1 ) 

9) <逆分布関数>が指定されるならば,次による。 

a) <逆分布関数引数>の値をNVEとする。 

b) NVEがナル値ならば,結果は,ナル値とする。 

c) NVEが0未満か又は1を超えるならば,例外条件:データ例外 − 数値範囲外 が引き起こされ

る。 

d) T1の各行に<ソート指定>に単純に含まれる<値式>を適用し,ナル値を取り除いた結果の単一列

の表をTXAとする。一つ以上のナル値が取り除かれるならば,終了条件:警告 − 集合関数中で

ナル値がなくなった が引き起こされる。TXAは,“10.10 <ソート指定リスト>”の一般規則で規

定するとおりに,<ソート指定>によって順序付けられる。 

e) TXAの処理系依存の名前をTXANAMEとする。 

f) TXAの列の処理系依存の列名をTXCOLNAMEとする。 

g) <ソートキー>をTXCOLNAMEに置き換えることによって<ソート指定>から得られるものをWSP

とする。 

h) 場合: 

i) 

PERCENTILE̲CONTが指定されるならば,次による。 

1) NVE*(N-1) の値以下で,位取り0をもつ最大の真数値をROW0とする。ROW0を表現する

<定数>をROWLIT0とする。 

2) NVE*(N-1) の値以上で,位取り0をもつ最小の真数値をROW1とする。ROW1を表現する

<定数>をROWLIT1とする。 

3) NVE*(N-1)−ROW0を表現する<概数定数>をFACTORとする。 

4) 結果は,次の<スカラ副問合せ>の結果とする。 

( WITH TEMPTABLE(X, Y) AS 

473 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

     ( SELECT ROW̲NUMBER() 

                  OVER (ORDER BY WSP)−1, 

                TXCOLNAME 

        FROM TXANAME ) 

SELECT CAST ( T0.Y + FACTOR * (T1.Y−T0.Y) AS DT ) 

FROM TEMPTABLE T0, TEMPTABLE T1 

WHERE T0.ROWNUMBER = ROWLIT0 

  AND T1.ROWNUMBER = ROWLIT1 ) 

注記330 ROW̲NUMBERは,非決定的であるが,T0.Y及びT1.Yの値は,この式によって

決定される。TXAの列だけがWSPによって完全に順序付けられることに注意す

る。NVE*(N‒1) が整数ならば,T0及びT1から選択される行は,同じであり,結

果は,まさにT0.Yである。そうでなければ,順序付けられた集合中の行番号を全

体の中での割合とみなして,PERCENTILE̲CONT演算子の引数を結合し,副問合

せが,それらの行番号をもつ連続した二つの値の間で線形内挿を行う。 

ii) PERCENTILE̲DISCが指定されるならば,次による。 

1) WSPに単純に含まれる<順序付け指定>がDESCならば,MAXをMAXORMINとする。そう

でなければ,MINをMAXORMINとする。 

2) NVEの値を表現する<定数>をNVELITとする。 

3) 結果は,次の<スカラ副問合せ>の結果とする。 

( SELECT MAXORMIN (TXCOLNAME) 

   FROM ( SELECT TXCOLNAME, 

                   CUME̲DIST() OVER (ORDER BY WSP) 

   FROM TXANAME ) AS TEMPTABLE (TXCOLNAME, CUMEDIST) 

   WHERE CUMEDIST >= NVELIT ) 

10) <配列集約関数>が指定されるならば,次による。 

a) <ソート指定リスト>が指定されるならば,<ソートキー>の個数をKとする。そうでなければ,0

をKとする。 

b) 1番目の列を得るために,<配列集約関数>に直に含まれる<値式>をT1の各行に適用し,全ての

i,1 ≤ i ≤ Kに対して,(i +1) 番目の列を得るために,i番目の<ソートキー>に単純に含まれる<値

式>をT1の各行に適用することによって得られるK +1 個の列から成る表をTXAとする。 

c) TXAの2番目から (K +1) 番目までの列から得られる<ソートキー>の値に従って,TXAを順序付

ける。Kが0ならば,TXAの順序付けは,処理系依存とする。 

d) TXA中の行の個数をNとする。 

e) NがIDMCを超えるならば,例外条件:データ例外 − 配列データ,右切捨て が引き起こされ

る。 

f) TXAの順序付けに従って,TXAの行をRi,1 ≤ i ≤ Nとする。 

g) 場合: 

i) 

TXAが空ならば,<配列集約関数>の結果は,ナル値とする。 

ii) そうでなければ,<配列集約関数>の結果は,全てのi,1 ≤ i ≤ Nに対して,i番目の要素の値が

Riの1番目の列の値であるようなN個の要素から成る配列とする。 

474 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記331 <配列集約関数>を計算するときには,ナル値は,取り除かれない。このこと,及び

それに加えて省略可能な<ソート指定リスト>が,<配列集約関数>を<一般集合関数>

と区別する。 

適合性規則 

1) 機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,EVERY,ANY又はSOMEを

直に含む<計算操作>を含んではならない。 

2) 機能F561“完全な値式”又は機能F801“完全な集合関数”なしでは,適合するSQL言語は,DISTINCT

を直に含み,かつ,列参照ではない<値式>を含む<一般集合関数>を含んではならない。 

3) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,COUNTを直に含む<計算操作>を

含み,かつ,DISTINCTを直に含む<集合限定子>を含まない<一般集合関数>を含んではならない。 

4) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,DISTINCTを直に含む<集合限定

子>を含まないで,かつ,Tの列を参照しない列参照を含む<値式>を含む<一般集合関数>を含んで

はならない。 

5) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,Tの列を参照する列参照を含む<

従属変数式>も<独立変数式>も含まない<2項集合関数>を含んではならない。 

6) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<一般集合関数>に単純に含まれ,

かつ,外への参照である列参照を含む<値式>で,列参照ではない<値式>を含んではならない。 

7) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<従属変数式>又は<独立変数式>

に単純に含まれ,かつ,外への参照である列参照を含む<数値式>で,列参照ではない<数値式>を含

んではならない。 

8) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<集約関数> SFS2を一般に含む<

値式>から導出される列への参照を含み,かつ,<集約関数> SFS1に含まれる列参照を含んではなら

ない。 

9) 機能T621“拡張数関数”なしでは,適合するSQL言語は,STDDEV̲POP,STDDEV̲SAMP,VAR̲POP

又はVAR̲SAMPを直に含む<計算操作>を含んではならない。 

10) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<2項集合関数種別>を含んではならな

い。 

11) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<仮説集合関数>又は<逆分布関数>

を含んではならない。 

12) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<FILTER句>を含んではならない。 

13) 機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,COLLECTを直に含む<計算操

作>を含んではならない。 

14) 機能S275“高度マルチ集合提供”なしでは,適合するSQL言語は,FUSION又はINTERSECTION

を直に含む<計算操作>を含んではならない。 

注記332 INTERSECTIONが指定されるならば,“9.13 マルチ集合要素グループ化操作”の適合性

規則も適用する。 

15) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である<値式>を単純に含む<仮説集合関数値式リスト>を含んでは

ならない。 

16) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を含

475 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

み,そのうちの一つが外への参照である<値式>を単純に含む<逆分布関数引数>を含む<逆分布関数

>を含んではならない。 

17) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である<値式>を単純に含む<一般集合関数>を含む<集約関数>を含

んではならない。 

18) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である<従属変数式>又は<独立変数式>を単純に含む<2項集合関

数>を含む<集約関数>を含んではならない。 

19) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である<値式>を単純に含む<WITHIN GROUP指定>を含んではな

らない。 

20) 機能S098“ARRAY̲AGG”なしでは,適合するSQL言語は,<配列集約関数>を含んではならない。 

10.10 

<ソート指定リスト> 

機能 

<ソート指定リスト> (<sort specification list>) は,ソート順序を指定する。 

形式 

<ソート指定リスト> ::= 

  <ソート指定> [ { <コンマ> <ソート指定> }... ] 

<ソート指定> ::= 

  <ソートキー> [ <順序付け指定> ] [ <ナル順序付け> ] 

<ソートキー> ::= 

  <値式> 

<順序付け指定> ::= 

  ASC 

| DESC 

<ナル順序付け> ::= 

  NULLS FIRST 

| NULLS LAST 

構文規則 

1) <ソート指定>に含まれる<ソートキー>に単純に含まれる<値式>の宣言型をDTとする。 

2) <ソート指定>に含まれる<ソートキー>に単純に含まれる各<値式>は,順序付け操作のオペランドと

する。“9.14 順序付け操作”の構文規則及び適合性規則を適用する。 

3) <ナル順序付け>が指定されないならば,処理系定義の<ナル順序付け>が暗に想定される。<ナル順

序付け>に対する処理系定義の既定値は,<ソート指定リスト>の外側の文脈に依存してはならない。 

アクセス規則 

なし。 

一般規則 

1) <ソート指定リスト>は,次のとおりに,行の順序付けを定義する。 

a) <ソート指定>の個数をNとする。 

b) i番目の<ソート指定>に含まれる<ソートキー>をKi,1 ≤ i ≤ Nとする。 

476 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) 各<ソート指定>は,対応するソートキーKiに対するソート方向 (sort direction) を指定する。i番

目の<ソート指定>中にDESCが指定されないならば,Kiに対するソート方向は,昇順とし,適用

可能な<比較演算子>は,<小なり演算子>とする。そうでなければ,Kiに対するソート方向は,降

順とし,適用可能な<比較演算子>は,<大なり演算子>とする。 

d) 順序付けられる行の集まりのいずれかの行をPとし,行の同じ集まりの別の行をQとする。 

e) P及びQの中のKiの値を,それぞれ,PVi及びQViとする。結果中の行PとQとの相対位置は,

次のとおりにPViとQViとを比較することによって決定される。 

i) 

比較は,次の一般規則に従って実行する。 

場合: 

1) Kiの宣言型が行型ならば,再帰的に適用されるこの細分箇条の一般規則。 

2) そうでなければ,“8.2 <比較述語>”の一般規則。ここで,<比較演算子>は,Kiに対して適用

可能な<比較演算子>とする。 

ii) 比較は,次のとおりにナル値を特別に扱って実行する。 

場合: 

1) PVi及びQViが両方ともナル値ならば,それらは,互いに等しいとみなす。 

2) PViがナル値で,かつ,QViがナル値でないならば,次による。 

場合: 

A) NULLS FIRSTが指定されるか又は暗に想定されるならば,PVi <比較演算子> QViは,真 

(True) とみなす。 

B) NULLS LASTが指定されるか又は暗に想定されるならば,PVi <比較演算子> QViは,偽 

(False) とみなす。 

3) PViがナル値でなく,かつ,QViがナル値ならば,次による。 

場合: 

A) NULLS FIRSTが指定されるか又は暗に想定されるならば,PVi <比較演算子> QViは,偽 

とみなす。 

B) NULLS LASTが指定されるか又は暗に想定されるならば,PVi <比較演算子> QViは,真 と

みなす。 

f) 

適用可能な<比較演算子>に対して,<比較述語>“PVi <比較演算子> QVi”の値が真 ならば,

PViは,QViに先行する (precede) という。 

g) PVi及びQViがナル値でなく,かつ,“PVi <比較演算子> QVi”の結果が不定 (Unknown) なら

ば,PViとQViとの相対的な順序付けは,処理系依存とする。 

h) あるn,1 ≤ n ≤ Nに対して,PVnがQVnに先行し,かつ,全てのi < nに対して,PViがQViと

異ならないならば,行Pの相対位置は,行Qの前とする。 

i) 

<ソート指定>に関して異ならない二つの行は,互いの同位行 (peers) という。同位行の相対的な

順序付けは,処理系依存とする。 

適合性規則 

1) 機能T611“基本OLAP操作”なしでは,適合するSQL言語は,<ナル順序付け>を含んではならな

い。 

注記333 “9.14 順序付け操作”の適合性規則も適用する。 

477 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 スキーマ定義及びスキーマ操作 

11.1 <スキーマ定義> 

この細分箇条は,ISO/IEC 9075-4の“9.1 <スキーマ定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.1 <スキーマ定義>”によって修正される。 

機能 

<スキーマ定義> (<schema definition>) は,スキーマを定義する。 

形式 

<スキーマ定義> ::= 

  CREATE SCHEMA <スキーマ名句> 

      [ <スキーマ文字集合又はパス> ] 

      [ <スキーマ要素>... ] 

<スキーマ文字集合又はパス> ::= 

  <スキーマ文字集合指定> 

| <スキーマパス指定> 

| <スキーマ文字集合指定> <スキーマパス指定> 

| <スキーマパス指定> <スキーマ文字集合指定> 

<スキーマ名句> ::= 

  <スキーマ名> 

| AUTHORIZATION <スキーマ認可識別子> 

| <スキーマ名> AUTHORIZATION <スキーマ認可識別子> 

<スキーマ認可識別子> ::= 

  <認可識別子> 

<スキーマ文字集合指定> ::= 

  DEFAULT CHARACTER SET <文字集合指定> 

<スキーマパス指定> ::= 

  <パス指定> 

04 09 <スキーマ要素> ::= 

  <表定義> 

| <ビュー定義> 

| <定義域定義> 

| <文字集合定義> 

| <照合順定義> 

| <文字変換定義> 

| <表明定義> 

| <トリガ定義> 

| <利用者定義型定義> 

| <利用者定義型変換定義> 

| <利用者定義順序付け定義> 

| <変換定義> 

| <スキーマルーチン> 

478 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <順序数生成子定義> 

| <GRANT 文> 

| <役割定義> 

構文規則 

1) <スキーマ名>が指定されないならば,<スキーマ認可識別子>と等しい<スキーマ名>が暗に想定され

る。 

2) AUTHORIZATION <スキーマ認可識別子>が指定されないならば,次による。 

場合: 

a) 指定された<モジュール認可識別子>をもつSQLクライアントモジュールに<スキーマ定義>が含

まれるならば,<スキーマ定義>に対して,その<モジュール認可識別子>と等しい<認可識別子>が

暗に想定される。 

b) そうでなければ,SQLセション利用者識別子と等しい<認可識別子>が暗に想定される。 

3) 陽に指定されるか又は暗に想定される<スキーマ名>の<修飾なしスキーマ名>は,<スキーマ名>の<

カタログ名>によって識別されるカタログ中の他のどのスキーマの<スキーマ名>の<修飾なしスキ

ーマ名>とも等価であってはならない。 

4) <SQLクライアントモジュール定義>中の<外部呼出し手続>に<スキーマ定義>が含まれるならば,<

スキーマ定義>の処理中の実効的な<スキーマ認可識別子>及び<スキーマ名>は,それぞれ,<スキー

マ定義>中で指定されるか又は暗に想定される<スキーマ認可識別子>及び<スキーマ名>とする。 

注記334 SQLクライアントモジュール中の<外部呼出し手続>中で実行される他のSQL文は,SQL

クライアントモジュールに対して指定されるか又は暗に想定される<モジュール認可識

別子>及び<スキーマ名>をもつ。 

5) <スキーマ文字集合指定>が指定されないならば,<SQL言語文字>中の少なくとも全ての文字を含む

処理系定義の文字集合を指定する<スキーマ文字集合指定>が暗に想定される。 

6) <スキーマパス指定>が指定されないならば,<スキーマ名句>に含まれる<スキーマ名>を含む処理系

定義の<スキーマ名リスト>を含む<スキーマパス指定>が暗に想定される。 

7) <スキーマパス指定>の<スキーマ名リスト>に含まれる各<スキーマ名>の陽に指定されるか又は暗

に想定される<カタログ名>は,<スキーマ名句>に含まれる<スキーマ名>の<カタログ名>と等価で

なければならない。 

8) 陽に指定されるか又は暗に想定される<スキーマパス指定>の<スキーマ名リスト>は,スキーマの

SQLパスとして用いる。SQLパスは,<スキーマ定義>に含まれる<ルーチン呼出し>に直に含まれる

修飾なし<ルーチン名>を実効的に修飾するために用いる。 

注記335 <ルーチン名>は,“5.4 名前及び識別子”で定義している。 

アクセス規則 

1) <スキーマ定義>を実行するために必要な権限は,処理系定義とする。 

一般規則 

1) <スキーマ定義>は,カタログ中にSQLスキーマSを作成する。Sは,次の項目を含む。 

a) 陽に指定されるか又は暗に想定される<スキーマ名>と等価なスキーマ名。 

b) 陽に指定されるか又は暗に想定される<認可識別子>と等価なスキーマ認可識別子。 

c) 陽に指定されるか又は暗に想定される<スキーマ文字集合指定>と等価なスキーマ文字集合名。 

d) 陽に指定されるか又は暗に想定される<スキーマパス指定>と等価なスキーマSQLパス。 

479 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) <スキーマ定義>の全ての<スキーマ要素>によって作成される記述子。 

2) Sの所有者は,スキーマ認可識別子とする。 

3) 陽に指定されるか又は暗に想定される<文字集合指定>は,文字集合を陽に指定しない全ての<列定

義>及び<定義域定義>に対して用いられる既定文字集合として用いる。 

適合性規則 

1) 機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<スキーマパス

指定>を含んではならない。 

2) 機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<スキーマ文字集合指定>を含ん

ではならない。 

3) 機能F171“利用者ごとの複数スキーマ”なしでは,適合するSQL言語は,<スキーマ名>を含む<ス

キーマ名句>を含んではならない。 

4) 機能T332“拡張役割”なしでは,適合するSQL言語中で,<スキーマ認可識別子>は,<役割名>で

あってはならない。 

11.2 <スキーマ削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.2 <スキーマ削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.2 <スキーマ削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.1 <スキーマ削除文>”によって修正される。 

機能 

<スキーマ削除文> (<drop schema statement>) は,スキーマを破壊する。 

形式 

<スキーマ削除文> ::= 

  DROP SCHEMA <スキーマ名> <削除動作> 

<削除動作> ::= 

  CASCADE 

| RESTRICT 

構文規則 

1) <スキーマ名> SNによって識別されるスキーマをSとする。 

2) SNは,陽に指定されるか又は暗に想定される<カタログ名>によって識別されるカタログ中のスキ

ーマを識別しなければならない。 

3) SNは,どのカタログ中でも,“INFORMATION̲SCHEMA”と名付けられたスキーマを識別してはな

らない。 

4) 

09 13 RESTRICTが指定されるならば,Sは,どの永続実表,大域一時表,作成局所一時表,ビュー,

定義域,表明,文字集合,照合順,文字変換,トリガ,利用者定義型,SQL呼出しルーチン,順序

数生成子又は役割も含んではならないし,Sの<スキーマ名>は,どのルーチン記述子のSQLルーチ

ン本体にも含まれてはならない。 

注記336 CASCADEが指定されるならば,このようなオブジェクトは,この細分箇条の一般規則

で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE文>の実行に

よって暗に削除される。 

アクセス規則 

1) 与えられた認可識別子は,SNによって識別されるスキーマを所有する<認可識別子>を含まなけれ

480 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ばならない。 

一般規則 

1) 

09 13 Sに含まれる実表又は一時表の記述子に含まれる<表名>をTとする。次の<表削除文>が実効的

に実行される。 

DROP TABLE T CASCADE 

2) Sに含まれるビューの記述子に含まれる<表名>をVとする。次の<ビュー削除文>が実効的に実行さ

れる。 

DROP VIEW V CASCADE 

3) Sに含まれる定義域の記述子に含まれる<定義域名>をDとする。次の<定義域削除文>が実効的に実

行される。 

DROP DOMAIN D CASCADE 

4) Sに含まれる表明の記述子に含まれる<制約名>をAとする。次の<表明削除文>が実効的に実行され

る。 

DROP ASSERTION A CASCADE 

5) Sに含まれる照合順の記述子に含まれる<照合順名>をCDとする。次の<照合順削除文>が実効的に

実行される。 

DROP COLLATION CD CASCADE 

6) Sに含まれる文字変換の記述子に含まれる<文字変換名>をTDとする。次の<文字変換削除文>が実

効的に実行される。 

DROP TRANSLATION TD 

7) Sに含まれる文字集合の記述子に含まれる<文字集合名>をRDとする。次の<文字集合削除文>が実

効的に実行される。 

DROP CHARACTER SET RD 

8) 

04 Sに含まれる利用者定義型の記述子に含まれる<利用者定義型名>をDTとする。次の<データ型削

除文>が実効的に実行される。 

DROP TYPE DT CASCADE 

9) Sに含まれるトリガの記述子に含まれる<トリガ名>をTTとする。次の<トリガ削除文>が実効的に

実行される。 

DROP TRIGGER TT 

10) Sに含まれる記述子をもつどのSQL呼出しルーチンRに対しても,Rの<特定名>をSNとする。次

の<ルーチン削除文>がどのRに対しても実効的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

11) 04 Sの<スキーマ名>を含む<SQLルーチン本体>を含むルーチン記述子をもつSQL呼出しルーチン

をRとする。Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削

除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

12) 13 Sに含まれる順序数生成子の記述子に含まれる順序数生成子名をSEQNとする。次の<順序数生

成子削除文>が実効的に実行される。 

DROP SEQUENCE SEQN CASCADE 

13) Sが破壊される。 

481 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>

を含んではならない。 

2) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<スキーマ削除文>を含んではな

らない。 

11.3 <表定義> 

この細分箇条は,ISO/IEC 9075-4の“9.3 <表定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.3 <表定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.2 <表定義>”によって修正される。 

機能 

<表定義> (<table definition>) は,永続実表,作成局所一時表,又は大域一時表を定義する。 

形式 

<表定義> ::= 

  CREATE [ <表有効範囲> ] TABLE <表名> <表内容元> 

      [ WITH <SYSTEM VERSIONING句> ] 

      [ ON COMMIT <表コミット動作> ROWS ] 

<表内容元> ::= 

  <表要素リスト> 

| <型付き表句> 

| <AS副問合せ句> 

<表有効範囲> ::= 

  <GLOBAL又はLOCAL> TEMPORARY 

<GLOBAL又はLOCAL> ::= 

  GLOBAL 

| LOCAL 

<SYSTEM VERSIONING句> ::= 

  SYSTEM VERSIONING 

<表コミット動作> ::= 

  PRESERVE 

| DELETE 

<表要素リスト> ::= 

  <左括弧> <表要素> [ { <コンマ> <表要素> }... ] <右括弧> 

<表要素> ::= 

  <列定義> 

| <表期間定義> 

| <表制約定義> 

| <LIKE句> 

<型付き表句> ::= 

  OF <パス解決利用者定義型名> [ <下位表句> ] 

      [ <型付き表要素リスト> ] 

482 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<型付き表要素リスト> ::= 

  <左括弧> <型付き表要素> 

      [ { <コンマ> <型付き表要素> }... ] <右括弧> 

<型付き表要素> ::= 

  <列OPTIONS> 

| <表制約定義> 

| <自己参照列指定> 

<自己参照列指定> ::= 

  REF IS <自己参照列名> [ <参照生成> ] 

<参照生成> ::= 

  SYSTEM GENERATED 

| USER GENERATED 

| DERIVED 

<自己参照列名> ::= 

  <列名> 

<列OPTIONS> ::= 

  <列名> WITH OPTIONS <列選択肢リスト> 

09 <列選択肢リスト> ::= 

  [ <SCOPE句> ] [ <DEFAULT句> ] [ <列制約定義>... ] 

<下位表句> ::= 

  UNDER <上位表句> 

<上位表句> ::= 

  <上位表名> 

<上位表名> ::= 

  <表名> 

<LIKE句> ::= 

  LIKE <表名> [ <LIKE選択肢の並び> ] 

<LIKE選択肢の並び> ::= 

  <LIKE選択肢>... 

<LIKE選択肢> ::= 

  <IDENTITY選択肢> 

| <列既定値選択肢> 

| <生成選択肢> 

<IDENTITY選択肢> ::= 

  INCLUDING IDENTITY 

| EXCLUDING IDENTITY 

<列既定値選択肢> ::= 

  INCLUDING DEFAULTS 

| EXCLUDING DEFAULTS 

<生成選択肢> ::= 

483 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  INCLUDING GENERATED 

| EXCLUDING GENERATED 

<AS副問合せ句> ::= 

  [ <左括弧> <列名リスト> <右括弧> ] AS <表副問合せ> 

      <WITH DATA又はWITH NO DATA> 

<WITH DATA又はWITH NO DATA> ::= 

  WITH NO DATA 

| WITH DATA 

<表期間定義> ::= 

  <システム又は適用業務時刻期間指定> 

      <左括弧> <期間開始列名> <コンマ> <期間終了列名> <右括弧> 

<システム又は適用業務時刻期間指定> ::= 

  <システム時刻期間指定> 

| <適用業務時刻期間指定> 

<システム時刻期間指定> ::= 

  PERIOD FOR SYSTEM̲TIME 

<適用業務時刻期間指定> ::= 

  PERIOD FOR <適用業務時刻期間名> 

<適用業務時刻期間名> ::= 

  <識別子> 

<期間開始列名> ::= 

  <列名> 

<期間終了列名> ::= 

  <列名> 

構文規則 

1) 高々一つの<表要素>が,<システム時刻期間指定>を含む<表期間定義>でなければならない。高々一

つの<表要素>が,<適用業務時刻期間指定>を含む<表期間定義>でなければならない。 

2) <表期間定義> TPDが指定されるならば,次による。 

a) <表有効範囲>を指定してはならない。 

b) <表内容元>は,<表要素リスト>を指定しなければならない。 

c) TPDが<システム時刻期間指定>を含むならば,SYSTEM̲TIMEをPNとする。そうでなければ,

TPDに含まれる<適用業務時刻期間名>をPNとする。 

d) <列定義>中のどの<列名>も,PNと等価であってはならない。 

e) <表要素リスト>は,次の全てが真となるような二つの<列定義> CD1及びCD2を含まなければな

らない。 

i) 

CD1に含まれる<列名> CN1が,TPDに含まれる<期間開始列名>と等価である。CN1によって

識別される列は,PN期間開始列とする。 

ii) CD2に含まれる<列名> CN2が,TPDに含まれる<期間終了列名>と等価である。CN2によって

識別される列は,PN期間終了列とする。 

iii) CD1に含まれる<データ型又は定義域名>がDATE型又は時刻印型のいずれかで,かつ,CD2に

484 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含まれる<データ型又は定義域名>と等価である。 

iv) 陽に指定されるか又は暗に想定され,NOT NULL NOT DEFERRABLE ENFORCEDを指定する<

列制約定義>を,CD1及びCD2の両方が含む。 

v) 場合: 

1) TPDが<システム時刻期間指定>を含むならば,CD1は,<システム時刻期間開始列指定>を含

まなければならず,CD2は,<システム時刻期間終了列指定>を含まなければならない。 

2) そうでなければ,次による。 

A) CD1も,CD2も,<識別列指定>,<生成句>,<システム時刻期間開始列指定>又は<システ

ム時刻期間終了列指定>を含んではならない。 

B) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマを

Sとする。Sに含まれるどの表制約記述子の<制約名>とも等価でない処理系依存の<制約名

>をIDCNとする。次の<表制約定義>が暗に想定される。 

CONSTRAINT IDCN CHECK ( CN1 < CN2 )  

3) WITH <SYSTEM VERSIONING句>が指定されるならば,次による。 

a) SYSTEM̲TIMEを指定する<表期間定義> STTを指定しなければならない。 

4) 

04 <表内容元>は,<ホストパラメタ指定>,<SQLパラメタ参照>,<動的パラメタ指定>又は<埋込み

変数指定>を含んではならない。 

5) <表定義> TDによって定義される表をTとする。TDに単純に含まれる<表名>をTNとする。 

6) <表定義>が<スキーマ定義> SDに含まれ,かつ,TNが<局所又はスキーマ修飾子>を含むならば,

その<局所又はスキーマ修飾子>は,SDの暗に想定されるか又は陽に指定される<スキーマ名>と等

価でなければならない。 

7) TNは,存在する表記述子を識別してはならない。 

8) <表定義>が<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか又は暗に想定さ

れる<認可識別子>をAとする。そうでなければ,TNの暗に想定されるか又は陽に指定される<スキ

ーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。 

9) <表要素リスト> TELが指定されるならば,次による。 

a) TELは,少なくとも一つの<列定義>又は<LIKE句>を含まなければならない。 

b) TELに直接含まれる各<LIKE句> LCに対して,次による。 

i) 

LCに含まれる<表名>によって識別される表をLTとする。LTは,システムバージョン表であ

ってはならない。 

ii) LTがビュー表ならば,<LIKE選択肢の並び>を指定してはならない。 

iii) LTの次数をDとする。i,1 ≤ i ≤ Dに対して,次による。 

1) LTのi番目の列の列記述子をLCDiとする。 

2) LCDiに含まれる列名をLCNiとする。 

3) LCDiに含まれるデータ型をLDTiとする。 

4) LCDiに含まれるナル可能性特性がナル可能でないことが分かるならば,NOT NULLをLNCi

とする。そうでなければ,長さ0の文字列をLNCiとする。 

5) 次の<列定義>をCDiとする。 

LCNi LDTi LNCi 

iv) <LIKE選択肢の並び>が指定されるならば,次による。 

485 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <IDENTITY選択肢>を2回以上指定してはならず,<列既定値選択肢>を2回以上指定しては

ならず,<生成選択肢>を2回以上指定してはならない。 

2) <IDENTITY選択肢>が指定されないならば,EXCLUDING IDENTITYが暗に想定される。 

3) <列既定値選択肢>が指定されないならば,EXCLUDING DEFAULTSが暗に想定される。 

4) <生成選択肢>が指定されないならば,EXCLUDING GENERATEDが暗に想定される。 

5) INCLUDING IDENTITYが指定され,かつ,LTが識別列を含むならば,LTの表記述子に含ま

れるその列の列記述子をICDとする。ICDに含まれる順序数生成子記述子をSGDとする。 

A) SGDに含まれる開始値をSVとする。 

B) SGDに含まれる増分をIVとする。 

C) SGDに含まれる最大値をMAXとする。 

D) SGDに含まれる最小値をMINとする。 

E) SGDに含まれる周期選択肢をCYCとする。 

F) ICDによって記述される列が,LTによって識別される表中に現れる順序位置をkとする。 

G) 場合: 

I) 

値が常時生成されることをICDが示すならば,GENERATED ALWAYSをGとする。 

II) 値が既定生成されることをICDが示すならば,GENERATED BY DEFAULTをGとする。 

H) CDkの値が次の文字列によって置き換えられる。 

LCNk LDTk 

  G AS IDENTITY ( START WITH SV, INCREMENT BY IV, 

                     MAXVALUE MAX, MINVALUE MIN, CYC ) LNCk 

6) INCLUDING GENERATEDが指定されるならば,LTの記述子に含まれる列記述子をGCDj,

1 ≤ j ≤ Dとする。ここで,jは,GCDjによって記述される列の順序位置とする。記述する列

が生成列であることを示す各GCDjに対して,次による。 

A) GCDjに含まれる<生成式>をGEjとする。ここで,含まれるどの<列参照>に含まれる<表名

>も,TNによって置き換えられる。 

B) CDjの値は,次の文字列によって置き換えられる。 

LCNj LDTj GENERATED ALWAYS AS GEj LNCj 

7) INCLUDING DEFAULTSが指定されるならば,LTの記述子に含まれる列記述子を,DCDm,

1 ≤ m ≤ Dとする。ここで,mは,DCDmによって記述される列の順序位置とする。 

各DCDmに対して,DCDmが<既定値選択肢> DOmを含むならば,CDmの値は,次の文

字列によって置き換えられる。 

LCNm LDTm DEFAULT DOm LNCm 

v) LCは,次の文字列によって実効的に置き換えられる。 

CD1, ..., CDD 

注記337 NOT NULLを除く<列制約>は,CDiに含まれない。<列制約定義>は,<表制約定義

>に実効的に変換され,その結果除外される。 

10) <AS副問合せ句>が指定されるならば,次による。 

a) <AS副問合せ句>に直に含まれる<表副問合せ>をASQとする。ASQによって指定される表をQT

とする。 

b) QT中のいずれか二つの列が等価な<列名>をもつか,又はQTのいずれかの列が処理系依存の名

486 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

前をもつならば,<列名リスト>を指定しなければならない。 

c) QTの次数をDとする。 

d) <列名リスト>は,二つ以上の等価な<列名>を含んではならない。 

e) <列名リスト>中の<列名>の個数は,Dでなければならない。 

f) i,1 ≤ i ≤ Dに対して,次による。 

i) 

場合: 

1) <列名リスト>が指定されるならば,その<列名リスト>中のi番目の<列名>をQCNiとする。 

2) そうでなければ,QTのi番目の列の<列名>をQCNiとする。 

ii) QTのi番目の列の宣言型をQDTiとする。 

iii) QTのi番目の列のナル可能性特性がナル可能でないことが分かるならば,NOT NULLをQNCi

とする。そうでなければ,長さ0の文字列をQNCiとする。 

iv) 次の<列定義>をCDiとする。 

QCNi QDTi QNCi 

g) <AS副問合せ句>は,次の形式の<表要素リスト> TELによって実効的に置き換えられる。 

CD1, ..., CDD 

11) <型付き表句> TTCが指定されるならば,次による。 

a) <パス解決利用者定義型名>に単純に含まれる<利用者定義型名>は,構造型STを識別しなければ

ならない。 

b) <下位表句>が指定されるならば,<自己参照列指定>を指定してはならない。そうでなければ,<

自己参照列指定>は,ただ1回指定しなければならない。 

c) <自己参照列指定> SRCSが指定されるならば,参照型REF(ST) をRSTとする。 

i) 

<下位表句>を指定してはならない。 

ii) <表有効範囲>を指定してはならない。 

iii) SYSTEM GENERATEDが指定されるならば,RSTは,システム定義表現をもたなければならな

い。 

iv) USER GENERATEDが指定されるならば,RSTは,利用者定義表現をもたなければならない。 

v) DERIVEDが指定されるならば,RSTは,導出表現をもたなければならない。 

vi) RSTが導出表現をもつならば,RSTの導出表現の属性のリストに含まれる属性の個数をmと

し,それらの属性をAi,1 ≤ i ≤ mとする。 

1) TDは,A1,A2,...,Amの属性名をその順序で含む<一意列リスト>をもつ<一意性制約定義

> UCDを指定する<表制約定義>を含まなければならない。 

2) UCDがPRIMARY KEYを指定しないならば,どの属性Ai,1 ≤ i ≤ mに対しても,TDは,Ai

の<属性名>と等価な<列名>をもち,NOT NULLを指定する<列制約定義>をもつ<列

OPTIONS> COiを含まなければならない。 

vii) 次の<列定義>をCD0とする。 

CN0 RST SCOPE(TN) UNIQUE NOT NULL 

ここで,CN0は,SRCSに単純に含まれる<自己参照列名>を示す。 

d) <下位表句>が指定されるならば,次による。 

i) 

<下位表句>に含まれる<表名>は,Tの直接上位表 (direct supertable) を識別し,それは,実表で

なければならない。Tを,Tの直接上位表の直接下位表 (direct subtable) と呼ぶ。 

487 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) STは,Tの直接上位表の構造型の直接下位型でなければならない。 

iii) Tの<表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるSQLス

キーマは,Tの直接上位表の記述子を含んでいなければならない。 

iv) Tの下位表族は,T自体以外の,関連付けられた構造型がSTである要素を含んではならない。 

v) TDは,PRIMARY KEYを指定する<表制約定義>を含んではならない。 

vi) Tの継承列 (inherited column) という用語で,STの継承属性に対応するTの列を参照する。そ

のようなどの継承属性IAに対しても,CAの<列名>がIAの<属性名>と等価であるようなTの

直接上位表の列CAが存在する。CAを,Tの直接上位表中のIAの直接上位列 (direct supercolumn) 

と呼ぶ。 

vii) 次の<列定義>をCD0とする。 

CN0 RST SCOPE(TN) UNIQUE NOT NULL 

ここで,CN0は,SRCSに単純に含まれる<自己参照列名>を示す。 

e) 

13 Tの原定義列 (originally-defined column) という用語で,STの原定義属性に対応するTの列を参

照する。 

f) STの属性の個数をnとする。STのデータ型記述子に含まれる属性記述子を,ADi,1 ≤ i ≤ nとし,

<列定義> CNi DTi DCiをCDiとする。ここで,CNi,DTi及びDCiは,次による。 

i) 

CNiは,ADiに含まれる属性名とする。 

ii) DTiは,“6.1 <データ型>”の一般規則に基づいて,ADiに含まれるデータ型記述子の作成をも

たらす<データ型>とする。 

iii) ADiが継承属性IAを記述するならば,次による。 

場合: 

1) IAの直接上位列の列記述子が既定値を含むならば,DCiは,<既定値選択肢>がこの既定値を

示す<DEFAULT句>とする。 

2) そうでなければ,DCiは,長さ0の文字列とする。 

iv) ADiが原定義属性OAを記述するならば,次による。 

場合: 

1) ADiが既定値を含むならば,DCiは,<既定値選択肢>がこの既定値を示す<DEFAULT句>と

する。 

2) そうでなければ,DCiは,長さ0の文字列とする。 

g) <型付き表要素リスト> TTELが指定され,かつ,<列OPTIONS> COが指定されるならば,次によ

る。 

i) 

COに単純に含まれる<列名> CNは,<列定義> CDj中に指定される<列名> CNjと等価でなけれ

ばならず,Tの原定義列を参照しなければならない。 

ii) CNは,TTELに含まれる他のどの<列OPTIONS>に単純に含まれる<列名>とも等価であっては

ならない。 

iii) 

09 <列選択肢リスト>は,<SCOPE句>若しくは<DEFAULT句>,又は少なくとも一つの<列制約

定義>を直に含まなければならない。 

iv) COが<SCOPE句> SCを指定するならば,DTjは,<参照型> RTでなければならない。RTが

<SCOPE句>を含むならば,その<SCOPE句>は,SCによって置き換えられる。そうでなければ,

RTがRT SCによって置き換えられる。 

488 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記338 型付き表の列の有効範囲の変更は,基となる属性に対して定義された有効範囲に

影響を与えない。そのような属性の有効範囲は,型付き表が定義される時点で,

その列の有効範囲に対する一種の既定として用いられ,列の有効範囲が削除され

ても,元の状態に戻されない。 

v) COが<DEFAULT句> DCを指定するならば,DCjは,CDj中のDCによって置き換えられる。 

vi) 

09 COが<列制約定義>の空でないリストCCDLを指定するならば,CDjは,CDj CCDLによっ

て置き換えられる。 

vii) COは,TTELから削除される。 

h) Tは,参照可能表とする。 

i) 

TTELが空ならば,次の形式の<表要素リスト>をTELとする。 

CD0, ..., CDn 

そうでなければ,次の形式の<表要素リスト>をTELとする。 

CD0, ..., CDn TTEL 

12) ON COMMITが指定されるならば,TEMPORARYを指定しなければならない。 

13) TEMPORARYが指定され,かつ,ON COMMITが指定されないならば,ON COMMIT DELETE ROWS

が暗に想定される。 

14) TDに含まれる<列定義>又は<列OPTIONS>に含まれる<SCOPE句>によって参照されるどの参照可

能表も,次の表でなければならない。 

場合: 

a) TDが<表有効範囲>を指定しないならば,永続実表。 

b) TDがGLOBAL TEMPORARYを指定するならば,大域一時表。 

c) TDがLOCAL TEMPORARYを指定するならば,作成局所一時表。 

15) 高々一つの<表要素>が,<識別列指定>を含む<列定義>でなければならない。 

16) <表名>は,<AS副問合せ句>を除いて,有効範囲が<表定義>である範囲変数とする。 

アクセス規則 

1) <表定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子は,Aを

含まなければならない。 

2) <LIKE句>が<表定義>に含まれるならば,Aに適用可能な権限は,<LIKE句>中で識別される表に関

するSELECT権限を含まなければならない。 

3) Aは,<下位表句>中で指定される<上位表名>に関するUNDER権限を,その適用可能な権限中にも

たなければならない。 

4) “OF <パス解決利用者定義型名>”が指定されるならば,Aに適用可能な権限は,STに関するUSAGE

を含まなければならない。 

一般規則 

1) <表定義>は,通常永続実表,システムバージョン表,大域一時表又は作成局所一時表のいずれかを

定義する。 

場合: 

a) GLOBALが指定されるならば,大域一時表が定義される。 

b) LOCALが指定されるならば,作成局所一時表が定義される。 

c) WITH <SYSTEM VERSIONING句>が指定され,かつ,SYSTEM̲TIMEを指定する<表期間定義>

489 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

が指定されるならば,システムバージョン表が定義される。 

d) そうでなければ,通常永続実表が定義される。 

2) 

09 Tの次数には,最初は,0が設定される。“11.4 <列定義>”の一般規則が,Tの列の定義の間に,

Tの次数を規定する。 

3) <パス解決利用者定義型名>が指定されるならば,次による。 

a) <パス解決利用者定義型名>に単純に含まれる<利用者定義型名>によって識別される構造型をR

とする。 

b) Rは,Tに関連付けられる構造型とする。 

4) Tを記述する表記述子TDSが作成される。TDSは,次の項目を含む。 

a) 表名TN。 

b) 表が,通常永続実表か,システムバージョン表か,大域一時表か,作成局所一時表か又は宣言局

所一時表かを示す標識。 

c) TELに含まれる<列定義>が指定された順序で,それらの<列定義>に適用して,“11.4 <列定義>”

の構文規則及び一般規則に従ったTの全ての列の列記述子。 

d) SYSTEM̲TIMEを指定する<表期間定義>が指定されるならば,期間の名前としてSYSTEM̲TIME

を含み,SYSTEM̲TIME期間開始列及びSYSTEM̲TIME期間終了列の名前を含む期間記述子。 

e) <適用業務時刻期間指定>を含む<表期間定義>が指定され,<適用業務時刻期間名> ATPNを含むな

らば,期間の名前としてATPNを含み,ATPN期間開始列及びATPN期間終了列の名前を含み,

かつ,暗に想定されるATPN期間制約の名前としてIDCNを含む期間記述子。 

f) 

<型付き表句>が指定されるならば,次の項目。 

i) 

表が参照可能表であることを示す標識。 

ii) 順序位置1の列がTの自己参照列であることを示す標識。TDSに含まれ,その列を記述する列

記述子は,自己参照列を識別するようにマーク付けされる。 

iii) RSTがシステム定義表現をもつならば,自己参照列がシステム生成自己参照列であることを示

す標識。 

iv) RSTが導出表現をもつならば,自己参照列が導出自己参照列であることを示す標識。 

v) RSTが利用者定義表現をもつならば,自己参照列が利用者生成自己参照列であることを示す標

識。 

g) TELに含まれる各<表制約定義>によって指定される表制約記述子。 

h) <パス解決利用者定義型名>が指定されるならば,Rの利用者定義型名。 

i) 

<下位表句>が指定されるならば,<下位表句>に含まれるTの直接上位表の表名。 

j) 

“4.19 関数従属性”で与えられる規則に従った関数従属性の空でない集合。 

k) 候補キーの空でない集合。 

l) 

“4.19 関数従属性”で与えられる規則に従って,主キーを付加的に示しても,示さなくてもよい

優先候補キー。 

m) TEMPORARYが指定されるならば,次の項目。 

場合: 

i) 

ON COMMIT PRESERVE ROWSが指定されるならば,ON COMMIT PRESERVE ROWSが指定

されたことを示す標識。 

ii) そうでなければ,ON COMMIT DELETE ROWSが指定されたか又は暗に想定されたことを示す

490 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

標識。 

n) 場合: 

i) 

<型付き表句>が指定されないならば,Tが挿入可能で,かつ,更新可能であることを示す標識。 

ii) そうでなければ,次の項目。 

場合: 

1) Rが実現値生成可であることを,Rのデータ型記述子が示すならば,Tが挿入可能で,かつ,

更新可能であることを示す標識。 

2) そうでなければ,Tが挿入可能でなく,更新可能でないことを示す標識。 

5) Tの各直接上位表の記述子中で,直接下位表のリストの最後にTNが追加される。 

6) <下位表句>が指定されるならば,この表の列の継承元の直接上位表の<表名>の陽に指定されるか又

は暗に想定される<スキーマ名>によって識別されるスキーマを所有する<認可識別子>に対して,こ

の表の全ての継承列に関する権限SELECT,UPDATE及びREFERENCESを定義する権限記述子の

集合が作成される。これらの権限は,付与可能とする。これらの権限記述子のそれぞれに対する権

限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

7) この表に関する権限SELECT,INSERT,UPDATE,DELETE,TRIGGER及びREFERENCES,並び

に表定義中の全ての<列定義>に対する権限SELECT,INSERT,UPDATE及びREFERENCESを定義

する権限記述子の集合が作成される。OF <パス解決利用者定義型名>が指定されるならば,<パス解

決利用者定義型名>によって識別される構造型のどのメソッドに対しても,この表に関する表/メソ

ッド権限記述子が作成され,表SELECT権限がWITH HIERARCHY OPTIONをもつ。これらの権限

は,付与可能とする。 

これらの権限記述子のそれぞれに対する権限付与者には,特別な付与者の値“̲SYSTEM”が設定

される。権限受領者は,<認可識別子> Aとする。 

8) <下位表句>が指定されるならば,Tの上位表の集合をSTとする。ST中の表に関するSELECT WITH 

HIERARCHY OPTION権限を定義した権限記述子の集合をPDSとする。権限受領者G,権限付与者

Aとして,PDS中のどの権限記述子に対しても,次による。 

場合: 

a) 権限が付与可能ならば,“WITH GRANT OPTION”をWGOとする。 

b) そうでなければ,長さ0の文字列をWGOとする。 

これ以上のアクセス規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT SELECT ON T TO G WGO FROM A 

9) <表定義>によって定義される表Tの行型RTは,対(<フィールド名>,<データ型>)の集合とする。

ここで,<フィールド名>は,Tの列Cの名前とし,<データ型>は,Cの宣言型とする。この対の集

合は,T中での列の順序位置の順序で,Tの各列に対して,一つの対を含む。 

10) <AS副問合せ句>が指定され,かつ,WITH DATAが指定されるならば,ASQに単純に含まれる<問

合せ式>をQEとする。これ以上のアクセス規則の検査なしで,次の<INSERT文>が実効的に実行さ

れる。 

INSERT INTO TN QE 

適合性規則 

1) 機能T171“表定義中のLIKE句”なしでは,適合するSQL言語は,<LIKE句>を含んではならない。 

2) 機能F531“一時表”なしでは,適合するSQL言語は,<表有効範囲>を含んではならないし,大局

491 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一時表又は局所一時表を参照してはならない。 

3) 機能S051“型の表作成”なしでは,適合するSQL言語は,“OF <パス解決利用者定義型名>”を含

んではならない。 

4) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<SCOPE句>を含む<列選択肢リスト>を

含んではならない。 

5) 機能S043“拡張参照型”なしでは,適合するSQL言語は,SYSTEM GENERATEDを含まない<参照

生成>を含んではならない。 

6) 機能S081“下位表”なしでは,適合するSQL言語は,<下位表句>を含んではならない。 

7) 機能T172“表定義中のAS副問合せ句”なしでは,適合するSQL言語は,<AS副問合せ句>を含ん

ではならない。 

8) 機能T173“表定義中の拡張LIKE句”なしでは,適合するSQL言語中で,<LIKE句>は,<LIKE選

択肢の並び>を含んではならない。 

9) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,“WITH <SYSTEM VERSIONING

句>”,又はSYSTEM̲TIMEを指定する<表期間定義>を含んではならない。 

10) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<適用業務時刻期間指定>を含

む<表期間定義>を含んではならない。 

11.4 <列定義> 

この細分箇条は,ISO/IEC 9075-4中の“9.4 <列定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14中の“12.1 <列定義>”によって修正される。 

機能 

<列定義> (<column definition>) は,実表の列を定義する。 

形式 

<列定義> ::= 

  <列名> [ <データ型又は定義域名> ] 

      [ <DEFAULT句> | <識別列指定> | <生成句> 

      | <システム時刻期間開始列指定> 

      | <システム時刻期間終了列指定> ] 

      [ <列制約定義>... ] 

      [ <COLLATE句> ] 

<データ型又は定義域名> ::= 

  <データ型> 

| <定義域名> 

<システム時刻期間開始列指定> ::= 

  <時刻印生成規則> AS ROW START 

<システム時刻期間終了列指定> ::= 

  <時刻印生成規則> AS ROW END 

<時刻印生成規則> ::= 

  GENERATED ALWAYS 

<列制約定義> ::= 

  [ <制約名定義> ] <列制約> [ <制約特性> ] 

492 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<列制約> ::= 

  NOT NULL 

| <一意性指定> 

| <参照指定> 

| <検査制約定義> 

<識別列指定> ::= 

  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY 

      [ <左括弧> <共通順序数生成子選択肢の並び> <右括弧> ] 

<生成句> ::= 

  <生成規則> AS <生成式> 

<生成規則> ::= 

  GENERATED ALWAYS 

14 <生成式> ::= 

  <左括弧> <値式> <右括弧> 

構文規則 

1) 

04 <列定義>は,<ホストパラメタ指定>,<SQLパラメタ参照>,<動的パラメタ指定>又は<埋込み変

数指定>を含んではならない。 

2) 場合: 

a) <列定義>が<表定義>に含まれるならば,<表定義>によって定義される表をTとする。 

b) <列定義>が<一時表宣言>に含まれるならば,<一時表宣言>によって宣言される表をTとする。 

c) <列定義>が<表変更文>に含まれるならば,それを含む<表変更文>中で識別される表をTとする。 

3) <列定義>中の<列名>は,Tの他のどの列の<列名>とも等価であってはならない。 

4) Tを所有する<認可識別子>をAとする。 

5) <列定義>の<列名>をCとする。 

6) <列定義>が<システム時刻期間開始列指定>又は<システム時刻期間終了列指定>を直に含むならば,

次による。 

a) <列定義>は,SYSTEM̲TIMEを指定する<表期間定義>を指定する<表定義>に含まれなければなら

ない。 

b) <データ型又は定義域名>は,DATE又は時刻印型を指定しなければならない。 

c) <列制約定義> NOT NULL NOT DEFERRABLEが暗に想定される。 

d) <列定義>が<システム時刻期間開始列指定>を直に含むならば,Cは,システム時刻期間開始列と

する。そうでなければ,Cは,システム時刻期間終了列とする。 

7) <データ型又は定義域名>は,<データ型>又は<定義域名>のいずれかを曖昧さなく参照しなければな

らない。 

8) <定義域名>が指定されるならば,<定義域名>によって識別される定義域をDとする。 

9) Dの記述子が定義域制約記述子を含むならば,Tは,永続実表でなければならない。 

10) <生成句> GCが指定されるならば,次による。 

a) GCに含まれる<生成式>をGEとする。 

b) Cは,生成列とする。 

c) GEに含まれるどの<列参照>も,Tの実列を参照しなければならない。 

493 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) GEは,決定的でなければならない。 

e) GEは,当該ルーチンがSQLデータを潜在的に読む<ルーチン呼出し>を含んではならない。 

f) GEは,<問合せ式>を含んではならない。 

11) <生成句>が省略されるならば,<データ型>又は<定義域名>のいずれかを指定しなければならない。 

12) 場合: 

a) <列定義>が<定義域名>を直に含むならば,<COLLATE句>も直に含んではならない。 

b) そうでなければ,<COLLATE句>が<データ型>中に指定され,かつ,<列定義>に直に含まれては

ならない。<COLLATE句>が<列定義>に直に含まれるならば,<データ型>中に等価な<COLLATE

句>を指定することと等価とする。 

13) 列の宣言型は,次による。 

場合: 

a) <データ型>が指定されるならば,そのデータ型とする。<生成句>も,指定されるならば,<生成式

>の宣言型は,列の宣言型に代入可能でなければならない。 

b) <定義域名>が指定されるならば,Dの宣言型とする。<生成句>も,指定されるならば,<生成式>

の宣言型は,列の宣言型に代入可能でなければならない。 

c) <生成句>が指定されるならば,GEの宣言型とする。 

14) Tがシステムバージョン表ならば,列の宣言型は,参照型であってはならない。 

15) <データ型>が指定されるならば,次による。 

a) <データ型>をDTとする。 

b) DTがCHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECTを指定し,か

つ,<文字集合指定>を指定しないならば,それを含む<表定義>又は<表変更文>の<表名>に直に含

まれる<スキーマ名>によって識別されるスキーマを作成した<スキーマ定義>の<スキーマ文字集

合指定>中で指定されるか又は暗に想定される<文字集合指定>が,暗に想定される。 

16) <識別列指定> ICSが指定されるならば,次による。 

a) 場合: 

i) 

定義している列の宣言型が個別型DISTならば,DISTの元型は,位取り0をもつ真数でなけれ

ばならない。DISTの元型をICTとする。 

ii) そうでなければ,定義している列の宣言型は,位取り0をもつ真数でなければならない。定義

している列の宣言型をICTとする。 

b) <共通順序数生成子選択肢の並び>をSGOとする。 

c) SGOをOPTIONSとして,ICTをDATA TYPEとして,“9.26 順序数生成子の作成”の構文規則を

適用する。 

d) <列制約定義> NOT NULL NOT DEFERRABLEが暗に想定される。 

17) <列制約定義>が指定されるとき,<制約名定義>が指定されるならば,それをCNDとし,そうでな

ければ,長さ0の文字列をCNDとし,<制約特性>が指定されるならば,それをCAとし,そうでな

ければ,長さ0の文字列をCAとする。<列制約定義>は,次のとおりの<表制約定義>と等価とする。 

場合: 

a) <列制約> NOT NULLを含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。 

CND CHECK ( C IS NOT NULL ) CA 

b) <一意性指定> USを含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。 

494 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

CND US (C) CA 

注記339 <一意性指定>は,“11.7 <一意性制約定義>”で定義している。 

c) <参照指定> RSを含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。 

CND FOREIGN KEY (C) RS CA 

注記340 <参照指定>は,“11.8 <参照制約定義>”で定義している。 

d) <検査制約定義> CCDを含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。 

CND CCD CA 

<探索条件>に直接含まれる各列参照は,列Cを参照しなければならない。 

18) <定義域名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

Dの記述子を含んでいなければならない。 

アクセス規則 

1) <定義域名>が指定されるならば,Aに適用可能な権限は,Dに関するUSAGEを含まなければなら

ない。 

一般規則 

1) <列定義>は,表中の列を定義する。 

2) <列定義>が<データ型>を指定するならば,定義される列の宣言型を記述するデータ型記述子が作成

される。 

3) <列定義>を含む<表定義>又は<一時表宣言>で定義しているか又は<列定義>を含む<表変更文>によ

って変更している表Tの次数が1増やされる。 

4) 定義される列を記述する列記述子が作成される。列記述子は,次の項目を含む。 

a) 列の名前C。 

b) 場合: 

i) 

<列定義>が<データ型>又は<生成句>を指定するならば,列の宣言型のデータ型記述子。 

ii) そうでなければ,列の定義域を識別する<定義域名>。 

c) 列の順序位置。 

注記341 この<列定義>が処理される時点では,列の順序位置は,Tの次数と等しい。 

d) “4.13 列,フィールド及び属性”中の規則に従って決定される,列のナル可能性特性。 

注記342 全ての列のナル可能性特性を決定するためには,<列制約定義>及び<表制約定義>の両

方を解析しなければならない。 

e) <DEFAULT句>が指定されるならば,<既定値選択肢>。 

f) 

<識別列指定>が指定されるならば,次の項目。 

i) 

列が識別列であることを示す標識。 

ii) ALWAYSが指定されるならば,値が常時生成されることを示す標識。 

iii) BY DEFAULTが指定されるならば,値が既定生成されることを示す標識。 

iv) SGOをOPTIONSとして,ICTをDATA TYPEとして,“9.26 順序数生成子の作成”の一般規則

を適用する。これらの一般規則の適用によってSEQGENDESCとして戻される順序数生成子SG

の記述子。 

g) <システム時刻期間開始列指定>が指定されるならば,列がシステム時刻期間開始列であることを

示す標識。 

h) <システム時刻期間終了列指定>が指定されるならば,列がシステム時刻期間終了列であることを

495 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

示す標識。 

i) 

<システム時刻期間開始列指定>又は<システム時刻期間終了列指定>が指定されるならば,トラン

ザクション時刻印の値が常時生成されることを示す標識。 

j) 

場合: 

i) 

<列定義>が<生成句>を指定するならば,列が“ALWAYS(常に)”生成されることを示す標識及

びGE。 

ii) そうでなければ,列が“NEVER(決して)”生成されないことを示す標識。 

k) 列が更新可能であることを示す標識。 

l) 

<列制約> NOT NULLを含む<列制約定義>が指定されるならば,次の項目。 

i) 

列がNOT NULLとして定義されたことを示す標識。 

ii) それが関連付けられる表制約定義の制約名。 

注記343 関連付けられる表制約定義は,この細分箇条の構文規則17)a) で規定している<表制

約定義>である。 

5) <定義域名>が指定されるならば,Dの定義域記述子に含まれる全ての定義域制約記述子DCDに対

して,DCDに含まれるテンプレートの<探索条件>をDSCとする。<一般値指定> VALUEの全ての

実現値がCによって置き換えられたDSCの写しをCSCとする。定義域制約用途記述子が作成され,

DCDに含まれる定義域制約用途記述子の集合に追加される。作成される定義域制約用途記述子は,

次の項目を含む。 

a) 適用可能な列の名前。 

b) 適用可能な定義域制約の名前として,DCDに含まれる制約名。 

c) 制約が遅延可能かどうかを示す,DCDに含まれる標識。 

d) DCDに含まれる初期制約モード。 

e) 適用可能な次の<探索条件>。 

( SELECT EVERY ( CSC ) 

  FROM T ) 

注記344 これは,宣言型BOOLEANの<スカラ副問合せ>である。 

適合性規則 

1) 機能F692“拡張照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を直に含む<列定義

>を含んではならない。 

2) 機能T174“識別列”なしでは,適合するSQL言語は,<識別列指定>を含んではならない。 

3) 機能T175“生成列”なしでは,適合するSQL言語は,<生成句>を含んではならない。 

4) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,<システム時刻期間開始列指

定>又は<システム時刻期間終了列指定>を含んではならない。 

11.5 <DEFAULT句> 

この細分箇条は,ISO/IEC 9075-4の“9.5 <DEFAULT句>”によって修正される。 

機能 

<DEFAULT句> (<default clause>) は,列,定義域又は属性のための既定値を指定する。 

形式 

<DEFAULT 句> ::= 

  DEFAULT <既定値選択肢> 

496 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<既定値選択肢> ::= 

  <定数> 

| <日時値関数> 

| USER 

| CURRENT̲USER 

| CURRENT̲ROLE 

| SESSION̲USER 

| SYSTEM̲USER 

| CURRENT̲CATALOG 

| CURRENT̲SCHEMA 

| CURRENT̲PATH 

| <暗黙型付き値指定> 

構文規則 

1) 

04 <DEFAULT句>の当該データ型は,<DEFAULT句>を含む<列定義>,<定義域定義>,<属性定義>,

<列定義変更>又は<定義域変更文>によって識別される記述子中で指定されるデータ型とする。 

2) USERが指定されるならば,CURRENT̲USERが暗に想定される。 

3) 場合: 

a) <DEFAULT句>の当該データ型が集まり型又は元型が集まり型の個別型ならば,<既定値選択肢>

は,<暗黙型付き値指定>を指定しなければならない。 

b) <DEFAULT句>の当該データ型が利用者定義型,参照型又は行型ならば,<既定値選択肢>は,<ナ

ル指定>を指定しなければならない。 

4) 場合: 

a) <定数>が指定されるならば,次による。 

場合: 

i) 

当該データ型が文字列ならば,<定数>は,<文字列定数>でなければならない。当該データ型の

長さが固定ならば,<文字列定数>の文字単位での長さは,当該データ型の長さを超えてはなら

ない。当該データ型の長さが可変ならば,<文字列定数>の文字単位での長さは,当該データ型

の最大長を超えてはならない。<定数>は,当該データ型と同じ文字レパートリをもたなければ

ならない。 

ii) 当該データ型が2進オクテット列ならば,<定数>は,<2進オクテット列定数>でなければなら

ない。当該データ型の長さが固定ならば,<2進オクテット列定数>のオクテット単位での長さ

は,当該データ型の長さを超えてはならない。当該データ型の長さが可変ならば,<2進オクテ

ット列定数>のオクテット単位での長さは,当該データ型の最大長を超えてはならない。 

iii) 当該データ型が真数ならば,<定数>は,<真数定数>を単純に含む<符号付き数定数>でなければ

ならない。当該データ型中で,有効桁を失わない<定数>の値の表現がなければならない。 

iv) 当該データ型が概数ならば,<定数>は,<符号付き数定数>でなければならない。 

v) 当該データ型が日時ならば,<定数>は,当該データ型と同じ基本日時フィールド及び同じ時刻

帯日時フィールドをもつ<日時定数>でなければならない。SECONDがこれらのフィールドのう

ちの一つならば,<日時定数>の小数秒精度は,当該データ型の小数秒精度以下でなければなら

ない。 

497 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

vi) 当該データ型が時間隔ならば,<定数>は,<時間隔定数>でなければならず,当該データ型と同

じ<時間隔修飾子>を含まなければならない。 

vii) 当該データ型がブールならば,<定数>は,<ブール定数>でなければならない。 

b) CURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG

又はCURRENT̲SCHEMAが指定されるならば,当該データ型は,文字集合SQL̲IDENTIFIERを

もつ文字列でなければならない。当該データ型の長さが固定ならば,その長さは,128文字以上

でなければならない。当該データ型の長さが可変ならば,その最大長は,128文字以上でなけれ

ばならない。 

c) CURRENT̲PATHが指定されるならば,当該データ型は,文字集合SQL̲IDENTIFIERをもつ文字

列でなければならない。当該データの長さが固定ならば,その長さは,1031文字以上でなければ

ならない。当該データ型の長さが可変ならば,その最大長は,1031文字以上でなければならない。 

d) <日時値関数>が指定されるならば,当該データ型は,<日時値関数>と同じ宣言日時データ型をも

つ日時でなければならない。 

e) <空指定>が指定されるならば,当該データ型は,集まり型又は元型が集まり型の個別型でなけれ

ばならない。<空指定>がARRAYを指定するならば,当該データ型は,配列型又は元型が配列型

の個別型でなければならない。<空指定>がMULTISETを指定するならば,当該データ型は,マル

チ集合型又は元型がマルチ集合型の個別型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <DEFAULT句>が列に適用されるならば,列記述子に,<DEFAULT句>が定義域に適用されるなら

ば,定義域記述子に,又は< DEFAULT句>が属性に適用されるならば,属性記述子に,挿入される

既定値は,<既定値選択肢>とする。 

2) <既定値選択肢>によって指定される値は,次による。 

場合: 

a) <既定値選択肢>が<定数>を含むならば,次による。 

場合: 

i) 

当該データ型が数ならば,<定数>の数値とする。 

ii) 当該データ型が可変長文字列ならば,<定数>の値とする。 

iii) 当該データ型が固定長文字列ならば,<定数>の値を,当該データ型の文字単位での長さまで<空

白>で右側に必要なだけ拡張した値とする。 

iv) 当該データ型が固定長2進オクテット列ならば,<定数>の値を,当該データ型のオクテット単

位での長さまでX'00'で右側に必要なだけ拡張した値とする。 

v) 当該データ型が可変長2進オクテット列ならば,<定数>の値とする。 

vi) 当該データ型が日時又は時間隔ならば,<定数>の値とする。 

vii) 当該データ型がブールならば,<定数>の値とする。 

b) <既定値選択肢>がCURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,

CURRENT̲CATALOG,CURRENT̲SCHEMA又は,CURRENT̲PATHを指定するならば,次によ

る。 

場合: 

498 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

当該データ型が可変長文字列ならば,既定値を必要とする時点での,CURRENT̲USER,

CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG,

CURRENT̲SCHEMA又はCURRENT̲PATHの評価によって得られる値とする。 

ii) 当該データ型が固定長文字列ならば,既定値を必要とする時点での,CURRENT̲USER,

CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG,

CURRENT̲SCHEMA又はCURRENT̲PATHの評価によって得られる値を,当該データ型の文

字単位での長さまで<空白>で右側に必要なだけ拡張した値とする。 

c) <既定値選択肢>が<日時値関数>を含むならば,既定値を必要とする時点に,<日時値関数>を評価

した値とする。 

d) <既定値選択肢>が<空指定>を指定するならば,空の集まりとする。 

3) 格納場所Sにそれの既定値が設定されるとき,次による。 

場合: 

a) 列を表現し,その列の基となる列が識別列,生成列,システム時刻期間開始列又はシステム時刻

期間終了列であることをSの記述子が示すならば,Sは,代入されない (unassigned) としてマー

ク付けされる。 

注記345 代入されない格納場所の概念は,この規格での定義のためにだけ用いる。それは,SQL

データ中で可視になるように永続化することができる状態ではない。代入されない格

納場所の扱いは,“15.10 実表への表の挿入の効果”及び“15.13 実表中の行の置換え

の効果”で与えられる。 

b) Sの記述子が<既定値選択肢>を含むならば,Sには,その<既定値選択肢>によって指定される値

が設定される。 

c) <既定値選択肢>を含む定義域記述子を識別する<定義域名>を,Sの記述子が含むならば,Sには,

その<既定値選択肢>によって指定される値が設定される。 

d) 既定値が,導出表DTへの挿入又は更新のための候補行の列Cに対するもので,かつ,Cが,DT

の末端で一般に基となる表中に単一の対応物の列CCをもつならば,Sには,この細分箇条の一

般規則を適用することによって得られるCCの既定値が設定される。 

e) そうでなければ,Sには,ナル値が設定される。 

注記346 <既定値選択肢>がCURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,

SYSTEM̲USER,CURRENT̲CATALOG,CURRENT̲SCHEMA又はCURRENT̲PATHを

指定するならば,“列記述子中の値”は,実効的に<既定値選択肢>のテキストになり,そ

れの評価は,既定値が必要となる時点で行われる。 

4) <DEFAULT句>が<SQLスキーマ文>に含まれ,かつ,情報スキーマ中で<既定値選択肢>の文字表現

を切捨てなしで表現できないならば,終了条件:警告 (warning) − 情報スキーマに対して既定値が

長すぎる (default value too long for information schema) が引き起こされる。 

注記347 情報スキーマは,[ISO9075-11] で定義している。 

適合性規則 

1) 機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,CURRENT̲PATH

を含む<既定値選択肢>を含んではならない。 

2) 機能F321“利用者認可”なしでは,適合するSQL言語は,CURRENT̲USER,SESSION̲USER又

はSYSTEM̲USERを含む<既定値選択肢>を含んではならない。 

499 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記348 CURRENT̲USERとUSERとは,意味的に同じだが,機能F321“利用者認可”なしでは,

CURRENT̲USERは,USERとして指定しなければならない。 

3) 機能T332“拡張役割”なしでは,適合するSQL言語は,CURRENT̲ROLEを含む<既定値選択肢>

を含んではならない。 

4) 機能F762“CURRENT̲CATALOG”なしでは,適合するSQL言語は,CURRENT̲CATALOGを含む

<既定値選択肢>を含んではならない。 

5) 機能F763“CURRENT̲SCHEMA”なしでは,適合するSQL言語は,CURRENT̲SCHEMAを含む<

既定値選択肢>を含んではならない。 

11.6 <表制約定義> 

機能 

<表制約定義> (<table constraint definition>) は,整合性制約を指定する。 

形式 

<表制約定義> ::= 

  [ <制約名定義> ] <表制約> 

      [ <制約特性> ] 

<表制約> ::= 

  <一意性制約定義> 

| <参照制約定義> 

| <検査制約定義> 

構文規則 

1) <制約特性>が指定されないならば,INITIALLY IMMEDIATE NOT DEFERRABLE ENFORCEDが暗

に想定される。 

2) <制約名定義>が指定され,それの<制約名>が<スキーマ名>を含むならば,<スキーマ名>は,<制約

名定義>を含む<表定義>又は<表変更文>によって識別される表の<表名>の陽に指定されるか又は暗

に想定される<スキーマ名>と等価でなければならない。 

3) <制約名定義>が指定されないならば,処理系依存の<制約名>を含む<制約名定義>が暗に想定される。

割り当てられる<制約名>は,陽に指定される<制約名>の構文規則に従わなければならない。 

4) <制約名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマをSと

する。Sは,制約名が<制約名>である制約記述子を含んではならない。 

5) <一意性制約定義>が指定されるならば,<制約特性>は,<制約強制>を指定してはならない。 

アクセス規則 

なし。 

一般規則 

1) <表制約定義>は,表制約を定義する。 

2) 定義している表制約を記述する表制約記述子が作成される。表制約記述子は,次の項目を含む。 

a) 陽に指定されるか又は暗に想定される<制約名定義>に含まれる<制約名>。 

b) 制約が遅延可能か又は遅延可能でないかを示す標識。 

c) 制約の初期制約モードが遅延か又は即時かを示す標識。 

d) 制約が強制か又は強制でないかを示す標識。 

e) <表制約定義>に含まれる特定の種類の<表制約>に適用可能な一般規則で規定するとおりの適用

500 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

可能な<探索条件>,及びそれらの一般規則で規定する付加的な内容。 

適合性規則 

なし。 

11.7 <一意性制約定義> 

この細分箇条は,ISO/IEC 9075-9の“11.4 <一意性制約定義>”によって修正される。 

機能 

<一意性制約定義> (<unique constraint definition>) は,表に対する一意性の制約を指定する。 

形式 

<一意性制約定義> ::= 

  <一意性指定> <左括弧> <一意列リスト> [ <コンマ> <WITHOUT OVERLAPS指定> ] <右括弧> 

| UNIQUE ( VALUE ) 

<一意性指定> ::= 

  UNIQUE 

| PRIMARY KEY 

<一意列リスト> ::= 

  <列名リスト> 

<WITHOUT OVERLAPS指定> ::= 

  <適用業務時刻期間名> WITHOUT OVERLAPS 

構文規則 

1) 

09 <一意列リスト>中の<列名>によって識別される各列は,グループ化操作のオペランドとする。

“9.12 グループ化操作”の構文規則又は適合性規則を適用する。 

2) <一意性制約定義>を含む<表定義>又は<表変更文>によって識別される表をTとする。Tの<表名>

をTNとする。 

3) <WITHOUT OVERLAPS指定>が指定されるならば,次による。 

a) <WITHOUT OVERLAPS指定>に含まれる<適用業務時刻期間名>をATPNとする。 

b) Tの表記述子は,ATPN期間記述子を含まなければならない。 

4) 場合: 

a) Tがシステムバージョン表ならば,次の<表一次子>をTNNとする。 

TN FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMP  

b) そうでなければ,TNをTNNとする。 

5) <一意列リスト> UCLが指定されるならば,次による。 

a) <一意列リスト>中の各<列名>は,Tの列を識別しなければならず,同じ列を2回以上識別しては

ならない。 

b) Tの記述子がシステム時刻期間記述子を含むならば,UCLは,Tのシステム時刻期間開始列又は

Tのシステム時刻期間終了列を含んではならない。 

c) <一意列リスト>中の列の集合は,Tの実表記述子に含まれる他のどの一意性制約記述子の一意列

の集合とも異ならなければならない。 

d) 場合: 

i) 

<WITHOUT OVERLAPS指定>が指定されるならば,TのATPN期間開始列をSTARTCOLとし,

TのATPN期間終了列をENDCOLとし,STARTCOLの宣言型をDTとし,次の<探索条件>を

501 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SC1とする。 

UNIQUE ( SELECT UCL, TIMEPOINT FROM TNN AS Y, 

                      UNNEST(EXPAND(STARTCOL, ENDCOL)) AS 

X(TIMEPOINT))  

ここで,EXPANDは,STARTCOLの値以上で,かつ,ENDCOLの値未満のDTの全ての値か

ら成るSET(DT) 型の値を戻すSQL呼出し関数の<ルーチン名>とし,TIMEPOINTは,Tのど

の列の<列名>とも等価でない<識別子>とする。 

注記349 上記のSQL呼出し関数の呼出しは,この規格での定義のためにだけ用いる。 

ii) そうでなければ,次の<探索条件>をSC1とする。 

UNIQUE ( SELECT UCL  

           FROM TNN )  

e) 場合: 

i) 

<一意性指定>がPRIMARY KEYを指定するならば,次の<探索条件>をSCとする。 

SC1 

  AND 

( SELECT EVERY ( UCL ) IS NOT NULL ) 

  FROM TNN ) 

注記350 この式中のANDの2番目のオペランドは,宣言型BOOLEANの<スカラ副問合せ>

である。 

ii) そうでなければ,SC1をSCとする。 

6) UNIQUE (VALUE) が指定されるならば,次の<探索条件>をSCとする。 

UNIQUE ( SELECT TN.* FROM TNN ) 

7) <一意性指定>がPRIMARY KEYを指定するならば,陽に指定されるか又は暗に想定される<一意列

リスト>中の,NOT NULLが指定されない各<列名>に対して,<列定義>中に,NOT NULLが暗に想

定される。 

8) <表定義>は,PRIMARY KEYを指定する高々一つの,陽に指定されるか又は暗に想定される<一意

性制約定義>を指定しなければならない。 

9) PRIMARY KEYを指定する<一意性制約定義>が<表制約定義追加>に含まれるならば,それを含む<

表変更文>に直に含まれる<表名>によって識別される表は,PRIMARY KEYを指定する<一意性制約

定義>によって定義された一意性制約をもっていてはならない。 

アクセス規則 

なし。 

一般規則 

1) <一意性制約定義>は,一意性制約を定義する。 

2) <一意性制約定義>を含む<表制約定義>の実行の結果として作成される表制約記述子に含まれる適

用可能な<探索条件>は,SCとする。この記述子は,付加的に次の項目を含む。 

a) 制約がPRIMARY KEYで定義されるか又はUNIQUEで定義されるかを示す<一意性指定>。 

b) <一意列リスト>で指定された一意列の名前。 

c) <WITHOUT OVERLAPS指定>が指定されるならば,ATPN。 

3) 一意性制約が満たされないことは,次の探索条件が真 (True) であることと同値とする。 

502 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

EXISTS ( SELECT * FROM TNN WHERE NOT ( SC ) ) 

適合性規則 

1) 機能S291“行全体の一意性制約”なしでは,適合するSQL言語は,UNIQUE(VALUE) を含んでは

ならない。 

2) 機能T591“潜在的にナルの列のUNIQUE制約”なしでは,適合するSQL言語中で,UNIQUEが指

定されるならば,<一意列リスト>に含まれる<列名>をもつ各列に対する<列定義>は,NOT NULLを

含まなければならない。 

注記351 “9.12 グループ化操作”の適合性規則も適用する。 

3) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<WITHOUT OVERLAPS指定>

を含んではならない。 

11.8 <参照制約定義> 

機能 

<参照制約定義> (<referential constraint definition>) は,参照制約を指定する。 

形式 

<参照制約定義> ::= 

  FOREIGN KEY <左括弧> <参照列リスト>  

      [ <コンマ> <参照PERIOD指定> ] <右括弧> 

      <参照指定> 

<参照指定> ::= 

  REFERENCES <被参照表及び列> 

      [ MATCH <一致型> ] [ <参照被トリガ動作> ] 

<一致型> ::= 

  FULL 

| PARTIAL 

| SIMPLE 

<参照列リスト> ::= 

  <列名リスト> 

<参照PERIOD指定> ::= 

  PERIOD <適用業務時刻期間名> 

<被参照表及び列> ::= 

  <表名> [ <左括弧> <被参照列リスト>  

      [ <コンマ> <被参照PERIOD指定> ] <右括弧> ] 

<被参照列リスト> ::= 

  <列名リスト> 

<被参照PERIOD指定> ::= 

  PERIOD <適用業務時刻期間名> 

<参照被トリガ動作> ::= 

  <更新規則> [ <削除規則> ] 

| <削除規則> [ <更新規則> ] 

<更新規則> ::= 

503 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  ON UPDATE <参照動作> 

<削除規則> ::= 

  ON DELETE <参照動作> 

<参照動作> ::= 

  CASCADE 

| SET NULL 

| SET DEFAULT 

| RESTRICT 

| NO ACTION 

構文規則 

1) <一致型>が指定されないならば,SIMPLEが暗に想定される。 

2) <参照PERIOD指定>が指定されるならば,次による。 

a) <被参照表及び列>は,<被参照列リスト>及び<被参照PERIOD指定>を直に含まなければならな

い。 

b) <参照動作>は,CASCADE,SET NULL又はSET DEFAULTを指定してはならない。 

3) <参照制約定義>を含む<表定義>又は<表変更文>によって識別される表を参照表 (referencing table) 

とする。<被参照表及び列>中の<表名>によって識別される表を被参照表 (referenced table) とする。

<参照列リスト>によって識別される一つ又は複数の列を参照列 (referencing column) とする。 

4) 場合: 

a) <被参照表及び列>が<被参照列リスト>を指定するならば,その<被参照列リスト>に含まれる<列

名>の集合と,対応する<列名>が等価な,被参照表の一意性制約の<一意列リスト>に含まれる<列

名>の集合との間に,1対1対応が存在しなければならない。<被参照列リスト>によって識別され

る一つ又は複数の列を被参照列 (referenced column) とする。各被参照列は,被参照表の列を識別

しなければならず,同じ列を2回以上識別してはならない。 

b) そうでなければ,被参照表の表記述子は,PRIMARY KEYを指定する一意性制約UCを含まなけ

ればならない。UCの表制約記述子は,適用業務時刻期間名を含んではならない。その一意性制約

中の一意列によって識別される一つ又は複数の列を被参照列 とする。<被参照表及び列>は,その

<一意列リスト>と同一である<被参照列リスト>を暗に指定するとみなさなければならない。 

5) 被参照列を識別する<一意列リスト>をもつ<一意性制約定義>を記述する表制約記述子は,一意性制

約が遅延可能でないことを示さなければならない。 

6) 被参照表は,実表でなければならない。 

場合: 

a) 参照表が永続実表ならば,被参照表は,永続実表でなければならない。 

b) 参照表が大域一時表ならば,被参照表は,大域一時表でなければならない。 

c) 参照表が作成局所一時表ならば,被参照表は,大域一時表又は作成局所一時表のいずれかでなけ

ればならない。 

d) 参照表が宣言局所一時表ならば,被参照表は,大域一時表,作成局所一時表又は宣言局所一時表

のいずれかでなければならない。 

7) 被参照表が,ON COMMIT DELETE ROWSを指定した一時表ならば,参照表は,ON COMMIT DELETE 

ROWSを指定しなければならない。 

504 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

8) 各参照列は,参照表の列を識別しなければならず,同じ列を2回以上識別してはならない。 

9) 各参照列は,グループ化操作のオペランドとする。“9.12 グループ化操作”の構文規則及び適合性規

則を適用する。 

10) 参照表の表記述子がシステム時刻期間記述子を含むならば,どの参照列も,参照表のシステム時刻

期間開始列又は参照表のシステム時刻期間終了列を識別してはならない。 

11) <参照列リスト>は,<被参照列リスト>と同じ個数の<列名>を含まなければならない。<参照列リス

ト>中で識別されるi番目の列は,<被参照列リスト>中で識別されるi番目の列と対応する。各参照

列の宣言型は,対応する被参照列の宣言型と比較可能でなければならない。一方の構成要素が時刻

帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような,参照列の宣言型と被参照列

の宣言型との対応する構成要素があってはならない。 

12) <参照制約定義>が<更新規則>を指定しないならば,NO ACTIONの<参照動作>をもつ<更新規則>が

暗に想定される。 

13) <参照制約定義>が<削除規則>を指定しないならば,NO ACTIONの<参照動作>をもつ<削除規則>が

暗に想定される。 

14) いずれかの参照列が生成列ならば,次による。 

a) <参照動作>は,SET NULL又はSET DEFAULTを指定してはならない。 

b) <更新規則>は,ON UPDATE CASCADEを指定してはならない。 

15) 被参照表をTとする。<表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別さ

れるスキーマは,Tの記述子を含んでいなければならない。 

16) Tの<表名>をTNとする。 

場合: 

a) Tがシステムバージョン表ならば,次の<表一次子>をTNNとする。 

TN FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMP  

b) そうでなければ,TNをTNNとする。 

17) 参照表をUとする。Uの<表名>をUNとする。 

場合: 

a) Uがシステムバージョン表ならば,次の<表一次子>をUNNとする。 

UN FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMP  

b) そうでなければ,UNをUNNとする。 

18) <被参照列リスト>をUCLとする。暗に想定されるか又は陽に指定される<被参照列リスト>をTCL

とする。 

a) 場合: 

i) 

<参照PERIOD指定> RPCが指定されるならば,次による。 

1) <被参照表及び列>に直に含まれる<被参照PERIOD指定>をRPPとする。 

2) RPCに含まれる<適用業務時刻期間名>をCATPNとする。 

3) RPPに含まれる<適用業務時刻期間名>をPATPNとする。 

4) Tの表記述子は,PATPN期間記述子を含まなければならない。 

5) Uの表記述子は,CATPN期間記述子を含まなければならない。 

6) 被参照列を識別する<一意列リスト>をもつ<一意性制約定義>を記述する表制約記述子は,

PATPNを含まなければならない。 

505 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7) TのPATPN期間開始列をTSTARTCOLとする。TのPATPN期間終了列をTENDCOLとす

る。TSTARTCOLの宣言型をTDTとする。UのCATPN期間開始列をUSTARTCOLとする。

UのCATPN期間終了列をUENDCOLとする。USTARTCOLの宣言型をUDTとする。 

8) TDTをTYPE1として,UDTをTYPE2として,“9.20 データ型の同一性”の構文規則を適用

する。 

9) 次の<表副問合せ>をTTSとする。 

 ( SELECT TCL, TIMEPOINT1 

   FROM TNN AS Y, 

       UNNEST(EXPAND (TSTARTCOL, TENDCOL)) AS X(TIMEPOINT1) ) 

ここで,EXPANDは,TSTARTCOLの値以上で,かつ,TENDCOLの値未満のTDTの全ての

値から成るSET(TDT) 型の値を戻すSQL呼出し関数の<ルーチン名>とし,TIMEPOINT1は,

Tのどの列の<列名>とも等価でない<識別子>とする。 

注記352 上記のSQL呼出し関数の呼出しは,この規格での定義のためにだけ用いる。 

10) 次の<導出表>をUNNNとする。 

( SELECT Z.*, TIMEPOINT2 

   FROM UNN AS Z, 

       UNNEST(EXPAND (USTARTCOL, UENDCOL)) AS X(TIMEPOINT2) 

) AS Y 

ここで,EXPANDは,USTARTCOLの値以上で,かつ,UENDCOLの値未満のUDTの全て

の値から成るSET(UDT) 型の値を戻すSQL呼出し関数の<ルーチン名>とし,TIMEPOINT2

は,Uのどの列の<列名>とも等価でない<識別子>とする。 

注記353 上記のSQL呼出し関数の呼出しは,この規格での定義のためにだけ用いる。 

11) 次の<列名リスト>をUCLLとする。 

 UCL, TIMEPOINT2 

ii) そうでなければ,次による。 

1) 次の<表副問合せ>をTTSとする。 

 ( SELECT TCL FROM TNN ) 

2) 次の<導出表>をUNNNとする。 

( SELECT Z.*, FROM UNN AS Z) AS Y 

3) 次の<列名リスト>をUCLLとする。 

 UCL 

b) 次の<MATCH述語>をMPとする。 

場合: 

i) 

SIMPLEが指定されるか又は暗に想定されるならば,次の<MATCH述語>。 

UCLL MATCH SIMPLE TTS  

ii) PARTIALが指定されるならば,次の<MATCH述語>。 

UCLL MATCH PARTIAL TTS  

iii) FULLが指定されるならば,次の<MATCH述語>。 

UCLL MATCH FULL TTS  

c) 次の<スカラ副問合せ>をSCとする。 

506 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

 ( SELECT EVERY ( MP ) 

   FROM UNNN ) 

注記354 これは,宣言型BOOLEANの<スカラ副問合せ>である。 

アクセス規則 

1) Tの所有者に適用可能な権限は,各被参照列に関するREFERENCESを含まなければならない。 

一般規則 

1) <参照制約定義>は,参照制約を定義する。 

2) <参照制約定義>を含む<表制約定義>の実行の結果として作成される表制約記述子に含まれる適用

可能な<探索条件>は,SCとする。この記述子は,付加的に次の項目を含む。 

a) 処理系定義の順序で,<参照列リスト>中で指定される参照列の名前のリスト。 

b) <被参照表及び列>中で指定される被参照表の名前。 

c) 各要素が,参照列の名前のリスト中の,それに対応する参照列の名前の位置と同じ位置になるよ

うに順序付けられた,<被参照表及び列>中で指定される被参照列の名前のリスト。 

d) <参照PERIOD指定>が指定されるならば,参照期間の名前としてCATPN。 

e) <被参照PERIOD指定>が指定されるならば,被参照期間の名前としてPATPN。 

f) 

陽に指定されるか又は暗に想定される<一致型>。 

g) 陽に指定されるか又は暗に想定される<削除規則>,及び陽に指定されるか又は暗に想定される<

更新規則>から成る<参照被トリガ動作>。 

適合性規則 

1) 機能T191“参照動作RESTRICT”なしでは,適合するSQL言語は,RESTRICTを含む<参照動作>

を含んではならない。 

2) 機能F741“参照MATCH型”なしでは,適合するSQL言語は,MATCHを含む<参照指定>を含んで

はならない。 

3) 機能F191“参照削除動作”なしでは,適合するSQL言語は,<削除規則>を含んではならない。 

4) 機能F701“参照更新動作”なしでは,適合するSQL言語は,<更新規則>を含んではならない。 

5) 機能T201“参照制約のための比較可能なデータ型”なしでは,適合するSQL言語は,各参照列の

データ型が,対応している被参照列のデータ型と同じでない<参照列リスト>を含んではならない。 

注記355 “9.12 グループ化操作”の適合性規則も適用する。 

6) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<参照PERIOD指定>を含んで

はならない。 

7) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<被参照PERIOD指定>を含ん

ではならない。 

11.9 <検査制約定義> 

この細分箇条は,ISO/IEC 9075-4の“9.6 <検査制約定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.5 <検査制約定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.2 <検査制約定義>”によって修正される。 

機能 

<検査制約定義> (<check constraint definition>) は,SQLデータに対する条件を指定する。 

形式 

14 <検査制約定義> ::= 

507 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  CHECK <左括弧> <探索条件> <右括弧> 

構文規則 

1) 

04 <探索条件>は,<ホストパラメタ指定>,<SQLパラメタ参照>,<動的パラメタ指定>,<埋込み変

数指定>,又はシステム時刻期間開始列若しくはシステム時刻期間終了列を参照する<列参照>を含

んではならない。 

2) <探索条件>は,<問合せ式>に含まれない<集合関数指定>を含んではならない。 

3) <検査制約定義>が<表定義>又は<表変更文>に含まれるならば,それを含む<表定義>又は<表変更文

>によって識別される表をTとする。 

場合: 

a) Tが永続実表であるか,又は<検査制約定義>が<定義域定義>若しくは<定義域変更文>に含まれる

ならば,<探索条件>に一般に含まれるどの<表参照>も,一時表を参照してはならない。 

b) Tが大域一時表ならば,<探索条件>に一般に含まれるどの<表参照>も,大域一時表以外の表を参

照してはならない。 

c) Tが作成局所一時表ならば,<探索条件>に一般に含まれるどの<表参照>も,大域一時表又は作成

局所一時表のいずれか以外の表を参照してはならない。 

d) Tが宣言局所一時表ならば,<探索条件>に一般に含まれるどの<表参照>も,永続実表を参照して

はならない。 

4) 一時表を定義し,かつ,ON COMMIT PRESERVE ROWSを指定する<表定義>か,又はON COMMIT 

PRESERVE ROWSを指定する<一時表宣言>に,<検査制約定義>が含まれるならば,<探索条件>は,

ON COMMIT DELETE ROWSを指定する<表定義>又は<一時表宣言>によって定義される一時表へ

の参照を含んではならない。 

5) <探索条件>は,回顧決定的である<ブール値式>を単純に含まなければならない。 

注記356 “回顧決定的”は,“6.35 <ブール値式>”で定義している。 

6) <探索条件>は,SQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチンをもつ<ル

ーチン呼出し>を一般に含んではならない。 

7) <探索条件>は,SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出

し>を一般に含んではならない。 

8) Tの<表名>をTNとする。 

場合: 

a) Tがシステムバージョン表ならば,次の<表一次子>をTNNとする。 

TN FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMP  

b) そうでなければ,TNをTNNとする。 

9) <検査制約定義>に直に含まれる<探索条件>をSCCとする。次の<スカラ副問合せ>をSCとする。 

 ( SELECT EVERY ( SCC ) 

   FROM TNN ) 

注記357 これは,宣言型BOOLEANの<スカラ副問合せ>である。 

アクセス規則 

なし。 

一般規則 

1) <検査制約定義>は,検査制約を定義する。 

508 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 情報スキーマ中で<探索条件>の文字表現を切捨てなしで表現できないならば,終了条件:警告 

(warning) − 情報スキーマに対して探索条件が長すぎる (search condition too long for information 

schema) が引き起こされる。 

注記358 情報スキーマは,[ISO9075-11] で定義している。 

3) <検査制約定義>を含む<表制約定義>の実行の結果として作成される表制約記述子に含まれる適用

可能な<探索条件>は,SCとする。 

適合性規則 

1) 機能F671“CHECK制約中の副問合せ”なしでは,適合するSQL言語は,<問合せ式>を含む<検査

制約定義>に含まれる<探索条件>を含んではならない。 

2) 機能F672“回顧検査制約”なしでは,適合するSQL言語は,CURRENT̲DATE,

CURRENT̲TIMESTAMP又はLOCALTIMESTAMPを一般に含む<検査制約定義>を含んではならな

い。 

3) 機能F673“CHECK制約中のSQLデータを読むルーチン呼出し”なしでは,適合するSQL言語は,

SQLデータを潜在的に読むSQLルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含

む<探索条件>を含む<検査制約定義>を含んではならない。 

11.10 

<表変更文> 

機能 

<表変更文> (<alter table statement>) は,表の定義を変更する。 

形式 

<表変更文> ::= 

  ALTER TABLE <表名> <表変更動作> 

<表変更動作> ::= 

  <列定義追加> 

| <列定義変更> 

| <列定義削除> 

| <表制約定義追加> 

| <表制約定義変更> 

| <表制約定義削除> 

| <表期間定義追加> 

| <表期間定義削除> 

| <SYSTEM VERSIONING句追加> 

| <SYSTEM VERSIONING句削除> 

構文規則 

1) <表名>によって識別される表をTとする。 

2) <表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Tの

記述子を含んでいなければならない。 

3) <表名>の有効範囲は,<表変更文>全体とする。 

4) Tは,実表でなければならない。 

5) Tは,宣言局所一時表であってはならない。 

アクセス規則 

509 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 与えられた認可識別子は,<表名>によって識別される表の<スキーマ名>によって識別されるスキー

マを所有する<認可識別子>を含まなければならない。 

一般規則 

1) Tの実表記述子は,<表変更動作>によって指定されるとおりに修正される。 

2) <列定義追加>又は<列定義削除>が指定されるならば,Tの行型RTは,対(<フィールド名>,<デー

タ型>)の集合とする。ここで,<フィールド名>は,Tの列Cの名前とし,<データ型>は,Cの宣

言型とする。この対の集合は,T中での列の順序位置の順序で,Tの各列に対して一つの対を含む。 

適合性規則 

なし。 

11.11 

<列定義追加> 

機能 

<列定義追加> (<add column definition>) は,表に列を追加する。 

形式 

<列定義追加> ::= 

  ADD [ COLUMN ] <列定義> 

構文規則 

1) <列定義追加>を含む<表変更文>に直に含まれる<表名>によって識別される表をTとする。 

2) Tは,参照可能表又はシステムバージョン表であってはならない。 

3) <列定義>が<識別列指定>を含むならば,Tの表記述子は,識別列の列記述子を含んではならない。 

4) 期間名がATPNである期間記述子をTの表記述子が含むならば,<列定義>に直に含まれる<列名>

は,ATPNと等価であってはならない。 

アクセス規則 

なし。 

一般規則 

1) <列定義>によって定義される列がTに追加される。 

2) Tに追加される列をCとする。 

場合: 

a) Cが生成列ならば,それを含む<表変更文>に直に含まれる<表名>をTNとし,<列定義>に直に含

まれる<列名>をCNとし,Cの列記述子に含まれる生成式をGEとする。これ以上の構文規則又

はアクセス規則の検査なしで,次の<UPDATE文:探索>が実行される。 

UPDATE TN SET CN = GE 

b) そうでなければ,Cは,実列とする。 

場合: 

i) 

Cが識別列ならば,T中の各行に対して,Cに対応する格納場所をCSとする。Cの列記述子に

含まれる順序数生成子記述子をSEQUENCEとして,“9.25 順序数生成子の次値の生成”の一般

規則を適用する。これらの一般規則の適用によって戻されるRESULTをNVとする。 

場合: 

1) Cの宣言型が個別型DISTならば,DIST ( NV ) をCNVとする。 

2) そうでなければ,NVをCNVとする。 

CSをTARGETとして,CNVをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

510 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,C中のどの値も,Cに対する既定値とする。 

注記359 列の既定値は,“11.5 <DEFAULT句>”で定義している。 

注記360 表への列の追加は,ビュー記述子に含まれる既存の<問合せ式>,トリガ記述子に含まれ

る<被トリガ動作>,又は制約記述子に含まれる<探索条件>にどんな効果も与えない。な

ぜならば,これらの記述子要素中の暗に想定される列参照は,“7.12 <問合せ指定>”の構

文規則で,陽に指定される列参照によって構文上置き換えられるからである。また,(こ

のことに反する一般規則がないことから)含意として,列参照の意味は,その列参照を

含む<SQLスキーマ文>の起動の後の列の追加によって決してそ(遡)及変更されること

はない。 

3) T,及びSELECT,UPDATE,INSERT又はREFERENCESの権限を指定するどの表権限記述子に対

しても,T,同じ動作,権限付与者及び権限受領者並びに同じ権限付与可能性を指定し,かつ,<列

定義>の<列名>を指定する新しい列権限記述子が作成される。 

4) 他の全ての点において,<表変更文>中の<列定義>の指定は,Tの<表定義>中の<列定義>の指定がも

つであろう効果と同じ効果をもつ。 

注記361 具体的には,“11.4 <列定義>”の一般規則で規定するとおり,Tの次数は,1増加し,そ

の列の順序位置は,Tの新しい次数と等しい。 

適合性規則 

なし。 

11.12 

<列定義変更> 

機能 

<列定義変更> (<alter column definition>) は,列及びその定義を変更する。 

形式 

<列定義変更> ::= 

  ALTER [ COLUMN ] <列名> <列変更動作> 

<列変更動作> ::= 

  <列DEFAULT句設定> 

| <列DEFAULT句削除> 

| <列NOT NULL句設定> 

| <列NOT NULL句削除> 

| <列SCOPE句追加> 

| <列SCOPE句削除> 

| <列データ型句変更> 

| <識別列指定変更> 

| <IDENTITY特性句削除> 

| <列生成式句削除> 

構文規則 

1) <列定義変更>を含む<表変更文>中で識別される表をTとする。 

2) Tは,システムバージョン表であってはならない。 

3) <列名>によって識別される列をCとする。 

4) Cは,Tの列でなければならない。 

511 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) CがTの自己参照列か又はTの生成列ならば,<列変更動作>は,<列SCOPE句追加>又は<列SCOPE

句削除>を含んではならない。 

6) Cが識別列ならば,<列変更動作>は,<識別列指定変更>又は<IDENTITY特性句削除>のいずれかを

含まなければならない。 

7) <識別列指定変更>又は<IDENTITY特性句削除>が指定されるならば,Cは,識別列でなければなら

ない。 

8) <列生成式句削除>が指定されるならば,Cは,Tの生成列でなければならない。 

9) CがTの生成列,Tのシステム時刻期間開始列又はTのシステム時刻期間終了列ならば,<列変更

動作>は,<列DEFAULT句設定>を含んではならない。 

アクセス規則 

なし。 

一般規則 

1) Cの列記述子が,<列変更動作>によって指定されるとおりに修正される。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列定義変更>を含んではならな

い。 

11.13 

<列DEFAULT句設定> 

機能 

<列DEFAULT句設定> (<set column default clause>) は,列に対するDEFAULT句を設定する。 

形式 

<列DEFAULT句設定> ::= 

  SET <DEFAULT句> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <列DEFAULT句設定>を含む<列定義変更>中の<列名>によって識別される列をCとする。 

2) <DEFAULT句>によって指定される既定値が,Cの列記述子中に格納される。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列DEFAULT句設定>を含んで

はならない。 

11.14 

<列DEFAULT句削除> 

機能 

<列DEFAULT句削除> (<drop column default clause>) は,列からDEFAULT句を削除する。 

形式 

<列DEFAULT句削除> ::= 

  DROP DEFAULT 

構文規則 

1) <列DEFAULT句削除>を含む<列定義変更>中の<列名>によって識別される列をCとする。 

512 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) Cの記述子は,既定値を含まなければならない。 

アクセス規則 

なし。 

一般規則 

1) Cの列記述子から既定値が取り除かれる。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列DEFAULT句削除>を含んで

はならない。 

11.15 

<列NOT NULL句設定> 

機能 

<列NOT NULL句設定> (<set column not null clause>) は,列にNOT NULL制約を追加する。 

形式 

<列NOT NULL句設定> ::= 

  SET NOT NULL 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <列NOT NULL句設定>を含む<列定義変更>中の<列名>によって識別される列をCとする。Cが

NOT NULLとして定義されていることを示す標識をCの列記述子が含まないならば,次による。 

a) <列NOT NULL句設定>を含む<表変更文>中の<表名>をTNとする。 

b) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマをSとす

る。Sに含まれるどの表制約記述子の<制約名>とも等価でない処理系依存の<制約名>をIDCNと

する。 

c) Cの列記述子が次のとおりに修正される。 

i) 

CがNOT NULLとして定義されていることを示す標識が追加される。 

ii) NOT NULLに関連付けられた表制約定義の制約名としてIDCNが追加される。 

d) これ以上のアクセス規則の検査なしで,次の<表変更文>が実行される。 

ALTER TABLE TN ADD CONSTRAINT IDCN CHECK ( CN IS NOT NULL ) 

適合性規則 

1) 機能F383“列NOT NULL句設定”なしでは,適合するSQL言語は,<列NOT NULL句設定>を含

んではならない。 

11.16 

<列NOT NULL句削除> 

機能 

<列NOT NULL句削除> (<drop column not null clause>) は,列のNOT NULL制約を削除する。 

形式 

<列NOT NULL句削除> ::= 

  DROP NOT NULL 

構文規則 

513 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <列NOT NULL句削除>を含む<列定義変更>中の<列名>によって識別される列をCとする。<列NOT 

NULL句削除>を含む<表変更文>中の<表名> TNによって識別される表をTとする。 

2) Cは,Tのシステム時刻期間開始列であってはならず,Tのシステム時刻期間終了列であってもな

らない。 

3) Tの記述子が適用業務時刻期間記述子を含むならば,その記述子に含まれる期間名をATPNとする。

Cは,TのATPN期間開始列であってはならず,TのATPN期間終了列であってもならない。 

アクセス規則 

なし。 

一般規則 

1) CがNOT NULLとして定義されていることを示す標識をCの列記述子が含むならば,次による。 

a) Cの列記述子に含まれるNOT NULLに関連付けられた表制約定義の制約名をACNとする。 

b) Cの列記述子が次のとおりに修正される。 

i) 

CがNOT NULLとして定義されていることを示す標識が取り除かれる。 

ii) NOT NULLに関連付けられた表制約定義の制約名が取り除かれる。 

c) これ以上のアクセス規則の検査なしで,次の<表変更文>が実行される。 

ALTER TABLE TN DROP CONSTRAINT ACN CASCADE 

適合性規則 

1) 機能F383“列NOT NULL句設定”なしでは,適合するSQL言語は,<列NOT NULL句削除>を含

んではならない。 

11.17 

<列SCOPE句追加> 

機能 

<列SCOPE句追加> (<add column scope clause>) は,実表中のデータ型REFの既存の列に対して,空で

ない有効範囲を追加する。 

形式 

<列SCOPE句追加> ::= 

  ADD <SCOPE句> 

構文規則 

1) <列SCOPE句追加>を含む<列定義変更>中の<列名>によって識別される列をCとする。Cの宣言型

は,参照型でなければならない。Cの記述子に含まれる参照型記述子をRTDとする。 

2) <列SCOPE句追加>を含む<表変更文>中の<表名>によって識別される表をTとする。Tが参照可能

表ならば,Cは,Tの原定義列でなければならない。 

3) RTDは,有効範囲を含んではならない。 

4) RTDに含まれる参照型の名前をUDTNとする。 

5) <SCOPE句>に含まれる<表名> STNは,構造型がUDTNである参照可能表を識別しなければならな

い。 

アクセス規則 

なし。 

一般規則 

1) Cの列記述子に含まれる参照型記述子中の有効範囲として,STNが含められる。 

2) Tの真下位表PSTに対して,T中の対応する列がCである列をPSCとする。PSCの列記述子に含

514 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

まれる参照型記述子中の有効範囲として,STNが含められる。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列SCOPE句追加>を含んではな

らない。 

2) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<列SCOPE句追加>を含んではならな

い。 

11.18 

<列SCOPE句削除> 

この細分箇条は,ISO/IEC 9075-4の“9.7 <列SCOPE句削除>”によって修正される。 

機能 

<列SCOPE句削除> (<drop column scope clause>) は,実表中のデータ型REFの既存の列から有効範囲を

削除する。 

形式 

<列SCOPE句削除> ::= 

  DROP SCOPE <削除動作> 

構文規則 

1) <列SCOPE句削除>を含む<列定義変更>中の<列名>によって識別される列をCとする。Cの宣言型

は,有効範囲を含む参照型記述子をもつ参照型でなければならない。 

2) <列SCOPE句削除>を含む<表変更文>中の<表名>によって識別される表をTとする。Tが参照可能

表ならば,Cは,Tの原定義列でなければならない。 

3) C,及びTの全ての真下位表の,上位列がCである列から成る列の集合をSCとする。 

4) 影響を受ける内参照演算 (impacted dereference operation) は,SC中の列を識別する列参照である<参

照値式>をもつ<内参照演算>,SC中の列を識別する列参照である<値式一次子>をもつ<メソッド参

照>,又はSC中の列を識別する列参照である<参照値式>をもつ<参照解決>とする。 

5) RESTRICTが指定されるならば,影響を受ける内参照演算は,次のいずれかに含まれてはならない。 

a) ルーチン記述子のSQLルーチン本体。 

b) ビュー記述子の元の<問合せ式>。 

c) 制約記述子の<探索条件>。 

d) 

04 トリガ記述子の被トリガ動作。 

注記362 CASCADEが指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE

文>によって暗に削除される。 

アクセス規則 

なし。 

一般規則 

1) 

04 影響を受ける内参照演算を含む<SQLルーチン本体>を含むルーチン記述子をもつどのSQL呼出

しルーチンRに対しても,Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次

の<ルーチン削除文>がどのRに対しても実効的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

2) 影響を受ける内参照演算を含む元の<問合せ式>を含むビュー記述子をもつどのビューVに対しても,

Vの<表名>をVNとする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>がどのVに

515 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

対しても実効的に実行される。 

DROP VIEW VN CASCADE 

3) 影響を受ける内参照演算を含む<探索条件>を含む表明記述子をもつどの表明Aに対しても,Aの<

制約名>をANとする。これ以上のアクセス規則の検査なしで,次の<表明削除文>がどのAに対し

ても実効的に実行される。 

DROP ASSERTION AN CASCADE 

4) 

04 影響を受ける内参照演算を含む<探索条件>を含む表検査制約記述子をもつどの表検査制約CCに

対しても,CCの<制約名>をCNとし,CCの記述子を含む記述子をもつ表の<表名>をTNとする。

これ以上のアクセス規則の検査なしで,次の<表変更文>がどのCCに対しても実効的に実行される。 

ALTER TABLE TN DROP CONSTRAINT CN CASCADE 

5) SC中の全ての列の列記述子に含まれる参照型記述子に含まれる有効範囲が空にされる。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列SCOPE句削除>を含んではな

らない。 

2) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<列SCOPE句削除>を含んではならな

い。 

11.19 

<列データ型句変更> 

この細分箇条は,ISO/IEC 9075-14の“12.3 <列データ型句変更>”によって修正される。 

機能 

<列データ型句変更> (<alter column data type clause>) は,列の宣言型を変更する。 

形式 

<列データ型句変更> ::= 

  SET DATA TYPE <データ型> 

構文規則 

1) <列データ型句変更>を含む<列定義変更>中の<列名>によって識別される列をCとする。 

2) <列データ型句変更>を含む<表変更文>中の<表名>によって識別される表をTとする。 

3) Cは,Tの自己参照列であってはならない。 

4) Tの表記述子が,システム時刻期間記述子を含むならば,Cは,Tのシステム時刻期間開始列又はシ

ステム時刻期間終了列であってはならない。 

5) Tの表記述子が,ピリオド名としてATPNを含む期間記述子を含むならば,Cは,TのATPN期間

開始列又はATPN期間終了列であってはならない。 

6) Tの表記述子に含まれ,C以外の列への参照を含まない表制約記述子以外の,どの制約記述子の<探

索条件>中でも,Cが参照されていてはならない。 

7) どのトリガ記述子の,陽に指定されるトリガ列リスト又は被トリガ動作列集合のいずれかの中でも,

Cが参照されていてはならない。 

8) どのルーチン記述子のSQLルーチン本体中でも,Cが参照されていてはならない。 

9) どのビュー記述子の元の<問合せ式>中でも,Cが参照されていてはならない。 

10) どの列記述子の生成式中でも,Cが参照されていてはならない。 

11) <データ型>によって指定されるデータ型をDとする。 

12) Cの宣言型をDTCとする。 

516 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

13) Dは,既定義型でなければならない。 

14) DTCは,既定義型でなければならない。 

15) 場合: 

a) DTCが文字列型ならば,次による。 

i) 

Dは,文字列型でなければならない。 

ii) Dの長さ又は最大長をLDとする。 

iii) DTCの長さ又は最大長をLDTCとする。 

iv) LDは,LDTC以上でなければならない。 

b) DTCが2進オクテット列型ならば,次による。 

i) 

Dは,2進オクテット列型でなければならない。 

ii) Dの長さ又は最大長をLDとする。 

iii) DTCの長さ又は最大長をLDTCとする。 

iv) LDは,LDTC以上でなければならない。 

c) DTCが真数型ならば,次による。 

i) 

Dは,真数型でなければならない。 

ii) Dの精度及び位取りを,それぞれ,PD及びSDとする。 

iii) DTCの精度及び位取りを,それぞれ,PDTC及びSDTCとする。 

iv) PDは,PDTC以上でなければならない。 

v) SDは,SDTC以上でなければならない。 

vi) (PD-SD) は,(PDTC-SDTC) 以上でなければならない。 

d) DTCが概数型ならば,次による。 

i) 

Dは,概数型でなければならない。 

ii) Dの精度をPDとする。 

iii) DTCの精度をPDTCとする。 

iv) PDは,PDTC以上でなければならない。 

e) DTCがDATEならば,Dは,DATEでなければならない。 

f) DTCが時刻帯付き時刻型又は時刻帯なし時刻型ならば,Dは,それぞれ,時刻帯付き時刻型又は

時刻帯なし時刻型でなければならない。 

i) 

Dの<時刻小数秒精度>の値をPDとする。 

ii) DTCの<時刻小数秒精度>の値をPDTCとする。 

iii) PDは,PDTC以上でなければならない。 

g) DTCが時刻帯付き時刻印型又は時刻帯なし時刻印型ならば,Dは,それぞれ,時刻帯付き時刻印

型又は時刻帯なし時刻印型でなければならない。 

i) 

Dの<時刻小数秒精度>の値をPDとする。 

ii) DTCの<時刻小数秒精度>の値をPDTCとする。 

iii) PDは,PDTC以上でなければならない。 

h) DTCが年月時間隔型ならば,Dは,年月時間隔型でなければならない。 

i) 

DTCが<開始フィールド>及び<終了フィールド>を指定するならば,Dは,同じ<開始フィール

ド>及び<終了フィールド>を指定しなければならない。 

ii) DTCが<単一日時フィールド>を指定するならば,Dは,同じ<単一日時フィールド>を指定しな

517 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ければならない。 

iii) Dの陽に指定されるか又は暗に想定される<時間隔先行フィールド精度>は,DTCの陽に指定さ

れるか又は暗に想定される<時間隔先行フィールド精度>以上でなければならない。 

i) 

DTCが日時刻時間隔型ならば,Dは,日時刻時間隔型でなければならない。 

i) 

DTCが<開始フィールド>及び<終了フィールド>を指定するならば,Dは,同じ<開始フィール

ド>及び<終了フィールド>を指定しなければならない。 

ii) DTCが<単一日時フィールド>を指定するならば,Dは,同じ<単一日時フィールド>を指定しな

ければならない。 

iii) Dの陽に指定されるか又は暗に想定される<時間隔先行フィールド精度>は,DTCの陽に指定さ

れるか又は暗に想定される<時間隔先行フィールド精度>以上でなければならない。 

iv) DTCが陽に指定されるか又は暗に想定される<時間隔小数秒精度> PDTCを指定するならば,D

は,PDTC以上の陽に指定されるか又は暗に想定される<時間隔小数秒精度>を指定しなければ

ならない。 

j) 

14 DTCがBOOLEANならば,Dは,BOOLEANでなければならない。 

k) そうでなければ,Dは,DTCでなければならない。 

アクセス規則 

なし。 

一般規則 

1) Dを記述するデータ型記述子で既存のデータ型記述子を置き換えることによって,Cの列記述子が

修正される。 

適合性規則 

1) 機能F382“列データ型変更”なしでは,適合するSQL言語は,<列データ型句変更>を含んではな

らない。 

11.20 

<識別列指定変更> 

機能 

<識別列指定変更> (<alter identity column specification>) は,識別列に対して指定された選択肢を変更する。 

形式 

<識別列指定変更> ::= 

  <識別列生成句設定> [ <識別列選択肢変更>... ] 

| <識別列選択肢変更>... 

<識別列生成句設定> ::= 

  SET GENERATED { ALWAYS | BY DEFAULT } 

<識別列選択肢変更> ::= 

  <順序数生成子変更RESTART選択肢> 

| SET <基本順序数生成子選択肢> 

構文規則 

1) <識別列選択肢変更>のうちの少なくとも一つの実現値が指定されるならば,次による。 

a) <識別列指定変更>を含む<列定義変更>中の<列名>によって識別される列記述子に含まれる順序

数生成子記述子をSEQとする。 

b) キーワードSETの各実現値を単一の空白文字に置き換えて,全ての<識別列指定変更>を連結する

518 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ことによって得られる,<順序数生成子変更選択肢の並び>の形式に適合するような文字列をOPT

とする。 

c) OPTをOPTIONSとして,SEQをSEQUENCEとして,“9.27 順序数生成子の変更”の構文規則

を適用する。 

アクセス規則 

なし。 

一般規則 

1) 少なくとも一つの<識別列選択肢変更>が指定されるならば,OPTをOPTIONSとして,SEQを

SEQUENCEとして,“9.27 順序数生成子の変更”の一般規則を適用する。 

2) <識別列生成句設定>が指定されるならば,次による。 

a) <識別列指定変更>を含む<列定義変更>中の<列名>によって識別される列をCとする。 

b) 場合: 

i) 

ALWAYSが指定されるならば,値が常時生成されることを示すように,Cの列記述子が修正さ

れる。 

ii) BY DEFAULTが指定されるならば,値が既定生成されることを示すように,Cの列記述子が修

正される。 

適合性規則 

1) 機能T174“識別列”なしでは,適合するSQL言語中で,<列定義変更>は,<識別列指定変更>を含

んではならない。 

2) 機能T178“識別列:単純再開始選択肢”なしでは,適合するSQL言語中で,<識別列指定変更>に

含まれる<順序数生成子変更RESTART選択肢>は,<順序数生成子再開始値>を含まなければならな

い。 

3) 機能F386“識別列生成句設定”なしでは,適合するSQL言語は,<識別列生成句設定>を含んでは

ならない。 

11.21 

<IDENTITY特性句削除> 

機能 

<IDENTITY特性句削除> (<drop identity property clause>) は,識別列を識別列でない列に変換する。 

形式 

<IDENTITY特性句削除> ::= 

  DROP IDENTITY 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <IDENTITY特性句削除>を含む<列定義変更>中の<列名>によって識別される列をCとする。 

2) Cの列記述子が次のとおりに修正される。 

a) Cが識別列であることを示す標識が取り除かれる。 

b) 値が常時生成されることを示す標識があるならば,それが取り除かれる。 

c) 値が既定生成されることを示す標識があるならば,それが取り除かれる。 

519 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) Cの列記述子に含まれる順序数生成子SGが取り除かれる。 

3) SGが破壊される。 

適合性規則 

1) 機能F384“IDENTITY特性句削除”なしでは,適合するSQL言語は,<IDENTITY特性句削除>を

含んではならない。 

11.22 

<列生成式句削除> 

機能 

<列生成式句削除> (<drop column generation expression clause>) は,生成列を生成列でない列に変換する。 

形式 

<列生成式句削除> ::= 

  DROP EXPRESSION 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <列生成式句削除>を含む<列定義変更>中の<列名>によって識別される列をCとする。 

2) Cの列記述子が次のとおりに修正される。 

a) Cの生成式が取り除かれる。 

b) 値が常時生成されること(“ALWAYS”)を示す標識が取り除かれる。 

c) 列が決して生成されないこと(“NEVER”)を示す標識が追加される。 

適合性規則 

1) 機能F385“列生成式句削除”なしでは,適合するSQL言語は,<列生成式句削除>を含んではなら

ない。 

11.23 

<列定義削除> 

この細分箇条は,ISO/IEC 9075-4の“9.8 <列定義削除>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.6 <列定義削除>”によって修正される。 

機能 

<列定義削除> (<drop column definition>) は,実表の列を破壊する。 

形式 

<列定義削除> ::= 

  DROP [ COLUMN ] <列名> <削除動作> 

構文規則 

1) <列定義削除>を含む<表変更文>中の<表名>によって識別される表をTとし,Tの名前をTNとす

る。 

2) <列名> CNによって識別される列をCとする。 

3) Tは,参照可能表又はシステムバージョン表であってはならない。 

4) Cは,Tの列でなければならず,Cは,Tの唯一の列であってはならない。 

5) システム時刻期間記述子をTの表記述子が含むならば,Cは,Tのシステム時刻期間開始列又はT

のシステム時刻期間終了列であってはならない。 

520 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) 期間名としてATPNを含む期間記述子をTの表記述子が含むならば,Cは,TのATPN期間開始列

又はTのATPN期間終了列であってはならない。 

7) RESTRICTが指定されるならば,次のいずれかの中でCが参照されていてはならない。 

a) ビュー記述子の元の<問合せ式>。 

b) 他のどの列への参照も含まず,かつ,Tの表記述子に含まれる表制約記述子以外の制約記述子の

<探索条件>。 

c) ルーチン記述子のSQLルーチン本体。 

d) ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

e) 

04 トリガ記述子の,陽に指定されるトリガ列リスト又は被トリガ動作列集合のいずれか。 

f) 

列記述子の生成式。 

注記363 CASCADEを指定しない<列定義削除>は,CORRESPONDING,NATURAL,(<EXIST述

語>に含まれる場合を除く)SELECT *,複数列<一意性制約定義>,又は<被参照表及び列

>中に<被参照列リスト>がないREFERENCESの使用の結果としてその列への参照が存

在するならば,失敗する。また,複数列<一意性制約定義>によって参照される列を参照

する,<削除動作>がRESTRICTの<列定義削除>は,失敗するが,単一列<一意性制約定

義>によって参照される列の削除は,成功することに注意する。 

注記364 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は

<REVOKE文>の実行によって暗に削除される。 

注記365 CNは,トリガ記述子の暗に想定されるトリガ列リストに含まれていてもよい。 

アクセス規則 

なし。 

一般規則 

1) CNを含む陽に指定されるトリガ列リスト又は被トリガ動作列集合をもつトリガ記述子のトリガ名

をTRとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行される。 

DROP TRIGGER TR 

2) 

09 Tを所有する<認可識別子>をAとする。“̲SYSTEM”の現行認可識別子で,かつ,これ以上のア

クセス規則の検査なしで,次の<REVOKE文>が実効的に実行される。 

REVOKE INSERT(CN), UPDATE(CN), 

SELECT(CN), 

REFERENCES(CN) ON TABLE 

TN FROM A CASCADE 

3) Cを参照する<列参照>を記述子中の生成式が含むTの生成列をGCとする。これ以上のアクセス規

則の検査なしで,次の<表変更文>が実効的に実行される。 

ALTER TABLE T DROP COLUMN GC CASCADE 

4) 列が定義域を基にしないならば,その列のデータ型記述子が破壊される。そうでなければ,Cを参

照する全ての定義域制約用途が破壊される。 

5) Cに関連付けられたデータが破壊される。 

6) Tの記述子からCの記述子が取り除かれる。 

7) Cの記述子が破壊される。 

521 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

8) Tの次数が1減らされる。Cの順序位置より大きい順序位置をもつ全ての列の順序位置が1減らさ

れる。 

適合性規則 

1) 機能F033“ALTER TABLE文:DROP COLUMN句”なしでは,適合するSQL言語は,<列定義削除

>を含んではならない。 

11.24 

<表制約定義追加> 

機能 

<表制約定義追加> (<add table constraint definition>) は,表に制約を追加する。 

形式 

<表制約定義追加> ::= 

  ADD <表制約定義> 

構文規則 

1) <表制約定義追加>を含む<表変更文>に含まれる<表名>によって識別される表をTとする。 

2) PRIMARY KEYが指定されるならば,Tは,真上位表をもってはならない。 

アクセス規則 

なし。 

一般規則 

1) <表制約定義>の表制約記述子は,Tの表記述子に含まれる。 

2) Tに追加される表制約をTCとする。TCによって,ある列CNがナル可能でないことが分かり,か

つ,他のどの制約によっても,CNがナル可能でないことが分からないならば,CNの列記述子のナ

ル可能性特性は,ナル可能でないことが分かるに変更される。 

注記366 列のナル可能性特性は,“4.13 列,フィールド及び属性”で定義している。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<表制約定義追加>を含んではな

らない。 

11.25 

<表制約定義変更> 

機能 

<表制約定義変更> (<alter table constraint definition>) は,表制約の定義を変更する。 

形式 

<表制約定義変更> ::= 

  ALTER CONSTRAINT <制約名> <制約強制> 

構文規則 

1) <表制約定義変更>を含む<表変更文>中の<表名>によって識別される表をTとする。 

2) <制約名>は,Tの表制約TCを識別しなければならない。 

3) TCは,一意性制約を識別してはならない。 

アクセス規則 

なし。 

一般規則 

1) TCの表制約記述子が次のとおりに修正される。 

場合: 

522 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) NOT ENFORCEDが指定されるならば,制約が強制か又は強制でないかを示す標識が,制約が強

制でないことを示す標識に置き換えられる。 

b) そうでなければ,制約が強制か又は強制でないかを示す標識が,制約が強制であることを示す標

識に置き換えられる。 

適合性規則 

1) 機能F492“選択可能な表制約強制”なしでは,適合するSQL言語は,<制約強制>を含む<表制約定

義変更>を含んではならない。 

11.26 

<表制約定義削除> 

この細分箇条は,ISO/IEC 9075-4の“9.9 <表制約定義削除>”によって修正される。 

機能 

<表制約定義削除> (<drop table constraint definition>) は,表に関する制約を破壊する。 

形式 

<表制約定義削除> ::= 

  DROP CONSTRAINT <制約名> <削除動作> 

構文規則 

1) <表制約定義削除>を含む<表変更文>中の<表名>によって識別される表をTとする。 

2) <制約名>は,Tの表制約TCを識別しなければならない。 

3) TCが一意性制約であり,参照制約RCの被参照表がTで,かつ,RCの被参照列がTCの一意列な

らば,RCは,TCに依存している (dependent on) という。 

4) 暗に想定されるか又は陽に指定される<GROUP BY句>を含む<問合せ指定>で,<集合関数指定>の

集約化引数に含まれない列Cへの列参照を<選択リスト>中に含む<問合せ指定>をQSとし,QSの

グループ化列の集合をGとする。G 

CがQS中の知られている関数従属性であることを推論するの

にTCが必要ならば,QSは,TCに依存している という。 

5) TCに依存している<問合せ指定>を含むビューをV1とする。V1は,TCに依存している という。 

6) TCに依存している<問合せ指定>を<SQLルーチン本体>が含むSQLルーチンをR1とする。R1は,

TCに依存している という。 

7) TCに依存している<問合せ指定>を<探索条件>が含む制約又は表明をC1とする。C1は,TCに依存

している という。 

8) TCに依存している<問合せ指定>を被トリガ動作が含むトリガをTR1とする。TR1は,TCに依存し

ている という。 

9) Tが導出自己参照列をもつ参照可能表ならば,TCは,被参照型がTの構造型である参照型の導出表

現の属性のリスト中の属性に対応する一意列をもつ一意性制約であってはならない。 

10) Tの記述子が適用業務時刻期間記述子ATPDを含むならば,次による。 

a) TCは,ATPDに含まれる期間制約の名前であってはならない。 

b) ATPDに含まれる<適用業務時刻期間名>をATPNとする。TのATPN開始列又はTのATPN終了

列のナル可能性特性の,ナル可能でないことが分かるから潜在的にナル可能への変更を,TCの削

除が引き起こしてはならない。 

11) TCは,Tの自己参照列である一意列をもつ一意性制約であってはならない。 

12) RESTRICTが指定されるならば,次による。 

a) どの表制約も,TCに依存していてはならない。 

523 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) TCの<制約名>は,どのルーチン記述子のSQLルーチン本体にも含まれてはならない。 

c) どのビューも,TCに依存していてはならない。 

d) どのSQLルーチンも,TCに依存していてはならない。 

e) どの制約又は表明も,TCに依存していてはならない。 

f) 

どのトリガも,TCに依存していてはならない。 

注記367 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は

<REVOKE文>の実行によって暗に削除される。 

アクセス規則 

なし。 

一般規則 

1) TCに依存している表制約の<制約名>をTCN2とし,TCN2を含む表記述子の<表名>をTN2とする。

これ以上のアクセス規則の検査なしで,次の<表変更文>がどのTCN2及びTN2に対しても実効的に

実行される。 

ALTER TABLE TN2 DROP 

CONSTRAINT TCN2 CASCADE 

2) 

04 TCの<制約名>をSQLルーチン本体に含むルーチン記述子をもつSQL呼出しルーチン,又はTC

に依存しているSQL呼出しルーチンをRとする。Rの<特定名>をSNとする。これ以上のアクセス

規則の検査なしで,次の<ルーチン削除文>がどのRに対しても実効的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

3) TCに依存しているビューVの表名をVNとする。これ以上のアクセス規則の検査なしで,次の<ビ

ュー削除文>がどのVに対しても実効的に実行される。 

DROP VIEW VN CASCADE 

4) TCに依存している表明Aの制約名をANとする。これ以上のアクセス規則の検査なしで,次の<表

明削除文>がどのAに対しても実効的に実行される。 

DROP ASSERTION AN CASCADE 

5) TCに依存しているトリガTRのトリガ名をTRNとする。これ以上のアクセス規則の検査なしで,

次の<トリガ削除文>がどのTRに対しても実効的に実行される。 

DROP TRIGGER TRN CASCADE 

6) Tの記述子からTCの記述子が取り除かれる。 

7) TCによって,ある列COLがナル可能でないことが分かり,かつ,他のどの制約によっても,COL

がナル可能でないことが分からないならば,COLの列記述子のナル可能性特性は,潜在的にナル可

能に変更される。 

注記368 列のナル可能性特性は,“4.13 列,フィールド及び属性”で定義している。 

8) TCの記述子が破壊される。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<表制約定義削除>を含んではな

らない。 

11.27 

<表期間定義追加> 

機能 

524 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<表期間定義追加> (<add table period definition>) は,永続実表にシステム時刻期間又は適用業務時刻期間

を追加する。 

形式 

<表期間定義追加> ::= 

  ADD <表期間定義> [ <システム時刻期間列リスト追加> ] 

<システム時刻期間列リスト追加> ::= 

  ADD [ COLUMN ] <列定義1> ADD [ COLUMN ] <列定義2> 

<列定義1> ::= 

  <列定義> 

<列定義2> ::= 

  <列定義> 

構文規則 

1) <表期間定義追加>を含む<表変更文>に直に含まれる<表名>をTNとする。TNによって識別される

表をTとする。 

2) Tは,永続実表でなければならない。 

3) Tは,参照可能表であってはならない。 

4) <表期間定義>が<システム時刻期間指定>を含むならば,次による。 

a) Tの表記述子がシステム時刻期間記述子を含んでいてはならない。 

b) Tのどの列も,SYSTEM̲TIMEと等価な列名をもっていてはならない。 

c) <システム時刻期間列リスト追加>を指定しなければならない。 

d) <システム時刻期間列リスト追加>は,<システム時刻期間開始列指定>を含むただ一つの<列定義

> CD1,及び<システム時刻期間終了列指定>を含むただ一つの<列定義> CD2を含まなければなら

ない。 

e) <表期間定義>に含まれる<期間開始列名>をSCN1とする。SCN1は,CD1に含まれる<列名>と等

価でなければならない。SCN1によって識別される列は,システム時刻期間開始列とする。 

f) 

<表期間定義>に含まれる<期間終了列名>をSCN2とする。SCN2は,CD2に含まれる<列名>と等

価でなければならない。SCN2によって識別される列は,システム時刻期間終了列とする。 

g) CD1に含まれる<データ型又は定義域名>は,CD2に含まれる<データ型又は定義域名>と等価で

なければならない。 

5) <表期間定義>が<適用業務時刻期間指定> ATPSを含むならば,次による。 

a) ATPSに含まれる<適用業務時刻期間名>をATPNとする。 

b) Tの表記述子がシステム時刻期間記述子以外の期間記述子を含んでいてはならない。 

c) Tのどの列も,ATPNと等価な列名をもっていてはならない。 

d) <システム時刻期間列リスト追加>を指定してはならない。 

e) <表期間定義>に含まれる<期間開始列名>をBCN1とする。Tの表記述子は,列名としてBCN1を

含む列記述子を含まなければならない。BCN1によって識別される列BC1は,ATPN期間開始列

とする。 

f) 

<表期間定義>に含まれる<期間終了列名>をBCN2とする。Tの表記述子は,列名としてBCN2を

含む列記述子を含まなければならない。BCN2によって識別される列BC2は,ATPN期間終了列

とする。 

525 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) BC1の宣言型は,DATE又は時刻印型のいずれかでなければならず,BC2の宣言型と等価でなけ

ればならない。 

h) BC1及びBC2は,ナル可能でないことが分からなければならない。 

i) 

BC1も,BC2も,識別列,生成列,システム時刻期間開始列又はシステム時刻期間終了列であっ

てはならない。 

アクセス規則 

なし。 

一般規則 

1) <表期間定義>が<システム時刻期間指定>を含むならば,次による。 

a) <列定義1>をCD1とする。これ以上のアクセス規則の検査なしで,次の<表変更文>が実行され

る。 

ALTER TABLE TN ADD COLUMN CD1  

b) <列定義2>をCD2とする。これ以上のアクセス規則の検査なしで,次の<表変更文>が実行され

る。 

ALTER TABLE TN ADD COLUMN CD2  

c) CD1によって指定される列をC1とする。CD2によって指定される列をC2とする。C2のデータ

型をDTとする。型DTの処理系定義の値をTTSとする。C1にTTSが設定され,C2にDTによ

って提供される最大の値が設定されるように,各SQL文の最後にTの全ての行が実効的に更新

される。 

注記369 この更新は,新しいトリガ実行文脈も,現行トリガ実行文脈中の新しい状態変更の定

義も作成しない。 

d) <表期間定義>に含まれる<期間開始列名>をSCN1とする。<表期間定義>に含まれる<期間終了列

名>をSCN2とする。期間の名前としてSYSTEM̲TIMEを含み,システム時刻期間開始列の名前

としてSCN1を含み,かつ,システム時刻期間終了列の名前としてSCN2を含む期間記述子を,

Tの表記述子が含むように修正される。 

2) <表期間定義>が<適用業務時刻期間指定>を含むならば,次による。 

a) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマをSとす

る。<表期間定義>に含まれる<期間開始列名>をBCN1とする。<表期間定義>に含まれる<期間終

了列名>をBCN2とする。Sに含まれるどの表制約記述子の<制約名>とも等価でない処理系依存

の<制約名>をIDCNとする。 

b) これ以上のアクセス規則の検査なしで,次の<表変更文>が実行される。 

ALTER TABLE TN ADD CONSTRAINT IDCN CHECK ( BCN1 < BCN2 ) 

c) 期間の名前としてATPNを含み,ATPN期間開始列の名前としてBCN1を含み,かつ,ATPN期

間終了列の名前としてBCN2を含み,かつ,ATPN期間制約名としてIDCNを含む期間記述子を,

Tの表記述子が含むように修正される。 

適合性規則 

1) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,ADD <システム時刻期間指

定>を含んではならない。 

2) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,ADD <適用業務時刻期間指定>

を含んではならない。 

526 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11.28 

<表期間定義削除> 

機能 

<表期間定義削除> (<drop table period definition>) は,永続実表からシステム時刻期間又は適用業務時刻

期間を取り除く。 

形式 

<表期間定義削除> ::= 

  DROP <システム又は適用業務時刻期間指定> <削除動作> 

構文規則 

1) <表期間定義削除>を含む<表変更文>に直に含まれる<表名>をTNとする。TNによって識別される

表をTとする。 

2) <システム又は適用業務時刻期間指定>がPERIOD SYSTEM̲TIMEを指定するならば,次による。 

a) Tは,システムバージョン表であってはならない。 

b) Tの記述子は,システム時刻期間記述子を含まなければならない。 

c) RESTRICTが指定されるならば,Tのシステム時刻期間開始列も,Tのシステム時刻期間終了列

も,次のいずれかの中で参照されていてはならない。 

i) 

ビュー記述子の元の<問合せ式>。 

ii) ルーチン記述子のSQLルーチン本体。 

iii) ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

iv) トリガ記述子の<被トリガ動作>。 

v) 列記述子の生成式。 

注記370 CORRESPONDING,NATURAL又は (<EXISTS述語>に含まれる場合を除く)SELECT 

*の利用の結果として,Tのシステム時刻期間開始列又はTのシステム時刻期間終了列

を参照するならば,CASCADEを指定しない<表期間定義削除>は,失敗する。 

注記371 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則で規定している<列定義削除>の実行によって削除される。 

d) RESTRICTが指定されるならば,TのSYSTEM̲TIME期間が,次のいずれかの中で参照されてい

てはならない。 

i) 

ビュー記述子の元の<問合せ式>。 

ii) 制約記述子の<探索条件>。 

iii) 表明記述子の<探索条件>。 

iv) ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

v) ルーチン記述子のSQLルーチン本体。 

vi) トリガ記述子の<被トリガ動作>。 

vii) 列記述子の生成式。 

注記372 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。 

3) <システム又は適用業務時刻期間指定>が<適用業務時刻期間名> ATPNを指定するならば,次による。 

a) Tの記述子は,ATPN期間記述子を含まなければならない。 

b) RESTRICTが指定されるならば,Tである<相手表>を含み,かつ,ATPNと等価な<適用業務時刻

期間名>を含む<DELETE文:探索>が,次のいずれかの中で参照されていてはならない。 

527 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

ルーチン記述子のSQLルーチン本体。 

ii) トリガ記述子の<被トリガ動作>。 

注記373 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。 

c) RESTRICTが指定されるならば,Tである<相手表>を含み,かつ,ATPNと等価な<適用業務時刻

期間名>を含む<UPDATE文:探索>が,次のいずれかの中で参照されていてはならない。 

i) 

ルーチン記述子のSQLルーチン本体。 

ii) トリガ記述子の<被トリガ動作>。 

注記374 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。 

d) RESTRICTが指定されるならば,ATPNによって識別される期間が,次のいずれかの中で参照さ

れていてはならない。 

i) 

ビュー記述子の元の<問合せ式>。 

ii) 制約記述子の<探索条件>。 

iii) 表明記述子の<探索条件>。 

iv) ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

v) ルーチン記述子のSQLルーチン本体。 

vi) トリガ記述子の<被トリガ動作>。 

vii) 列記述子の生成式。 

注記375 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。 

アクセス規則 

なし。 

一般規則 

1) <システム又は適用業務時刻期間指定>がPERIOD SYSTEM̲TIMEを指定するならば,次による。 

a) Tのシステム時刻期間開始列の<列名>をSCNとする。これ以上のアクセス規則の検査なしで,次

の<表変更文>が実行される。 

ALTER TABLE TN DROP COLUMN SCN CASCADE  

b) Tのシステム時刻期間終了列の<列名>をECNとする。これ以上のアクセス規則の検査なしで,次

の<表変更文>が実行される。 

ALTER TABLE TN DROP COLUMN ECN CASCADE  

c) システム時刻期間記述子がTの表記述子から取り除かれる。 

d) TのSYSTEM̲TIME期間を参照する期間参照をPRとする。 

場合: 

i) 

PRがビュー記述子の元の<問合せ式>に含まれるならば,そのビュー記述子に含まれるビュー

の名前をSONとする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的に

実行される。 

DROP VIEW SON CASCADE  

ii) PRが表明記述子の<探索条件>に含まれるならば,その表明記述子に含まれる制約の名前を

SONとする。これ以上のアクセス規則の検査なしで,次の<表明削除文>が実効的に実行される。 

528 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

DROP ASSERTION SON CASCADE  

iii) PRが表制約記述子SODの<探索条件>に含まれるならば,SODに含まれる制約の名前をSON

とする。SODを含む表記述子に含まれる<表名>をCTNとする。これ以上のアクセス規則の検

査なしで,次の<表変更文>が実効的に実行される。 

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE  

iv) PRがルーチン記述子のSQLルーチン本体に含まれるか,又はルーチン記述子のSQLパラメタ

の<パラメタ既定値>に含まれるならば,そのルーチン記述子に含まれる特定名をSONとする。

これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE  

v) PRがトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ

名をSONとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行

される。 

DROP TRIGGER SON CASCADE  

2) <システム又は適用業務時刻期間指定>が<適用業務時刻期間名> ATPNを指定するならば,次による。 

a) TのATPN期間記述子に含まれるATPN期間制約の名前をIDCNとする。 

b) Tの表記述子からATPN期間記述子が取り除かれる。 

c) これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行される。 

ALTER TABLE TN DROP CONSTRAINT IDCN CASCADE  

d) Tである<相手表>を含み,かつ,ATPNと等価な<適用業務時刻期間名>を含む<DELETE文:探索

>をTPとする。 

i) 

TPがルーチン記述子のSQLルーチン本体に含まれるならば,そのルーチン記述子に含まれる

特定名をSONとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的

に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE  

ii) TPがトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ

名をSONとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行

される。 

DROP TRIGGER SON CASCADE  

e) Tである<相手表>を含み,かつ,ATPNと等価な<適用業務時刻期間名>を含む<UPDATE文:探索

>をTPとする。 

i) 

TPがルーチン記述子のSQLルーチン本体に含まれるならば,そのルーチン記述子に含まれる

特定名をSONとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的

に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE  

ii) TPがトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ

名をSONとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行

される。 

DROP TRIGGER SON CASCADE  

f) TのATPN期間を参照する期間参照をPRとする。 

場合: 

529 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

PRがビュー記述子の元の<問合せ式>に含まれるならば,そのビュー記述子に含まれるビュー

の名前をSONとする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的に

実行される。 

DROP VIEW SON CASCADE  

ii) PRが表明記述子の<探索条件>に含まれるならば,その表明記述子に含まれる制約の名前を

SONとする。これ以上のアクセス規則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION SON CASCADE  

iii) PRが表制約記述子SODの<探索条件>に含まれるならば,SODに含まれる制約の名前をSON

とする。SODを含む表記述子に含まれる<表名>をCTNとする。これ以上のアクセス規則の検

査なしで,次の<表変更文>が実効的に実行される。 

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE  

iv) PRがルーチン記述子のSQLルーチン本体に含まれるか,又はルーチン記述子のSQLパラメタ

の<パラメタ既定値>に含まれるならば,そのルーチン記述子に含まれる特定名をSONとする。

これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE  

v) PRがトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ

名をSONとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行

される。 

DROP TRIGGER SON CASCADE  

適合性規則 

1) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,DROP PERIOD SYSTEM̲TIME

を含んではならない。 

2) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<適用業務時刻期間名>を含む

<表期間定義削除>を含んではならない。 

11.29 

<SYSTEM VERSIONING句追加> 

機能 

<SYSTEM VERSIONING句追加> (<add system versioning clause>) は,通常永続実表をシステムバージョ

ン表に変更する。 

形式 

<SYSTEM VERSIONING句追加> ::= 

  ADD <SYSTEM VERSIONING句> 

構文規則 

1) <SYSTEM VERSIONING句追加>を含む<表変更文>に直に含まれる<表名>をTNとする。TNによっ

て識別される表をTとする。 

2) Tは,通常永続実表でなければならない。 

3) Tは,参照可能表であってはならない。 

4) Tの記述子は,システム時刻期間記述子を含まなければならない。 

5) Tは,システムバージョン表であってはならない。 

6) Tの記述子は,宣言型が参照型の列の記述子を含んでいてはならない。 

アクセス規則 

530 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

一般規則 

1) Tの表記述子が修正され,Tが通常永続実表であることを示す標識が,Tがシステムバージョン表

であることを示す標識に修正される。 

適合性規則 

1) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,<SYSTEM VERSIONING句

追加>を含んではならない。 

11.30 

<SYSTEM VERSIONING句削除> 

機能 

<SYSTEM VERSIONING句削除> (<drop system versioning clause>) は,システムバージョン表を通常永続

実表に変更する。 

形式 

<SYSTEM VERSIONING句削除> ::= 

  DROP SYSTEM VERSIONING <削除動作> 

構文規則 

1) <SYSTEM VERSIONING句削除>を含む<表変更文>に直に含まれる<表名>をTNとする。TNによっ

て識別される表をTとする。 

2) Tは,システムバージョン表でなければならない。 

3) RESTRICTが指定されるならば,<問合せシステム時刻期間指定>を指定し,かつ,Tを参照する<表

一次子>は,次のいずれかの中で参照されていてはならない。 

a) ビュー記述子の元の<問合せ式>。 

b) 制約記述子の<探索条件>。 

c) 表明記述子の<探索条件>。 

d) ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

e) ルーチン記述子のSQLルーチン本体。 

f) 

トリガ記述子の<被トリガ動作>。 

g) 列記述子の生成式。 

注記376 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則の実行によって削除される。 

アクセス規則 

なし。 

一般規則 

1) Tの表記述子が修正され,Tがシステムバージョン表であることを示す標識が,Tが通常永続実表

であることを示す標識に修正される。 

2) 履歴システム行に対応するTの全ての行が,SQL文の最後に実効的に削除される。 

注記377 この削除は,新しいトリガ実行文脈も,現行トリガ実行文脈中の新しい状態変更の定義

も作成しない。 

3) <問合せシステム時刻期間指定>を指定し,かつ,Tを参照する<表一次子>をTPとする。 

場合: 

a) TPがビュー記述子の元の<問合せ式>に含まれるならば,そのビュー記述子に含まれるビューの

531 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

名前をSONとする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的に実

行される。 

DROP VIEW SON CASCADE  

b) TPが表明記述子の<探索条件>に含まれるならば,その表明記述子に含まれる制約の名前をSON

とする。これ以上のアクセス規則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION SON CASCADE  

c) TPが表制約記述子SODの<探索条件>に含まれるならば,SODに含まれる制約の名前をSONと

する。SODを含む表記述子に含まれる<表名>をCTNとする。これ以上のアクセス規則の検査な

しで,次の<表変更文>が実効的に実行される。 

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE  

d) TPがルーチン記述子のSQLルーチン本体に含まれるか,又はルーチン記述子のSQLパラメタの

<パラメタ既定値>に含まれるならば,そのルーチン記述子に含まれる特定名をSONとする。こ

れ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE  

e) TPがトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ名

をSONとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行さ

れる。 

DROP TRIGGER SON CASCADE  

適合性規則 

1) 機能T180“システムバージョン表”なしでは,適合するSQL言語は,<SYSTEM VERSIONING句

削除>を含んではならない。 

11.31 

<表削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.10 <表削除文>”によって修正される。 

機能 

<表削除文> (<drop table statement>) は,表を破壊する。 

形式 

<表削除文> ::= 

  DROP TABLE <表名> <削除動作> 

構文規則 

1) <表名>によって識別される表をTとし,その<表名>をTNとする。 

2) <表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Tの

記述子を含んでいなければならない。 

3) Tは,実表でなければならない。 

4) Tは,宣言局所一時表であってはならない。 

5) 影響を受ける内参照演算 (impacted dereference operation) は,次のいずれかとする。 

a) <内参照演算> DO。ここで,Tは,DOに直に含まれる<参照値式>の参照型の有効範囲とする。 

b) <メソッド参照> MR。ここで,Tは,MRに直に含まれる<値式一次子>の参照型の有効範囲とす

る。 

c) <参照解決> RR。ここで,Tは,RRに直に含まれる<参照値式>の参照型の有効範囲とする。 

6) RESTRICTが指定されるならば,Tは,真下位表をもってはならない。 

532 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7) 

04 RESTRICTが指定されるならば,Tは,参照されていてはならず,影響を受ける内参照演算は,

次のいずれかに含まれていてはならない。 

a) ビュー記述子の元の<問合せ式>。 

b) Tの実表記述子に含まれる表検査制約記述子ではない制約記述子の<探索条件>。 

c) 表明記述子の<探索条件>。 

d) T以外の表の参照制約記述子の被参照表の表記述子。 

e) ルーチン記述子のSQLルーチン本体。 

f) 

ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

g) トリガ記述子の<被トリガ動作>。 

注記378 CASCADEが指定されるならば,このようなオブジェクトは,この細分箇条の一般規則

で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE文>の実行に

よって暗に削除される。 

8) RESTRICTが指定され,かつ,Tが参照可能表ならば,TNは,次のいずれかに一般に含まれる参照

型記述子に含まれる有効範囲であってはならない。 

a) 利用者定義型の属性の属性記述子。 

b) T以外の表の列の列記述子。 

c) <SQL呼出しルーチン>のルーチン記述子に含まれるSQLパラメタ又は結果の型の記述子。 

d) 利用者定義型の利用者定義型記述子に含まれるメソッド指定記述子に含まれるSQLパラメタ又

は結果の型の記述子。 

e) 利用者定義型変換の記述子。 

注記379 別の記述子を“一般に含む”記述子は,JIS X 3005-1 [ISO9075-1] の“6.3.4 記述子”で

定義している。 

9) TNによって識別される表の<スキーマ名>によって識別されるスキーマを所有する<認可識別子>を

Aとする。 

アクセス規則 

1) 与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) Tの直接下位表の<表名>をSTNとする。これ以上のアクセス規則の検査なしで,次の<表削除文>が

実効的に実行される。 

DROP TABLE STN CASCADE 

2) Tのどの真上位表に対しても,整合性制約の検査に先立って,Tの全ての行の全ての上位行がSQL

文の終わりに実効的に削除される。 

注記380 この削除は,新しいトリガ実行文脈も,現行トリガ実行文脈中の新しい状態変更の定義

も作成しない。 

3) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE ALL PRIVILEGES ON TN FROM A CASCADE 

4) Tが参照可能表ならば,次による。 

a) TNの有効範囲を含み,かつ,次のいずれかに一般に含まれるどの参照型記述子RTDに対しても,

RTDの有効範囲が空にされる。 

533 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

利用者定義型の属性の属性記述子。 

ii) T以外の表の列の列記述子。 

iii) SQL呼出しルーチンのルーチン記述子に含まれるSQLパラメタ又は結果の型の記述子。 

iv) 利用者定義型の利用者定義型記述子に含まれるメソッド指定記述子に含まれるSQLパラメタ

又は結果の型の記述子。 

v) 利用者定義型変換の記述子。 

b) Tの表記述子に依存しているスキーマオブジェクトの記述子をSODとする。 

場合: 

i) 

SODがビュー記述子ならば,SODに含まれるビューの名前をSONとする。これ以上のアクセ

ス規則の検査なしで,次の<ビュー削除文>が実効的に実行される。 

DROP VIEW SON CASCADE 

ii) SODが表明記述子ならば,SODに含まれる制約の名前をSONとする。これ以上のアクセス規

則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION SON CASCADE 

iii) SODが表制約記述子ならば,SODに含まれる制約の名前をSONとする。SODを含む表記述子

に含まれる<表名>をCTNとする。これ以上のアクセス規則の検査なしで,次の<表変更文>が

実効的に実行される。 

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE 

iv) SODがルーチン記述子ならば,SODに含まれる特定名をSONとする。これ以上のアクセス規

則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE 

v) SODがトリガ記述子ならば,SODに含まれるトリガ名をSONとする。これ以上のアクセス規

則の検査なしで,次の<トリガ削除文>が実効的に実行される。 

DROP TRIGGER SON CASCADE 

注記381 別の記述子に“依存する”記述子は,JIS X 3005-1 [ISO9075-1] の“6.3.4 記述子”で

定義している。 

5) Tの各直接上位表DSTに対して,DSTの表記述子に含まれるDSTの直接下位表の表名のリストか

らTの表名が取り除かれる。 

6) Tの記述子が破壊される。 

適合性規則 

1) 機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>

を含む<表削除文>を含んではならない。 

11.32 

<ビュー定義> 

この細分箇条は,ISO/IEC 9075-4の“9.11 <ビュー定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.3 <ビュー定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.4 <ビュー定義>”によって修正される。 

機能 

<ビュー定義> (<view definition>) は,ビュー表を定義する。 

形式 

<ビュー定義> ::= 

534 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  CREATE [ RECURSIVE ] VIEW <表名> <ビュー指定> 

      AS <問合せ式> [ WITH [ <レベル句> ] CHECK OPTION ] 

<ビュー指定> ::= 

  <通常ビュー指定> 

| <参照可能ビュー指定> 

<通常ビュー指定> ::= 

  [ <左括弧> <ビュー列リスト> <右括弧> ] 

<参照可能ビュー指定> ::= 

  OF <パス解決利用者定義型名> [ <下位ビュー句> ] 

      [ <ビュー要素リスト> ] 

<下位ビュー句> ::= 

  UNDER <表名> 

<ビュー要素リスト> ::= 

  <左括弧> <ビュー要素> [ { <コンマ> <ビュー要素> }... ] <右括弧> 

<ビュー要素> ::= 

  <自己参照列指定> 

| <ビュー列OPTIONS> 

<ビュー列OPTIONS> ::= 

  <列名> WITH OPTIONS <SCOPE句> 

<レベル句> ::= 

  CASCADED 

| LOCAL 

<ビュー列リスト> ::= 

  <列名リスト> 

構文規則 

1) <問合せ式>をQEとする。 

2) 

04 QEは,<ホストパラメタ指定>,<SQLパラメタ参照>,<動的パラメタ指定>又は<埋込み変数指定

>を含んではならない。 

3) <ビュー定義>が<スキーマ定義>に含まれ,かつ,<表名>が<スキーマ名>を含むならば,その<スキ

ーマ名>は,<ビュー定義>を含む<スキーマ定義>の陽に指定されるか又は暗に想定される<スキーマ

名>と等価でなければならない。 

4) <表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,<表

名>である表名をもつ表記述子を含んでいてはならない。 

5) <表名>をTNとする。TNが<問合せ式> QE2に一般に含まれ,かつ,<表名> TN2がQEに一般に含

まれるような,TN2によって識別され,ビュー記述子が元の<問合せ式> QE2を含むビュー表V2が

存在してはならない。 

6) QEに一般的に含まれるどの<表参照>も,宣言局所一時表を識別してはならない。 

7) QEに一般的に含まれるどの<表参照>も,<データ変更差分表>を含んではならない。 

8) QEに一般的に含まれる<表参照>が,<ビュー定義> VDによって定義されるビュー表VTを識別す

るならば,VD及びVTは,再帰的 (recursive) という。 

535 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

9) VDが再帰的ならば,次による。 

a) <ビュー列リスト>を指定しなければならない。 

b) RECURSIVEを指定しなければならない。 

c) CHECK OPTIONを指定してはならない。 

d) <参照可能ビュー指定>を指定してはならない。 

e) VDは,次の<ビュー定義>と等価とする。 

CREATE VIEW <表名> AS 

    WITH RECURSIVE <表名> (<ビュー列リスト>) 

      AS (<問合せ式>) 

    SELECT <ビュー列リスト> FROM <表名> 

10) QEが更新可能ならば,ビュー表は,更新可能 (updatable) とする。 

11) QEが単純に更新可能ならば,ビュー表は,単純に更新可能 (simply updatable) とする。 

12) 次のうちの少なくとも一つが真ならば,ビュー表は,実効的に更新可能 (effectively updatable) とす

る。 

a) ビュー表が単純に更新可能。 

b) SQL処理系が機能T111“更新可能な結合,和集合及び列”を提供し,かつ,ビュー表が更新可能。 

13) <問合せ式>が挿入可能ならば,ビュー表は,挿入可能 (insertable-into) とする。 

14) <ビュー列リスト>中の<列名>の個数は,QEによって指定される表の次数と同じでなければならな

い。 

15) QEによって指定された表中の,宣言型が文字列型であるどの列も,宣言型照合順をもたなければな

らない。 

16) WITH CHECK OPTIONが指定されるならば,ビュー表は,更新可能でなければならない。 

17) WITH CHECK OPTIONが指定され,かつ,<レベル句>が指定されないならば,CASCADEDの<レ

ベル句>が暗に想定される。 

18) WITH LOCAL CHECK OPTIONが指定されるならば,QEは,<問合せ式> QE2又は<問合せ指定> 

QS2がQEの末端で基となる表であるビュー表に一般に含まれない限り,潜在的に非決定的である

QE2又はQS2を一般に含んではならない。 

WITH CASCADED CHECK OPTIONが指定されるならば,QEは,潜在的に非決定的である<問合

せ式>又は<問合せ指定>を一般に含んではならない。 

19) <ビュー定義>によって定義されるビューをVとする。Vのどのi番目の列の基となる列 (underlying 

column) も,<問合せ式>のi番目の列の基となる列とし,Vの基となる列は,<問合せ式>の基とな

る列とする。Vのどのi番目の列の一般に基となる列 (generally underlying column) も,<問合せ式>

のi番目の列の一般に基となる列とし,Vの一般に基となる列は,<問合せ式>の一般に基となる列

とする。 

20) <下位ビュー句>があるならば,それは,Vの直接上位ビュー (direct superview) SVを識別し,Vを,

SVの直接下位ビュー (direct subview) という。ビューV1がビューV2の上位ビュー (superview) で

あることは,次のうちの一つが真であることと同値とする。 

a) V1とV2とが同じビューである。 

b) V1がV2の直接上位ビューである。 

c) V1がビューV3の直接上位ビューで,かつ,V3がV2の上位ビューであるようなV3が存在する。 

536 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

V1がV2の上位ビューならば,V2をV1の下位ビュー (subview) という。 

V1がV2の上位ビューで,かつ,V1とV2とが同じビューでないならば,V2は,V1の真下位ビュ

ー (proper subview) とし,V1は,V2の真上位ビュー (proper superview) とする。 

V2がV1の直接下位ビューならば,V2は,V1の直接下位表とする。 

注記382 Vの上位ビューの下位ビューは,併せてVの下位表族を構成することになり,その意味

が全てに適用される。 

21) <参照可能ビュー指定>が指定されるならば,次による。 

a) Vは,参照可能ビュー (referenceable view) とする。 

b) RECURSIVEを指定してはならない。 

c) 

13 <パス解決利用者定義型名>に単純に含まれる<利用者定義型名>は,構造型STを識別しなけれ

ばならない。 

d) Vの下位表族は,関連付けられた構造型がSTであるV自体以外の要素を含んではならない。 

e) <下位ビュー句>が指定されないならば,<自己参照列指定>を指定しなければならない。 

f) STの属性の個数をnとする。STの属性をAi,1 ≤ i ≤ nとする。 

g) QEの行型をRTとする。 

h) <自己参照列指定>が指定されるならば,次による。 

i) 

ただ一つの<自己参照列指定>を指定しなければならない。 

ii) <下位ビュー句>を指定してはならない。 

iii) SYSTEM GENERATEDを指定してはならない。 

iv) 参照型REF(ST) をRSTとする。 

場合: 

1) USER GENERATEDが指定されるならば,次による。 

A) RSTは,利用者定義表現をもたなければならない。 

B) 1をmとする。 

2) DERIVEDが指定されるならば,次による。 

A) RSTは,導出表現をもたなければならない。 

B) 0をmとする。 

i) 

<下位ビュー句>が指定されるならば,次による。 

i) 

<下位ビュー句>に含まれる<表名>は,ビューである参照可能表SVを識別しなければならない。 

ii) STは,Vの直接上位表SUPERTの構造型の直接下位型でなければならない。 

iii) Vの<表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるSQLス

キーマは,SVの記述子を含んでいなければならない。 

iv) Vの下位表族の最上位ビューをMSVとする。MSVの構造型をMSVTYとする。参照型

REF(MSVTY) をRMSVとする。 

場合: 

1) RMSVが利用者定義表現をもつならば,1をmとする。 

2) そうでなければ,RMSVは,導出表現をもつ。0をmとする。 

j) RTの次数は,n+mでなければならない。 

k) RTのフィールドをFi,1 ≤ i ≤ nとする。 

l) 

1からnまでの範囲の各iに対して,次による。 

537 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

Fi+mの宣言型DDTFi+mは,Aiの宣言型DDTAiと互換でなければならない。 

ii) DDTFi+mをTYPE1として,DDTAiをTYPE2として,“9.20 データ型の同一性”の構文規則を

適用する。 

m) QEは,単一の<問合せ指定> QSから成らなければならない。 

n) QSの<FROM句>は,単一の<表参照> TRを単純に含まなければならない。 

o) TRは,<表名>である<表名又は問合せ名>を直に含まなければならない。<表名又は問合せ名>に

よって識別される表をTQNとする。TQNは,Vの基底表 (basis table) とする。 

p) TQNが参照可能表ならば,TRは,ONLYを単純に含まなければならない。 

q) QSは,<GROUP BY句>又は<HAVING句>を単純に含んではならない。 

r) <自己参照列指定>が指定されるならば,次による。 

場合: 

i) 

RSTが利用者定義表現をもつならば,次による。 

1) TQNは,単一の列RCから成る候補キーをもたなければならない。 

2) QSの<選択リスト>中の最初の<選択副リスト>をSSとする。 

3) SSは,末端の列がRCである単一の<CAST指定> CSから成らなければならない。 

注記383 “<CAST指定>の末端の列”は,“6.13 <CAST指定>”で定義している。 

4) F1の宣言型は,REF(ST) でなければならない。 

ii) そうでなければ,RSTは,導出表現をもつ。 

1) RSTの導出表現の属性に対応するVの列をCi,1 ≤ i ≤ nとする。 

2) TQNは,Ci,1 ≤ i ≤ nの基となる列の部分集合から成る候補キーをもたなければならない。 

s) <下位ビュー句>が指定されるならば,次による。 

i) 

TQNは,SVの基底表の真下位表又は真下位ビューでなければならない。 

ii) SUPERTが更新可能ならば,QSは,更新可能でなければならない。 

iii) SUPERTの列の個数をkとする。全てのj,1 < j ≤ kに対して,SUPERTの元の<問合せ式> SOQE

のj番目の列が更新可能ならば,SOQEに単純に含まれる<選択リスト>に単純に含まれるj番

目の<導出列>に単純に含まれる<値式>をVEjとする。VEjは,更新可能だから,それは,列参

照である。VEjの列名をCNjとする。QSの<選択リスト>に単純に含まれる (j+m) 番目の<導出

列>に単純に含まれる<値式>は,列名がCNjで,かつ,修飾する表がTQNである列参照でなけ

ればならない。 

注記384 これは,ビューが作成されるときにSUPERTの更新可能な列を決定できること,及

び下位ビューの追加の結果としてそれが変更されないことを保証する。それは,

SUPERTの元の<問合せ式>を調べるだけで,SUPERTに関するUPDATE列権限を

確定できること,及び下位ビューの追加の結果としてそれを変更する必要がないこ

とも保証する。具体的には,参照可能ビューRVの列がRVの基底表の列への列参照

ならば,どの下位ビューSUBRV中でも,その列がSUBRVの基底表中の対応する列

への列参照でなければならないことを規則で規定している。 

iv) WITH CHECK OPTIONが指定されたことを示す標識をSUPERT又はSUPERTの上位表のビュ

ー記述子が含むならば,QSは,潜在的に非決定的であってはならない。 

注記385 これは,下位ビューが追加されるとき,WITH CHECK OPTIONをもつビューが決定

的のままとなることを保証する。 

538 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

v) SUPERTが検査制約記述子,表明記述子,又はWITH CHECK OPTIONをもつビューの元の<問

合せ式>中で参照されるならば,QSは,潜在的に非決定的であってはならない。 

注記386 これは,検査制約記述子,表明記述子,又はWITH CHECK OPTIONをもつ別のビュ

ーのために,ビューが決定的でなければならないならば,下位ビューが追加される

とき,そのビューが決定的のままとなることを保証する。 

t) 

<ビュー要素リスト> TEL1が指定されるならば,次による。 

i) 

<ビュー列OPTIONS>の個数をrとする。どの<ビュー列OPTIONS> VCOj,1 ≤ j ≤ rに対しても,

<列名>は,STのいずれかの属性の<属性名>と等価でなければならない。 

ii) TEL1に含まれる異なる<ビュー列OPTIONS>は,異なる<列名>を指定しなければならない。 

iii) VCOjに含まれる<列名>をCNj,1 ≤ j ≤ rとし,VCOjに含まれる<SCOPE句>をSCLjとする。 

1) CNjは,参照型CORTjである宣言型をもつSTのいずれかの<属性名>と等価でなければなら

ない。 

2) SCLjに含まれる<表名>は,参照可能表SRTを識別しなければならない。 

3) SRTは,CORTjの被参照型を基にしなければならない。 

注記387 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義してい

る。 

22) 場合: 

a) <通常ビュー指定>が指定されるならば,次による。 

i) 

<問合せ式>によって指定される表中のいずれか二つの列が等価な<列名>をもつか,又はその表

のいずれかの列が処理系依存の名前をもつならば,<ビュー列リスト>を指定しなければならな

い。 

ii) <ビュー列リスト>中に,等価な<列名>を2回以上指定してはならない。 

b) そうでなければ,次による。 

i) 

<下位ビュー句>が指定されるならば,SVの自己参照列の名前は,STのどの属性の名前とも等

価であってはならない。 

ii) そうでなければ,<自己参照列指定>は,STのどの属性の名前とも等価であってはならない。 

23) Vの列は,その列の基となる列が更新可能ならば,Vの更新可能な列 (updatable column)と呼ぶ。 

24) <ビュー定義>が<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか又は暗に想

定される<認可識別子>をAとする。そうでなければ,<表名>の陽に指定されるか又は暗に想定され

る<スキーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。 

アクセス規則 

1) <ビュー定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子は,

<表名>の暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマを所有

する<認可識別子>を含まなければならない。 

2) <参照可能ビュー指定>が指定されるならば,Aに適用可能な権限は,STに関するUSAGEを含まな

ければならない。 

3) <下位ビュー句>が指定されるならば,次による。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<ビュー定義>が<SQL

スキーマ文>に含まれるならば,スキーマを所有する<認可識別子>の適用可能な権限は,SVに関

539 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

するUNDERを含まなければならない。 

b) そうでなければ,現行の権限は,SVに関するUNDERを含まなければならない。 

一般規則 

1) Vを記述するビュー記述子VDが作成される。VDは,次の項目を含む。 

a) <表名> TN。 

b) 場合: 

i) 

RMSVが導出表現をもつならば,QSに単純に含まれる<選択リスト>をSLとし,QSに単純に

含まれる<表式>をTEとする。Vの行を参照するREF値を計算する処理系依存の<値式>をIDV

とする。次の<問合せ式>をOQEとする。 

SELECT IDV, SL  

TE  

ii) そうでなければ,QEをOQEとする。 

c) 記述子の階層的な<問合せ式>及び記述子の元の<問合せ式>の両方として,OQE。 

d) 記述子の利用者指定の<問合せ式>として,QE。 

e) 場合: 

i) 

<通常ビュー指定>が指定されるならば,<問合せ式>によって指定される表からとられる列記述

子。 

場合: 

1) <ビュー列リスト>が指定されるならば,ビューのi番目の列の<列名>は,その<ビュー列リス

ト>のi番目の<列名>とする。 

2) そうでなければ,ビューの<列名>は,<問合せ式>によって指定される表の<列名>とする。 

ii) そうでなければ,次による。 

1) 次のとおりの列記述子。 

A) 列の名前が 

場合: 

I) 

<自己参照列名>が指定されるならば,<自己参照列名>。 

II) そうでなければ,Vの直接上位表の最初の列の名前。 

B) データ型記述子が<データ型>“REF(ST) SCOPE(TN)”によって生成される記述子。 

C) ナル可能性特性がナル可能でないことが分かる (known not nullable)。 

D) 順序位置が1。 

E) 列が自己参照であることを示す。 

2) 次のとおりの,Vの各継承列及び各原定義列ODCの列記述子ODCD。 

A) ODCDに含まれる<列名>が,それに対応するSTの属性の<属性名>に置き換えられる。 

B) ODCDに含まれる宣言型が,それに対応するSTの属性の宣言型である。 

C) 列の宣言型が参照型で,かつ,列に対応するSTの<属性名>をいずれかのVCOiが含むな

らば,列記述子に直に含まれる参照型記述子に含まれる(空かもしれない)有効範囲が,

SCOiに置き換えられる。 

3) DERIVEDが指定されるならば,自己参照列が導出自己参照列であることを示す標識。 

4) USER GENERATEDが指定されるならば,自己参照列が利用者生成自己参照列であることを

示す標識。 

540 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

f) 

各列記述子中で,Vが実効的に更新可能で,かつ,QEの対応する列が更新可能ならば,列が更新

可能であることを示す標識。 

g) WITH CHECK OPTIONが省略されたか,LOCALとともに指定されたか,又はCASCADEDとと

もに指定されたかを示す標識。 

h) Vがトリガ挿入可能でないことを示す標識。 

i) 

Vがトリガ更新可能でないことを示す標識。 

j) Vがトリガ削除可能でないことを示す標識。 

2) <表名>をVNとする。VNによって識別されるビューのビュー記述子VDに含まれる階層的な<問合

せ式>をHQEとする。VDに含まれる元の<問合せ式>をOQEとする。 

a) 場合: 

i) 

<ビュー列リスト>が指定されるならば,<左括弧>が先行し,<右括弧>が後に続く<ビュー列リ

スト>をVCLとする。 

ii) Vが参照可能ビューならば,Vの自己参照列の名前をSRCNとし,STの属性の個数をnとし,

STのそれらの属性の名前をAN1,...,ANnとする。次の<ビュー列リスト>をVCLとする。 

( SRCN, AN1, ... , ANn ) 

iii) そうでなければ,長さ0の文字列をVCLとする。 

b) 場合: 

i) 

SQLスキーマ文にVNが直に含まれるならば,VNは,ビュー記述子VDを識別する。 

ii) ONLYを指定する<表参照>にVNが直に含まれるならば,VNは,次の<表参照>と同じ表を参

照する。 

( OQE ) AS VN VCL 

iii) そうでなければ,VNは,次の<表参照>と同じ表を参照する。 

( HQE ) AS VN VCL 

3) 1から,Vの<問合せ式> QEの末端で基となる異なる表の個数までの範囲のiに対して,それらの表

の<表名>をRTiとする。Vのどの列CVに対しても,次による。 

a) 1から,CVの基となる列であるRTiの列の個数までの範囲のjに対して,それらの列の<列名>を

CRTi,jとする。 

b) 権限付与者のそれぞれに対して特別な付与者の値“̲SYSTEM”が設定された権限記述子の集合が,

次のとおりに作成される。 

i) 

Vのどの列CVに対しても,Vに関する権限SELECT (CV) をAに対して定義する権限記述子が

作成される。その権限が付与可能であることは,次の全てが真であることと同値とする。 

1) 全ての列CRTi,jに関する付与可能なSELECT権限を,Aに適用可能な権限が含む。 

2) QEに含まれる<ルーチン呼出し>の当該ルーチンである全てのSQL呼出しルーチンに関する

付与可能なEXECUTE権限を,Aに適用可能な権限が含む。 

3) QEに含まれる<メソッド参照> MRが存在し,表T1がMRの<値式一次子>の有効範囲中に

あり,かつ,メソッドMがMRの<メソッド名>によって識別されるメソッドであるような,

全てのT1及び全てのMに関する付与可能なSELECT権限を,Aに適用可能な権限が含む。 

4) QEに含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表に

関するWITH HIERARCHY OPTION付きの付与可能なSELECT権限を,Aに適用可能な権限

が含む。 

541 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) Vのどの列CVに対しても,Aに適用可能な権限が全てのi及び全てのjに対して

REFERENCES(CRTi,j) を含み,かつ,Aに適用可能な権限が全てのiに対してRTiのいずれか

の列に関するREFERENCESを含むならば,Vに関する権限REFERENCES(CV) をAに対して

定義する権限記述子が作成される。その権限が付与可能であることは,次の全てが真であるこ

とと同値とする。 

1) 全ての列CRTi,jに関する付与可能なREFERENCES権限を,Aに適用可能な権限が含む。 

2) QEに含まれる<ルーチン呼出し>の当該ルーチンである全てのSQL呼出しルーチンに関する

付与可能なEXECUTE権限を,Aに適用可能な権限が含む。 

3) QEに含まれる<メソッド参照> MRが存在し,表T1がMRの<値式一次子>の有効範囲中に

あり,かつ,メソッドMがMRの<メソッド名>によって識別されるメソッドであるような,

全てのT1及び全てのMに関する付与可能なSELECT権限を,Aに適用可能な権限が含む。 

4) QEに含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表に

関するWITH HIERARCHY OPTION付きの付与可能なSELECT権限を,Aに適用可能な権限

が含む。 

4) Vに関する権限SELECTをAに対して定義する権限記述子が作成される。その権限が付与可能であ

ることは,Vの全ての列に関する付与可能なSELECT権限をAに適用可能な権限が含むことと同値

とする。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

5) Vに関する権限TRIGGERをAに対して定義する権限記述子が作成される。その権限は,付与可能

でない。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

6) Vの全ての列に関するREFERENCES権限をAに適用可能な権限が含むならば,Vに関する権限

REFERENCESをAに対して定義する権限記述子が作成される。その権限が付与可能であることは,

Vの全ての列に関する付与可能なREFERENCES権限をAに適用可能な権限が含むことと同値とす

る。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

7) Vが実効的に更新可能ならば,VをVIEWとして,“9.29 ビュー権限の決定”の一般規則を適用す

る。 

8) Vが参照可能ビューならば,権限付与者のそれぞれに対して特別な付与者の値“̲SYSTEM”が設定

された権限記述子の集合が,次のとおりに作成される。 

a) Vに関するWITH HIERARCHY OPTION付きのSELECT権限をAに対して定義する権限記述子が

作成される。その権限は,付与可能とする。 

b) <パス解決利用者定義型名>によって識別される構造型のどのメソッドMに対しても,Vに関する

権限SELECT(M) をAに対して定義する権限記述子が作成される。その権限は,付与可能とする。 

c) 場合: 

i) 

<下位ビュー句>が指定されないならば,Vに関するUNDER権限をAに対して定義する権限記

述子が作成される。その権限は,付与可能とする。 

ii) そうでなければ,Vに関するUNDER権限をAに対して定義する権限記述子が作成される。そ

の権限が付与可能であることは,Vの直接上位表に関する付与可能なUNDER権限をAに適用

可能な権限が含むことと同値とする。 

9) <下位ビュー句>が指定されるならば,Vの上位表の集合をSTとする。ST中の表に関するSELECT 

WITH HIERARCHY OPTION権限を定義する権限記述子の集合をPDSとする。 

10) PDS中の,権限受領者G及び権限付与者Aをもつどの権限記述子に対しても,次による。 

542 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

a) 権限が付与可能ならば,“WITH GRANT OPTION”をWGOとする。 

b) そうでなければ,長さ0の文字列をWGOとする。 

これ以上のアクセス規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT SELECT ON V TO G WGO FROM A 

11) <下位ビュー句>が指定されるならば,Vのどの真上位ビューSUPERVに対しても,SUPERVをVIEW

として,“9.28 ビューの階層的な<問合せ式>の生成”の一般規則を適用する。 

注記388 SUPERVの階層的な<問合せ式>の書換えの結果として,ONLYを指定しない<表参照>で

のSUPERVの参照の解釈が変更された。 

12) 情報スキーマ中で利用者指定の<問合せ式>の文字表現を切捨てなしで表現できないならば,終了条

件:警告 (warning) − 情報スキーマに対して問合せ式が長すぎる (query expression too long for 

information schema) が引き起こされる。 

注記389 情報スキーマは,[ISO9075-11] で定義している。 

適合性規則 

1) 機能T131“再帰的問合せ”なしでは,適合するSQL言語は,RECURSIVEを直に含む<ビュー定義

>を含んではならない。 

2) 機能F751“ビューCHECK拡張”なしでは,適合するSQL言語は,<レベル句>を含んではならな

い。 

3) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<参照可能ビュー指定>を含んではなら

ない。 

4) 機能F751“ビューCHECK拡張”なしでは,適合するSQL言語は,<問合せ式>を含む<問合せ式>を

含み,かつ,WITH CHECK OPTIONを含む<ビュー定義>を含んではならない。 

5) 機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語中で,WITH CHECK 

OPTIONが指定されるならば,ビュー表は,単純に更新可能でなければならない。 

6) 機能F852“ビュー中の最上位<ORDER BY句>”なしでは,適合するSQL言語中で,<ビュー定義>

に直に含まれる<問合せ式>は,<ORDER BY句>を直に含んではならない。 

7) 機能F864“ビュー中の最上位<結果OFFSET句>”なしでは,適合するSQL言語中で,<ビュー定義

>に直に含まれる<問合せ式>は,<結果OFFSET句>を直に含んではならない。 

8) 機能F859“ビュー中の最上位<FETCH FIRST句>”なしでは,適合するSQL言語中で,<ビュー定

義>に直に含まれる<問合せ式>は,<FETCH FIRST句>を直に含んではならない。 

9) 機能S081“下位表”なしでは,適合するSQL言語は,<下位ビュー句>を含んではならない。 

11.33 

<ビュー削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.12 <ビュー削除文>”によって修正される。 

機能 

<ビュー削除文> (<drop view statement>) は,ビューを破壊する。 

形式 

<ビュー削除文> ::= 

  DROP VIEW <表名> <削除動作> 

構文規則 

1) <表名>によって識別される表をVとし,その<表名>をVNとする。VNの陽に指定されるか又は暗

543 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

に想定される<スキーマ名>によって識別されるスキーマは,Vの記述子を含んでいなければならな

い。 

2) Vは,ビュー表でなければならない。 

3) 影響を受ける内参照演算 (impacted dereference operation) は,次のうちのいずれかとする。 

a) <内参照演算> DO。ここで,Vは,DOに直に含まれる<参照値式>の参照型の有効範囲とする。 

b) <メソッド参照> MR。ここで,Vは,MRに直に含まれる<値式一次子>の参照型の有効範囲とす

る。 

c) <参照解決> RR。ここで,Vは,RRに直に含まれる<参照値式>の参照型の有効範囲とする。 

4) RESTRICTが指定されるならば,Vは,真下位表をもってはならない。 

5) 

04 RESTRICTが指定されるならば,Vは,参照されていてはならず,かつ,どの影響を受ける内参

照演算も,次のうちのいずれかに含まれていてはならない。 

a) V以外のビューのビュー記述子の元の<問合せ式>。 

b) 制約記述子又は表明記述子の<探索条件>。 

c) トリガ記述子の<被トリガ動作>。 

d) ルーチン記述子のSQLルーチン本体。 

注記390 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は

<REVOKE文>の実行によって暗に削除される。 

6) RESTRICTが指定され,かつ,Vが参照可能ビューならば,VNは,次のうちのいずれかに一般に含

まれる参照型記述子に含まれる有効範囲であってはならない。 

a) 利用者定義型の属性の属性記述子。 

b) V以外の表の列の列記述子。 

c) <SQL呼出しルーチン>のルーチン記述子に含まれるSQLパラメタ又は結果の型の記述子。 

d) 利用者定義型の利用者定義型記述子に含まれるメソッド指定記述子に含まれるSQLパラメタ又

は結果の型の記述子。 

e) 利用者定義型変換の記述子。 

注記391 別の記述子を“一般に含む”記述子は,JIS X 3005-1 [ISO9075-1] の“6.3.4 記述子”で

定義している。 

7) VNによって識別される表の<スキーマ名>によって識別されるスキーマを所有する<認可識別子>を

Aとする。 

アクセス規則 

1) 与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) Vの直接下位ビューの<表名>をSVNとする。これ以上のアクセス規則の検査なしで,次の<ビュー

削除文>が実効的に実行される。 

DROP VIEW SVN CASCADE 

2) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE ALL PRIVILEGES ON VN FROM A CASCADE 

3) Vが参照可能ビューならば,次による。 

544 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) VNの有効範囲を含み,かつ,次のうちのいずれかに一般に含まれるどの参照型記述子RTDに対

しても,RTDの有効範囲が空にされる。 

i) 

利用者定義型の属性の属性記述子。 

ii) V以外の表の列の列記述子。 

iii) SQL呼出しルーチンのルーチン記述子に含まれるSQLパラメタ又は結果の型の記述子。 

iv) 利用者定義型の利用者定義型記述子に含まれるメソッド指定記述子に含まれるSQLパラメタ

又は結果の型の記述子。 

v) 利用者定義型変換の記述子。 

b) Vのビュー記述子に依存しているスキーマオブジェクトの記述子をSODとする。 

場合: 

i) 

SODがビュー記述子ならば,SODに含まれるビューの名前をSONとする。これ以上のアクセ

ス規則の検査なしで,次の<ビュー削除文>が実効的に実行される。 

DROP VIEW SON CASCADE 

ii) SODが表明記述子ならば,SODに含まれる制約の名前をSONとする。これ以上のアクセス規

則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION SON CASCADE 

iii) SODが表制約記述子ならば,SODに含まれる制約の名前をSONとする。SODを含む表記述子

に含まれる<表名>をCTNとする。これ以上のアクセス規則の検査なしで,次の<表変更文>が

実効的に実行される。 

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE 

iv) SODがルーチン記述子ならば,SODに含まれる特定名をSONとする。これ以上のアクセス規

則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SON CASCADE 

v) SODがトリガ記述子ならば,SODに含まれるトリガ名をSONとする。これ以上のアクセス規

則の検査なしで,次の<トリガ削除文>が実効的に実行される。 

DROP TRIGGER SON 

注記392 別の記述子に“依存する”記述子は,JIS X 3005-1 [ISO9075-1] の“6.3.4 記述子”で

定義している。 

4) Vが直接上位表DSTをもつならば,次による。 

a) DSTの表記述子に含まれるDSTの直接下位表の表名のリストからVの表名が取り除かれる。 

b) (DST自体も含めて) DSTのどの上位ビューSVに対しても,SVをVIEWとして,“9.28 ビューの

階層的な<問合せ式>の生成”の一般規則を適用する。 

5) Vの記述子が削除される。 

適合性規則 

1) 機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>

を含む<ビュー削除文>を含んではならない。 

11.34 

<定義域定義> 

この細分箇条は,ISO/IEC 9075-9の“11.7 <定義域定義>”によって修正される。 

機能 

<定義域定義> (<domain definition>) は,定義域を定義する。 

545 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<定義域定義> ::= 

  CREATE DOMAIN <定義域名> [ AS ] <既定義型> 

      [ <DEFAULT句> ] 

      [ <定義域制約>...] 

      [ <COLLATE句> ] 

<定義域制約> ::= 

  [ <制約名定義> ] <検査制約定義> [ 

      <制約特性> ] 

構文定義 

1) 

09 <定義域定義>が<スキーマ定義>に含まれ,かつ,<定義域名>が<スキーマ名>を含むならば,その

<スキーマ名>は,<定義域定義>を含む<スキーマ定義>の指定されるか又は暗に想定される<スキー

マ名>と等価でなければならない。 

2) <制約名定義>が指定され,かつ,それの<制約名>が<スキーマ名>を含むならば,その<スキーマ名

>は,<制約名定義>を含む<定義域定義>又は<定義域変更文>によって識別される定義域の<定義域

名>の陽に指定されるか又は暗に想定される<スキーマ名>と等価でなければならない。 

3) <定義域名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

<定義域名>と等価な定義域名をもつ定義域記述子も,<定義域名>と等価な利用者定義型名をもつ利

用者定義型記述子も含んではならない。 

4) <既定義型>が<文字列型>を指定し,かつ,<文字集合指定>を指定しないならば,<定義域名>の暗に

想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマの既定文字集合の文

字集合名が暗に想定される。 

5) <COLLATE句>が<既定義型>中に指定され,かつ,<定義域定義>に直に含まれてはならない。

<COLLATE句>が<定義域定義>に直に含まれるならば,それは,<既定義型>中に等価の<COLLATE

句>を指定することと等価とする。 

6) ある定義域をD1とする。D1が定義域制約DCによって利用されている (in usage by) ことは,D1

の<定義域名>か,又はD1が定義域D2の定義域制約によって利用されているようなD2の<定義域

名>のいずれかを,DCの<探索条件>が一般に含むことと同値とする。どの定義域も,それ自体の制

約のいずれかによって利用されていてはならない。 

7) <COLLATE句>が指定されるならば,<既定義型>は,文字列型でなければならない。 

8) 指定されるどの<定義域制約>に対しても,次による。 

a) <制約特性>が指定されるならば,ENFORCEDもNOT ENFORCEDも,指定してはならない。 

b) <制約特性>が指定されないならば,INITIALLY IMMEDIATE NOT DEFERRABLEが暗に想定され

る。 

c) <制約名定義>が指定されないならば,処理系依存の<制約名>を含む<制約名定義>が暗に想定され

る。割り当てられる<制約名>は,陽に指定される<制約名>の構文規則に従わなければならない。 

d) <定義域制約>に含まれる<制約名>の陽に指定されるか又は暗に想定される<スキーマ名>によっ

て識別されるスキーマをSとする。Sは,<制約名>である制約名をもつ制約記述子を含んではな

らない。 

アクセス規則 

546 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <定義域定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子は,

<定義域名>の暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマを

所有する<認可識別子>を含まなければならない。 

一般規則 

1) <定義域定義>は,定義域を定義する。 

2) 作成される定義域の宣言型を記述するデータ型記述子が作成される。 

3) 作成される定義域を記述する定義域記述子が作成される。定義域記述子は,定義域の名前,宣言型

のデータ型記述子,<定義域定義>が<DEFAULT句>を直に含むならば,<DEFAULT句>の値,及び直

に含まれる全ての<定義域制約>に対する定義域制約記述子を含む。 

4) <定義域定義>が現れるスキーマ又はSQLクライアントモジュールの<認可識別子> Aに対して,こ

の定義域に関するUSAGE権限を定義する権限記述子が作成される。この権限が付与可能であるこ

とは,定義域記述子に含まれる全ての定義域制約記述子の<探索条件>に含まれる各<列参照>のため

の付与可能なREFERENCES権限,並びに定義域記述子に含まれる全ての定義域制約記述子の<探索

条件>に含まれる各<定義域名>,<照合順名>,<文字集合名>及び<文字変換名>のための付与可能な

USAGE権限を,Aに適用可能な権限が含むことと同値とする。権限記述子の権限付与者には,特別

な付与者の値“̲SYSTEM”が設定される。 

5) 定義している定義域制約を記述する定義域制約記述子が作成される。定義域制約記述子は,次の項

目を含む。 

a) 陽に指定されるか又は暗に想定される<制約名定義>に含まれる<制約名>。 

b) 制約が遅延可能か又は遅延可能でないかを示す標識。 

c) 制約の初期制約モードが遅延か又は即時かを示す標識。 

d) テンプレートの<探索条件>として<定義域定義>に含まれる<探索条件>。 

e) 次の適用可能な<探索条件>。 

( 1=1 ) 

適合性規則 

1) 機能F251“定義域提供”なしでは,適合するSQL言語は,<定義域定義>を含んではならない。 

2) 機能F692“拡張照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を直に含む<定義域

定義>を含んではならない。 

11.35 

<定義域変更文> 

機能 

<定義域変更文> (<alter domain statement>) は,定義域及びその定義を変更する。 

形式 

<定義域変更文> ::= 

  ALTER DOMAIN <定義域名> <定義域変更動作> 

<定義域変更動作> ::= 

  <定義域DEFAULT句設定> 

| <定義域DEFAULT句削除> 

| <定義域制約定義追加> 

| <定義域制約定義削除> 

構文規則 

547 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <定義域名>によって識別される定義域をDとする。<定義域名>の陽に指定されるか又は暗に想定さ

れる<スキーマ名>によって識別されるスキーマは,Dの記述子を含んでいなければならない。 

アクセス規則 

1) 与えられた認可識別子は,<定義域名>の暗に想定されるか又は陽に指定される<スキーマ名>によっ

て識別されるスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) Dの定義域記述子は,<定義域変更動作>によって指定されるとおりに修正される。 

注記393 変更されたDの定義域記述子は,Dに依存している全ての列に適用可能である。 

適合性規則 

1) 機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域変更文>を含んではならない。 

11.36 

<定義域DEFAULT句設定> 

機能 

<定義域DEFAULT句設定> (<set domain default clause>) は,定義域に既定値を設定する。 

形式 

<定義域DEFAULT句設定> ::= 

  SET <DEFAULT句> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <定義域DEFAULT句設定>を含む<定義域変更文>中の<定義域名>によって識別される定義域をD

とする。 

2) <DEFAULT句>によって指定される既定値が,Dの定義域記述子中に格納される。 

適合性規則 

1) 機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域DEFAULT句設定>を含んで

はならない。 

11.37 

<定義域DEFAULT句削除> 

機能 

<定義域DEFAULT句削除> (<drop domain default clause>) は,定義域のDEFAULT句を取り除く。 

形式 

<定義域DEFAULT句削除> ::= 

  DROP DEFAULT 

構文規則 

1) <定義域DEFAULT句削除>を含む<定義域変更文>中の<定義域名>によって識別される定義域をD

とする。 

2) Dの記述子は,既定値を含まなければならない。 

アクセス規則 

なし。 

一般規則 

548 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) Dを識別する<定義域名>を列記述子が含む列の集合をCとする。 

2) Cに属するどの列に対しても,列記述子が既定値をまだ含まないならば,Dの定義域記述子からの

既定値がその列記述子中に格納される。 

3) Dの定義域記述子から既定値が取り除かれる。 

適合性規則 

1) 機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域DEFAULT句削除>を含んで

はならない。 

11.38 

<定義域制約定義追加> 

機能 

<定義域制約定義追加> (<add domain constraint definition>) は,定義域に制約を追加する。 

形式 

<定義域制約定義追加> ::= 

  ADD <定義域制約> 

構文規則 

1) <定義域変更文>中の<定義域名>によって識別される定義域をDとする。 

2) ある定義域をD1とする。D1が定義域制約DCによって利用されている (in usage by) ことは,D1,

又はD1が定義域D2の定義域制約によって利用されているようなD2のいずれかの<定義域名>を

DCの<探索条件>が一般に含むことと同値とする。どの定義域も,それ自体の制約のいずれかによ

って利用されていてはならない。 

3) どの大域一時表,作成局所一時表又は宣言局所一時表のどの列の列記述子にも,Dが含まれていて

はならない。 

アクセス規則 

なし。 

一般規則 

1) <定義域制約>の制約記述子がDの定義域記述子に追加される。 

2) DCによって,ある列CNがナル可能でないことが分かり,かつ,他のどの制約によっても,CNが

ナル可能でないことが分からないならば,CNの列記述子のナル可能性特性は,ナル可能でないこと

が分かるに変更される。 

注記394 列のナル可能性特性は,“4.13 列,フィールド及び属性”で定義している。 

適合性規則 

1) 機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域制約定義追加>を含んではな

らない。 

11.39 

<定義域制約定義削除> 

機能 

<定義域制約定義削除> (<drop domain constraint definition>) は,定義域の制約を破壊する。 

形式 

<定義域制約定義削除> ::= 

  DROP CONSTRAINT <制約名> 

構文規則 

1) <定義域制約定義削除>を含む<定義域変更文>中の<定義域名> DNによって識別される定義域をD

549 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とする。 

2) DNを含む列記述子をCDとし,CDを含む表記述子によって記述される表をTとし,Tの<表名>を

TNとする。 

3) <制約名>によって識別される制約の記述子をDCとする。 

4) DCは,Dの定義域記述子に含まれなければならない。 

アクセス規則 

なし。 

一般規則 

1) Dの定義域記述子から制約記述子DCが取り除かれる。 

2) DCによって,ある列CNがナル可能でないことが分かり,かつ,他のどの制約によっても,CNが

ナル可能でないことが分からないならば,CNの列記述子のナル可能性特性は,潜在的にナル可能に

変更される。 

注記395 列のナル可能性特性は,“4.13 列,フィールド及び属性”で定義している。 

3) DCの記述子が破壊される。 

適合性規則 

1) 機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域制約定義削除>を含んではな

らない。 

2) 機能F491“制約管理”なしでは,適合するSQL言語は,<定義域制約定義削除>を含んではならな

い。 

11.40 

<定義域削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.13 <定義域削除文>”によって修正される。 

機能 

<定義域削除文> (<drop domain statement>) は,定義域を破壊する。 

形式 

<定義域削除文> ::= 

  DROP DOMAIN <定義域名> <削除動作> 

構文規則 

1) <定義域名>によって識別される定義域をDとし,その<定義域名>をDNとする。DNの陽に指定さ

れるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Dの記述子を含んでいな

ければならない。 

2) 

04 RESTRICTが指定されるならば,次のいずれかの中でDが参照されていてはならない。 

a) 列記述子。 

b) ビュー記述子の元の<問合せ式>。 

c) 制約記述子の<探索条件>。 

d) ルーチン記述子のSQLルーチン本体。 

3) DNによって識別される定義域の<スキーマ名>によって識別されるスキーマを所有する<認可識別

子>をUAとする。 

アクセス規則 

1) 与えられた認可識別子は,UAを含まなければならない。 

一般規則 

550 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) DNを含む列記述子をCとし,Cを含む表記述子によって記述される表をTとし,Tの表名をTNと

する。Cは,次のとおりに修正される。 

a) DNがCから取り除かれる。Dのデータ型記述子の写しがCに含められる。 

b) Cが<DEFAULT句>を含まないで,かつ,Dの定義域記述子が<DEFAULT句>を含むならば,Dの

<DEFAULT句>の写しがCに含められる。 

c) Dの定義域記述子に含まれる全ての定義域制約記述子DCDに対して,DCDに含まれるどの定義

域制約用途記述子DCUに対しても,次による。 

i) 

DCUに含まれる適用可能な<探索条件>をSCとする。 

ii) <制約名>が処理系依存である<制約名定義>から成り,<制約特性>が定義域制約記述子の<制約

特性>で,かつ,<表制約>が次の検査制約である<表制約定義>をTCDとする。 

CHECK(SC) 

iii) 次の<表変更文>をUAが成功実行させるために必要な権限の全てを,UAに適用可能な権限が

含むならば, 

ALTER TABLE TN ADD TCD 

UAの現行認可識別子で,次の<表変更文>が実効的に実行される。 

ALTER TABLE TN ADD TCD 

2) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE USAGE ON DOMAIN DN 

FROM UA CASCADE 

3) Dの記述子が破壊される。 

適合性規則 

1) 機能F251“定義域提供”なしでは,適合するSQL言語は,<定義域削除文>を含んではならない。 

11.41 

<文字集合定義> 

機能 

<文字集合定義> (<character set definition>) は,文字集合を定義する。 

形式 

<文字集合定義> ::= 

  CREATE CHARACTER SET <文字集合名> [ AS ] 

    <文字集合元> [ <COLLATE句> ] 

<文字集合元> ::= 

  GET <文字集合指定> 

構文規則 

1) <文字集合定義>が<スキーマ定義>に含まれ,かつ,<文字集合定義>に直に含まれる<文字集合名>が

<スキーマ名>を含むならば,その<スキーマ名>は,<スキーマ定義>の指定されるか又は暗に想定さ

れる<スキーマ名>と等価でなければならない。 

2) <文字集合名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマ

は,文字集合名が<文字集合名>である文字集合記述子を含んでいてはならない。 

3) <文字集合元>に含まれる<文字集合指定>によって識別される文字集合CSは,次の<GRANT文>に

よって実効的に定義された権限記述子に関連付けられていなければならない。 

551 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

GRANT USAGE ON CHARACTER SET CSN TO PUBLIC 

ここで,CSNは,CSを識別する<文字集合名>とする。 

4) <COLLATE句>が指定されるならば,<COLLATE句>に含まれる<照合順名>は,<照合順名>に含ま

れる陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマに含まれる

照合順記述子CDを識別しなければならない。照合順は,<文字集合元>によって識別される文字集

合の文字レパートリに適用可能でなければならない。CDに含まれる適用可能な文字集合名のリス

トは,CSを識別する文字集合名を含まなければならない。 

5) <文字集合名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマ

を所有する<認可識別子>をAとする。 

アクセス規則 

1) <文字集合定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子

は,Aを含まなければならない。 

2) Aに適用可能な権限は,<文字集合指定>によって識別される文字集合に関するUSAGEを含まなけ

ればならない。 

一般規則 

1) <文字集合定義>は,文字集合を定義する。 

2) 定義される文字集合に対して,文字集合記述子が作成される。 

3) 定義される文字集合に対して作成される記述子は,含まれる文字集合名が<文字集合名>であるこ 

と,及び<COLLATE句>が指定されるならば,含まれる既定照合順の名前が,<COLLATE句>に含ま

れる<照合順名>であることを除いて,<文字集合指定>によって識別される文字集合の記述子と同一

とする。 

4) <文字集合定義>が現れる<スキーマ定義>又は<SQLクライアントモジュール定義>の<認可識別子>

に,この文字集合に関するUSAGE権限を定義する権限記述子が作成される。権限記述子の権限付

与者には,特別な付与者の値“̲SYSTEM”が設定される。この権限は,付与可能とする。 

適合性規則 

1) 機能F451“文字集合定義”なしでは,適合するSQL言語は,<文字集合定義>を含んではならない。 

11.42 

<文字集合削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.14 <文字集合削除文>”によって修正される。 

機能 

<文字集合削除文> (<drop character set statement>) は,文字集合を破壊する。 

形式 

<文字集合削除文> ::= 

  DROP CHARACTER SET <文字集合名> 

構文規則 

1) <文字集合名>によって識別される文字集合をCとし,Cの名前をCNとする。 

2) CNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Cの記

述子を含んでいなければならない。 

3) CNに含まれる陽に指定されるか又は暗に想定される<スキーマ名>は,INFORMATION̲SCHEMAと

等価であってはならない。 

4) 

04 次のいずれかの中でCが参照されていてはならない。 

552 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) 列記述子に含まれるデータ型記述子。 

b) 定義域記述子に含まれるデータ型記述子。 

c) 利用者定義型記述子に一般に含まれるデータ型記述子。 

d) フィールド記述子に含まれるデータ型記述子。 

e) ビュー記述子の元の<問合せ式>。 

f) 

制約記述子の<探索条件>。 

g) 照合順の照合順記述子。 

h) 文字変換の文字変換記述子。 

i) 

ルーチン記述子のSQLルーチン本体,<SQLパラメタ宣言>又は<戻りデータ型>。 

j) 

メソッド指定記述子の<SQLパラメタ宣言>又は<戻りデータ型>。 

5) <文字集合名>に陽に含まれるか又は暗に含まれる<スキーマ名>によって識別されるスキーマを, 

<文字集合名>を含むスキーマとする。 

アクセス規則 

1) Cによって識別される文字集合の<スキーマ名>によって識別されるスキーマを所有する<認可識別

子>をAとする。与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) Cが,動作中のSQLセション又は休眠SQLセションの現行の既定文字集合ならば,例外条件:文

字集合名が正しくない (invalid character set name) − SQLセション既定文字集合を削除できない 

(cannot drop SQL-session default character set) が引き起こされる。 

2) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE USAGE ON CHARACTER 

SET CN FROM A 

CASCADE 

3) Cの記述子が破壊される。 

適合性規則 

1) 機能F451“文字集合定義”なしでは,適合するSQL言語は,<文字集合削除文>を含んではならな

い。 

11.43 

<照合順定義> 

機能 

<照合順定義> (<collation definition>) は,照合順を定義する。 

形式 

<照合順定義> ::= 

  CREATE COLLATION <照合順名> FOR <文字集合指定> 

    FROM <既存照合順名> [ <詰め込み特性> ] 

<既存照合順名> ::= 

  <照合順名> 

<詰め込み特性> ::= 

  NO PAD 

| PAD SPACE 

553 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

1) <照合順名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマを

所有する<認可識別子>をAとする。 

2) <照合順定義>が<スキーマ定義>に含まれ,かつ,<照合順定義>に直に含まれる<照合順名>が<スキ

ーマ名>を含むならば,その<スキーマ名>は,<スキーマ定義>の指定されるか又は暗に想定される<

スキーマ名>と等価でなければならない。 

3) <照合順定義>に直に含まれる<照合順名> CNの陽に指定されるか又は暗に想定される<スキーマ名

>によって識別されるスキーマは,照合順名がCNである照合順記述子を含んでいてはならない。 

4) <既存照合順名>に直に含まれる<照合順名> ECNの陽に指定されるか又は暗に想定される<スキー

マ名>によって識別されるスキーマは,照合順名がECNである照合順記述子を含んでいなければな

らない。 

5) ECNによって識別される照合順は,<文字集合指定>によって識別される文字集合の記述子に含まれ

る文字レパートリ名と等価な文字レパートリ名を記述子が含む照合順でなければならない。 

6) <詰め込み特性>が指定されないならば,ECNによって識別される照合順の<詰め込み特性>が暗に

想定される。 

7) NO PADが指定されるならば,照合順は,NO PAD特性をもつという。PAD SPACEが指定されるな

らば,照合順は,PAD SPACE特性をもつという。 

アクセス規則 

1) <照合順定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子は,

Aを含まなければならない。 

2) Aに適用可能な権限は,ECNに関するUSAGEを含まなければならない。 

一般規則 

1) <照合順定義>は,照合順を定義する。 

2) この照合順に関するUSAGE権限をAに対して定義する権限記述子が作成される。権限記述子の権

限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

3) この権限記述子が付与可能であることは,ECNによって識別される照合順に関するAに対する

USAGE権限が付与可能であることと同値とする。 

4) 定義される照合順に対して照合順記述子が作成される。 

5) 作成される照合順記述子CDは,CDに含まれる照合順名がCNであること,及び<詰め込み特性>が

指定されるならば,CDに含まれる詰め込み特性が<詰め込み特性>であることを除いて,ECNの照

合順記述子と同一とする。 

適合性規則 

1) 機能F690“照合順提供”なしでは,適合するSQL言語は,<照合順定義>を含んではならない。 

11.44 

<照合順削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.15 <照合順削除文>”によって修正される。 

機能 

<照合順削除文> (<drop collation statement>) は,照合順を破壊する。 

形式 

<照合順削除文> ::= 

  DROP COLLATION <照合順名> <削除動作> 

554 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

1) <照合順名>によって識別される照合順をCとし,Cの名前をCNとする。 

2) CNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Cの記

述子を含んでいなければならない。 

3) CNに含まれる陽に指定されるか又は暗に想定される<スキーマ名>は,INFORMATION̲SCHEMAと

等価であってはならない。 

4) 

04 RESTRICTが指定されるならば,次のいずれかの中でCが参照されていてはならない。 

a) 文字集合記述子。 

b) トリガ記述子の被トリガ動作。 

c) ビュー記述子の元の<問合せ式>。 

d) 制約記述子の<探索条件>。 

e) ルーチン記述子のSQLルーチン本体,<SQLパラメタ宣言>又は<戻りデータ型>。 

f) 

メソッド指定記述子の<SQLパラメタ宣言>又は<戻りデータ型>。 

5) Cによって識別される照合順の<スキーマ名>によって識別されるスキーマを所有する<認可識別子

>をAとする。 

6) <照合順名>に陽に含まれるか又は暗に含まれる<スキーマ名>によって識別されるスキーマを,<照

合順名>を含むスキーマとする。 

アクセス規則 

1) 与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) CNを含むどの文字集合記述子CSDに対しても,CSDは,CNを含まないように修正される。CSD

がどの照合順名も含まないならば,CSDは,それの文字レパートリに対して既定照合順を利用する

ことを示すように修正される。 

2) CNを含むどのデータ型記述子DDに対しても,DDは,DDの文字集合の文字集合照合順の照合順

名を含むように修正される。 

注記396 これによって,DDによって記述される列,定義域,属性又はフィールドは,それの文字

集合の既定照合順に戻される。 

3) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE USAGE ON COLLATION 

CN FROM A CASCADE 

4) Cの記述子が破壊される。 

適合性規則 

1) 機能F690“照合順提供”なしでは,適合するSQL言語は,<照合順削除文>を含んではならない。 

11.45 

<文字変換定義> 

機能 

<文字変換定義> (<transliteration definition>) は,文字の文字変換を定義する。 

形式 

<文字変換定義> ::= 

  CREATE TRANSLATION <文字変換名> FOR <源文字集合指定> 

555 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    TO <相手文字集合指定> FROM <文字変換元> 

<源文字集合指定> ::= 

  <文字集合指定> 

<相手文字集合指定> ::= 

  <文字集合指定> 

<文字変換元> ::= 

  <既存文字変換名> 

| <文字変換ルーチン> 

<既存文字変換名> ::= 

  <文字変換名> 

<文字変換ルーチン> ::= 

  <特定ルーチン指示子> 

構文規則 

1) <文字変換定義>が<スキーマ定義>に含まれ,かつ,<文字変換定義>に直に含まれる<文字変換名>が

<スキーマ名>を含むならば,その<スキーマ名>は,<スキーマ定義>の陽に指定されるか又は暗に想

定される<スキーマ名>と等価でなければならない。 

2) <文字変換定義>に直に含まれる<文字変換名> TNの陽に指定されるか又は暗に想定されるスキーマ

名によって識別されるスキーマは,文字変換名がTNである文字変換記述子を含んでいてはならな

い。 

3) <源文字集合指定>に含まれる<文字集合指定>に含まれる<文字集合名> SCSNの陽に指定されるか

又は暗に想定される<スキーマ名>によって識別されるスキーマは,文字集合名がSCSNである文字

集合記述子を含んでいなければならない。 

4) <相手文字集合指定>に含まれる<文字集合指定>に含まれる<文字集合名> TCSNの陽に指定される

か又は暗に想定される<スキーマ名>によって識別されるスキーマは,文字集合名がTCSNである文

字集合記述子を含んでいなければならない。 

5) <既存文字変換名> ETNが指定されるならば,次による。 

a) ETNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,文字

変換名がETNである文字変換記述子を含んでいなければならない。 

b) SCSNによって識別される文字集合は,ETNによって識別される文字変換の源文字集合と同じ文

字レパートリ及び文字符号化形式をもたなければならない。 

c) TCSNによって識別される文字集合は,ETNによって識別される文字変換の相手文字集合と同じ

文字レパートリ及び文字符号化形式をもたなければならない。 

6) <文字変換ルーチン>が指定されるならば,次による。 

a) <文字変換ルーチン>に含まれる<特定ルーチン指示子> SRDの陽に指定されるか又は暗に想定さ

れる<スキーマ名>によって識別されるスキーマは,<特定ルーチン指示子> SRDをもつルーチン

を識別するルーチン記述子を含んでいなければならない。 

b) SRDによって識別されるルーチンは,データ型が文字列で,かつ,文字集合がSCSNによって指

定される文字集合である一つのパラメタをもつSQL呼出し関数でなければならない。ルーチンの

<戻り型>は,文字集合がTCSNによって指定される文字集合である文字列でなければならない。 

アクセス規則 

556 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <文字変換名>の暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマ

を所有する<認可識別子>をAとする。<文字変換定義>が<SQLクライアントモジュール定義>に含

まれるならば,与えられた認可識別子は,Aを含まなければならない。 

2) <既存文字変換名>が指定されるならば,Aに適用可能な権限は,ETNによって識別される文字変換

に関するUSAGEを含まなければならない。 

3) <文字変換ルーチン>が指定されるならば,Aに適用可能な権限は,SRDによって識別されるルーチ

ンに関するEXECUTEを含まなければならない。 

一般規則 

1) <文字変換定義>は,文字変換を定義する。 

2) <文字変換元>が<既存文字変換名>を含むならば,文字変換名がTNである文字変換記述子に含まれ

る特定名をSRDNとする。そうでなければ,<文字変換ルーチン>によって識別されるSQL呼出し

ルーチンの特定名をSRDNとする。 

3) 次の項目を含む文字変換記述子が作成される。 

a) 文字変換の名前TN。 

b) 変換元の文字集合の名前SCSN。 

c) 変換先の文字集合の名前TCSN。 

d) 文字変換を実行するSQL呼出しルーチンの特定名SRDN。 

4) <文字変換定義>が現れる<スキーマ定義>又は<SQLクライアントモジュール定義>の<認可識別子>

に,この文字変換に関するUSAGE権限を定義する権限記述子PDが作成される。権限記述子の権

限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

5) PDが付与可能であることは,<文字変換定義>が現れる<スキーマ定義>又は<SQLクライアントモ

ジュール定義>の<認可識別子>に対するUSAGE権限も,<文字変換定義>に含まれる<文字集合名>

によって識別される全ての文字集合に関して付与可能であることと同値とする。 

適合性規則 

1) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字変換定義>を含んではならない。 

11.46 

<文字変換削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.16 <文字変換削除文>”によって修正される。 

機能 

<文字変換削除文> (<drop transliteration statement>) は,文字の文字変換を破壊する。 

形式 

<文字変換削除文> ::= 

  DROP TRANSLATION <文字変換名> 

構文規則 

1) <文字変換名>によって識別される文字変換をTとし,Tの名前をTNとする。 

2) TNによって識別される文字変換の<スキーマ名>によって識別されるスキーマを所有する<認可識

別子>をAとする。 

3) 

04 TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Tの

記述子を含んでいなければならない。 

4) 次のいずれかの中でTが参照されていてはならない。 

a) トリガ記述子の被トリガ動作。 

557 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) ビュー記述子の元の<問合せ式>。 

c) 制約記述子の<探索条件>。 

d) 照合順の照合順記述子。 

e) 文字変換の文字変換記述子。 

f) 

ルーチン記述子のSQLルーチン本体。 

アクセス規則 

1) 与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE USAGE ON TRANSLATION TN  FROM 

A CASCADE 

2) Tの記述子が破壊される。 

適合性規則 

1) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字変換削除文>を含んではならな

い。 

11.47 

<表明定義> 

この細分箇条は,ISO/IEC 9075-4の“9.17 <表明定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.8 <表明定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.5 <表明定義>”によって修正される。 

機能 

<表明定義> (<assertion definition>) は,整合性制約を指定する。 

形式 

14 <表明定義> ::= 

CREATE ASSERTION <制約名> 

  CHECK <左括弧> <探索条件> <右括弧> 

  [ <制約特性> ] 

構文規則 

1) <表明定義>が<スキーマ定義>に含まれ,かつ,<制約名>が<スキーマ名>を含むならば,その<スキ

ーマ名>は,<表明定義>を含む<スキーマ定義>の陽に指定されるか又は暗に想定される<スキーマ名

>と等価でなければならない。 

2) <制約名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,制

約名が<制約名>である制約記述子を含んでいてはならない。 

3) <制約特性>が指定されるならば,ENFORCEDもNOT ENFORCEDも,指定してはならない。 

4) <制約特性>が指定されないならば,INITIALLY IMMEDIATE NOT DEFERRABLEが暗に想定される。 

5) 

04 <探索条件>は,<ホストパラメタ名>,<SQLパラメタ名>,<埋込み変数指定>,<動的パラメタ指

定>,又はシステムバージョン表のシステム時刻期間開始列若しくはシステム時刻期間終了列を参

照する<列参照>を含んではならない。 

注記397 <SQLパラメタ名>は,<SQLパラメタ名>の有効範囲の規則によって排除される。 

6) <探索条件>中のどの<問合せ式>も,一時表を参照してはならない。 

558 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7) <探索条件>は,回顧決定的である<ブール値式>を単純に含まなければならない。 

注記398 “回顧決定的”は,“6.35 <ブール値式>”で定義している。 

8) <探索条件>は,SQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチンをもつ<ル

ーチン呼出し>を一般に含んではならない。 

9) <探索条件>は,SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出

し>を一般に含んではならない。 

アクセス規則 

1) <表明定義>の<スキーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。<表

明定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子は,Aを

含まなければならない。 

一般規則 

1) <表明定義>は,表明を定義する。表明は,制約とする。 

2) <表明定義>に単純に含まれる<探索条件>をSCとする。 

3) 定義される表明を記述する表明記述子が作成される。この記述子は,次の項目を含む。 

a) <制約名>。 

b) <制約特性>で指定されたとおりの,制約が遅延可能か又は遅延可能でないか。 

c) <制約特性>で指定されたとおりの初期制約モード。 

d) 適用可能な<探索条件> SC。 

4) 情報スキーマ中でSCの文字表現を切捨てなしで表現できないならば,終了条件:警告 (warning) − 

情報スキーマに対して探索条件が長すぎる (search condition too long for information schema) が引き

起こされる。 

注記399 情報スキーマは,[ISO9075-11] で定義している。 

5) SCによって,ある列CNがナル可能でないことが分かり,かつ,他のどの制約によっても,CNが

ナル可能でないことが分からないならば,CNのナル可能性特性は,ナル可能でないことが分かるに

変更される。 

注記400 列のナル可能性特性は,“4.13 列,フィールド及び属性”で定義している。 

6) SCに含まれる<問合せ式>のいずれかがシステムバージョン表Tを参照するならば,表明を評価し

ている間,現在システム行に対応する行だけをTの行とみなす。 

適合性規則 

1) 機能F521“表明”なしでは,適合するSQL言語は,<表明定義>を含んではならない。 

2) 機能F672“回顧検査制約”なしでは,適合するSQL言語は,CURRENT̲DATE,

CURRENT̲TIMESTAMP又はLOCALTIMESTAMPを一般に含む<表明定義>を含んではならない。 

11.48 

<表明削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.18 <表明削除文>”によって修正される。 

機能 

<表明削除文> (<drop assertion statement>) は,表明を破壊する。 

形式 

<表明削除文> ::= 

  DROP ASSERTION <制約名> [ <削除動作> ] 

構文規則 

559 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <制約名>によって識別される表明をAとし,Aの名前をANとする。 

2) ANの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Aの記

述子を含んでいなければならない。 

3) <削除動作>が指定されないならば,RESTRICTが暗に想定される。 

4) RESTRICTが指定されるか又は暗に想定されるならば,ANは,どのルーチン記述子のSQLルーチ

ン本体中でも参照されていてはならない。 

5) QSが<問合せ指定>で,<集合関数指定>に含まれない列Cへの列参照をその<問合せ指定>が<選択

リスト>中に含み,かつ,GがQSの<グループ化列参照リスト>によって定義される列の集合で,か

つ,G 

CがQS中の知られている関数従属性であることを推論するのに表明Aが必要ならば,QS

は,Aに依存している (dependent on) という。 

6) Vが,Aに依存している<問合せ指定>を含むビューならば,Vは,Aに依存している という。 

7) RがSQLルーチンで,そのSQLルーチンの<SQLルーチン本体>が,Aに依存している<問合せ指定

>を含むならば,Rは,Aに依存している という。 

8) Cが制約又は表明で,その制約又は表明の<探索条件>が,Aに依存している<問合せ指定>を含むな

らば,Cは,Aに依存している という。 

9) Tがトリガで,そのトリガの被トリガ動作が,Aに依存している<問合せ指定>を含むならば,Tは,

Aに依存している という。 

10) RESTRICTが指定されるか若しくは暗に想定されるか,又は<削除動作>が指定されないならば,次

による。 

a) どの表制約も,Aに依存していてはならない。 

b) どのビューも,Aに依存していてはならない。 

c) どのSQLルーチンも,Aに依存していてはならない。 

d) どの制約又は表明も,Aに依存していてはならない。 

e) どのトリガも,Aに依存していてはならない。 

注記401 CASCADEが指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は

<REVOKE文>の実行によって暗に削除される。 

アクセス規則 

1) 与えられた認可識別子は,ANによって識別される表明の<スキーマ名>によって識別されるスキー

マを所有する<認可識別子>を含まなければならない。 

一般規則 

1) 

04 Aの<制約名>をSQLルーチン本体に含むルーチン記述子をもつSQL呼出しルーチンをRとする。

Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効

的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

2) Aに依存しているビューVの表名をVNとする。どのVに対しても,次の<ビュー削除文>が実効的

に実行される。 

DROP VIEW VN CASCADE 

3) Aに依存しているか又はAへの参照を含むSQLルーチンSRの特定名をSNとする。どのSRに対

しても,次の<ルーチン削除文>が実効的に実行される。 

560 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

DROP SPECIFIC ROUTINE SN CASCADE 

4) Aに依存している制約Cの制約名をCNとする。Cによって制約される表の名前をTNとする。ど

のCに対しても,次の<表変更文>が実効的に実行される。 

ALTER TABLE TN DROP CONSTRAINT CN CASCADE 

5) Aに依存している表明A2の制約名をAN2とする。どのA2に対しても,次の<表明削除文>が実効

的に実行される。 

DROP ASSERTION AN2 CASCADE 

6) Aに依存しているトリガTのトリガ名をTNとする。どのTに対しても,次の<トリガ削除文>が実

効的に実行される。 

DROP TRIGGER TN 

7) Aの記述子に含まれる<探索条件>をSCとする。SCによって,ある列CNがナル可能でないことが

分かり,かつ,他のどの制約によっても,CNがナル可能でないことが分からないならば,CNのナ

ル可能性特性は,潜在的にナル可能に変更される。 

注記402 列のナル可能性特性は,“4.13 列,フィールド及び属性”で定義している。 

8) Aの記述子が破壊される。 

適合性規則 

1) 機能F521“表明”なしでは,適合するSQL言語は,<表明削除文>を含んではならない。 

11.49 

<トリガ定義> 

この細分箇条は,ISO/IEC 9075-4の“9.19 <トリガ定義>”によって修正される。 

機能 

<トリガ定義> (<trigger definition>) は,被トリガSQL文を定義する。 

形式 

<トリガ定義> ::= 

  CREATE TRIGGER <トリガ名> <トリガ動作時期> <トリガ事象> 

      ON <表名> [ REFERENCING <遷移表又は遷移変数リスト> ] 

      <被トリガ動作> 

<トリガ動作時期> ::= 

  BEFORE 

| AFTER 

| INSTEAD OF 

<トリガ事象> ::= 

  INSERT 

| DELETE 

| UPDATE [ OF <トリガ列リスト> ] 

<トリガ列リスト> ::= 

  <列名リスト> 

<被トリガ動作> ::= 

  [ FOR EACH { ROW | STATEMENT } ]    

      [ <被トリガWHEN句> ] 

      <被トリガSQL文> 

561 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<被トリガWHEN句> ::= 

  WHEN <左括弧> <探索条件> <右括弧> 

14 <被トリガSQL文> ::= 

  <SQL手続文> 

| BEGIN ATOMIC { <SQL手続文> <セミコロン> }... END 

<遷移表又は遷移変数リスト> ::= 

  <遷移表又は遷移変数>... 

<遷移表又は遷移変数> ::= 

  OLD [ ROW ] [ AS ] <遷移旧変数名> 

| NEW [ ROW ] [ AS ] <遷移新変数名> 

| OLD TABLE [ AS ] <遷移旧表名> 

| NEW TABLE [ AS ] <遷移新表名> 

<遷移旧表名> ::= 

  <遷移表名> 

<遷移新表名> ::= 

  <遷移表名> 

<遷移表名> ::= 

  <識別子> 

<遷移旧変数名> ::= 

  <相関名> 

<遷移新変数名>::= 

  <相関名> 

構文規則 

1) 場合: 

a) <トリガ定義>が<スキーマ定義>に含まれ,かつ,<トリガ名>が<スキーマ名>を含むならば,その

<スキーマ名>は,<トリガ定義>を含む<スキーマ定義>の指定されるか又は暗に想定される<スキ

ーマ名>と等価でなければならない。 

b) <トリガ定義>が<SQLクライアントモジュール定義>に含まれ,かつ,<トリガ名>が<スキーマ名

>を含むならば,その<スキーマ名>は,<SQLクライアントモジュール定義>の指定されるか又は

暗に想定される<スキーマ名>と等価でなければならない。 

2) <トリガ定義>の<表名>をTNとする。TNによって識別される表Tは,<トリガ定義>の当該表 (subject 

table) とする。 

3) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Tの記

述子を含んでいなければならない。 

4) <トリガ名> TRNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキー

マは,トリガ名がTRNであるトリガ記述子を含んでいてはならない。 

5) 場合: 

a) INSTEAD OFが指定されるならば,Tは,ビュー表でなければならない。 

場合: 

i) 

<トリガ事象>がINSERTを指定するならば,Tは,トリガ挿入可能であってはならない。 

562 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) <トリガ事象>がUPDATEを指定するならば,Tは,トリガ更新可能であってはならない。 

iii) <トリガ事象>がDELETEを指定するならば,Tは,トリガ削除可能であってはならない。 

b) そうでなければ,Tは,宣言局所一時表でない実表でなければならない。 

6) <トリガ列リスト>が指定されるならば,次による。 

a) どの<列名>も,<トリガ列リスト>中に2回以上現れてはならない。 

b) <トリガ列リスト>の<列名>は,Tの列を識別しなければならない。 

7) REFERENCINGが指定されるならば,次による。 

a) <遷移旧変数名>,<遷移旧表名>,<遷移新変数名>及び<遷移新表名>を,それぞれ,OR,OT,NR

及びNTとする。 

b) OLD又はOLD ROW,NEW又はNEW ROW,OLD TABLE及びNEW TABLEは,<遷移表又は遷

移変数リスト>内に,それぞれ,高々1回指定しなければならない。 

c) 場合: 

i) 

<トリガ事象>がINSERTを指定するならば,OLD ROWも,OLD TABLEも,指定してはならな

い。 

ii) <トリガ事象>がDELETEを指定するならば,NEW ROWも,NEW TABLEも,指定してはなら

ない。 

d) OR,OT,NR及びNTのどの二つも,等価であってはならない。 

e) OR及びNRは,両方とも,範囲変数とする。 

注記403 “範囲変数”は,“4.15.10 表を含む演算”で定義している。 

f) OR,OT,NR及びNTの有効範囲は,<被トリガ動作>に含まれる<SQLスキーマ文>を除く,<被

トリガ動作>とする。 

8) FOR EACH ROWも,FOR EACH STATEMENTも,指定されないならば,FOR EACH STATEMENT

が暗に想定される。 

9) OR又はNRが指定されるならば,FOR EACH ROWを指定しなければならない。 

10) <被トリガ動作>は,<SQLパラメタ参照>,<ホストパラメタ名>,<動的パラメタ指定>又は<埋込み

変数名>を含んではならない。 

11) <被トリガWHEN句>は,SQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチン

をもつ<ルーチン呼出し>を含んではならない。 

12) Tの記述子がシステム時刻期間記述子を含むならば,<被トリガ動作>に一般に含まれるどの<列参

照>も,Tのシステム時刻期間開始列又はTのシステム時刻期間終了列を参照してはならない。 

13) <被トリガSQL文>が<SQLトランザクション文>,<SQLコネクション文>,<SQLスキーマ文>, 

<動的SQL文>又は<SQLセション文>を広く含んではならないかどうかは,処理系定義とする。 

14) BEFOREが指定されるならば,次による。 

a) <被トリガ動作>がSQLデータを潜在的に修正するSQL文を含んではならないかどうかは,処理

系定義とする。 

b) OLD TABLEも,NEW TABLEも,指定してはならない。 

c) <被トリガ動作>は,Tの生成列,Tのシステム時刻期間開始列,Tのシステム時刻期間終了列,T

のATPN期間開始列,又はTのATPN期間終了列に対応する遷移新変数中のフィールドを参照す

る<フィールド参照>を含んではならない。ここで,ATPNは,Tの記述子に含まれる期間記述子

があるならば,その期間記述子に含まれる<適用業務時刻期間名>とする。 

563 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

15) INSTEAD OFが指定されるならば,次による。 

a) <被トリガWHEN句>を指定してはならない。 

b) <トリガ列リスト>を指定してはならない。 

c) <表名>は,再帰若しくは参照可能のいずれかであるビュー,又はWITH CASCADED CHECK 

OPTIONが指定されたことを示す標識をビュー記述子が含むビューを識別してはならない。 

d) <表名>は,WITH CASCADED CHECK OPTIONが指定されたことを示す標識をビュー記述子が含

むビューの元の<問合せ式>の末端で基となる表であるビューを識別してはならない。 

アクセス規則 

1) <トリガ定義>の<トリガ名>の暗に想定されるか又は陽に指定される<スキーマ名>によって識別さ

れるスキーマを所有する<認可識別子>をAとする。<トリガ定義>が<SQLクライアントモジュール

定義>に含まれるならば,与えられた認可識別子は,Aを含まなければならない。 

2) Aに適用可能な権限は,Tに関するTRIGGERを含まなければならない。 

3) 

04 <トリガ定義>の<被トリガ動作> TAが<遷移旧表名> OTTN,<遷移旧変数名> OTVN,<遷移新表

名> NTTN又は<遷移新変数名> NTVNを含むならば,Aに適用可能な権限は,Tに関するSELECT

を含まなければならない。 

一般規則 

1) <トリガ定義>は,トリガを定義する。 

2) OTは,遷移旧表を識別する。NTは,遷移新表を識別する。ORは,遷移旧変数を識別する。NRは,

遷移新変数を識別する。 

注記404 “遷移旧表”,“遷移新表”,“遷移旧変数”及び“遷移新変数”は,“4.39.1 トリガの一般

記述”で定義している。 

3) OTによって識別される遷移表は,ORに関連付けられる表とする。NTによって識別される遷移表

は,NRに関連付けられる表とする。 

4) 情報スキーマ中で<被トリガSQL文>の文字表現を切捨てなしで表現できないならば,終了条件:警

告 (warning) − 情報スキーマに対して文が長すぎる (statement too long for information schema) が引

き起こされる。 

注記405 情報スキーマは,[ISO9075-11] で定義している。 

5) <トリガ定義>に対してトリガ記述子が次のとおりに作成される。 

a) トリガ記述子に含まれるトリガ名は,<トリガ名>とする。 

b) トリガ記述子に含まれる当該表は,<表名>とする。 

c) トリガ記述子に含まれるトリガ動作時期は,<トリガ動作時期>とする。 

d) FOR EACH STATEMENTが指定されるか又は暗に想定されるならば,トリガが文レベルトリガで

あることを示す標識がトリガ記述子に含められる。そうでなければ,トリガが行レベルトリガで

あることを示す標識がトリガ記述子に含められる。 

e) トリガ記述子に含まれるトリガ事象は,<トリガ事象>とする。 

f) 

<トリガ定義>中で指定される<遷移旧変数名>,<遷移新変数名>,<遷移旧表名>又は<遷移新表名

>が,それぞれ,遷移旧変数名,遷移新変数名,遷移旧表名又は遷移新表名として,トリガ記述子

に含められる。 

g) トリガ記述子に含まれる被トリガ動作は,指定された<被トリガ動作>とする。 

h) <トリガ列リスト> TCLが指定されるならば,TCLは,トリガ記述子に含められるトリガ列リス

564 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

トとし,そうでなければ,そのトリガ列リストは,空とする。 

i) 

トリガ記述子に含まれる被トリガ動作列集合 (triggered action column set) は,<被トリガ動作>に

含まれる列の全ての異なる完全修飾付きの名前の集合とする。 

j) 

トリガ記述子に含まれる作成時刻印は,トリガの作成時刻印とする。 

6) INSTEAD OFが指定されるならば,次による。 

a) TNによって識別されるビューVのビュー記述子をVDとする。TNの<スキーマ名>によって識別

されるスキーマを所有する<認可識別子>をUとする。 

b) 場合: 

i) 

<トリガ事象>がINSERTならば,次による。 

1) Vがトリガ挿入可能であることを示す標識を含むように,VDが修正される。 

2) Vに関するINSERT権限をUに対して定義する権限記述子が作成される。この権限は,付与

可能とする。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定され

る。 

3) Vの各列Cに対して,Cに関するINSERT権限をUに対して定義する権限記述子が作成され

る。この権限は,付与可能とする。その権限記述子の権限付与者には,特別な付与者の値

“̲SYSTEM”が設定される。 

ii) <トリガ事象>がUPDATEならば,次による。 

1) Vがトリガ更新可能であることを示す標識を含むように,VDが修正される。 

2) Vに関するUPDATE権限をUに対して定義する権限記述子が作成される。この権限は,付与

可能とする。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定され

る。 

3) Vの各列Cに対して,Cに関するUPDATE権限をUに対して定義する権限記述子が作成さ

れる。この権限は,付与可能とする。その権限記述子の権限付与者には,特別な付与者の値

“̲SYSTEM”が設定される。 

iii) <トリガ事象>がDELETEならば,次による。 

1) Vがトリガ削除可能であることを示す標識を含むように,VDが修正される。 

2) Vに関するDELETE権限をUに対して定義する権限記述子が作成される。この権限は,付与

可能とする。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定され

る。 

適合性規則 

1) 機能T211“基本トリガ能力”なしでは,適合するSQL言語は,<トリガ定義>を含んではならない。 

2) 機能T212“拡張トリガ能力”なしでは,適合するSQL言語中で,<被トリガ動作>は,FOR EACH 

ROWを含まなければならない。 

3) 機能T213“INSTEAD OFトリガ”なしでは,適合するSQL言語中で,<トリガ動作時期>は,INSTEAD 

OFを直に含んではならない。 

11.50 

<トリガ削除文> 

機能 

<トリガ削除文> (<drop trigger stetement>) は,トリガを破壊する。 

形式 

<トリガ削除文> ::= 

565 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  DROP TRIGGER <トリガ名> 

構文規則 

1) <トリガ名>によって識別されるトリガをTRとし,TRの名前をTRNとする。 

2) TRNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,TRの

記述子を含んでいなければならない。 

アクセス規則 

1) TRの<スキーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。与えられた

認可識別子は,Aを含まなければならない。 

一般規則 

1) TRがINSTEAD OFトリガならば,次による。 

a) TRの当該表をVとする。Vのビュー記述子をVDとする。VDに含まれる<表名>をVNとする。

VDに含まれる元の<問合せ式>をQEとする。VNの<スキーマ名>によって識別されるスキーマを

所有する<認可識別子>をUとする。 

b) 場合: 

i) 

TRが挿入INSTEAD OFトリガならば,次による。 

1) Vがトリガ挿入可能でないことを示す標識を含むように,VDが修正される。 

2) 場合: 

A) Vが挿入可能でないならば,“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセ

ス規則の検査なしで,次の<REVOKE文>が実効的に実行される。 

REVOKE INSERT ON VN FROM U CASCADE 

B) そうでなければ,次による。 

I) VをVIEWとして,“9.30 ビュー構成要素権限の決定”の一般規則を適用する。これら

の一般規則の適用によって戻されるDESCRIPTOR SETをビュー構成要素権限記述子の

集合とする。 

II) 場合: 

1) 識別されるオブジェクトがQEで,動作がINSERTで,権限付与者が“̲SYSTEM”で,

かつ,権限受領者がUであるビュー構成要素表権限記述子がないならば,“̲SYSTEM”

の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE文

>が実効的に実行される。 

REVOKE INSERT ON VN FROM U CASCADE 

2) そうでなければ,識別されるオブジェクトがQEで,動作がINSERTで,権限付与者

が“̲SYSTEM”で,かつ,権限受領者がUであるビュー構成要素表権限記述子をVCTPD

とする。権限が付与可能でないことをVCTPDが示すならば,“̲SYSTEM”の現行認

可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE文>が実効

的に実行される。 

REVOKE GRANT OPTION FOR INSERT ON VN FROM U CASCADE 

ii) TRが更新INSTEAD OFトリガならば,次による。 

1) Vがトリガ更新可能でないことを示す標識を含むように,VDが修正される。 

2) 場合: 

A) Vが更新可能でないならば,“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセ

566 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ス規則の検査なしで,次の<REVOKE文>が実効的に実行される。 

REVOKE UPDATE ON VN FROM U CASCADE 

B) そうでなければ,次による。 

I) VをVIEWとして,“9.30 ビュー構成要素権限の決定”の一般規則を適用する。これら

の一般規則の適用によって戻されるDESCRIPTOR SETをビュー構成要素権限記述子の

集合とする。 

II) 場合: 

1) 識別されるオブジェクトがQEで,動作がUPDATEで,権限付与者が“̲SYSTEM”

で,かつ,権限受領者がUであるビュー構成要素表権限記述子がないならば,

“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次

の<REVOKE文>が実効的に実行される。 

REVOKE UPDATE ON VN FROM U CASCADE 

2) そうでなければ,識別されるオブジェクトがQEで,動作がUPDATEで,権限付与者

が“̲SYSTEM”で,かつ,権限受領者がUであるビュー構成要素表権限記述子をVCTPD

とする。権限が付与可能でないことをVCTPDが示すならば,“̲SYSTEM”の現行認

可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE文>が実効

的に実行される。 

REVOKE GRANT OPTION FOR UPDATE ON VN FROM U CASCADE 

iii) TRが削除INSTEAD OFトリガならば,次による。 

1) Vがトリガ削除可能でないことを示す標識を含むように,VDが修正される。 

2) 場合: 

A) Vが更新可能でないならば,“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセ

ス規則の検査なしで,次の<REVOKE文>が実効的に実行される。 

REVOKE DELETE ON VN FROM U CASCADE 

B) そうでなければ,次による。 

I) VをVIEWとして,“9.30 ビュー構成要素権限の決定”の一般規則を適用する。これら

の一般規則の適用によって戻されるDESCRIPTOR SETをビュー構成要素権限記述子の

集合とする。 

II) 場合: 

1) 識別されるオブジェクトがQEで,動作がDELETEで,権限付与者が“̲SYSTEM”

で,かつ,権限受領者がUであるビュー構成要素表権限記述子がないならば,

“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次

の<REVOKE文>が実効的に実行される。 

REVOKE DELETE ON VN FROM U CASCADE 

2) そうでなければ,識別されるオブジェクトがQEで,動作がDELETEで,権限付与者

が“̲SYSTEM”で,かつ,権限受領者がUであるビュー構成要素表権限記述子をVCTPD

とする。権限が付与可能でないことをVCTPDが示すならば,“̲SYSTEM”の現行認

可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE文>が実効

的に実行される。 

REVOKE GRANT OPTION FOR DELETE ON VN FROM U CASCADE 

567 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) あるならば,全てのビュー構成要素権限記述子が破壊される。 

3) TRの記述子が破壊される。 

適合性規則 

1) 機能T211“基本トリガ能力”なしでは,適合するSQL言語は,<トリガ削除文>を含んではならな

い。 

11.51 

<利用者定義型定義> 

この細分箇条は,ISO/IEC 9075-9の“11.9 <利用者定義型定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.4 <利用者定義型定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.6 <利用者定義型定義>”によって修正される。 

機能 

<利用者定義型定義> (<user-defined type definition>) は,利用者定義型を定義する。 

形式 

<利用者定義型定義> ::= 

  CREATE TYPE <利用者定義型本体> 

13 <利用者定義型本体> ::= 

  <スキーマ解決利用者定義型名> 

      [ <下位型句> ] 

      [ AS <表現> ] 

      [ <利用者定義型選択肢リスト> ] 

      [ <メソッド指定リスト> ] 

<利用者定義型選択肢リスト> ::= 

  <利用者定義型選択肢> [ <利用者定義型選択肢>... ] 

<利用者定義型選択肢> ::= 

  <INSTANTIABLE句> 

| <終端性> 

| <参照型指定> 

| <REFへのCAST> 

| <型へのCAST> 

| <個別型へのCAST> 

| <元型へのCAST> 

<下位型句> ::= 

  UNDER <上位型名> 

<上位型名> ::= 

  <パス解決利用者定義型名> 

<表現> ::= 

  <既定義型> 

| <集まり型> 

| <メンバリスト> 

<メンバリスト> ::= 

  <左括弧> <メンバ> [ { <コンマ> <メンバ> }... ] <右括弧> 

568 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<メンバ> ::= 

  <属性定義> 

<INSTANTIABLE句> ::= 

  INSTANTIABLE 

| NOT INSTANTIABLE 

<終端性> ::= 

  FINAL 

| NOT FINAL 

<参照型指定> ::= 

  <利用者定義表現> 

| <導出表現> 

| <システム生成表現> 

<利用者定義表現> ::= 

  REF USING <既定義型> 

<導出表現> ::= 

  REF FROM <属性のリスト> 

<システム生成表現> ::= 

  REF IS SYSTEM GENERATED 

<REFへのCAST> ::= 

  CAST <左括弧> SOURCE AS REF <右括弧> WITH <REFへのCASTの識別子> 

<REFへのCASTの識別子> ::= 

  <識別子> 

<型へのCAST> ::= 

  CAST <左括弧> REF AS SOURCE <右括弧> WITH <型へのCASTの識別子> 

<型へのCASTの識別子> ::= 

  <識別子> 

<属性のリスト> ::= 

  <左括弧> <属性名> [ { <コンマ> <属性名> }... ] <右括弧> 

<個別型へのCAST> ::= 

  CAST <左括弧> SOURCE AS DISTINCT <右括弧> 

      WITH <個別型へのCASTの識別子> 

<個別型へのCASTの識別子> ::= 

  <識別子> 

<元型へのCAST> ::= 

  CAST <左括弧> DISTINCT AS SOURCE <右括弧> 

      WITH <元型へのCASTの識別子> 

<元型へのCASTの識別子> ::= 

  <識別子> 

<メソッド指定リスト> ::= 

  <メソッド指定> [ { <コンマ> <メソッド指定> }... ] 

569 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

13 <メソッド指定> ::= 

  <原メソッド指定> 

| <置換メソッド指定> 

<原メソッド指定> ::= 

  <部分メソッド指定> [ SELF AS RESULT ] [ SELF AS LOCATOR ] 

      [ <メソッド特性の並び> ] 

<置換メソッド指定> ::= 

  OVERRIDING <部分メソッド指定> 

<部分メソッド指定> ::= 

  [ INSTANCE | STATIC | CONSTRUCTOR ] 

      METHOD <メソッド名> <SQLパラメタ宣言リスト> 

      <RETURNS句> 

      [ SPECIFIC <特定メソッド名> ] 

<特定メソッド名> ::= 

  [ <スキーマ名> <ピリオド> ]<被修飾識別子> 

<メソッド特性の並び> ::= 

  <メソッド特性>... 

13 <メソッド特性> ::= 

  <LANGUAGE句> 

| <PARAMETER STYLE句> 

| <決定的特性> 

| <SQLデータアクセス指示> 

| <ナル呼出し句> 

構文規則 

1) <利用者定義型定義>をUDTDとし,UDTDに直に含まれる<利用者定義型本体>をUDTBとし,

UDTBに直に含まれる<スキーマ解決利用者定義型名>をUDTNとし,UDTNの指定されるか又は暗

に想定される<スキーマ名>をSNとし,SNによって識別されるSQLスキーマをSSとし,UDTDに

よって定義されるデータ型をUDTとする。 

2) UDTDが<スキーマ定義>に含まれ,かつ,UDTNが<スキーマ名>を含むならば,その<スキーマ名

>は,UDTDを含む<スキーマ定義>の指定されるか又は暗に想定される<スキーマ名>と等価でなけ

ればならない。 

3) 

13 SSは,名前がUDTNと等価である利用者定義型記述子又は定義域記述子を含んではならない。 

4) <INSTANTIABLE句>,<終端性>,<参照型指定>,<REFへのCAST>,<型へのCAST>,<個別型へ

のCAST>又は<元型へのCAST>のどれも,2回以上指定してはならない。 

5) 場合: 

a) <表現>が<既定義型>又は<集まり型>を指定するならば,UDTDは,個別型 (distinct type) を定義

する。 

b) そうでなければ,UDTDは,構造型 (structured type) を定義する。 

6) <終端性>がFINALを指定するならば,<INSTANTIABLE句>は,NOT INSTANTIABLEを指定して

はならない。 

570 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7) UDTDが個別型を定義するならば,次による。 

a) <既定義型>又は<集まり型>によって識別されるデータ型をPSDTとする。 

場合: 

i) 

PSDTが真数型ならば,精度がPSDTの精度と等しく,かつ,位取りがPSDTの位取りと等し

い処理系定義の真数型をSDTとする。 

ii) PSDTが概数型ならば,精度がPSDTの精度と等しい処理系定義の概数型をSDTとする。 

iii) そうでなければ,PSDTをSDTとする。 

b) <INSTANTIABLE句>を指定してはならない。 

c) <終端性>が指定されないならば,FINALが暗に想定される。そうでなければ,FINALを指定しな

ければならない。 

d) <下位型句>を指定してはならない。 

e) <参照型指定>を指定してはならない。 

f) 

<REFへのCAST>も,<型へのCAST>も,指定してはならない。 

g) <個別型へのCAST>が指定されるならば,<個別型へのCASTの識別子>をFNUDTとする。そう

でなければ,UDTNの<被修飾識別子>をFNUDTとする。 

h) <元型へのCAST>が指定されるならば,<元型へのCASTの識別子>をFNSDTとする。そうでな

ければ,SDTをTYPEとして,“9.9 型名決定”の構文規則を適用する。これらの構文規則の適用

によって戻されるIDENTIFIERをFNSDTとする。 

8) UDTDが構造型を指定するならば,次による。 

a) <個別型へのCAST>も,<元型へのCAST>も,指定してはならない。 

b) <下位型句>が指定されるならば,<参照型指定>を指定してはならない。 

c) <下位型句>も,<参照型指定>も,指定されないならば,<システム生成表現>が暗に想定される。 

d) <INSTANTIABLE句>が指定されないならば,INSTANTIABLEが暗に想定される。 

e) <終端性>を指定しなければならない。 

f) UDTの原定義属性 (originally-defined attributes) は,<メンバリスト>に含まれる<属性定義>によっ

て定義される属性とする。UDTのどの二つの原定義属性も,等価な<属性名>をもってはならない。 

g) <メンバリスト>に含まれる各<属性定義> ATDに対して,ATDに含まれる<属性名>をANとし,

ATDに含まれる<データ型>をDTとする。次の二つの<原メソッド指定>が暗に想定される。 

METHOD AN ( ) 

    RETURNS DT 

    LANGUAGE SQL 

    DETERMINISTIC 

    CONTAINS SQL 

  RETURNS NULL ON NULL INPUT 

これは,属性ANの観測関数の原メソッド指定 (original method specification) とする。 

METHOD AN ( ATTR  DT ) 

    RETURNS UDTN 

    SELF AS RESULT 

    LANGUAGE SQL 

    DETERMINISTIC 

571 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    CONTAINS SQL 

  CALLED ON NULL INPUT 

これは,属性ANの変異関数の原メソッド指定 とする。 

h) <利用者定義表現>が指定されるならば,次による。 

i) 

<既定義型>をBTとする。BTは,UDTの参照している型の表現型 (representation type of the 

referencing type) とする。 

ii) BTは,真数型,又は長大オブジェクトデータ列型ではない文字列型でなければならない。 

iii) <REFへのCAST>が指定されるならば,<REFへのCASTの識別子>をFNREFとし,そうでな

ければ,UDTNの<被修飾識別子>をFNREFとする。 

iv) 場合: 

1) <型へのCAST>が指定されるならば,<型へのCASTの識別子>をFNTYPとする。 

2) そうでなければ,BTをTYPEとして,“9.9 型名決定”の構文規則を適用する。これらの構

文規則の適用によって戻されるIDENTIFIERをFNTYPとする。 

i) 

<導出表現>が指定されるならば,<属性のリスト>中のどの二つの<属性名>も,等価であってはな

らない。 

j) 

<下位型句>が指定されるならば,次による。 

i) 

<上位型名>は,UDTNと等価であってはならない。 

ii) 

13 <下位型句>に直に含まれる<上位型名>は,構造型SSTの記述子を識別しなければならない。

UDTは,SSTの直接下位型とし,SSTは,UDTの直接上位型とする。 

iii) SSTの記述子は,SSTが終端であることを示す標識を含んではならない。 

iv) UDTの継承属性は,SSTの記述子に含まれる属性記述子によって記述される属性とする。 

v) <メンバリスト>が指定されるならば,<メンバリスト>に含まれるどの<属性名>も,継承属性の

属性名と等価な属性名をもってはならない 

vi) SSTの参照している型が利用者定義表現をもつことを,SSTの利用者定義型記述子が示すなら

ば,SSTの利用者定義型記述子に含まれるSSTの参照している型の表現型のデータ型記述子に

よって記述されるデータ型をBTとする。 

1) <REFへのCAST>が指定されるならば,<REFへのCASTの識別子>をFNREFとし,そうで

なければ,UDTNの<被修飾識別子>をFNREFとする。 

2) 場合: 

A) <型へのCAST>が指定されるならば,<型へのCASTの識別子>をFNTYPとする。 

B) そうでなければ,BTをTYPEとして,“9.9 型名決定”の構文規則を適用する。これらの

構文規則の適用によって戻されるIDENTIFIERをFNTYPとする。 

k) <REFへのCAST>又は<型へのCAST>が指定されるならば,次のうちのただ一つが真でなければ

ならない。 

i) 

<利用者定義表現>が指定される。 

ii) <下位型句>が指定され,かつ,UDTの直接上位型の参照している型が利用者定義表現をもつこ

とを,UDTの直接上位型の利用者定義型記述子が示す。 

9) 

13 <メソッド指定リスト>が指定されるならば,次による。 

a) 

13 <メソッド指定リスト>に含まれる<メソッド指定> MSi,1 ≤ i ≤ Mの個数をMとする。MSiの 

<メソッド名>をMNiとする。 

572 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) 1からMまでの範囲のiに対して,次による。 

i) 

MSiがINSTANCE,CONSTRUCTOR又はSTATICを指定しないならば,INSTANCEが暗に想定

される。 

ii) MSiがSTATICを指定するならば,次による。 

1) SELF AS RESULT,SELF AS LOCATOR及びOVERRIDINGのどれも,指定してはならない。 

2) MSiは,静的メソッド (static method) を指定する。 

iii) MSiがCONSTRUCTORを指定するならば,次による。 

1) SELF AS RESULTを指定しなければならない。 

2) OVERRIDINGを指定してはならない。 

3) MNiは,UDTNの<被修飾識別子>と等価でなければならない。 

4) <戻りデータ型>は,UDTNを指定しなければならない。 

5) UDTDは,構造型を定義しなければならない。 

6) 

13 MSiは,SQL呼出し構成メソッド (SQL-invoked constructor method) を指定する。 

iv) SN.MNiをRNiとする。 

v) <特定メソッド名>が指定されないならば,<スキーマ名>がSNと等価な処理系依存の<特定メ

ソッド名>が暗に想定される。 

vi) <特定メソッド名>が<スキーマ名>を含むならば,その<スキーマ名>は,SNと等価でなければ

ならない。<特定メソッド名>が<スキーマ名>を含まないならば,SNの<スキーマ名>が暗に想

定される。 

vii) <特定メソッド名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別される

スキーマは,<特定メソッド名>と等価な特定名をもつルーチン記述子,又は<特定メソッド名>

と等価な特定メソッド名をもつメソッド指定記述子を含む利用者定義型記述子を含んでいては

ならない。 

viii) MSiに含まれる<SQLパラメタ宣言リスト>をPDLiとする。 

1) PDLiに含まれるどの二つの<SQLパラメタ名>も,等価であってはならない。 

2) PDLiに含まれるどの<SQLパラメタ名>も,SELFと等価であってはならない。 

ix) MSiに含まれる<SQLパラメタ宣言>の個数をNiとする。どの<SQLパラメタ宣言> PDi, j,1 ≤ 

j ≤ Niに対しても,次による。 

1) PDi, jは,<パラメタモード>を含んではならない。INの<パラメタモード>が暗に想定される。 

2) PDi, jは,RESULTを指定してはならない。 

3) PDi, jに直に含まれる<パラメタの型> PTi, jは,ROWを指定してはならない。 

4) PTi, jが<位置付け子標識>を単純に含むならば,次による。 

A) MSiは,LANGUAGE SQLを指定しても,暗に想定してもならない。 

B) 

13 PTi, jは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マル

チ集合型又は利用者定義型のいずれかを指定しなければならない。 

x) <戻りデータ型> RTが<位置付け子標識>を単純に含むならば,次による。 

1) LANGUAGE SQLを指定しても,暗に想定してもならない。 

2) RTは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合

型又は利用者定義型のいずれかでなければならない。 

3) 

13 <結果型変換>を指定してはならない。 

573 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

xi) SELF AS RESULTが指定されるならば,<戻りデータ型>は,UDTNを指定しなければならない。 

xii) (i +1) からMまでの範囲のkに対して,次の条件のうちの少なくとも一つが偽でなければなら

ない。 

1) MNiと,MSkの<メソッド名>とが等価である。 

2) MSi及びMSkの両方のいずれかがCONSTRUCTORを指定するか,又はどちらも,

CONSTRUCTORを指定しない。 

3) MSkがNi個の<SQLパラメタ宣言>をもつ。 

4) PTi, j,1 ≤ j ≤ Niのデータ型がPTk, jと互換である。 

xiii) 13 MSiの非拡張SQLパラメタ宣言リスト (unaugmented SQL parameter declaration list) は,MSi

に含まれる<SQLパラメタ宣言リスト>とする。 

xiv) MSiが<原メソッド指定>を指定するならば,次による。 

1) 

13 MSiの<メソッド特性の並び>は,高々一つの<LANGUAGE句>,高々一つの<PARAMETER 

STYLE句>,高々一つの<決定的特性>,高々一つの<SQLデータアクセス指示>及び高々一つ

の<ナル呼出し句>を含まなければならない。 

2) 

13 <LANGUAGE句>が指定されないならば,LANGUAGE SQLが暗に想定される。 

3) <決定的特性>が指定されないならば,NOT DETERMINISTICが暗に想定される。 

4) <SQLデータアクセス指示>を指定しなければならない。 

5) <ナル呼出し句>が指定されないならば,CALLED ON NULL INPUTが暗に想定される。 

6) 場合: 

A) LANGUAGE SQLが指定されるか又は暗に想定されるならば,次による。 

I) 

<RETURNS句>は,<結果型変換>を指定してはならない。 

II) <SQLデータアクセス指示>は,NO SQLを指定してはならない。 

III) <PARAMETER STYLE句>を指定してはならない。 

IV) <SQLパラメタ宣言リスト>に含まれるどの<SQLパラメタ宣言>も,<SQLパラメタ名>

を含まなければならない。 

B) そうでなければ,次による。 

I) 

13 <パラメタ様式>が指定されないならば,PARAMETER STYLE SQLが暗に想定される。 

II) <結果型変換>が指定されるならば,<結果型変換>中に指定される<データ型>の値をVと

し,<戻りデータ型>をRTとする。“6.13 <CAST指定>”の構文規則に従って,次のCAST

指定が正しくなければならない。 

CAST (  V AS RT ) 

III) <結果CAST FROM型> RCTが<位置付け子標識>を単純に含むならば,RCTは,2進オ

クテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又は利

用者定義型のいずれかでなければならない。 

7) 次の全てが真であるようなUDTの真上位型の記述子に含まれるメソッド指定を矛盾するメ

ソッド指定 (conflicting method specification) CMSとする。 

A) CMSのメソッド名とMNiとが等価である。 

B) CMSとMSiとが,同じ個数NiのSQLパラメタをもつ。 

C) CMSの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPCMSj,1 ≤ j ≤ Niと

する。MSiの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPMSi, j,1 ≤ j 

574 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

≤ Niとする。 

D) 1からNiまでの範囲のjに対して,PCMSjの宣言型とPMSi, jの宣言型とが互換である。 

E) MSiがCONSTRUCTORを指定しない。 

F) CMS及びMSiの両方が静的メソッドでないか,又はCMS及びMSiの一方が静的メソッド

で,かつ,他方が静的メソッドでないかのいずれかである。 

8) 矛盾するメソッド指定があってはならない。 

9) MSiの拡張されたSQLパラメタ宣言リスト (augmented SQL parameter declaration list) NPLi

は,次のとおりに定義される。 

場合: 

A) MSiがSTATICを指定するならば,次の指定をNPLiとする。 

 (  PDi,1 , ...,  PDi,Ni ) 

B) MSiがSELF AS RESULT及びSELF AS LOCATORを指定するならば,次の指定をNPLiと

する。 

 ( SELF UDTN RESULT AS LOCATOR,  PDi,1 , ...,  PDi,Ni ) 

C) MSiがSELF AS LOCATORを指定するならば,次の指定をNPLiとする。 

 ( SELF UDTN AS LOCATOR,  PDi,1 , ...,  PDi,Ni ) 

D) MSiがSELF AS RESULTを指定するならば,次の指定をNPLiとする。 

 ( SELF UDTN RESULT,  PDi,1 , ...,  PDi,Ni ) 

E) そうでなければ,次の指定をNPLiとする。 

 ( SELF UDTN ,  PDi,1 , ...,  PDi,Ni ) 

F) NPLi中の<SQLパラメタ宣言>の個数をANiとする。 

10) MSiがSTATIC又はCONSTRUCTORを指定しないならば,次の全ての条件を満たすSQL呼

出し関数Fがあってはならない。 

A) Fのルーチン名とRNiとが,等価な<被修飾識別子>をもつ。 

B) Fが静的メソッドでないならば,FがANi個のSQLパラメタをもち,そうでなければ,F

が ( ANi -1) 個のSQLパラメタをもつ。 

C) 定義しているデータ型が,次の型の真下位型である。 

場合: 

I) Fが静的メソッドでないならば,Fの1番目のSQLパラメタの宣言型。 

II) そうでなければ,利用者定義型記述子がFのルーチン記述子を含む利用者定義型。 

D) NPLi中のj番目,2 ≤ j ≤ ANiのSQLパラメタの宣言型が,次の型と互換である。 

場合: 

I) Fが静的メソッドでないならば,Fのj番目のSQLパラメタの宣言型。 

II) そうでなければ,Fの (j -1) 番目のSQLパラメタの宣言型。 

11) MSiがSTATICを指定するならば,次の全ての条件を満たす,静的メソッドではないSQL呼

出し関数Fがあってはならない。 

A) Fのルーチン名とRNiとが,等価な<被修飾識別子>をもつ。 

B) Fが (ANi +1) 個のSQLパラメタをもつ。 

C) 定義しているデータ型が,Fの1番目のSQLパラメタの宣言型の下位型である。 

D) F中のj番目,2 ≤ j ≤ (ANi +1) のSQLパラメタの宣言型が,NPLiの(j -1) 番目のSQLパラ

575 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

メタの宣言型と互換である。 

xv) 13 MSiが<置換メソッド指定>を指定するならば,次による。 

1) MSiは,STATIC又はCONSTRUCTORを指定してはならない。 

2) MSiに含まれる<RETURNS句>は,<結果型変換>又は<位置付け子標識>を指定してはならな

い。 

3) 次の全てが真であるような,定義している利用者定義型の真上位型の記述子に含まれる記述

子をもつ原メソッド指定を候補原メソッド指定COMSとする。 

A) COMSの<メソッド名>とMNiとが等価である。 

B) COMSとMSiとが,同じ個数NiのSQLパラメタをもつ。 

C) COMSの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPCOMSj,1 ≤ j ≤ Ni

とする。MSiの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPOVMSj,1 

≤ j ≤ Niとする。 

D) 1からNiまでの範囲のjに対して,PCOMSjの宣言型をTYPE1として,POVMSjの宣言型

をTYPE2として,“9.20 データ型の同一性”の構文規則を適用する。 

E) COMSの記述子は,STATIC又はCONSTRUCTORが指定されたことを示す標識を含んでは

ならない。 

4) ただ一つのCOMSが存在しなければならない。 

5) COMSは,変異関数又は観測関数の対応するメソッド指定であってはならない。 

注記406 “対応するメソッド指定 (corresponding method specification)”は,“11.60 <SQL呼

出しルーチン>”で定義している。 

6) 1からNiまでの範囲のjに対して,次の全てが真でなければならない。 

A) POVMSjが<SQLパラメタ名> PNM1を含むならば,PNM1と等価な<SQLパラメタ名>を

PCOMSjが含む。 

B) PCOMSjが<SQLパラメタ名> PNM2を含むならば,PNM2と等価な<SQLパラメタ名>を

POVMSjが含む。 

C) POVMSjが<位置付け子標識>を含むならば,PCOMSjが<位置付け子標識>を含む。 

D) PCOMSjが<位置付け子標識>を含むならば,POVMSjが<位置付け子標識>を含む。 

7) MSiの<戻りデータ型>をROVMSとする。COMSの<戻りデータ型>をRCOMSとする。 

場合: 

A) RCOMSが利用者定義型ならば,次による。 

I) 

次の全てが真であるような,UDTの真上位型の記述子に含まれるメソッド指定を候補置

換メソッド指定 (candidate overriding method specification) COVRMSとする。 

1) COVRMSの<メソッド名>とMNiとが等価である。 

2) COVRMSとMSiとが,同じ個数NiのSQLパラメタをもつ。 

3) COVRMSの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPCOVRMSj,

1 ≤ j ≤ Niとする。MSiの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタ

をPOVMSj,1 ≤ j ≤ Niとする。 

4) 1からNiまでの範囲のjに対して,PCOVRMSjの宣言型をTYPE1として,POVMSj

の宣言型をTYPE2として,“9.20 データ型の同一性”の構文規則を適用する。 

II) 候補置換メソッド指定の個数をNOVMSとする。1からNOVMSまでの範囲のiに対し

576 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

て,ROVMSは,i番目の候補置換メソッド指定の<戻りデータ型>の下位型でなければな

らない。 

B) そうでなければ,RCOMSをTYPE1として,ROVMSをTYPE2として,“9.20 データ型の

同一性”の構文規則を適用する。 

8) MSiの拡張されたSQLパラメタ宣言リストASPDLは,(SELFと名付けられた)1番目のパ

ラメタの<データ型>をUDTNに置き換えることによって,COMSの拡張されたSQLパラメ

タ宣言リストから形成される。 

9) 次の全ての条件を満たすSQL呼出し関数Fが存在してはならない。 

A) Fのルーチン名とRNiとが,等価な<被修飾識別子>をもつ。 

B) FとASPDLとが,同じ個数NのSQLパラメタをもつ。 

C) 定義しているデータ型が,Fの1番目のSQLパラメタの宣言型の真下位型である。 

D) POVMSi,1 ≤ i ≤ Nの宣言型が,FのSQLパラメタPi +1の宣言型と互換である。 

E) FがSQL呼出しメソッドでない。 

アクセス規則 

1) SSを所有する<認可識別子>をAとする。<利用者定義型定義>が<SQLクライアントモジュール定

義>に含まれるならば,与えられた認可識別子は,Aを含まなければならない。 

2) Aに適用可能な権限は,<下位型句>中に指定された<利用者定義型名>に関するUNDERを含まなけ

ればならない。 

一般規則 

1) UDTを記述する利用者定義型記述子UDTDSが作成される。UDTDSは,次の項目を含む。 

a) 利用者定義型名UDTN。 

b) UDTが個別型か,又はINSTANTIABLEが指定されるか若しくは暗に想定されるならば,UDTが

実現値生成可であることを示す標識。そうでなければ,UDTが実現値生成不可であることを示す

標識。 

c) 利用者定義型が終端か又は終端でないかを示す標識。 

d) UDTが個別型か又は構造型かを示す標識。 

e) UDTが個別型ならば,SDTのデータ型記述子。 

f) UDTが構造型ならば,次の項目。 

i) 

UDTの各継承属性IAに対して,IAの属性記述子,及びIAが継承属性であることを示す標識。 

ii) UDTの各原定義属性ODAに対して,ODAの属性記述子,及びODAが原定義属性であること

を示す標識。 

iii) UDTの直接上位型の名前。 

iv) グループの空のリストをもつ変換記述子。 

v) 場合: 

1) <利用者定義表現>が指定されるならば,UDTの参照している型の表現型のデータ型記述子に

加えて,UDTの参照している型が利用者定義表現をもつことを示す標識。 

2) <導出表現>が指定されるならば,<属性のリスト>によって指定される属性に加えて,UDTの

参照している型が導出表現をもつことを示す標識。 

3) そうでなければ,UDTの参照している型がシステム定義表現をもつことを示す標識。 

vi) <下位型句>が指定されるならば,UDTの直接上位型をSUDTとし,SUDTの利用者定義型記述

577 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

子をDSUDTとする。UDTの参照している型をRUDTとし,SUDTの参照している型をRSUDT

とする。 

場合: 

1) RSUDTが利用者定義表現をもつことをDSUDTが示すならば,RUDTが利用者定義表現をも

つことを示す標識,及びDSUDTに含まれるRSUDTの表現型のデータ型記述子。 

2) RSUDTが導出表現をもつことをDSUDTが示すならば,RUDTが導出表現をもつことを示す

標識,及びDSUDTに含まれる属性のリスト。 

3) RSUDTがシステム定義表現をもつことをDSUDTが示すならば,RUDTがシステム定義表現

をもつことを示す標識。 

vii) 順序付け形式NONE。 

viii) 順序付けカテゴリSTATE。 

g) <メソッド指定リスト>が指定されるならば,<メソッド指定リスト>に含まれる全ての<原メソッ

ド指定> ORMSに対する,次の項目を含むメソッド指定記述子。 

i) 

ORMSの<メソッド名>。 

ii) ORMSの<特定メソッド名>。 

iii) メソッド指定が原メソッド指定であることを示す標識。 

iv) STATICが指定されたか又はCONSTRUCTORが指定されたかを示す標識。 

v) (ORMS中にSTATICが指定されないならば,パラメタ名SELFをもつ暗に想定される1番目

のパラメタを含めるために拡張された,)ORMSに含まれる<SQLパラメタ宣言リスト>。 

vi) <SQLパラメタ宣言リスト>中の全ての<SQLパラメタ宣言>に対して,あるならば,<位置付け

子標識>。 

vii) <戻りデータ型>。 

viii) あるならば,<結果CAST FROM型>。 

ix) あるならば,<RETURNS句>に含まれる<位置付け子標識>。 

x) 陽に指定されるか又は暗に想定される<LANGUAGE句>に含まれる<言語名>。 

xi) 

13 <言語名>がSQLでないならば,陽に指定されるか又は暗に想定される<パラメタ様式>。 

xii) メソッドが決定的であるかどうかを示す標識。 

xiii) メソッドが,SQLデータを潜在的に修正するか,SQLデータを潜在的に読むか,SQLを潜在的

に含むか,又はSQLを潜在的に含まないか示す標識。 

xiv) いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示す標識。 

xv) 作成時刻印の値としてのCURRENT̲TIMESTAMP。 

xvi) 最終変更時刻印の値としてのCURRENT̲TIMESTAMP。 

h) <メソッド指定リスト>が指定されるならば,<メソッド指定リスト>に含まれる全ての<置換メソ

ッド指定> OVMSに対して,対応する原メソッド指定の記述子をDCMSとする。次の項目を含む

OVMSのメソッド指定記述子。 

i) 

OVMSの<メソッド名>。 

ii) OVMSの<特定メソッド名>。 

iii) メソッド指定が置換メソッド指定であることを示す標識。 

iv) (パラメタ名SELFをもつ暗に想定される1番目のパラメタを含めるために拡張された,)

OVMSに含まれる<SQLパラメタ宣言リスト>。 

578 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

v) <SQLパラメタ宣言リスト>中の全ての<SQLパラメタ宣言>に対して,あるならば,<位置付け

子標識>。 

vi) OVMSの<戻りデータ型>。 

vii) (あるならば,)DCMSに含まれる<結果CAST FROM型>。 

viii) あるならば,DCMSに含まれる<RETURNS句>に含まれる<位置付け子標識>。 

ix) DCMSに含まれる<言語名>。 

x) (あるならば,)DCMSに含まれる<パラメタ様式>。 

xi) メソッドが決定的であるかどうかを示すための,DCMSに含まれる標識。 

xii) DCMSに含まれるSQLデータアクセス指示。 

xiii) いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示すための,

DCMSに含まれる標識。 

xiv) 作成時刻印の値としてのCURRENT̲TIMESTAMP。 

xv) 最終変更時刻印の値としてのCURRENT̲TIMESTAMP。 

2) UDTDが個別型を指定するならば,次による。 

a) UDTの次数は,0 とする。 

b) これ以上のアクセス規則の検査なしで,次のSQL文が実行される。 

CREATE FUNCTION SN.FNUDT (  SDTP SDT ) 

    RETURNS UDTN 

    LANGUAGE SQL 

    DETERMINISTIC 

  RETURN RV1 

CREATE FUNCTION SN.FNSDT (  UDTP UDTN ) 

    RETURNS SDT 

    LANGUAGE SQL 

    DETERMINISTIC 

  RETURN RV2 

CREATE CAST (  UDTN AS SDT ) 

    WITH FUNCTION FNSDT (  UDTN ) 

    AS ASSIGNMENT 

CREATE CAST ( SDT AS UDTN ) 

    WITH FUNCTION SN.FNUDT (  SDT ) 

    AS ASSIGNMENT 

CREATE TRANSFORM FOR UDTN 

    FNUDT ( FROM SQL WITH FUNCTION FNSDT (  UDTN ), 

                TO SQL WITH FUNCTION SN.FNUDT ( SDT ) ) 

ここで,SNは,UDTNの陽に指定されるか又は暗に想定される<スキーマ名>とする。RV1は,

引数値AV1でのSN.FNUDTのどの呼出しに対しても,UDTNによって識別されるデータ型での

AV1の表現として評価されるような処理系依存の<値式>とする。RV2は,引数値AV2での

SN.FNSDTのどの呼出しに対しても,データ型SDTでのAV2の表現として評価されるような処理

系依存の<値式>とする。SDTP及びUDTPは,任意に選択された<SQLパラメタ名>とする。 

579 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) 場合: 

i) 

09 SDTが長大オブジェクト型又は集まり型でないならば,これ以上のアクセス規則の検査なし

で,次のSQL文が実行される。 

CREATE ORDERING FOR UDTN 

ORDER FULL BY 

MAP WITH FUNCTION FNSDT ( UDTN ) 

FOR UDTN 

ii) SDTが長大オブジェクト型で,かつ,SQL処理系が機能T042“拡張LOBデータ型提供”を提

供するならば,これ以上のアクセス規則の検査なしで,次のSQL文が実行される。 

CREATE ORDERING FOR UDTN 

ORDER EQUALS ONLY BY 

MAP WITH FUNCTION FNSDT ( UDTN ) 

FOR UDTN 

注記407 SDTが長大オブジェクト型で,かつ,SQL処理系が機能T042“拡張LOBデータ型

提供”を提供しないならば,UDTNに対する順序付けは,作成されない。 

3) UDTDが構造型を指定するならば,次による。 

a) 場合: 

i) 

<下位型句>が指定されるならば,UDTの直接上位型をSSTとし,SSTの次数をDする。 

ii) そうでなければ,0をDする。 

b) UDTの次数には,最初,Dが設定される。“11.52 <属性定義>”の一般規則で,UDTの属性の定義

中にUDTの次数を規定している。 

c) INSTANTIABLEが指定されるならば,UDTのどの属性ATTに対しても,対応する観測関数の呼

出しがATTに対する既定値を生成するような最特定型UDTの値をVとする。次の<SQL呼出し

ルーチン>が実効的に実行される。 

CREATE FUNCTION UDTN () RETURNS UDTN 

RETURN V 

このSQL呼出し関数は,UDTに対する構成関数 (constructor function) とする。 

d) <利用者定義表現>が指定されるか,又は<下位型句>が指定され,かつ,UDTの直接上位型の参照

している型が利用者定義表現をもつことを,UDTの直接上位型の利用者定義型記述子が示すなら

ば,これ以上のアクセス規則の検査なしで,次のSQL文が実行される。 

CREATE FUNCTION SN.FNREF (  BTP BT ) 

    RETURNS REF( UDTN ) 

    LANGUAGE SQL 

    DETERMINISTIC 

    STATIC DISPATCH 

  RETURN RV1 

CREATE FUNCTION SN.FNTYP (  UDTNP REF( UDTN ) ) 

    RETURNS BT 

    LANGUAGE SQL 

    DETERMINISTIC 

580 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    STATIC DISPATCH 

  RETURN RV2 

CREATE CAST (  BT AS REF( UDTN ) ) 

    WITH FUNCTION SN.FNREF ( BT ) 

CREATE CAST ( REF( UDTN ) AS BT ) 

    WITH FUNCTION SN.FNTYP (REF( UDTN ) ) 

ここで,SNは,UDTNの陽に指定されるか又は暗に想定される<スキーマ名>とする。RV1は,

引数値AV1でのSN.FNREFのどの呼出しに対しても,REF( UDTN ) によって識別されるデータ型

でのAV1の表現として評価されるような処理系依存の<値式>とする。RV2は,引数値AV2での

SN.FNTYPのどの呼出しに対しても,データ型BTでのAV2の表現として評価されるような処理系

依存の<値式>とする。UDTNPは,任意に選択された<SQLパラメタ名>とする。 

4) UDTに関するUSAGE権限をAに対して定義する権限記述子が作成される。この権限は,付与可能

とする。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

5) UDTDが構造型を指定するならば,UDTに関するUNDER権限をAに対して定義する権限記述子が

作成される。その権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。こ

の権限が付与可能であることは,UDTの直接上位型に関するUNDER権限をWITH GRANT OPTION

付きでAが保持することと同値とする。 

適合性規則 

1) 機能S023“基本構造型”なしでは,適合するSQL言語は,<メンバリスト>を含んではならない。 

2) 機能S024“拡張構造型”なしでは,適合するSQL言語は,NOT INSTANTIABLEを含む

<INSTANTIABLE句>を含んではならない。 

3) 機能S024“拡張構造型”なしでは,適合するSQL言語は,SELF AS RESULTを直に含む<原メソッ

ド指定>を含んではならない。 

4) 機能S024“拡張構造型”なしでは,適合するSQL言語は,GENERALを含む<パラメタ様式>を含

む<メソッド特性の並び>を含んではならない。 

5) 機能S024“拡張構造型”なしでは,適合するSQL言語は,NO SQLを直に含む<SQLデータアクセ

ス指示>を含む<原メソッド指定>を含んではならない。 

6) 機能S401“配列型を基にする個別型”なしでは,適合するSQL言語中で,<表現>は,<配列型>を

含んではならない。 

7) 機能S402“マルチ集合型を基にする個別型”なしでは,適合するSQL言語中で,<表現>は,<マル

チ集合型>を含んではならない。 

8) 機能T571“配列戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,次のいずれかの条件

を満たす<RETURNS句>を含む<メソッド指定>を含んではならない。 

a) <結果CAST FROM型>が指定され,それが<配列型>を単純に含み,かつ,<位置付け子標識>を含

まない。 

b) <結果CAST FROM型>が指定されず,<戻りデータ型>が<配列型>を単純に含み,かつ,<位置付

け子標識>を含まない。 

9) 機能T572“マルチ集合戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,次のいずれか

の条件を満たす<RETURNS句>を含む<メソッド指定>を含んではならない。 

a) <結果CAST FROM型>が指定され,それが<マルチ集合型>を単純に含み,かつ,<位置付け子標

581 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

識>を含まない。 

b) <結果CAST FROM型>が指定されず,<戻りデータ型>が<マルチ集合型>を単純に含み,かつ,<

位置付け子標識>を含まない。 

10) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<参照型指定>を含んではならない。 

11) 機能S024“拡張構造型”なしでは,適合するSQL言語は,INSTANCE又はSTATICを含む<部分メ

ソッド指定>を含んではならない。 

12) 機能S023“基本構造型”なしでは,適合するSQL言語は,<メソッド指定リスト>を含んではなら

ない。 

13) 機能S025“終端構造型”なしでは,適合するSQL言語中で,構造型を定義する<利用者定義型定義

>は,NOT FINALである<終端性>を含まなければならない。 

14) 機能S028“並べ替え可能なUDT選択肢リスト”なしでは,適合するSQL言語は,指定されるなら

ば,<INSTANTIABLE句>,<終端性>,指定されるならば,<参照型指定>,指定されるならば,<REF

へのCAST>,指定されるならば,<型へのCAST>,指定されるならば,<個別型へのCAST>,及び

指定されるならば,<元型へのCAST>が,この順序で現れない<利用者定義型選択肢リスト>を含ん

ではならない。 

11.52 

<属性定義> 

この細分箇条は,ISO/IEC 9075-13の“9.5 <属性定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.7 <属性定義>”によって修正される。 

機能 

<属性定義> (<attribute definition>) は,構造型の属性を定義する。 

形式 

13 <属性定義> ::= 

  <属性名> <データ型> 

     [ <属性既定値> ] 

     [ <COLLATE句> ] 

<属性既定値> ::= 

  <DEFAULT句> 

構文規則 

1) 

13 <属性定義>は,構造型の構成要素を定義する。構造型をUDTとし,その構造型の名前をUDTN

とし,UDTの記述子を記述子が含むSQLスキーマをSSとする。 

2) <属性定義>に含まれる<属性名>をANとする。 

3) 属性の宣言型DTは,<データ型>とする。 

4) <COLLATE句>は,<データ型>中に指定され,かつ,<属性定義>に直に含まれてはならない。

<COLLATE句>が<属性定義>に直に含まれるならば,それは,<データ型>中に等価な<COLLATE句

>を指定することと等価とする。 

5) DTは,UDTを基にしてはならない。 

注記408 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義している。 

6) DTが<文字列型>で,かつ,<文字集合指定>を含まないならば,SSに対する既定文字集合が暗に想

定される。 

アクセス規則 

582 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

一般規則 

1) DTを記述するデータ型記述子が作成される。 

2) <属性定義>によって定義される属性をAとする。 

3) UDTの次数が1増やされる。 

4) Aを記述する属性記述子が作成される。属性記述子は,次の項目を含む。 

a) 属性の名前AN。 

b) DTのデータ型記述子。 

c) 属性の順序位置。 

注記409 属性の順序位置は,この<属性定義>が処理されている時点のUDTの次数と等しい。 

d) 暗に想定されるか又は陽に指定される<属性既定値>。 

e) 

13 利用者定義型UDTの名前UDTN。 

5) 

13 Aの観測関数の原メソッド指定の記述子中で与えられた署名及び結果データ型をもつSQL呼出し

メソッドOFが作成される。UDT中の値をVとする。Vがナル値ならば,OFの呼出しV.AN()は,

次の結果を戻す。 

CAST ( NULL AS DT ) 

そうでなければ,V.AN()は,V中のAの値を戻す。 

注記410 Aの観測関数の原メソッド指定は,“11.51 <利用者定義型定義>”の構文規則で定義して

いる。 

注記411 OFの記述子は,“11.60 <SQL呼出しルーチン>”の一般規則に基づいて作成される。 

6) 

13 Aの変異関数の原メソッド指定の記述子中で与えられた署名及び結果データ型をもつSQL呼出し

メソッドMFが作成される。UDT中の値をVとし,DT中の値をAVとする。Vがナル値ならば,

MFの呼出しV.AN(AV) は,例外条件:データ例外 (data exception) − ナル値で変異当該パラメタ

を置き換えた (null value substituted for mutator subject parameter) を引き起こす。そうでなければ,呼

出しV.AN(AV)は,V2.AN()= AVで,かつ,UDTの他のどの観測関数ANXに対しても,V2.ANX()= 

V.ANX()であるようなV2を戻す。 

注記412 Aの変異関数の原メソッド指定は,“11.51 <利用者定義型定義>”の構文規則で定義して

いる。 

注記413 MFの記述子は,“11.60 <SQL呼出しルーチン>”の一般規則に基づいて作成される。 

適合性規則 

1) 機能S023“基本構造型”なしでは,適合するSQL言語は,<属性定義>を含んではならない。 

2) 機能F692“拡張照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を直に含む<属性定

義>を含んではならない。 

3) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<属性既定値>を含んではならない。 

4) 機能S026“自己参照構造型”なしでは,適合するSQL言語は,<属性定義>を含む<利用者定義型定

義>に単純に含まれる<スキーマ解決利用者定義型名>と等価な<被参照型>をもつ<参照型>であり,

かつ,<属性定義>に単純に含まれる<データ型>を含んではならない。 

11.53 

<型変更文> 

この細分箇条は,ISO/IEC 9075-13の“9.6 <型変更文>”によって修正される。 

機能 

583 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<型変更文> (<alter type statement>) は,利用者定義型の定義を変更する。 

形式 

<型変更文> ::= 

  ALTER TYPE <スキーマ解決利用者定義型名> <型変更動作> 

<型変更動作> ::= 

  <属性定義追加> 

| <属性定義削除> 

| <原メソッド指定追加> 

| <置換メソッド指定追加> 

| <メソッド指定削除> 

構文規則 

1) 

13 <スキーマ解決利用者定義型名>をDNとし,DNによって識別されるデータ型をDとする。 

2) <スキーマ解決利用者定義型名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識

別されるスキーマは,Dの記述子を含んでいなければならない。そのスキーマをSとする。 

3) <スキーマ解決利用者定義型名>の有効範囲は,<型変更文>全体とする。 

4) <型変更動作>が<属性定義追加>,<属性定義削除>又は<置換メソッド指定追加>を含むならば,Dは,

構造型でなければならない。 

5) スキーマSを所有する<認可識別子>をAとする。 

アクセス規則 

1) <型変更文>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別子は,A

を含まなければならない。 

2) Aに適用可能な権限は,Dの各真上位型に関するUNDERを含まなければならない。 

一般規則 

1) Dの利用者定義型記述子は,<型変更動作>によって指定されたとおりに修正される。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<型変更文>を含んではならない。 

11.54 

<属性定義追加> 

機能 

<属性定義追加> (<add attribute definition>) は,利用者定義型に属性を追加する。 

形式 

<属性定義追加> ::= 

  ADD ATTRIBUTE <属性定義> 

構文規則 

1) <属性定義追加>を含む<型変更文>に直に含まれる<スキーマ解決利用者定義型名>によって識別さ

れる利用者定義型をDとする。Dの上位型をSPDとする。Dの下位型をSBDとする。 

2) 被参照型がDである参照型をRDとする。RDの上位型をSPRDとする。RDの下位型をSBRDと

する。要素型がDである集まり型をADとする。要素型がSPD又はSPRDである集まり型をSPAD

とする。要素型がSBD又はSBRDである集まり型をSBADとする。 

3) 実表の列の宣言型は,SPRD,SBRD,SPAD又はSBADであってはならない。 

4) 実表の列の宣言型は,Dを基にしていてはならない。 

584 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記414 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義している。 

5) SBDは,参照可能表の構造型であってはならない。 

6) <属性定義>がDの<利用者定義型定義>に単純に含まれていたとしたら,その<属性定義>の結果と

して生じる変異関数をMとする。次の全ての条件を満たすSQL呼出しルーチンFが存在してはな

らない。 

a) Fの記述子に含まれるルーチン名とMの<スキーマ修飾付きルーチン名>とが,等価な<被修飾識

別子>をもつ。 

b) Fが二つのSQLパラメタをもつ。 

c) Fの1番目のSQLパラメタの宣言型が,Dの下位型又は上位型である。 

d) Fの2番目のSQLパラメタの宣言型が,Mの2番目のSQLパラメタと互換である。 

7) <属性定義>がDの<利用者定義型定義>に単純に含まれていたとしたら,その<属性定義>の結果と

して生じる観測関数をOとする。次の全ての条件を満たすSQL呼出しルーチンFが存在してはな

らない。 

a) Oの<スキーマ修飾付きルーチン名>とFの記述子に含まれるルーチン名とが,等価な<被修飾識

別子>をもつ。 

b) Fが一つのSQLパラメタをもつ。 

c) Fの1番目のSQLパラメタの宣言型が,Dの下位型又は上位型である。 

アクセス規則 

なし。 

一般規則 

1) <属性定義>によって定義される属性がDに追加される。 

2) 他の全ての点において,<型変更文>中の<属性定義>の指定は,Dの<利用者定義型定義>に単純に含

まれる<属性定義>の指定がもつであろう効果と同じ効果をもつ。 

注記415 具体的には,“11.52 <属性定義>”の一般規則で規定するとおり,Dの次数は,1増加し,

その属性の順序位置は,Dの新しい次数と等しい。 

3) <属性定義>によって定義される属性をAとする。属性が継承属性であることを示す標識を含むよう

に修正したAの記述子の写しをCPAとする。 

4) Dの各真下位型PSBDに対して,次による。 

a) PSBDの記述子をDPSBDとし,DPSBDに含まれる属性記述子の個数をNとし,DPSBDに含ま

れる属性記述子をDAi,1 ≤ i ≤ Nとする。 

b) 1からNまでの範囲のどのiに対しても,DAiが原定義属性の記述子ならば,DAiに含まれる順

序位置を1増やす。 

c) DPSBDにCPAを含める。 

適合性規則 

なし。 

11.55 

<属性定義削除> 

機能 

<属性定義削除> (<drop attribute definition>) は,利用者定義型の属性を破壊する。 

形式 

<属性定義削除> ::= 

585 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

DROP ATTRIBUTE <属性名> RESTRICT 

構文規則 

1) <属性定義削除>を含む<型変更文>に直に含まれる<スキーマ解決利用者定義型名>によって識別さ

れる利用者定義型をDとする。 

2) <属性名> ANによって識別される属性をAとする。 

3) Aは,継承属性でないDの属性でなければならず,Aは,Dの唯一の属性であってはならない。 

4) Dの上位型をSPDとする。Dの下位型をSBDとする。被参照型がDである参照型をRDとする。

RDの上位型をSPRDとする。RDの下位型をSBRDとする。要素型がDである集まり型をADと

する。要素型がSPD又はSPRDである集まり型をSPADとする。要素型がSBD又はSBRDである

集まり型をSBADとする。 

5) 実表の列の宣言型は,SPRD,SBRD,SPAD又はSBADであってはならない。 

6) 実表の列の宣言型は,Dを基にしていてはならない。 

注記416 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義している。 

7) SBDは,参照可能表の構造型であってはならない。 

8) Aの変異関数をR1とし,観測関数をR2とする。 

a) R1及びR2は,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド

呼出し>又は<メソッド参照>の当該ルーチンであってはならない。 

i) 

ルーチン記述子のSQLルーチン本体。 

ii) ビュー記述子の元の<問合せ式>。 

iii) 制約記述子の<探索条件>。 

iv) トリガ記述子の被トリガ動作 

b) R1及びR2の特定名は,どの利用者定義型変換記述子にも含まれていてはならない。 

c) R1及びR2は,利用者定義型の記述子中の順序付け関数であってはならない。 

アクセス規則 

なし。 

一般規則 

1) Aの記述子が,どのSBDの記述子からも取り除かれる。 

2) Aの記述子が破壊される。 

3) Aの変異関数及び観測関数の記述子が破壊される。 

4) どのSBDの次数も,1減らされる。SBD中のAの順序位置より大きな順序位置をもつ全ての属性

の順序位置が1減らされる。 

適合性規則 

なし。 

11.56 

<原メソッド指定追加> 

機能 

<原メソッド指定追加> (<add original method specification>) は,利用者定義型に原メソッド指定を追加す

る。 

形式 

<原メソッド指定追加> ::= 

ADD <原メソッド指定> 

586 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

1) <原メソッド指定追加>を含む<型変更文>に直に含まれる<スキーマ解決利用者定義型名> DNによ

って識別される利用者定義型をDとする。DNの指定されるか又は暗に想定される<スキーマ名>を

SNとする。Dの上位型があるならば,それをSPDとする。Dの下位型があるならば,それをSBD

とする。 

2) <原メソッド指定>及びそれに直に含まれる<部分メソッド指定>を,それぞれ,ORMS及びPORMS

とする。 

3) ORMSに単純に含まれる<メソッド名>,<SQLパラメタ宣言リスト>及び<メソッド特性の並び>を

それぞれ,MN,MPDL及びMCHとする。MPDLを,ORMSの非拡張SQLパラメタ宣言リスト 

(unaugmented SQL parameter declaration list) と呼ぶ。 

4) PORMSがINSTANCE,CONSTRUCTOR又はSTATICを指定しないならば,INSTANCEが暗に想定

される。 

5) PORMSがCONSTRUCTORを指定するならば,次による。 

a) SELF AS RESULTを指定しなければならない。 

b) MNは,DNの<被修飾識別子>と等価でなければならない。 

c) <戻りデータ型>は,DNを指定しなければならない。 

d) Dは,構造型でなければならない。 

e) PORMSは,SQL呼出し構成メソッド (SQL-invoked constructor method) を指定する。 

6) PORMSがSTATICを指定するならば,次による。 

a) SELF AS RESULTも,SELF AS LOCATORも,指定してはならない。 

b) PORMSは,静的メソッドを指定する。 

7) SN.MNをRNとする。 

8) 場合: 

a) PORMSが<特定メソッド名>を指定しないならば,<スキーマ名>がSNと等価である処理系依存

の<特定メソッド名>が暗に想定される。 

b) そうでなければ,次による。 

場合: 

i) 

<特定メソッド名>が<スキーマ名>を含むならば,その<スキーマ名>は,SNと等価でなければ

ならない。 

ii) そうでなければ,<スキーマ名> SNが暗に想定される。 

<特定メソッド名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマは,特定名が<特定メソッド名>と等価であるルーチン記述子,又は特定メソッド名が<特定メ

ソッド名>と等価であるメソッド指定記述子を含む利用者定義型記述子を含んでいてはならない。 

9) MCHは,高々一つの<LANGUAGE句>,高々一つの<PARAMETER STYLE句>,高々一つの<決定

的特性>,高々一つの<SQLデータアクセス指示>及び高々一つの<ナル呼出し句>を含まなければな

らない。 

a) MCH中に<LANGUAGE句>が指定されないならば,LANGUAGE SQLが暗に想定される。 

b) 場合: 

i) 

LANUAGE SQLが指定されるか又は暗に想定されるならば,次による。 

1) <PARAMETER STYLE句>を指定してはならない。 

587 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) <SQLデータアクセス指示>は,NO SQLを指定してはならない。 

3) <SQLパラメタ宣言リスト>に含まれるどの<SQLパラメタ宣言>も,<SQLパラメタ名>を含

まなければならない。 

4) <RETURNS句>は,<結果型変換>を指定してはならない。 

ii) そうでなければ,次による。 

1) <PARAMETER STYLE句>が指定されないならば,PARAMETER STYLE SQLが暗に想定され

る。 

2) <結果型変換>が指定されるならば,<結果型変換>中に指定される<データ型>の値をVとし,

<戻りデータ型>をRTとする。次のCAST指定が,“6.13 <CAST指定>”の構文規則に従っ

て,正しくなければならない。 

CAST ( V AS RT ) 

3) <結果CAST FROM型> RCTが<位置付け子標識>を単純に含むならば,RCTは,2進オクテ

ット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又は利用者定義

型のいずれかでなければならない。 

c) MCH中に<決定的特性>が指定されないならば,NOT DETERMINISTICが暗に想定される。 

d) <SQLデータアクセス指示>が指定されないならば,CONTAINS SQLが暗に想定される。 

e) MCH中に<ナル呼出し句>が指定されないならば,CALLED ON NULL INPUTが暗に想定される。 

10) MPDLに含まれるどの二つの<SQLパラメタ名>も,等価であってはならない。 

11) MPDLに含まれるどの<SQLパラメタ名>も,SELFと等価であってはならない。 

12) MPDLに含まれる<SQLパラメタ宣言>の個数をNとする。どの<SQLパラメタ宣言> PDj,1 ≤ j ≤ N

に対しても,次による。 

a) PDjは,<パラメタモード>を含んではならない。INの<パラメタモード>が暗に想定される。 

b) PDjは,RESULTを指定してはならない。 

c) PDjに直に含まれる<パラメタの型> PTjは,ROWを指定してはならない。 

d) PTjが<位置付け子標識>を単純に含むならば,次による。 

i) 

MCHは,LANGUAGE SQLを指定してはならないし,LANGUAGE SQLが暗に想定されてもな

らない。 

ii) PTjは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型

又は利用者定義型のいずれかを指定しなければならない。 

13) <戻りデータ型> RTが<位置付け子標識>を単純に含むならば,次による。 

a) MCHは,LANGUAGE SQLを指定してはならないし,LANGUAGE SQLが暗に想定されてもなら

ない。 

b) RTは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又

は利用者定義型のいずれかでなければならない。 

c) <結果型変換>を指定してはならない。 

14) SELF AS RESULTが指定されるならば,<戻りデータ型>は,DNを指定しなければならない。 

15) 場合: 

a) ORMSがCONSTRUCTORを指定するならば,次の全てが真となるようなメソッド指定で,記述

子がDの記述子に含まれるメソッド指定を衝突するメソッド指定 (conflicting method specification) 

CMSとする。 

588 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

MPDLと,CMSの非拡張SQLパラメタリストとが,同じ個数NのSQLパラメタをもつ。 

ii) CMSの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPCMSj,1 ≤ j ≤ Nとする。

非拡張SQLパラメタ宣言リストMPDL中のj番目のSQLパラメタをPMSj,1 ≤ j ≤ Nとする。 

iii) 1からNまでの範囲のjに対して,PCMSjの宣言型とPMSjの宣言型とが互換である。 

iv) CMSがSQL呼出し構成メソッドである。 

b) そうでなければ,次の全てが真となるようなメソッド指定で,記述子がSPD又はSBDの記述子

に含まれるメソッド指定を衝突するメソッド指定 (conflicting method specification) CMSとする。 

i) 

MNと,CMSの記述子に含まれるメソッド名とが等価である。 

ii) MPDLと,CMSの非拡張SQLパラメタリストとが,同じ個数NのSQLパラメタをもつ。 

iii) CMSの非拡張SQLパラメタ宣言リスト中のj番目のSQLパラメタをPCMSj,1 ≤ j ≤ Nとする。

非拡張SQLパラメタ宣言リストMPDL中のj番目のSQLパラメタをPMSj,1 ≤ j ≤ Nとする。 

iv) 1からNまでの範囲のjに対して,PCMSjの宣言型とPMSjの宣言型とが互換である。 

v) CMS及びORMSが両方ともインスタンスメソッドでないか,又はCMS及びORMSのうちの

一方が静的メソッドで,かつ,他方がインスタンスメソッドであるかのいずれかである。 

16) 衝突するメソッド指定が存在してはならない。 

17) MPDLに含まれるi番目の<SQLパラメタ宣言>をMPi,1 ≤ i ≤ Nとする。ORMSの拡張されたSQL

パラメタ宣言リストNPLが,次のとおりに定義される。 

場合: 

a) PORMSがSTATICを指定するならば,次の指定をNPLとする。 

( MP1, ..., MPN ) 

b) ORMSがSELF AS RESULT及びSELF AS LOCATORを指定するならば,次の指定をNPLとする。 

( SELF DN RESULT AS LOCATOR, 

MP1, ..., 

MPN ) 

c) ORMSがSELF AS LOCATORを指定するならば,次の指定をNPLとする。 

( SELF DN AS LOCATOR, 

MP1, ..., 

MPN ) 

d) ORMSがSELF AS RESULTを指定するならば,次の指定をNPLとする。 

( SELF DN RESULT, MP1, ..., 

MPN ) 

e) そうでなければ,次の指定をNPLとする。 

( SELF DN, MP1, ..., 

MPN ) 

NPL中の<SQLパラメタ宣言>の個数をANとする。 

18) PORMSがSTATIC又はCONSTRUCTORを指定しないならば,次の全ての条件を満たすSQL呼出

し関数Fが存在してはならない。 

a) FがSQL呼出しメソッドでない。 

b) Fの<ルーチン名>とRNとが,等価な<被修飾識別子>をもつ。 

c) FがAN個のSQLパラメタをもつ。 

589 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) Dが,Fの1番目のSQLパラメタの宣言型の下位型又は上位型である。 

e) NPL中のi番目のSQLパラメタの宣言型,2 ≤ i ≤ ANが,Fのi番目のSQLパラメタの宣言型と

互換である。 

19) PORMSがSTATICを指定するならば,次の全ての条件を満たす,静的メソッドでないSQL呼出し

関数Fが存在してはならない。 

a) Fの<ルーチン名>とRNとが,等価な<被修飾識別子>をもつ。 

b) Fが (AN+1) 個のSQLパラメタをもつ。 

c) Dが,Fの1番目のSQLパラメタの宣言型の下位型又は上位型である。 

d) Fのi番目のSQLパラメタの宣言型,2 ≤ i ≤ (AN+1) が,NPLの (i-1) 番目のSQLパラメタの宣

言型と互換である。 

アクセス規則 

なし。 

一般規則 

1) Dの記述子をSTDSとする。ORMSに対して,メソッド指定記述子DOMSが作成される。DOMS

は,次の項目を含む。 

a) <メソッド名> MN。 

b) PORMSに含まれる<特定メソッド名>。 

c) メソッド指定が原メソッド指定であることを示す標識。 

d) STATICが指定されたか又はCONSTRUCTORが指定されたかを示す標識。 

e) 拡張されたSQLパラメタ宣言リストNPL。 

f) NPL中の全てのSQLパラメタ宣言に対して,(指定されるならば,)位置付け子標識。 

g) PORMSに含まれる<戻りデータ型>。 

h) (あるならば,)PORMSに含まれる<結果CAST FROM型>。 

i) 

(あるならば,)<位置付け子標識>がPORMSの<RETURNS句>に含まれるならば,位置付け子標

識。 

j) MCHに陽に含まれるか又は暗に含まれる<言語名>。 

k) <言語名>がSQLでないならば,MCHに含まれる陽に指定されるか又は暗に想定される<パラメ

タ様式>。 

l) 

メソッドが決定的であるかどうかを示すための,MCHに含まれる標識。 

m) メソッドがSQLデータを潜在的に修正するか,SQLデータを潜在的に読むか,SQLを潜在的に

含むか又はSQLを潜在的に含まないかを示す標識。 

n) いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示す標識。 

o) 作成時刻印の値としてのCURRENT̲TIMESTAMP。 

p) 最終変更時刻印の値としてのCURRENT̲TIMESTAMP。 

2) DOMSがSTDSに追加される。 

3) Dの下位型の利用者定義型名を含む表記述子の個数をNとする。 

1からNまでの範囲のiに対して,次による。 

a) そのようなi番目の表記述子に含まれる<表名>をTNiとする。 

b) TNi,及びSELECTの権限を指定するどの表権限記述子に対しても,TNi,同じ動作・権限付与者・

権限受領者及び同じ付与可能性,並びにORMSに含まれる<特定メソッド名>を指定する新しい表

590 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

/メソッド権限記述子が作成される。 

適合性規則 

なし。 

11.57 

<置換メソッド指定追加> 

機能 

<置換メソッド指定追加> (<add overriding method specification>) は,利用者定義型に置換メソッド指定を

追加する。 

形式 

<置換メソッド指定追加> ::= 

ADD <置換メソッド指定> 

構文規則 

1) <置換メソッド指定追加>に直に含まれる<置換メソッド指定>をOVMSとする。OVMSを含む<型変

更文>に直に含まれる<スキーマ解決利用者定義型名> DNによって識別される利用者定義型をDと

する。DNの指定されるか又は暗に想定される<スキーマ名>をSNとする。Dの上位型があるなら

ば,それをSPDとする。Dの下位型があるならば,それをSBDとする。 

2) OVMSに直に含まれる<部分メソッド指定>をPOVMSとする。POVMSは,STATIC又は

CONSTRUCTORを指定してはならない。 

3) <ルーチン名>,<RETURNS句>,及びPOVMSに直に含まれる<SQLパラメタ宣言リスト>を,それ

ぞれ,MN,RTC及びMPDLとする。 

4) MNは,D以外のどのSPD又はSBDの利用者定義型名の<被修飾識別子>とも等価であってはなら

ない。 

5) SN.MNをRNとする。 

6) 場合: 

a) POVMSが<特定メソッド名>を指定しないならば,<スキーマ名>がSNと等価である処理系依存

の<特定メソッド名>が暗に想定される。 

b) そうでなければ,次による。 

場合: 

i) 

<特定メソッド名>が<スキーマ名>を含むならば,その<スキーマ名>は,SNと等価でなければ

ならない。 

ii) そうでなければ,<スキーマ名> SNが暗に想定される。 

7) <特定メソッド名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマは,特定名が<特定メソッド名>と等価であるルーチン記述子か,又は特定メソッド名が<特定

メソッド名>と等価であるメソッド指定記述子を含む利用者定義型記述子を含んでいてはならない。 

8) RTCは,<結果型変換>又は<位置付け子標識>を指定してはならない。 

9) 次の全てが真となるようなメソッド指定で,Dの利用者定義型の真上位型の記述子に含まれる原メ

ソッド指定を候補原メソッド指定 (candidate original method specification) COMSとする。 

a) MNとCOMSの<メソッド名>とが等価である。 

b) COMSの記述子に一般に含まれる拡張されたSQLパラメタ宣言リストUPCOMSの要素の個数を

Nとする。MPDLが (N-1) 個のSQLパラメタ宣言を含む。 

c) 2からNまでの範囲のiに対して,それぞれ,UPCOMSのSQLパラメタPCOMSiの宣言型を

591 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

TYPE1として,及びMPDLのSQLパラメタPOVMSi-1の宣言型をTYPE2として,“9.20 データ

型の同一性”の構文規則を適用する。 

d) STATIC又はCONSTRUCTORが指定されたことを示す標識をCOMSの記述子が含んでいない。 

10) そのようなただ一つのCOMSが存在しなければならない。 

11) COMSは,変異関数又は観測関数の対応するメソッド指定であってはならない。 

注記417 “対応するメソッド指定”は,“11.60 <SQL呼出しルーチン>”で定義している。 

12) 2からNまでの範囲のiに対して,次による。 

a) POVMSi-1が<SQLパラメタ名> PNM1を含むならば,COMSの記述子に含まれる拡張されたSQL

パラメタ宣言リストのi番目の要素は,PNM1と等価なSQLパラメタ名をもたなければならない。 

b) COMSの記述子に含まれる拡張されたSQLパラメタ宣言リストのi番目の要素がSQLパラメタ

名PNM2を含むならば,POVMSi-1は,PNM2と等価な<SQLパラメタ名>を含まなければならな

い。 

c) POVMSi-1は,<パラメタモード>を含んではならない。<パラメタモード> INが暗に想定される。 

d) POVMSi-1はRESULTを指定してはならない。 

e) POVMSi-1に直に含まれる<パラメタの型> PTi-1が<位置付け子標識>を含むならば,COMSの記

述子に含まれる拡張されたSQLパラメタ宣言リストのi番目の要素は,<位置付け子標識>を含ま

なければならない。 

f) COMSの記述子に含まれる拡張されたSQLパラメタ宣言リストのi番目の要素が<位置付け子標

識>を含むならば,POVMSi-1に直に含まれる<パラメタの型> PTi-1は,<位置付け子標識>を含ま

なければならない。 

13) RTCの<戻りデータ型>をROVMSとする。COMSの<戻りデータ型>をRCOMSとする。 

場合: 

a) RCOMSが利用者定義型ならば,次による。 

i) 

次の全てが真となるようなメソッド指定で,UDTの真上位型又は真下位型の記述子に含まれる

メソッド指定を候補置換メソッド指定 (candidate overriding method specification) COVRMSとす

る。 

1) COVRMSの<メソッド名>とMNとが等価である。 

2) COVRMSとOVMSとが,同じ個数NのSQLパラメタをもつ。 

3) COVRMSの非拡張SQLパラメタ宣言リスト中のi番目のSQLパラメタをPCOVRMSi,1 ≤ i 

≤ Nとする。OVMSの非拡張SQLパラメタ宣言リスト中のi番目のSQLパラメタをPOVMSi,

1 ≤ i ≤ Nとする。 

4) 1からNまでの範囲のiに対して,PCOVRMSiの宣言型をTYPE1として,及びPOVMSiの

宣言型をTYPE2として,“9.20 データ型の同一性”の構文規則を適用する。 

ii) 候補置換メソッド指定の個数をNOVMSとする。1からNOVMSまでの範囲のiに対して,i番

目の候補置換メソッド指定をCOVRMSiとする。 

場合: 

1) COVRMSiがDの真上位型の記述子に含まれるならば,ROVMSは,COVRMSiの<戻りデー

タ型>の下位型でなければならない。 

2) そうでなければ,ROVMSは,COVRMSiの<戻りデータ型>の上位型でなければならない。 

b) そうでなければ,RCOMSをTYPE1として,及びROVMSをTYPE2として,“9.20 データ型の同

592 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一性”の構文規則を適用する。 

14) 次の全てが真となるようなメソッド指定で,Dの記述子に含まれる置換メソッド指定を衝突する置

換メソッド指定 (conflicting overriding method specification) COVMSとする。 

a) MNとCOVMSのメソッド名とが等価である。 

b) COVMSの拡張されたSQLパラメタ宣言リストがN個の要素を含む。 

c) 2からNまでの範囲のiに対して,SQLパラメタPOVMSi-1のデータ型とCOVMSのSQLパラメ

タPCOVMSi-1とが互換である。 

15) 衝突する置換メソッド指定が存在してはならない。 

16) OVMSの拡張されたSQLパラメタ宣言リストASPDLが,(SELFと名付けられた)1番目のパラメ

タの<データ型>を<スキーマ解決利用者定義型名> DNに置き換えることによって,COMSの拡張さ

れたSQLパラメタ宣言リストから形成される。 

17) 次の全ての条件を満たすSQL呼出し関数Fが存在してはならない。 

a) FがSQL呼出しメソッドでない。 

b) Fの<ルーチン名>と<ルーチン名> MSとが,等価な<被修飾識別子>をもつ。 

c) ASPDL中のSQLパラメタの個数をNPFとする。FがNPF個のSQLパラメタをもつ。 

d) Dが,Fの1番目のSQLパラメタの宣言型の下位型又は上位型である。 

e) ASPDL中のi番目のSQLパラメタの宣言型,2 ≤ i ≤ NPFが,Fのi番目のSQLパラメタの宣言

型と互換である。 

18) Dの記述子がメソッド指定記述子を含むならば,次による。 

a) Dの記述子に含まれるメソッド指定記述子MSDi,1 ≤ i ≤ Mの個数をMとする。 

b) 1からMまでの範囲のiに対して,次による。 

i) 

MSDiに含まれる拡張されたSQLパラメタ宣言リストに含まれる<SQLパラメタ宣言>の個数を

Niとする。MSDiに含まれるj番目の<パラメタの型>を,PTi, j,1 ≤ j ≤ Niとする。 

ii) 次の条件のうちの少なくとも一つが偽でなければならない。 

1) MSDiに含まれる<ルーチン名>がMNと等価である。 

2) ASPDLがNi個の<SQLパラメタ宣言>をもつ。 

3) PTi, j,1 ≤ j ≤ Niのデータ型が,MPDLのj番目の<SQLパラメタ宣言>のデータ型と互換であ

る。 

4) CONSTRUCTORが指定されたことを示す標識をMSDiが含まない。 

アクセス規則 

なし。 

一般規則 

1) Dの記述子をSTDSとし,対応する原メソッド指定COMSの記述子をDCMSとする。OVMSに対

して,メソッド指定記述子DOMSが作成される。DOMSは,次の項目を含む。 

a) <メソッド名> MN。 

b) POVMSに含まれる<特定メソッド名>。 

c) メソッド指定が置換メソッド指定であることを示す標識。 

d) 拡張されたSQLパラメタ宣言リストAPDL。 

e) APDL中の全てのSQLパラメタに対して,(あるならば,)DCMSに含まれる対応するSQLパラ

メタの位置付け子標識。 

593 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

f) POVMSに含まれる<戻りデータ型>。 

g) (あるならば,)DCMSに含まれる<結果CAST FROM型>。 

h) DCMSに含まれる<RETURNS句>に含まれる位置付け子標識。 

i) 

DCMSに含まれる<言語名>。 

j) 

<言語名>がSQLでないならば,DCMSに含まれる<パラメタ様式>。 

k) メソッドが決定的であるかどうかを示すための,DCMSに含まれる標識。 

l) 

(あるならば,)DCMSに含まれるSQLデータアクセス指示。 

m) いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示すための,

DCMSに含まれる標識。 

n) 作成時刻印の値としてのCURRENT̲TIMESTAMP。 

o) 最終変更時刻印の値としてのCURRENT̲TIMESTAMP。 

2) DOMSがSTDSに追加される。 

3) Dの下位型の利用者定義型名を含む表記述子の個数をNとする。 

1からNまでの範囲のiに対して,次による。 

a) そのようなi番目の表記述子に含まれる<表名>をTNiとする。 

b) TNi,及びCOMSに含まれる<特定メソッド名>を指定する表/メソッド権限記述子の個数をMと

する。1からMまでの範囲のjに対して,次による。 

i) 

そのようなj番目の表/メソッド権限記述子をTMPDjとする。 

ii) TNi,同じ動作・権限付与者・権限受領者及び同じ付与可能性,並びにOVMSに含まれる<特定

メソッド名>を指定する新しい表/メソッド権限記述子が作成される。 

iii) TMPDjが削除される。 

適合性規則 

なし。 

11.58 

<メソッド指定削除> 

機能 

<メソッド指定削除> (<drop method specification>) は,利用者定義型からメソッド指定を取り除く。 

形式 

<メソッド指定削除> ::= 

  DROP <特定メソッド指定指示子> RESTRICT 

<特定メソッド指定指示子> ::= 

  [ INSTANCE | STATIC | CONSTRUCTOR ] 

      METHOD <メソッド名> <データ型リスト> 

構文規則 

1) <メソッド指定削除> DORMSを含む<型変更文>に直に含まれる<スキーマ解決利用者定義型名> DN

によって識別される利用者定義型をDとする。DNの陽に指定されるか又は暗に想定される<スキ

ーマ名>をDSNとする。DORMSに直に含まれる<特定メソッド指定指示子>をSMSDとする。 

2) SMSDが<特定メソッド名> SMNを直に含むならば,次による。 

a) SMNが<スキーマ名>を含むならば,その<スキーマ名>は,DSNと等価でなければならない。そ

うでなければ,<スキーマ名> DSNが暗に想定される。 

b) Dの記述子は,特定メソッド名がSMNと等価であるメソッド指定記述子DOOMSを含まなけれ

594 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ばならない。 

c) DOOMSに含まれる拡張されたパラメタリストをPDLとする。 

d) DOOMSに含まれる<メソッド名>をMNとする。 

3) SMSDが<メソッド名> MEを直に含むならば,次による。 

a) INSTANCE,STATIC又はCONSTRUCTORのどれも,SMSDに直に含まれないならば,INSTANCE

が暗に想定される。 

b) Dの記述子は,メソッド名MNがMEと等価であるメソッド指定記述子DOOMSを含まなければ

ならない。 

c) SMSDが<データ型リスト> DTLを直に含むならば,次による。 

場合: 

i) 

STATICが指定されるならば,Dの記述子は,次の項目を含むただ一つのメソッド指定記述子

DOOMSを含まなければならない。 

1) メソッド指定がSTATICであることを示す標識。 

2) メソッド指定が原メソッド指定であることを示す標識。 

3) 全てのiに対して,i番目のパラメタの宣言型が,DTL中のi番目の宣言型と同一であるよう

な拡張されたパラメタリストPDL。 

ii) CONSTRUCTORが指定されるならば,Dの記述子は,次の項目を含むただ一つのメソッド指定

記述子DOOMSを含まなければならない。 

1) メソッド指定がCONSTRUCTORであることを示す標識。 

2) メソッド指定が原メソッド指定であることを示す標識。 

3) 全てのi > 1に対して,i番目のパラメタの宣言型が,DTL中の (i-1) 番目の宣言型と同一で,

かつ,1番目のパラメタの宣言型がDNと同一であるような拡張されたパラメタリストPDL。 

iii) そうでなければ,Dの記述子は,ただ一つのメソッド指定記述子DOOMSを含まなければなら

ず,それに対して,次による。 

1) メソッド指定が原メソッド指定であることを示す標識をDOOMSが含むならば,DOOMSは,

メソッド指定がSTATIC又はCONSTRUCTORのいずれかであることを示す標識を含んでは

ならない。 

2) DOOMSは,全てのi > 1に対して,i番目のパラメタの宣言型が,DTL中の (i-1) 番目の宣

言型と同一で,かつ,1番目のパラメタの宣言型がDNと同一であるような拡張されたパラ

メタリストPDLを含む。 

d) SMSDが<データ型リスト>を直に含まないならば,次による。 

場合: 

i) 

STATICが指定されるならば,Dの記述子は,メソッド指定が原メソッド指定であること及び

STATICであることを示す両方の標識を含むただ一つのメソッド指定記述子DOOMSを含まな

ければならない。 

ii) CONSTRUCTORが指定されるならば,Dの記述子は,メソッド指定が原メソッド指定であるこ

と及びCONSTRUCTORであることを示す両方の標識を含むただ一つのメソッド指定記述子

DOOMSを含まなければならない。 

iii) そうでなければ,Dの記述子は,ただ一つのメソッド指定記述子DOOMSを含まなければなら

ず,それに対して,メソッド指定が原メソッド指定であることを示す標識をDOOMSが含むな

595 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

らば,DOOMSは,メソッド指定がSTATIC又はCONSTRUCTORのいずれかであることを示す

標識を含んではならない。 

4) 場合: 

a) メソッド指定が原メソッド指定であること示す標識をDOOMSが含むならば,次による。 

場合: 

i) 

メソッド指定がSTATICを指定したことを示す標識をDOOMSが含むならば,次の全ての条件

を満たすSQL呼出し関数Fが存在してはならない。 

1) Fの<ルーチン名>とMNとが,等価な<被修飾識別子>をもつ。 

2) NがPDLの要素の個数ならば,FがN個のSQLパラメタをもつ。 

3) Fの1番目のSQLパラメタの宣言型がDである。 

4) PDLのi番目の要素の宣言型,1 ≤ i ≤ Nが,FのSQLパラメタPiの宣言型と互換である。 

5) FがSQL呼出しメソッドである。 

6) STATICが指定されたことを示す標識をFが含む。 

ii) メソッド指定がCONSTRUCTORを指定したことを示す標識をDOOMSが含むならば,次の全

ての条件を満たすSQL呼出し関数Fが存在してはならない。 

1) Fの<ルーチン名>とMNとが,等価な<被修飾識別子>をもつ。 

2) NがPDLの要素の個数ならば,FがN個のSQLパラメタをもつ。 

3) Fの1番目のSQLパラメタの宣言型がDである。 

4) PDLのi番目の要素の宣言型,2 ≤ i ≤ Nが,FのSQLパラメタPiの宣言型と互換である。 

5) FがSQL呼出しメソッドである。 

6) CONSTRUCTORが指定されたことを示す標識をFが含む。 

iii) そうでなければ,次による。 

1) 次の全てが真となるような置換メソッド指定の記述子DOVMSを記述子が含む,Dの真下位

型PSBDが存在してはならない。 

A) MNと,DOVMSに含まれる<メソッド名>とが,等価な<被修飾識別子>をもつ。 

B) NがPDLの要素の個数ならば,DOVMSに含まれる拡張されたSQLパラメタ宣言リスト

APDLが,N個のSQLパラメタをもつ。 

C) PSBDが,APDLの1番目のSQLパラメタの宣言型である。 

D) PDLのi番目の要素の宣言型,2 ≤ i ≤ Nが,APDLのSQLパラメタPiの宣言型と互換であ

る。 

2) 次の全ての条件を満たすSQL呼出し関数Fが存在してはならない。 

A) Fの<ルーチン名>とMNとが,等価な<被修飾識別子>をもつ。 

B) NがPDLの要素の個数ならば,FがN個のSQLパラメタをもつ。 

C) Fの1番目のSQLパラメタの宣言型がDである。 

D) PDLのi番目の要素の宣言型,2 ≤ i ≤ Nが,FのSQLパラメタPiの宣言型と互換である。 

E) FがSQL呼出しメソッドである。 

F) STATIC又はCONSTRUCTORのいずれかが指定されたことを示す標識をFが含まない。 

b) そうでなければ,次の全ての条件を満たすSQL呼出し関数Fが存在してはならない。 

i) 

Fの<ルーチン名>とMNとが,等価な<被修飾識別子>をもつ。 

ii) NがPDLの要素の個数ならば,FがN個のSQLパラメタをもつ。 

596 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) Fの1番目のSQLパラメタの宣言型がDである。 

iv) PDLのi番目の要素の宣言型,2 ≤ i ≤ Nが,FのSQLパラメタPiの宣言型と互換である。 

v) FがSQL呼出しメソッドである。 

vi) STATIC又はCONSTRUCTORのいずれかが指定されたことを示す標識をFが含まない。 

アクセス規則 

なし。 

一般規則 

1) Dの記述子をSTDSとする。 

2) DOOMSがSTDSから取り除かれる。 

3) DOOMSが破壊される。 

適合性規則 

なし。 

11.59 

<データ型削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.23 <データ型削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.7 <データ型削除文>”によって修正される。 

機能 

<データ型削除文> (<drop data type statement>) は,利用者定義型を破壊する。 

形式 

<データ型削除文> ::= 

  DROP TYPE <スキーマ解決利用者定義型名> <削除動作> 

構文規則 

1) <スキーマ解決利用者定義型名>をDNとし,DNによって識別されるデータ型をDとする。Dの上

位型をSDとする。 

2) 被参照型がDである参照型をRDとする。RDの上位型をSRDとする。要素型がDである集まり型

をADとする。要素型が,D又はRDの上位型である集まり型SADとする。 

3) DNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Dの記

述子を含んでいなければならない。 

4) RESTRICTが指定されるならば,次による。 

a) 記述子がDの記述子に含まれないどの列,フィールド又は属性の宣言型も,SRD又はSADであ

ってはならない。 

b) どの列,属性又はフィールドの宣言型も,Dを基にしていてはならない。 

c) Dは,真下位型をもっていてはならない。 

d) Dは,参照可能表の構造型であってはならない。 

e) Dの利用者定義型記述子に含まれる変換記述子は,変換グループの空のリストを含まなければな

らない。 

f) 

次のいずれかの中で,D,RD及びADが参照されていてはならない。 

i) 

ビュー記述子の元の<問合せ式>。 

ii) 制約記述子の<探索条件>。 

iii) トリガ記述子の被トリガ動作。 

iv) 利用者定義型変換記述子。 

597 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

v) 

04 D自体の記述子以外の利用者定義型記述子。 

g) Dに依存していないSQL呼出しルーチンで,ルーチン記述子がD,RD若しくはADの記述子を

含むか又はSQLルーチン本体がD,RD若しくはADを参照するSQL呼出しルーチンが存在して

はならない。 

h) Dに依存しているSQL呼出しルーチンで,ルーチン記述子がD又はRDの記述子を含むSQL呼

出しルーチンをRとする。 

i) 

Rは,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>

又は<メソッド参照>の当該ルーチンであってはならない。 

1) ルーチン記述子のSQLルーチン本体。 

2) ビュー記述子の元の<問合せ式>。 

3) 制約記述子の<探索条件>。 

4) 

04 トリガ記述子の被トリガ動作。 

ii) Rの特定名は,どの利用者定義型変換記述子にも含まれていてはならない。 

iii) Rは,いずれかの利用者定義型の記述子に含まれる順序付け関数であってはならない。 

注記418 CASCADEが指定されるならば,このような参照されているオブジェクト及び依存して

いるオブジェクトは,この細分箇条の一般規則で規定しているSQLスキーマ操作文によ

って陽に,及び/又は<REVOKE文>の実行によって暗に削除される。 

注記419 利用者定義型に依存しているSQL呼出しルーチンの概念は,“4.28 SQL呼出しルーチン”

で定義している。 

注記420 あるデータ型が別のデータ型を基にするという概念は,“4.1 データ型”で定義している。 

アクセス規則 

1) 与えられた認可識別子は,Dの暗に想定されるか又は陽に指定される<スキーマ名>によって識別さ

れるスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) D,RD若しくはADを参照するか又はルーチン記述子がD,RD若しくはADの記述子を含み,か

つ,Dに依存していない<SQL呼出しルーチン>の<特定名>をSNとする。そのような各<SQL呼出

しルーチン>に対して,これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に

実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

注記421 利用者定義型に依存しているSQL呼出しルーチンの概念は,“4.28 SQL呼出しルーチン”

で定義している。 

2) これ以上のアクセス規則の検査なしで,次の<変換削除文>が実効的に実行される。 

DROP TRANSFORM ALL FOR DN CASCADE 

注記422 削除される変換に依存しているどの外部ルーチンも,変換が定義されているデータ型に

も依存しており,したがって,一般規則1)のために既に削除されているはずなので,こ

の規則は,どんな効果も与えないことが望ましい。 

3) 変換元データ型としてDNを参照する利用者定義型変換記述子をUDCDとする。UDCDに含まれる

相手データ型をTDとする。これ以上のアクセス規則の検査なしで,次の<利用者定義型変換削除文

>が実効的に実行される。 

DROP CAST ( DN AS TD ) CASCADE 

598 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) 相手データ型としてDNを参照する利用者定義型変換記述子をUDCDとする。UDCDに含まれる変

換元データをSDとする。これ以上のアクセス規則の検査なしで,次の<利用者定義型変換削除文>

が実効的に実行される。 

DROP CAST ( SD AS DN ) CASCADE 

5) 被参照型がDNである参照型を変換元データ型として参照する利用者定義型変換記述子をUDCDと

する。UDCDに含まれる相手データ型をTDとする。これ以上のアクセス規則の検査なしで,次の

<利用者定義型変換削除文>が実効的に実行される。 

DROP CAST ( REF (DN) AS TD ) CASCADE 

6) 被参照型がDNである参照型を相手データ型として参照する利用者定義型変換記述子をUDCDとす

る。UDCDに含まれる変換元データ型をSDとする。これ以上のアクセス規則の検査なしで,次の

<利用者定義型変換削除文>が実効的に実行される。 

DROP CAST ( SD AS REF (DN) ) CASCADE 

7) Dを参照するどの権限記述子に対しても,次の<REVOKE文>が実効的に実行される。 

REVOKE PRIV ON TYPE D FROM GRANTEE CASCADE 

ここで,PRIV及びGRANTEEは,それぞれ,権限記述子中の動作及び権限受領者とする。 

8) Dに依存しているどのSQL呼出しルーチンの記述子も,破壊される。 

注記423 利用者定義型に依存しているSQL呼出しルーチンの概念は,“4.28 SQL呼出しルーチン”

で定義している。 

9) Dの記述子が破壊される。 

適合性規則 

1) 機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>

を含む<データ型削除文>を含んではならない。 

11.60 

<SQL呼出しルーチン> 

この細分箇条は,ISO/IEC 9075-4の“9.24 <SQL呼出しルーチン>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.10 <SQL呼出しルーチン>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.8 <SQL呼出しルーチン>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.8 <SQL呼出しルーチン>”によって修正される。 

機能 

<SQL呼出しルーチン> (<SQL-invoked routine>) は,SQL呼出しルーチンを定義する。 

形式 

04 <SQL呼出しルーチン> ::= 

  <スキーマルーチン> 

<スキーマルーチン> ::= 

  <スキーマ手続> 

|  <スキーマ関数> 

<スキーマ手続> ::= 

  CREATE <SQL呼出し手続> 

<スキーマ関数> ::= 

  CREATE <SQL呼出し関数> 

<SQL呼出し手続> ::= 

599 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  PROCEDURE <スキーマ修飾付きルーチン名> <SQLパラメタ宣言リスト> 

    <ルーチン特性の並び> 

    <ルーチン本体> 

<SQL呼出し関数> ::= 

  { <関数指定> | <メソッド指定指示子> } <ルーチン本体> 

<SQLパラメタ宣言リスト> ::= 

  <左括弧> [ <SQLパラメタ宣言> 

    [ { <コンマ> <SQLパラメタ宣言> }... ] ] <右括弧> 

14 <SQLパラメタ宣言> ::= 

  [ <パラメタモード> ]  

    [ <SQLパラメタ名> ]  

    <パラメタの型> [ RESULT ] 

  

    [ DEFAULT <パラメタ既定値> ] 

<パラメタ既定値> ::= 

  <値式> 

| <文脈型付き値指定> 

<パラメタモード> ::= 

  IN 

| OUT 

| INOUT 

14 <パラメタの型> ::= 

  <データ型> [ <位置付け子標識> ] 

<位置付け子標識> ::= 

  AS LOCATOR 

<関数指定> ::= 

  FUNCTION <スキーマ修飾付きルーチン名> <SQLパラメタ宣言リスト> 

    <RETURNS句> 

    <ルーチン特性の並び> 

    [ <DISPATCH句> ] 

<メソッド指定指示子> ::= 

  SPECIFIC METHOD <特定メソッド名> 

| [ INSTANCE | STATIC | CONSTRUCTOR ] 

      METHOD <メソッド名> <SQLパラメタ宣言リスト> 

      [ <RETURNS句> ] 

      FOR <スキーマ解決利用者定義型名> 

<ルーチン特性の並び> ::= 

  [ <ルーチン特性>... ] 

<ルーチン特性> ::= 

  <LANGUAGE句> 

| <PARAMETER STYLE句> 

600 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| SPECIFIC <特定名> 

| <決定的特性> 

| <SQLデータアクセス指示> 

| <ナル呼出し句> 

| <戻り結果集合特性> 

| <保存点水準指示> 

<保存点水準指示> ::= 

  NEW SAVEPOINT LEVEL 

| OLD SAVEPOINT LEVEL 

<戻り結果集合特性> ::= 

  DYNAMIC RESULT SETS <戻り結果集合最大数> 

<PARAMETER STYLE句> ::= 

  PARAMETER STYLE <パラメタ様式> 

<DISPATCH句> ::= 

  STATIC DISPATCH 

14 <RETURNS句> ::= 

  RETURNS <戻り型> 

<戻り型> ::= 

  <戻りデータ型> [ <結果型変換> ] 

| <戻りTABLE型> 

<戻りTABLE型> ::= 

  TABLE <表関数列リスト> 

<表関数列リスト> ::= 

  <左括弧> <表関数列リスト要素> 

      [ { <コンマ> <表関数列リスト要素> }... ] <右括弧> 

<表関数列リスト要素> ::= 

  <列名> <データ型> 

<結果型変換> ::= 

  CAST FROM <結果CAST FROM型> 

<結果CAST FROM型> ::= 

  <データ型> [ <位置付け子標識> ] 

14 <戻りデータ型> ::= 

  <データ型> [ <位置付け子標識> ] 

<ルーチン本体> ::= 

  <SQLルーチン指定> 

| <外部本体参照> 

<SQLルーチン指定> ::= 

  [ <権利句> ] <SQLルーチン本体> 

<権利句> ::= 

  SQL SECURITY INVOKER 

601 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| SQL SECURITY DEFINER 

<SQLルーチン本体> ::= 

  <SQL手続文> 

<外部本体参照> ::= 

  EXTERNAL [ NAME <外部ルーチン名> ] 

      [ <PARAMETER STYLE句> ] 

      [ <変換グループ指定> ] 

      [ <EXTERNAL SECURITY句> ] 

<EXTERNAL SECURITY句> ::= 

  EXTERNAL SECURITY DEFINER 

| EXTERNAL SECURITY INVOKER 

| EXTERNAL SECURITY IMPLEMENTATION DEFINED 

13 <パラメタ様式> ::= 

  SQL 

| GENERAL 

<決定的特性> ::= 

  DETERMINISTIC 

| NOT DETERMINISTIC 

<SQLデータアクセス指示> ::= 

  NO SQL 

| CONTAINS SQL 

| READS SQL DATA 

| MODIFIES SQL DATA 

<ナル呼出し句> ::= 

  RETURNS NULL ON NULL INPUT 

| CALLED ON NULL INPUT 

<戻り結果集合最大数> ::= 

  <符号なし整数> 

<変換グループ指定> ::= 

  TRANSFORM GROUP { <単一グループ指定> | <複数グループ指定> } 

<単一グループ指定> ::= 

  <グループ名> 

<複数グループ指定> ::= 

  <グループ指定> [ { <コンマ> <グループ指定> }... ] 

<グループ指定> ::= 

  <グループ名> FOR TYPE <パス解決利用者定義型名> 

構文規則 

1) 

09 <SQL呼出しルーチン>は,SQL呼出しルーチン (SQL-invoked routine) を指定する。<SQL呼出し

ルーチン>によって指定されるSQL呼出しルーチンをRとする。 

2) <SQL呼出しルーチン>が<スキーマルーチン>を直に含むならば,<スキーマ修飾付きルーチン名>

602 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

によって識別されるSQL呼出しルーチンは,スキーマレベルルーチン (schema-level routine) とす

る。 

3) 

13 <SQL呼出し手続>として指定される<SQL呼出しルーチン>を,SQL呼出し手続 (SQL-invoked 

procedure) と呼ぶ。<SQL呼出し関数>として指定される<SQL呼出しルーチン>を,SQL呼出し関数 

(SQL-invoked function) と呼ぶ。<メソッド指定指示子>を指定する<SQL呼出し関数>を,更に,SQL

呼出しメソッド (SQL-invoked method) と呼ぶ。STATICを指定するSQL呼出しメソッドを静的SQL

呼出しメソッド (static SQL-invoked method) と呼ぶ。CONSTRUCTORを指定するSQL呼出しメソッ

ドをSQL呼出し構成メソッド (SQL-invoked constructor method) と呼ぶ。 

4) <戻り型> RSTがTABLEを指定するならば,<戻りTABLE型>に含まれる<表関数列リスト>をTCL

とする。 

a) TCLに含まれるどの<列名> CNに対しても,CNは,TCLに含まれる他のどの<列名>とも等価で

あってはならない。 

b) RSTは,次の<戻り型>と等価とする。 

ROW TCL MULTISET 

5) <SQL呼出しルーチン>がSQL呼出しメソッドを指定するならば,次による。 

場合: 

a) <特定メソッド名> SMNが指定されるならば,次による。 

i) 

場合: 

1) SMNが<スキーマ名>を含まないならば,次による。 

場合: 

A) <SQL呼出しルーチン>が<スキーマ定義>に含まれるならば,<スキーマ定義>中で指定され

るか又は暗に想定される<スキーマ名>が暗に想定される。 

B) そうでなければ,<SQLクライアントモジュール定義>中で指定されるか又は暗に想定され

る<スキーマ名>が暗に想定される。 

2) そうでなければ,<SQL呼出しルーチン>が<スキーマ定義>に含まれるならば,SMNに含ま

れる<スキーマ名>は,<SQL呼出しルーチン>を含む<スキーマ定義>の指定されるか又は暗に

想定される<スキーマ名>と等価でなければならない。 

ii) SMNの暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマをS

とする。 

iii) Sに含まれる利用者定義型をUDTとする。UDTの記述子に含まれ,かつ,<特定メソッド名>

がSMNであるメソッド指定記述子DMSが存在しなければならない。 

iv) DMS中の非拡張SQLパラメタ宣言リスト中のSQLパラメタの個数をMNとする。MNは,R

の非拡張SQLパラメタ宣言リスト中のSQLパラメタの個数とする。 

v) DMSが<結果型変換> RCを含むならば,RCは,Rの<結果型変換>とする。 

vi) DMS中の<特定メソッド名>をSPNとする。SPNは,Rの<特定名>とする。 

vii) DMSの拡張されたSQLパラメタ宣言リストをNPLとする。NPLは,Rの拡張されたSQLパ

ラメタ宣言リストとする。 

viii) SN.<メソッド名>をRNとする。ここで,SNは,UDTの記述子を含むスキーマの<スキーマ名

>とする。 

b) そうでなければ,次による。 

603 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

13 <メソッド指定指示子>に直に含まれる<スキーマ解決利用者定義型名>をUDTNとする。

UDTNによって識別される利用者定義型をUDTとする。 

ii) DMSの<メソッド名>が<メソッド名>と等価で,DMSがSTATICを示すことが<メソッド指定指

示子>がSTATICを指定することと同値で,DMSがCONSTRUCTORを示すことが<メソッド指

定指示子>がCONSTRUCTORを指定することと同値で,かつ,DMS中の非拡張SQLパラメタ

宣言リスト中のどのSQLパラメタの宣言型も,<メソッド指定指示子>に含まれる<SQLパラメ

タ宣言リスト>中の対応するSQLパラメタの宣言型と互換であるようなメソッド指定記述子

DMSが,UDTの記述子中に存在しなければならない。DMSは,<メソッド指定指示子>の対応

するメソッド指定を識別する。 

iii) DMS中の非拡張SQLパラメタ宣言リスト中のSQLパラメタの個数をMNとする。 

iv) DMSの非拡張SQLパラメタ宣言リスト中のi番目のSQLパラメタを,PCOMSi,1 ≤ i ≤ MNと

する。<メソッド指定指示子>に含まれるi番目のSQLパラメタを,POVMSi,1 ≤ i ≤ MNとす

る。 

v) 1からMNまでの範囲のiに対して,PCOMSi及びPOVMSiに含まれる<SQLパラメタ名>は,

等価でなければならない。 

vi) DMS中の非拡張SQLパラメタ宣言リスト中のi番目のSQLパラメタの宣言型を,PDMSi,1 ≤ 

i ≤ MNとする。<メソッド指定指示子>に含まれるi番目のSQLパラメタの宣言型をPSMiとす

る。 

vii) 1からMNまで範囲のiに対して,PDMSiをTYPE1として,PSMiをTYPE2として,“9.20 デ

ータ型の同一性”の構文規則を適用する。 

viii) 場合: 

1) <RETURNS句>が指定されるならば,Rの<戻りデータ型>をRTとする。DMS中の<戻りデ

ータ型>をRDMSとする。RTをTYPE1として,RDMSをTYPE2として,“9.20 データ型の

同一性”の構文規則を適用する。 

2) そうでなければ,Rの<戻りデータ型>をRDMSとする。 

ix) DMSが<結果型変換> RCを含むならば,次による。 

場合: 

1) <RETURNS句>が指定されるならば,<RETURNS句>は,<結果型変換>を含まなければなら

ない。RC中に指定される<データ型>をRDCTとする。<RETURNS句>に含まれる<結果型変

換>中に指定される<データ型>をRCTとする。RDCTをTYPE1として,RCTをTYPE2とし

て,“9.20 データ型の同一性”の構文規則を適用する。 

2) そうでなければ,RCは,Rの<結果型変換>とする。 

x) DMS中の<特定メソッド名>をSPNとする。SPNは,Rの<特定名>とする。 

xi) DMSの拡張されたSQLパラメタ宣言リストをNPLとする。 

xii) SN.<メソッド名>をRNとする。ここで,SNは,UDTの記述子を含むスキーマの<スキーマ名

>とする。 

6) <SQL呼出しルーチン>がSQL呼出し手続又はSQL呼出し通常関数を指定するならば,次による。 

a) 

13 <ルーチン特性の並び>は,高々一つの<LANGUAGE句>,高々一つの<PARAMETER STYLE句

>,高々一つの<特定名>,高々一つの<決定的特性>,高々一つの<SQLデータアクセス指示>,高々

一つの<ナル呼出し句>,及び高々一つの<戻り結果集合特性>を含まなければならない。 

604 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) <PARAMETER STYLE句>は,<ルーチン特性の並び>及び<外部本体参照>の両方中に指定しては

ならない。 

c) <関数指定>の<ルーチン特性の並び>は,<戻り結果集合特性>を含んではならない。 

d) SQL呼出しルーチンがSQL呼出し手続で,かつ,<戻り結果集合特性>が指定されないならば,

DYNAMIC RESULT SETS 0が暗に想定される。 

e) <決定的特性>が指定されないならば,NOT DETERMINISTICが暗に想定される。 

f) 

場合: 

i) 

PROCEDUREが指定されるならば,次による。 

1) <ナル呼出し句>を指定してはならない。 

2) <ルーチン特性の並び>は,二つ以上の<保存点水準指示>を含んではならない。 

ii) そうでなければ,<ナル呼出し句>が指定されないならば,CALLED ON NULL INPUTが暗に想

定される。 

g) <SQLデータアクセス指示>を指定しなければならない。 

h) 

04 <LANGUAGE句>が指定されないならば,LANGUAGE SQLが暗に想定される。 

i) 

13 LANGUAGE SQLを指定するか又は暗に想定する<SQL呼出しルーチン>をSQLルーチン (SQL 

routine) と呼ぶ。LANGUAGE SQLを指定しない<SQL呼出しルーチン>を外部ルーチン (external 

routine) と呼ぶ。 

j) 

<保存点水準指示>が指定されるならば,PROCEDUREを指定しなければならない。 

k) PROCEDUREが指定され,かつ,<保存点水準指示>が指定されないならば,OLD SAVEPOINT 

LEVELが暗に想定される。 

l) 

NEW SAVEPOINT LEVELが指定されるならば,MODIFIES SQL DATAを指定しなければならな

い。 

m) RがSQLルーチンならば,次による。 

i) 

<RETURNS句>は,<結果型変換>を指定してはならない。 

ii) <SQLデータアクセス指示>は,NO SQLを指定してはならない。 

iii) <PARAMETER STYLE句>を指定してはならない。 

n) 配列戻し外部関数は,外部ルーチンで,かつ,次の条件のうちの一つを満たすSQL呼出し関数と

する。 

i) 

<配列型>又は元型が配列型の<パス解決利用者定義型名>を単純に含み,かつ,<位置付け子標

識>を含まない<結果CAST FROM型>が指定される。 

ii) <結果CAST FROM型>が指定されず,<戻りデータ型>が<配列型>又は元型が配列型の<パス解

決利用者定義型名>を単純に含み,かつ,<位置付け子標識>を含まない。 

o) マルチ集合戻し外部関数は,外部ルーチンで,かつ,次の条件のうちの一つを満たすSQL呼出し

関数とする。 

i) 

<マルチ集合型>又は元型がマルチ集合型の<パス解決利用者定義型名>を単純に含み,かつ,<

位置付け子標識>を含まない<結果CAST FROM型>が指定される。 

ii) <結果CAST FROM型>が指定されず,<戻りデータ型>が<マルチ集合型>又は元型がマルチ集合

型の<パス解決利用者定義型名>を単純に含み,かつ,<位置付け子標識>を含まない。 

p) Rの<スキーマ修飾付きルーチン名>をRNとする。 

q) 

04 <SQL呼出しルーチン>が<スキーマ定義>に含まれていて,かつ,RNが<スキーマ名> SNを含

605 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

むならば,SNは,<SQL呼出しルーチン>を含む<スキーマ定義>の指定されるか又は暗に想定さ

れる<スキーマ名>と等価でなければならない。SNによって識別されるSQLスキーマをSとする。 

r) 場合: 

i) 

RがSQL呼出し通常関数で,かつ,次のうちの一つである<データ型>を指定する<SQLパラメ

タ宣言>を<SQLパラメタ宣言リスト>が含むならば,<DISPATCH句>を指定しなければならな

い。 

1) 利用者定義型。 

2) 要素型が利用者定義型である集まり型。 

3) 要素型が参照型である集まり型。 

4) 参照型。 

ii) そうでなければ,<DISPATCH句>を指定してはならない。 

s) <特定名>が指定されないならば,<スキーマ名>がSの<スキーマ名>と等価である処理系依存の<

特定名>が暗に想定される。 

t) 

<特定名>が<スキーマ名>を含むならば,その<スキーマ名>は,Sの<スキーマ名>と等価でなけれ

ばならない。<特定名>が<スキーマ名>を含まないならば,Sの<スキーマ名>が暗に想定される。 

u) <特定名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

特定名が<特定名>と等価であるルーチン記述子か,又は特定名が<特定名>と等価であるメソッド

指定記述子を含む利用者定義型記述子を含んでいてはならない。 

v) <戻りデータ型> RTが<位置付け子標識>を単純に含むならば,次による。 

i) 

Rは,外部ルーチンでなければならない。 

ii) RTは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型

又は利用者定義型のいずれかでなければならない。 

iii) <結果型変換>を指定してはならない。 

w) <結果CAST FROM型> RCTが<位置付け子標識>を単純に含むならば,次による。 

i) 

Rは,外部ルーチンでなければならない。 

ii) RCTは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合

型又は利用者定義型のいずれかでなければならない。 

x) Rが外部ルーチンならば,次による。 

i) 

<パラメタ様式>が指定されないならば,PARAMETER STYLE SQLが暗に想定される。 

ii) 

13 Rが配列戻し外部関数又はマルチ集合戻し外部関数ならば,PARAMETER STYLE SQLが指

定されるか又は暗に想定されるかのいずれかでなければならない。 

iii) 

13 場合: 

1) <変換グループ指定>が指定されないならば,<SQLパラメタ宣言リスト>に含まれ,かつ,<

パラメタの型> UDT1が<位置付け子標識>なしで利用者定義型を識別する各<SQLパラメタ

宣言>に対して<グループ指定> GSをもつ<複数グループ指定>が暗に想定される。GSの<グ

ループ名>は,処理系定義とし,それの<パス解決利用者定義型名>は,UDT1とする。 

2) <グループ名> GNをもつ<単一グループ指定>が指定されるならば,<変換グループ指定>は,

<SQLパラメタ宣言リスト>に含まれ,かつ,<パラメタの型> UDT1が<位置付け子標識>なし

で利用者定義型を識別する各<SQLパラメタ宣言>に対して<グループ指定> GSを含む<複数

グループ指定>を含む<変換グループ指定>と等価とする。GSの<グループ名>は,GNとし,

606 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

それの<パス解決利用者定義型名>は,UDT1とする。 

3) そうでなければ,<SQLパラメタ宣言リスト>に含まれ,<パラメタの型> UDT1が<位置付け

子標識>なしで利用者定義型を識別し,かつ,UDT1と等価なものが<複数グループ指定>に含

まれるどの<グループ指定>にも含まれない各<SQLパラメタ宣言>に対する<グループ指定> 

GSを付加して,<複数グループ指定>が拡張される。GSの<グループ名>は,処理系定義とし,

それの<パス解決利用者定義型名>は,UDT1とする。 

iv) <結果型変換>が指定されるならば,<結果型変換>中で指定される<データ型>の値をVとし,<

戻りデータ型>をRTとする。次のCAST指定が,“6.13 <CAST指定>”の構文規則に従って正

しくなければならない。 

CAST ( V AS RT ) 

y) 

14 <SQL呼出しルーチン>に含まれる<SQLパラメタ宣言リスト>をNPLとする。 

7) NPLは,RのSQLパラメタのリストを指定する。Rの各SQLパラメタは,<SQLパラメタ宣言>に

よって指定される。<SQLパラメタ名>が指定されるならば,RのそのSQLパラメタは,SQLパラ

メタ名によって識別される。 

8) NPLは,RESULTを指定する高々一つの<SQLパラメタ宣言>を指定しなければならない。 

9) RがSQL呼出し関数ならば,NPL中のどの<SQLパラメタ宣言>も,<パラメタモード>又は<パラメ

タ既定値>を含んではならない。 

10) RがSQLルーチンならば,NPL中のどの<SQLパラメタ宣言>も,<SQLパラメタ名>を含まなけれ

ばならない。 

11) NPLに含まれるどの二つの<SQLパラメタ名>も,等価であってはならない。 

12) NPLに含まれる<SQLパラメタ宣言>の個数をN及びPNとする。どの<SQLパラメタ宣言> PDi,1 

≤ i ≤ Nに対しても,次による。 

a) PDiに直に含まれる<パラメタの型> PTiは,ROWを指定してはならない。 

b) PTiが<位置付け子標識>を単純に含むならば,次による。 

i) 

Rは,外部ルーチンでなければならない。 

ii) PTiは,2進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型

又は利用者定義型のいずれかを指定しなければならない。 

c) PDiがRESULTを直に含むならば,次による。 

i) 

Rは,SQL呼出し関数でなければならない。 

ii) PTiは,構造型STを指定しなければならない。STを識別する<利用者定義型名>をSTNとす

る。 

iii) <戻りデータ型>は,STNを指定しなければならない。 

iv) Rは,型保持関数とし,PDiは,Rの結果SQLパラメタを指定する。 

d) PDiが<パラメタモード>を含まないならば,INを指定する<パラメタモード>が暗に想定される。 

e) i番目SQLパラメタをPiとする。 

場合: 

i) 

<パラメタモード>がINを指定するならば,Piは,入力SQLパラメタとする。<パラメタ既定

値> PDiが指定されるならば,PiをTARGETとして,PDiをVALUEとして,“9.2 格納代入”

の構文規則を適用する。 

ii) <パラメタモード>がOUTを指定するならば,Piは,出力SQLパラメタとする。<パラメタ既

607 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

定値>を指定してはならない。 

iii) <パラメタモード>がINOUTを指定するならば,Piは,入出力SQLパラメタ(入力SQLパラ

メタで,かつ,出力SQLパラメタ)とする。<パラメタ既定値>を指定してはならない。 

13) RNの有効範囲は,Rの<ルーチン本体>とする。 

14) NPLに含まれる<SQLパラメタ名>の有効範囲は,NPLを含む<SQL呼出し手続>又は<SQL呼出し

関数>の<ルーチン本体> RBとする。 

15) <SQL呼出しルーチン>は,<ホストパラメタ名>,<動的パラメタ指定>又は<埋込み変数名>を含ん

ではならない。 

16) 場合: 

a) RがSQL呼出し手続ならば,Sは,<スキーマ修飾付きルーチン名>がRNと等価で,かつ,SQL

パラメタの個数がPNである別のSQL呼出し手続を含んではならない。 

b) そうでなければ,次による。 

i) 

場合: 

1) Rが静的SQL呼出しメソッドならば,Rを含めて,<スキーマ修飾付きルーチン名>がRNと

等価で,かつ,SQLパラメタの個数がPNである,型UDTの全ての静的SQL呼出しメソッ

ドを含む集合をSCRとする。 

2) RがSQL呼出し構成メソッドならば,Rを含めて,<スキーマ修飾付きルーチン名>がRNと

等価で,かつ,SQLパラメタの個数がPNである,型UDTの全てのSQL呼出し構成メソッ

ドを含む集合をSCRとする。 

3) そうでなければ,Rを含めて,<スキーマ修飾付きルーチン名>がRNと等価で,かつ,SQL

パラメタの個数がPNであり,静的SQL呼出しメソッドでも,SQL呼出し構成メソッドでも

ない,S中の全てのSQL呼出し関数を含む集合をSCRとする。 

ii) 任意に選択される値のリストから構成される<SQL引数リスト>をALとする。ここで,AL中の

どの値Aiの宣言型も,Rの対応するSQLパラメタPiの宣言型と互換とする。 

iii) どのAiに対しても,SQL呼出しルーチンSIRのSQLパラメタPiの宣言型の型指示子がAiの

宣言型の型優先順序リスト中にない全てのSIRをSCRから取り除く。 

iv) <SQL引数リスト>をSQL ARGUMENT LISTとして,SQL呼出しルーチンの集合をSET OF 

SQL-INVOKED ROUTINESとして,“9.6 当該ルーチン決定”の構文規則を適用する。これらの

構文規則の適用によって戻されるSET OF SUBJECT ROUTINESをSRとする。 

17) RがSQL呼出しメソッドであるが,静的SQL呼出しメソッドでないならば,NPLの1番目のSQL

パラメタを,Rの当該パラメタ (subject parameter) と呼ぶ。 

18) Rが,利用者定義型である宣言型を1番目のSQLパラメタがもつSQL呼出し通常関数Fならば,

次による。 

a) Fの1番目のSQLパラメタの宣言型をUDT2とする。 

b) 次のようなUDT2の記述子中のインスタンスメソッドのメソッド指定記述子をDMSとする。 

i) 

Fの<スキーマ修飾付きルーチン名>とDMSの<ルーチン名>とが,等価な<被修飾識別子>をも

つ。 

ii) Fと,DMSの拡張されたSQLパラメタ宣言リストとが,同じ個数のSQLパラメタをもつ。 

c) DMS中の非拡張SQLパラメタ宣言リスト中のi番目のSQLパラメタの宣言型をPDMSi,1 ≤ i ≤ 

PN-1 とし,<関数指定>に含まれるi番目のSQLパラメタの宣言型をPMSi,1 ≤ i ≤ PNとする。 

608 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) 次の条件のうちの一つが偽でなければならない。 

i) 

PDMSi,1 ≤ i ≤ PN-1の宣言型がSQLパラメタPMSi+1の宣言型と互換である。 

ii) UDT2 が,PMS1の宣言型の下位型又は上位型である。 

19) RがSQLルーチンならば,次による。 

a) <SQLルーチン指定>を指定しなければならない。 

b) <権利句>が指定されないならば,SQL SECURITY DEFINERが暗に想定される。 

c) READS SQL DATAが指定されるならば,SQLデータを潜在的に修正するSQL文を<SQLルーチ

ン本体>が含んではならないかどうかは,処理系定義とする。 

d) CONTAINS SQLが指定されるならば,SQLデータを潜在的に読むか又はSQLデータを潜在的に

修正するSQL文を<SQLルーチン本体>が含んではならないかどうかは,処理系定義とする。 

e) DETERMINISTICが指定されるならば,潜在的に非決定的である<SQL手続文>を<SQLルーチン

本体>が含んではならないかどうかは,処理系定義とする。 

f) 

<SQLコネクション文>,<SQLスキーマ文>,<動的SQL文>,又は<SAVEPOINT文>,<RELEASE 

SAVEPOINT文>若しくは<SAVEPOINT句>を指定する<ROLLBACK文>以外の<SQLトランザク

ション文>を<SQLルーチン本体>が含んではならないかどうかは,処理系定義とする。 

注記424 適合するSQL言語は,<SQLコネクション文>,又は<SAVEPOINT文>,<RELEASE 

SAVEPOINT文>若しくは<SAVEPOINT句>を指定する<ROLLBACK文>以外の<SQLト

ランザクション文>を含んではならないが,処理系は,これを構文誤りとして扱う必要

がない。 

g) <SQLルーチン本体>は,<スキーマ定義>を単純に含む<SQL手続文>を直に含んではならない。 

h) 

04 <SQLルーチン本体>は,SQLクライアントモジュールの宣言局所一時表を識別する<表参照>を

単純に含む<SQL手続文>を直に含んではならない。 

20) Rが外部ルーチンならば,次による。 

a) <SQLルーチン指定>を指定してはならない。 

b) <EXTERNAL SECURITY句>が指定されないならば,EXTERNAL SECURITY IMPLEMENTATION 

DEFINEDが暗に想定される。 

c) <外部ルーチン名>が指定されないならば,Rの<被修飾識別子>と等価な<外部ルーチン名>が暗に

想定される。 

d) PARAMETER STYLE SQLが指定されるならば,次による。 

i) 

場合: 

1) Rが配列戻し外部関数又はマルチ集合戻し外部関数で,かつ,それの要素型が行型ならば,

要素型の次数をFRNとする。 

2) そうでなければ1をFRNとする。 

ii) Rが配列戻し外部関数又はマルチ集合戻し外部関数ならば,FRN+6をAREFとする。そうでな

ければ,FRN+4をAREFとする。 

iii) RがSQL呼出し関数ならば,次のとおりの,PN+FRN+N+AREF個のSQLパラメタのリストを

実効的SQLパラメタリスト (effective SQL parameter list) とする。 

1) 1からPNまでの範囲のiに対して,i番目の 実効的SQLパラメタリスト項目が次のとおり

に定義される。 

場合: 

609 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

A) 

14 i番目の<SQLパラメタ宣言>に単純に含まれる<パラメタの型> Tiが<位置付け子標識>

を含むならば,i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をINTEGER

によって置き換えたi番目の<SQLパラメタ宣言>とする。 

B) i番目の<SQLパラメタ宣言>に直に含まれる<パラメタの型> Tiが,<位置付け子標識>なし

で<パス解決利用者定義型名>ならば,次による。 

I) 

場合: 

1) Rが,置換メソッドであるSQL呼出しメソッドならば,RをROUTINEとして,iを

POSITIONとして,“9.22 置換メソッドのためのFROM-SQL関数の決定”の構文規

則を適用する。適用可能なFROM-SQL関数FSFiが存在しなければならない。 

2) そうでなければ,Tiによって識別されるデータ型をTYPEとして,Tiを含む<グルー

プ指定>に含まれる<グループ名>をGROUPとして,“9.21 FROM-SQL関数の決定”

の構文規則を適用する。適用可能なFROM-SQL関数FSFiが存在しなければならない。 

II) FSFiを,i番目のSQLパラメタに関連付けられたFROM-SQL関数 (from-sql function 

associated with the i-th SQL parameter) と呼ぶ。 

III) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をFSFiの<戻りデータ型>

によって置き換えたi番目の<SQLパラメタ宣言>とする。 

C) そうでなければ,i番目の実効的SQLパラメタリスト項目は,i番目の<SQLパラメタ宣言

>とする。 

2) 場合: 

A) FRNが1ならば,PN+FRN番目の実効的SQLパラメタリスト項目は,<パラメタモード> 

OUTをもつ。その項目の<パラメタの型> PTは,次のとおりに定義される。 

I) 

<結果型変換>が指定されるならば,<結果CAST FROM型>をRTとする。そうでなけれ

ば,<戻りデータ型>をRTとする。 

II) 場合: 

1) 

14 RTが<位置付け子標識>を単純に含むならば,PTは,INTEGERとする。 

2) RTが,<位置付け子標識>なしで<パス解決利用者定義型名>を指定するならば,次に

よる。 

a) 場合: 

i) 

Rが,置換メソッドであるSQL呼出しメソッドならば,RをROUTINEとして,

“9.24 置換メソッドのためのTO-SQL関数の決定”の構文規則を適用する。適用

可能なTO-SQL関数TSFが存在しなければならない。 

ii) そうでなければ,RTによって識別されるデータ型をTYPEとして,RTを含む<グ

ループ指定>に含まれる<グループ名>をGROUPとして,“9.23 TO-SQL関数の決

定”の構文規則を適用する。適用可能なTO-SQL関数TSFが存在しなければなら

ない。 

b) TSFを,結果に関連付けられたTO-SQL関数 (to-sql function) と呼ぶ。 

c) 場合: 

i) 

TSFがSQL呼出しメソッドならば,PTは,TSFの2番目のSQLパラメタの<パ

ラメタの型>とする。 

ii) そうでなければ,PTは,TSFの1番目のSQLパラメタの<パラメタの型>とする。 

610 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) Rが配列戻し外部関数又はマルチ集合戻し外部関数ならば,PTは,RTの要素型とす

る。 

4) そうでなければ, PTは,RTとする。 

B) そうでなければ,PN+1からPN+FRNまでの範囲のiに対して,i番目の実効的SQLパラ

メタリスト項目は,次のとおりに定義される。 

場合: 

I) 

それの<パラメタモード>は,OUTとする。 

II) <戻りデータ型>の要素型のi-PN番目のフィールドのデータ型をRFTi-PNとする。i番目

の実効的SQLパラメタリスト項目の<パラメタの型> PTiは,次のとおりに決定される。 

1) RFTi-PNが<パス解決利用者定義型名>を指定するならば,次による。 

a) 場合: 

i) 

Rが,置換メソッドであるSQL呼出しメソッドならば,RをROUTINEとして,

“9.24 置換メソッドのためのTO-SQL関数の決定”の構文規則を適用する。適用

可能なTO-SQL関数TSFが存在しなければならない。 

ii) そうでなければ,RFTi-PNによって識別されるデータ型をTYPEとして,RFTi-

PNを含む<グループ指定>に含まれる<グループ名>をGROUPとして,“9.23 TO-

SQL関数の決定”の構文規則を適用する。適用可能なTO-SQL関数TSFが存在し

なければならない。 

b) TSFを,RFTi-PNに関連付けられたTO-SQL関数 と呼ぶ。 

c) 場合: 

i) 

TSFがSQL呼出しメソッドならば,PTiは,TSFの2番目のSQLパラメタの<パ

ラメタの型>とする。 

ii) そうでなければ,PTiは,TSFの1番目のSQLパラメタの<パラメタの型>とす

る。 

2) 

14 そうでなければ,PTiは,RFTi-PNとする。 

3) (PN+FRN)+1番目から(PN+FRN)+N+FRN番目までの実効的SQLパラメタリスト項目は,位

取り0の真数型である処理系定義の<データ型>のSQLパラメタのN+FRN個の実現値とす

る。(PN+FRN)+1から(PN+FRN)+N+FRNまでの範囲のiに対して,そのようなi番目の実効

的SQLパラメタの<パラメタモード>は,i-FRN-PN番目の実効的SQLパラメタの<パラメ

タモード>と同じとする。 

4) (PN+FRN)+(N+FRN)+1番目の実効的SQLパラメタリスト項目は,長さ5で,かつ,SQLSTATE

値に対して規定される文字集合の文字列である<データ型>,及び<パラメタモード> INOUT

をもつSQLパラメタとする。 

注記425 SQLSTATE値に対して規定される文字集合は,“24.1 SQLSTATE”で定義している。 

5) (PN+FRN)+(N+FRN)+2番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,か

つ,文字集合SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INをもつSQL

パラメタとする。 

6) (PN+FRN)+(N+FRN)+3番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,か

つ,文字集合SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INをもつSQL

パラメタとする。 

611 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

7) (PN+FRN)+(N+FRN)+4番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,か

つ,文字集合SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INOUTをもつ

SQLパラメタとする。 

8) Rが配列戻し外部関数又はマルチ集合戻し外部関数ならば,次による。 

A) (PN+FRN)+(N+FRN)+5番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,

かつ,文字集合SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INOUTを

もつSQLパラメタとする。 

B) (PN+FRN)+(N+FRN)+6番目の実効的SQLパラメタリスト項目は,位取り0の真数型であ

る<データ型>,及び<パラメタモード> INをもつSQLパラメタとする。 

iv) RがSQL呼出し手続ならば,次のとおりの,PN+N+4個のSQLパラメタのリストを実効的SQL

パラメタリスト とする。 

1) 1からPNまでの範囲のiに対して,i番目の実効的SQLパラメタリスト項目は,次のとおり

に定義される。 

場合: 

A) 

14 i番目の<SQLパラメタ宣言>に単純に含まれる<パラメタの型> Tiが<位置付け子標識>

を単純に含むならば,i番目の実効的SQLパラメタリスト項目は,<パラメタの型>を

INTEGERによって置き換えたi番目の<SQLパラメタ宣言>とする。 

B) i番目の<SQLパラメタ宣言>に単純に含まれる<パラメタの型> Tiが,<位置付け子標識>な

しで<パス解決利用者定義型名>ならば,次による。 

I) 

場合: 

1) i番目の<SQLパラメタ宣言>に直に含まれる<パラメタモード>がINならば,次によ

る。 

a) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれ

る<グループ名>をGROUPとして,“9.21 FROM-SQL関数の決定”の構文規則を適

用する。適用可能なFROM-SQL関数FSFiが存在しなければならない。FSFiを,i

番目のSQLパラメタに関連付けられたFROM-SQL関数 (from-sql function) と呼ぶ。 

b) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をFSFiの<戻りデータ

型>によって置き換えたi番目の<SQLパラメタ宣言>とする。 

2) i番目の<SQLパラメタ宣言>に直に含まれる<パラメタモード>がOUTならば,次によ

る。 

a) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれ

る<グループ名>をGROUPとして,“9.23 TO-SQL関数の決定”の構文規則を適用

する。適用可能なTO-SQL関数TSFiが存在しなければならない。TSFiを,i番目の

SQLパラメタに関連付けられたTO-SQL関数 (to-sql function associated with i-th SQL 

parameter) と呼ぶ。 

b) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>を次の<パラメタの型>

によって置き換えたi番目の<SQLパラメタ宣言>とする。 

場合: 

i) 

TSFiがSQL呼出しメソッドならば,TSFiの2番目のSQLパラメタの<パラメタ

の型>。 

612 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,TSFiの1番目のSQLパラメタの<パラメタの型>。 

3) そうでなければ,次による。 

a) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれ

る<グループ名>をGROUPとして,“9.21 FROM-SQL関数の決定”の構文規則を適

用する。適用可能なFROM-SQL関数FSFiが存在しなければならない。FSFiを,i

番目のSQLパラメタに関連付けられたFROM-SQL関数 と呼ぶ。 

b) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれ

る<グループ名>をGROUPとして,“9.23 TO-SQL関数の決定”の構文規則を適用

する。適用可能なTO-SQL関数TSFiが存在しなければならない。TSFiを,i番目の

SQLパラメタに関連付けられたTO-SQL関数 と呼ぶ。 

c) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をFSFiの<戻りデータ

型>によって置き換えたi番目の<SQLパラメタ宣言>とする。 

C) そうでなければ,i番目の実効的SQLパラメタリスト項目は,i番目の<SQLパラメタ宣言

>とする。 

2) PN+1番目からPN+N番目までの実効的SQLパラメタリスト項目は,位取り0の真数型であ

る処理系定義の<データ型>のSQLパラメタのN個の実現値とする。そのようなi番目の実

効的SQLパラメタの<パラメタモード>は,i-PN番目の実効的SQLパラメタの<パラメタモ

ード>と同じとする。 

3) (PN+N)+1番目の実効的SQLパラメタリスト項目は,長さ5で,かつ,文字集合SQL̲TEXT

の文字列である<データ型>,及び<パラメタモード> INOUTをもつSQLパラメタとする。 

4) (PN+N)+2番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,かつ,文字集合

SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INをもつSQLパラメタとす

る。 

5) (PN+N)+3番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,かつ,文字集合

SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INをもつSQLパラメタとす

る。 

6) (PN+N)+4番目の実効的SQLパラメタリスト項目は,処理系定義の長さで,かつ,文字集合

SQL̲TEXTの文字列である<データ型>,及び<パラメタモード> INOUTをもつSQLパラメタ

とする。 

e) 

13 PARAMETER STYLE GENERALが指定されるならば,1からPNまでの範囲のiに対して,i番

目の実効的SQLパラメタリスト項目が次のとおりに定義されるようなPN個のパラメタのリスト

を,実効的SQLパラメタリスト とする。 

場合: 

i) 

14 i番目の<SQLパラメタ宣言>に単純に含まれる<パラメタの型> Tiが<位置付け子標識>を単

純に含むならば,i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をINTEGERに

よって置き換えたi番目の<SQLパラメタ宣言>とする。 

ii) i番目の<SQLパラメタ宣言>に単純に含まれる<パラメタの型> Tiが,<位置付け子標識>なしで

<パス解決利用者定義型名>ならば,次による。 

1) 場合: 

A) i番目の<SQLパラメタ宣言>に直に含まれる<パラメタモード>がINならば,次による。 

613 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

I) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれる<

グループ名>をGROUPとして,“9.21 FROM-SQL関数の決定”の構文規則を適用する。

適用可能なFROM-SQL関数FSFiが存在しなければならない。FSFiを,i番目のSQLパ

ラメタに関連付けられたFROM-SQL関数 と呼ぶ。 

II) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をFSFiの<戻りデータ型>

によって置き換えたi番目の<SQLパラメタ宣言>とする。 

B) i番目の<SQLパラメタ宣言>に直に含まれる<パラメタモード>がOUTならば,次による。 

I) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれる<

グループ名>をGROUPとして,“9.23 TO-SQL関数の決定”の構文規則を適用する。適

用可能なTO-SQL関数TSFiが存在しなければならない。TSFiを,i番目のSQLパラメ

タに関連付けられたTO-SQL関数 と呼ぶ。 

II) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>を次の<パラメタの型>によ

って置き換えたi番目の<SQLパラメタ宣言>とする。 

場合: 

1) TSFiがSQL呼出しメソッドならば,TSFiの2番目のSQLパラメタの<パラメタの型

>。 

2) そうでなければ,TSFiの1番目のSQLパラメタの<パラメタの型>。 

C) そうでなければ,次による。 

I) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれる<

グループ名>をGROUPとして,“9.21 FROM-SQL関数の決定”の構文規則を適用する。

適用可能なFROM-SQL関数FSFiが存在しなければならない。FSFiを,i番目のSQLパ

ラメタに関連付けられたFROM-SQL関数 と呼ぶ。 

II) Tiによって識別されるデータ型をTYPEとして,Tiを含む<グループ指定>に含まれる<

グループ名>をGROUPとして,“9.23 TO-SQL関数の決定”の構文規則を適用する。適

用可能なTO-SQL関数TSFiが存在しなければならない。TSFiを,i番目のSQLパラメ

タに関連付けられたTO-SQL関数 と呼ぶ。 

III) i番目の実効的SQLパラメタリスト項目は,<パラメタの型>をFSFiの<戻りデータ型>

によって置き換えたi番目の<SQLパラメタ宣言>とする。 

iii) そうでなければ,i番目の実効的SQLパラメタリスト項目は,i番目の<SQLパラメタ宣言>と

する。 

注記426 SQL呼出しルーチンがSQL呼出し関数ならば,外部ルーチンから戻される値は,処理

系依存の方法でSQL処理系に受け渡される。SQLパラメタは,この目的のためには用

いられない。 

f) 

<LANGUAGE句>がADA,C,COBOL,FORTRAN,M,PASCAL又はPLIのどれを指定するか

に依存して,それぞれ,表16“Adaのためのデータ型対応”,表17“Cのためのデータ型対応”,

表18“COBOLのためのデータ型対応”,表19“Fortranのためのデータ型対応”,表20“Mのた

めのデータ型対応”,表21“Pascalのためのデータ型対応”又は表22“PL/Iのためのデータ型対

応”を適用データ型対応表 (operative data type correspondences table) とする。適用データ型対応表

の二つの列を“SQLデータ型 (SQL data type) ”の列,及び“ホストデータ型 (host data type) ”の

列として参照する。 

614 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) 

13 実効的SQLパラメタリスト項目中のどの<データ型>も,“ホストデータ型”の列中の対応する

行が“なし”でない“SQLデータ型”の列中に記載されたデータ型を指定しなければならない。 

21) 13 場合: 

a) <メソッド指定指示子>が指定されるならば,次による。 

i) 

メソッドが決定的であることをDMSが示すならば,Rは,決定的とする。そうでなければ,R

は,潜在的に非決定的とする。 

ii) メソッドがSQLデータを潜在的に修正することを,DMSのSQLデータアクセス指示が示すな

らば,Rは,SQLデータを潜在的に修正する。メソッドがSQLデータを潜在的に読むことを,

DMSのSQLデータアクセス指示が示すならば,Rは,SQLデータを潜在的に読む。メソッド

がSQLを潜在的に含むことを,DMSのSQLデータアクセス指示が示すならば,Rは,SQLを

潜在的に含む。そうでなければ,Rは,SQLを潜在的に含まない。 

b) そうでなければ,次による。 

i) 

DETERMINISTICが指定されるならば,Rは,決定的 (deterministic) とする。そうでなければ,

それは,潜在的に非決定的 (possibly non-deterministic) とする。 

ii) <SQL呼出しルーチン>がSQLデータを潜在的に修正する (possibly modify SQL-data) というこ

とは,<SQLデータアクセス指示>がMODIFIES SQL DATAを指定することと同値とする。 

iii) <SQL呼出しルーチン>がSQLデータを潜在的に読む (possibly read SQL-data) ということは,

<SQLデータアクセス指示>がREADS SQL DATAを指定することと同値とする。 

iv) <SQL呼出しルーチン>がSQLを潜在的に含む (possibly contain SQL) ということは,<SQLデ

ータアクセス指示>がCONTAINS SQLを指定することと同値とする。 

v) <SQL呼出しルーチン>がSQLを潜在的に含まない (does not possibly contain SQL) ということ

は,<SQLデータアクセス指示>がNO SQLを指定することと同値とする。 

22) Rがスキーマレベルルーチンならば,<スキーマ修飾付きルーチン名>に陽に含まれるか又は暗に含

まれる<スキーマ名>によって識別されるスキーマを,<SQL呼出しルーチン>を含むスキーマとす

る。 

23) <SQL呼出しルーチン>が<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか

又は暗に想定される<認可識別子>をAとする。そうでなければ,<スキーマ修飾付きルーチン名>の

陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマを所有する<認可

識別子>をAとする。 

アクセス規則 

1) 

13 <SQL呼出しルーチン>が,<スキーマ定義>を介在しないで,<SQLクライアントモジュール定義

> Mに含まれるならば,与えられた認可識別子は,Sを所有する<認可識別子>を含まなければなら

ない。 

2) Rが外部ルーチンで,かつ,関連付けられたFROM-SQL関数若しくはTO-SQL関数がそのルーチン

のSQLパラメタのいずれかにあるか又は結果に関連付けられたTO-SQL関数がRにあるならば,

次とする。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<SQL呼出しルーチ

ン>が<SQLスキーマ文>に含まれるならば,<SQL呼出しルーチン>を含むスキーマを所有する<

認可識別子>の適用可能な権限は,SQLパラメタに関連付けられた(FROM-SQL関数があるなら

615 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ば,その)全てのFROM-SQL関数,及びSQLパラメタに関連付けられた(TO-SQL関数がある

ならば,その)全てのTO-SQL関数,並びに結果に関連付けられた(TO-SQL関数があるならば,

その)TO-SQL関数に関するEXECUTEを含まなければならない。 

b) そうでなければ,現行の権限は,SQLパラメタに関連付けられた(FROM-SQL関数があるならば,

その)全てのFROM-SQL関数,及びSQLパラメタに関連付けられた(TO-SQL関数があるなら

ば,その)全てのTO-SQL関数,並びに結果に関連付けられた(TO-SQL関数があるならば,そ

の)TO-SQL関数に関するEXECUTEを含まなければならない。 

一般規則 

1) Rがスキーマレベルルーチンならば,Rを含むスキーマを所有する<認可識別子>に対して,Rに関

するEXECUTE権限を定義する権限記述子が作成される。権限記述子の権限付与者には,特別な付

与者の値“̲SYSTEM”が設定される。この権限が付与可能であることは,次のうちの一つを満たす

ことと同値とする。 

a) RがSQLルーチンで,かつ,<ルーチン本体>に含まれる<SQL手続文>を成功実行するために<認

可識別子>に必要な権限の全てが付与可能である。必要な権限には,<SQL手続文>に含まれる全

ての<ルーチン呼出し>の全ての当該ルーチンに関するEXECUTE権限を含む。 

b) RがSQLルーチンで,かつ,SQL SECURITY INVOKERが指定される。 

c) Rが外部ルーチンである。 

2) 場合: 

a) <SQL呼出しルーチン>が<スキーマ定義>に含まれるならば,その<スキーマ定義>のSQLパスを

DPとする。 

b) <SQL呼出しルーチン>が<準備可能文>又は<直接SQL文>に含まれるならば,現行SQLセション

のSQLパスをDPとする。 

c) そうでなければ,<SQL呼出しルーチン>を含む<SQLクライアントモジュール定義>のSQLパス

をDPとする。 

3) <メソッド指定指示子>が指定されないならば,定義されるSQL呼出しルーチンを記述するルーチ

ン記述子が,次のとおりに作成される。 

a) ルーチン記述子に含まれるルーチン名は,<スキーマ修飾付きルーチン名>とする。 

b) ルーチン記述子に含まれる特定名は,<特定名>とする。 

c) ルーチン記述子は,NPL中の各SQLパラメタに対して,次の項目を含む。 

i) 

名前。 

ii) 宣言型。 

iii) 順序位置。 

iv) SQLパラメタが入力か,出力か又は入出力かを示す標識。 

v) SQLパラメタが結果SQLパラメタかどうかを示す標識を含む。 

vi) SQLパラメタが既定値をもつかどうかを示す標識,及び,もつならば,<パラメタ既定値>。 

d) ルーチン記述子に含まれる戻り結果集合の最大個数は,次の値とする。 

場合: 

i) 

SQL呼出しルーチンがSQL呼出し手続ならば,<戻り結果集合最大数>の陽に指定されるか又

は暗に想定される値。 

ii) そうでなければ,0。 

background image

616 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) ルーチン記述子は,SQL呼出しルーチンがSQL呼出し関数か又はSQL呼出し手続かを示す標識

を含む。 

f) 

SQL呼出しルーチンがSQL呼出し関数ならば,次による。 

i) 

ルーチン記述子は,SQL呼出し関数がSQL呼出しメソッドでないことを示す標識を含む。 

ii) ルーチン記述子は,<戻りデータ型>中のデータ型を含む。<戻りデータ型>が<位置付け子標識>

を単純に含むならば,ルーチン記述子は,戻り値が位置付け子であることを示す標識を含む。 

iii) SQL呼出しルーチン記述子は,SQL呼出しルーチンがナル呼出し関数かどうかを示す標識を含

む。 

g) SQL呼出しルーチンが型保持関数ならば,ルーチン記述子は,SQL呼出しルーチンが型保持関数

であることを示す標識を含む。 

h) SQL呼出しルーチンの本体が書かれた言語の名前は,<LANGUAGE句>に含まれる<言語名>とす

る。 

i) 

SQL呼出しルーチンがSQLルーチンならば,ルーチン記述子のSQLルーチン本体は,<SQLル

ーチン本体>とする。 

j) 

SQL呼出しルーチンがSQL呼出し関数か,又はNEW SAVEPOINT LEVELが指定されるならば,

ルーチン記述子は,ルーチンが呼び出されるときはいつも新しい保存点水準が確立されなければ

ならないことを示す標識を含む。 

注記427 保存点水準の利用は,機能T272“拡張保存点管理”に依存している。 

k) 場合: 

i) 

SQL SECURITY INVOKERが指定されるならば,ルーチン記述子中のSQL安全保護特性は,

INVOKERとする。 

ii) そうでなければ,ルーチン記述子中のSQL安全保護特性は,DEFINERとする。 

l) 

SQL呼出しルーチンが外部ルーチンならば,次による。 

i) 

ルーチン記述子の外部名は,<外部ルーチン名>とする。 

ii) 

13 ルーチン記述子は,パラメタ受渡し様式 (parameter passing style) がPARAMETER STYLE 

SQLか又はPARAMETER STYLE GENERALかを示す標識を含む。 

m) SQL呼出しルーチン記述子は,SQL呼出しルーチンがDETERMINISTICか又はNOT 

DETERMINISTICかを示す標識を含む。 

n) ルーチン記述子は,SQL呼出しルーチンがSQLを潜在的に含まないか,SQLを潜在的に含むか,

SQLデータを潜在的に読むか又はSQLデータを潜在的に修正するかを示す標識を含む。 

o) SQL呼出しルーチンが<結果型変換>を指定するならば,ルーチン記述子は,SQL呼出しルーチン

が<結果型変換>を指定することを示す標識,及び<結果型変換>中に指定された<データ型>を含む。

<結果型変換>が<位置付け子標識>を含むならば,ルーチン記述子は,<結果型変換>中に指定され

た<データ型>が位置付け子標識をもつことを示す標識を含む。 

p) 関連付けられたFROM-SQL関数FSFがあるどのSQLパラメタに対しても,ルーチン記述子は,

FSFの特定名を含む。 

q) 

14 関連付けられたTO-SQL関数TSFがあるどのSQLパラメタに対しても,ルーチン記述子は,

TSFの特定名を含む。 

r) 

14 Rが外部関数で,かつ,それの結果に関連付けられたTO-SQL関数TRFがRにあるならば,ル

ーチン記述子は,TRFの特定名を含む。 

617 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

s) <SQLパラメタ宣言>が<位置付け子標識>を含むどのSQLパラメタに対しても,ルーチン記述子

は,SQLパラメタが位置付け子パラメタであることを示す標識を含む。 

t) 

ルーチン記述子に含まれるルーチン認可識別子は,Sを所有する<認可識別子>とする。 

u) ルーチン記述子に含まれるルーチンSQLパスは,DPとする。 

注記428 ルーチンSQLパスは,Rが呼び出されるときに,現行SQLセションのルーチンSQL

パスを設定するために用いられる。現行SQLセションのルーチンSQLパスは,Rに

含まれる<ルーチン呼出し>の当該ルーチンを定義するために,“10.4 <ルーチン呼出し

>”の構文規則によって用いられる。Rが呼び出されるときはいつも,同じルーチン

SQLパスが用いられる。 

v) 

04 ルーチン記述子は,ルーチンがスキーマレベルルーチンかどうかを示す標識を含む。 

w) ルーチン記述子は,SQL呼出しルーチンが利用者定義型に依存しているかどうかを示す標識を含

む。 

注記429 利用者定義型に依存しているSQL呼出しルーチンの概念は,“4.28 SQL呼出しルーチ

ン”で定義している。 

4) <メソッド指定指示子>が指定されるならば,対応するメソッド指定の記述子をDMSとする。定義

されるSQL呼出しルーチンを記述するルーチン記述子が,次のとおりに作成される。 

a) ルーチン記述子に含まれるルーチン名は,RNとする。 

b) ルーチン記述子に含まれる特定名は,<特定名>とする。 

c) ルーチン記述子は,NPL中の各SQLパラメタに対して,名前,宣言型,順序位置,SQLパラメタ

が入力か,出力か又は入出力かを示す標識,及びSQLパラメタが結果SQLパラメタかどうかを

示す標識を含む。 

d) ルーチン記述子は,SQL呼出しルーチンがSQL呼出しメソッドであるSQL呼出し関数であるこ

とを示す標識,UDTの名前,及びSTATIC又はCONSTRUCTORが指定されたかどうかを示す標

識を含む。 

e) SQL呼出しルーチンが型保持関数ならば,ルーチン記述子は,SQL呼出しルーチンが型保持関数

であることを示す標識を含む。 

f) 

SQL呼出しルーチンが変異関数ならば,ルーチン記述子は,SQL呼出しルーチンが変異関数であ

ることを示す標識を含む。 

g) ルーチン記述子は,<戻りデータ型>中のデータ型を含む。 

h) SQL呼出しルーチンの本体が書かれた言語の名前は,DMS中の<LANGUAGE句>に含まれる<言

語名>とする。 

i) 

SQL呼出しルーチンがSQLルーチンならば,ルーチン記述子のSQLルーチン本体は,<SQLル

ーチン本体>とする。 

j) 

場合: 

i) 

SQL SECURITY INVOKERが指定されるならば,ルーチン記述子中のSQL安全保護特性は,

INVOKERとする。 

ii) そうでなければ,ルーチン記述子中のSQL安全保護特性は,DEFINERとする。 

k) SQL呼出しルーチンが外部ルーチンならば,次による。 

i) 

ルーチン記述子の外部名は,<外部ルーチン名>とする。 

ii) ルーチン記述子は,パラメタ受渡し様式がPARAMETER STYLE SQLか又はPARAMETER 

618 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

STYLE GENERALかを示す標識を含み,その標識は,DMS中の<パラメタ様式>の標識と同じ

とする。 

l) 

ルーチン記述子は,SQL呼出しルーチンが決定的かどうかを示す標識を含む。 

m) ルーチン記述子は,SQL呼出しルーチンがSQLデータを潜在的に修正するか,SQLデータを潜

在的に読むか,SQLを潜在的に含むか又はSQLを潜在的に含まないかを示す標識を含む。 

n) ルーチン記述子は,SQL呼出しルーチンがナル呼出し関数かどうかを示す標識を含み,その標識

は,DMS中の標識と同じとする。 

o) DMSが<結果型変換>を指定するならば,ルーチン記述子は,SQL呼出しルーチンが<結果型変換

>を指定することを示す標識,及びDMSの<結果型変換>中に指定された<データ型>を含む。 

p) ルーチン記述子に含まれるルーチン認可識別子は,Sを所有する<認可識別子>とする。 

q) ルーチン記述子に含まれるルーチンSQLパスは,DPとする。 

注記430 ルーチンSQLパスは,Rが呼び出されるときに,現行SQLセションのルーチンSQL

パスを設定するために用いられる。現行SQLセションのルーチンSQLパスは,Rに

含まれる<ルーチン呼出し>の当該ルーチンを定義するために,“10.4 <ルーチン呼出し

>”の構文規則によって用いられる。Rが呼び出されるときはいつも,同じルーチン

SQLパスが用いられる。 

r) ルーチン記述子は,ルーチンがスキーマレベルルーチンかどうかを示す標識を含む。 

s) ルーチン記述子は,SQL呼出しルーチンが利用者定義型に依存しているかどうか示す標識を含む。 

注記431 利用者定義型に依存しているSQL呼出しルーチンの概念は,“4.28 SQL呼出しルーチ

ン”で定義している。 

5) ルーチン記述子に含まれる作成時刻印及び最終変更時刻印は,CURRENT̲TIMESTAMPの値とする。 

6) Rが外部ルーチンならば,Rのルーチン記述子は,次のとおりに決定される要素を更に含む。 

a) 場合: 

i) 

13 Rの記述子中の<SQLデータアクセス指示>がMODIFIES SQL DATA,READS SQL DATA又は

CONTAINS SQLならば,次による。 

1) <外部ルーチン名>によって識別されるプログラムをPとする。 

2) 外部ルーチンSQLパスは,Pの<SQLクライアントモジュール定義>の<モジュールパス指定

>に直に含まれる<パス指定>に直に含まれる<スキーマ名リスト>とする。 

ii) そうでなければ,外部ルーチンSQLパスは,処理系定義とする。 

注記432 外部ルーチンSQLパスは,Rが呼び出されるときに,現行SQLセションのルーチン

SQLパスを設定するために用いられる。現行SQLセションのルーチンSQLパスは,

Pの<SQLクライアントモジュール定義>に含まれる<ルーチン呼出し>の当該ルーチン

を定義するために,“10.4 <ルーチン呼出し>”の構文規則によって用いられる。Rが呼

び出されるときはいつも,同じ外部ルーチンSQLパスが用いられる。 

b) ルーチン記述子中の外部安全保護特性は,次による。 

場合: 

i) 

<EXTERNAL SECURITY句>がEXTERNAL SECURITY DEFINERを指定するならば,DEFINER

とする。 

ii) <EXTERNAL SECURITY句>がEXTERNAL SECURITY INVOKERを指定するならば,INVOKER

とする。 

619 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) そうでなければ,EXTERNAL SECURITY IMPLEMENTATION DEFINEDとする。 

c) 実効的SQLパラメタリストは,実効的SQLパラメタリスト (effective SQL parameter list) とする。 

適合性規則 

1) 機能T471“結果集合戻り値”なしでは,適合するSQL言語は,<戻り結果集合特性>を含んではな

らない。 

2) 機能T341 “SQL呼出し関数及びSQL呼出し手続のオーバロード”なしでは,適合するSQL言語

は,ルーチン名が<スキーマ修飾付きルーチン名>であるルーチン記述子を,<スキーマ修飾付きル

ーチン名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマが含

む<スキーマルーチン>を含んではならない。 

3) 機能S023“基本構造型”なしでは,適合するSQL言語は,<メソッド指定指示子>を含んではなら

ない。 

4) 機能S241“変換関数”なしでは,適合するSQL言語は,<変換グループ指定>を含んではならない。 

5) 機能S024“拡張構造型”なしでは,適合するSQL言語中で,<SQLパラメタ宣言>は,RESULTを

含んではならない。 

6) 機能T571“配列戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,配列戻し外部関数を

定義する<SQL呼出しルーチン>を含んではならない。 

7) 機能T572“マルチ集合戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,マルチ集合戻

し外部関数を定義する<SQL呼出しルーチン>を含んではならない。 

8) 機能S201“配列に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,配列型を基にす

る<パラメタの型>を含んではならない。 

9) 機能S201“配列に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,配列型を基にす

る<戻りデータ型>を含んではならない。 

10) 機能S202“マルチ集合に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,マルチ集

合型を基にする<パラメタの型>を含んではならない。 

11) 機能S202“マルチ集合に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,マルチ集

合型を基にする<戻りデータ型>を含んではならない。 

12) 機能T323“外部ルーチンのための陽に指定される安全保護”なしでは,適合するSQL言語は,

<EXTERNAL SECURITY句>を含んではならない。 

13) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,かつ,

構造型を識別する<データ型>を単純に含む<パラメタの型>を含んではならない。 

14) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,かつ,

構造型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならない。 

15) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,かつ,

配列型を識別する<データ型>を単純に含む<パラメタの型>を含んではならない。 

16) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,かつ,

配列型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならない。 

17) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,マルチ集合型を識別する<データ型>を単純に含む<パラメタの型>を含んではならない。 

18) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,マルチ集合型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならない。 

620 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

19) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,長大オブジェクト型を識別する<データ型>を単純に含む<パラメタの型>を含んではならない。 

20) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,長大オブジェクト型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならない。 

21) 機能S027“特定メソッド名によるメソッド作成”なしでは,適合するSQL言語は,SPECIFIC METHOD

を含む<メソッド指定指示子>を含んではならない。 

22) 機能T324“SQLルーチンのための陽に指定される安全保護”なしでは,適合するSQL言語は,<権

利句>を含んではならない。 

23) 機能T326“表関数”なしでは,適合するSQL言語は,<戻りTABLE型>を含んではならない。 

24) 機能T651“SQLルーチン中のSQLスキーマ文”なしでは,適合するSQL言語は,SQLスキーマ文

を含む<SQLルーチン本体>を含んではならない。 

25) 機能T652“SQLルーチン中の動的SQL文”なしでは,適合するSQL言語は,動的SQL文を含む

<SQLルーチン本体>を含んではならない。 

26) 機能T653“外部ルーチン中のSQLスキーマ文”なしでは,適合するSQL言語は,SQLスキーマ文

が現れるプログラムを識別する<外部ルーチン名>を含んではならない。 

27) 機能T654“外部ルーチン中の動的SQL文”なしでは,適合するSQL言語は,動的SQL文が現れる

プログラムを識別する<外部ルーチン名>を含んではならない。 

28) 機能T655“循環的依存ルーチン”なしでは,適合するSQL言語は,<SQL呼出しルーチン>によっ

て指定されるSQL呼出しルーチンのルーチン記述子に当該ルーチンが一般に依存している<ルーチ

ン呼出し>を含む<SQLルーチン本体>を含んではならない。 

29) 機能T272“拡張保存点管理”なしでは,適合するSQL言語は,<保存点水準指示>を含む<ルーチン

特性の並び>を含んではならない。 

30) 機能T522“SQL呼出し手続の入力パラメタのための既定値”なしでは,適合するSQL言語は,<パ

ラメタ既定値>を含んではならない。 

31) 機能B121“ルーチン言語Ada”なしでは,適合するSQL言語は,ADAを含む<LANGUAGE句>を

含む<ルーチン特性>を含んではならない。 

32) 機能B122“ルーチン言語C”なしでは,適合するSQL言語は,Cを含む<LANGUAGE句>を含む<

ルーチン特性>を含んではならない。 

33) 機能B123“ルーチン言語COBOL”なしでは,適合するSQL言語は,COBOLを含む<LANGUAGE

句>を含む<ルーチン特性>を含んではならない。 

34) 機能B124“ルーチン言語Fortran”なしでは,適合するSQL言語は,FORTRANを含む<LANGUAGE

句>を含む<ルーチン特性>を含んではならない。 

35) 機能B125“ルーチン言語MUMPS”なしでは,適合するSQL言語は,Mを含む<LANGUAGE句>

を含む<ルーチン特性>を含んではならない。 

36) 機能B126“ルーチン言語Pascal”なしでは,適合するSQL言語は,PASCALを含む<LANGUAGE

句>を含む<ルーチン特性>を含んではならない。 

37) 機能B127“ルーチン言語PL/I”なしでは,適合するSQL言語は,PLIを含む<LANGUAGE句>を含

む<ルーチン特性>を含んではならない。 

38) 機能B128“ルーチン言語SQL”なしでは,適合するSQL言語は,SQLを含む<LANGUAGE句>を

含む<ルーチン特性>を含んではならない。 

621 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

39) 機能B221“ルーチン言語Ada:VARCHAR及びNUMERIC提供”なしでは,<SQL呼出しルーチン

>の<LANGUAGE句>がADAを指定するならば,<パラメタの型>及び<戻りデータ型>は,

CHARACTER VARYING又はNUMERICを指定してはならない。 

11.61 

<ルーチン変更文> 

この細分箇条は,ISO/IEC 9075-13の“9.9 <ルーチン変更文>”によって修正される。 

機能 

<ルーチン変更文> (<alter routine statement>) は,SQL呼出しルーチンの特性を変更する。 

形式 

<ルーチン変更文> ::= 

  ALTER <特定ルーチン指示子> 

      <変更ルーチン特性の並び> <ルーチン変更動作> 

<変更ルーチン特性の並び> ::= 

  <変更ルーチン特性>... 

<変更ルーチン特性> ::= 

  <LANGUAGE句> 

| <PARAMETER STYLE句> 

| <SQLデータアクセス指示> 

| <ナル呼出し句> 

| <戻り結果集合特性> 

| NAME <外部ルーチン名> 

<ルーチン変更動作> ::= 

  RESTRICT 

構文規則 

1) 

13 <特定ルーチン指示子>によって識別されるSQL呼出しルーチンをSRとし,SRの<特定名>をSN

とする。SNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

SRの記述子を含んでいなければならない。 

2) SRは,スキーマレベルルーチンでなければならない。 

3) SRは,利用者定義型に依存しているSQL呼出しルーチンであってはならない。 

注記433 “利用者定義型に依存しているSQL呼出しルーチン”は,“4.28 SQL呼出しルーチン”

で定義している。 

4) RESTRICTが指定されるならば,次による。 

a) SRは,利用者定義型UDTの記述子に含まれる順序付け関数であってはならない。 

b) SRは,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>

又は<メソッド参照>の当該ルーチンであってはならない。 

i) 

ルーチン記述子のSQLルーチン本体。 

ii) ビュー記述子の元の<問合せ式>。 

iii) 制約記述子の<探索条件>。 

iv) トリガ記述子の被トリガ動作。 

c) SNが次のいずれかに含まれていてはならない。 

i) 

変換記述子のグループ記述子。 

622 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) 利用者定義型変換記述子。 

5) SRは,外部ルーチンでなければならない。 

6) SRは,置換メソッドであるSQL呼出しメソッドであってはならず,SRの置換メソッドの集合は,

空でなければならない。 

7) <変更ルーチン特性の並び>は,高々一つの<LANGUAGE句>,高々一つの<PARAMETER STYLE句

>,高々一つの<SQLデータアクセス指示>,高々一つの<ナル呼出し句>,高々一つの<戻り結果集合

特性>及び高々一つの<外部ルーチン名>を含まなければならない。 

8) <戻り結果集合特性>が指定されるならば,SRは,SQL呼出し手続でなければならない。 

9) <LANGUAGE句>が指定されるならば,次による。 

a) <LANGUAGE句>は,SQLを指定してはならない。 

b) <LANGUAGE句>がADA,C,COBOL,FORTRAN,M,PASCAL又はPLIのどれを指定するか

に依存して,それぞれ,表16“Adaのためのデータ型対応”,表17“Cのためのデータ型対応”,

表18“COBOLのためのデータ型対応”,表19“Fortranのためのデータ型対応”,表20“Mのた

めのデータ型対応”,表21“Pascalのためのデータ型対応”又は表22“PL/Iのためのデータ型対

応”を適用データ型対応表とする。適用データ型対応表の二つの列を“SQLデータ型 (SQL data 

type) ”の列,及び“ホストデータ型 (host data type) ”の列として参照する。 

c) SRの実効的SQLパラメタリスト項目中のどの<データ型>も,“ホストデータ型”の列中の対応す

る行が“なし”でない“SQLデータ型”の列中に記載されたデータ型を指定しなければならない。 

注記434 “実効的SQLパラメタリスト”は,“11.60 <SQL呼出しルーチン>”で定義している。 

アクセス規則 

1) 与えられた認可識別子は,SNの暗に想定されるか又は陽に指定される<スキーマ名>によって識別

されるスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) SRがメソッドでないならば,SRのルーチン記述子が次のとおりに修正される。 

a) <戻り結果集合特性>が指定されるならば,戻り結果集合の最大個数は,<戻り結果集合最大数>の

値とする。 

b) <LANGUAGE句>が指定されるならば,SQL呼出しルーチンの本体を書いている言語の名前は,

<LANGUAGE句>に含まれる<言語名>とする。 

c) <外部ルーチン名>が指定されるならば,ルーチン記述子の外部名は,<外部ルーチン名>とする。 

d) <PARAMETER STYLE句>が指定されるならば,ルーチン記述子は,パラメタ受渡し様式が

PARAMETER STYLE SQLか又はPARAMETER STYLE GENERALかを示す標識を含む。 

e) <SQLデータアクセス指示>が指定されるならば,ルーチン記述子は,SQL呼出しルーチンの<SQL

データアクセス指示>がREADS SQL DATAか,MODIFIES SQL DATAか,CONTAINS SQLか又は

NO SQLかを示す標識を含む。 

f) 

<ナル呼出し句>が指定されるならば,ルーチン記述子は,SQL呼出しルーチンがナル呼出し関数

かどうかを示す標識を含む。 

2) SRがメソッドならば,それに対応するメソッド指定の記述子をDMSとすると,DMSが次のとおり

に修正される。 

a) <LANGUAGE句>が指定されるならば,メソッド指定記述子は,<LANGUAGE句>に含まれる<言

語名>を含む。 

623 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) <PARAMETER STYLE句>が指定されるならば,メソッド指定記述子は,パラメタ受渡し様式が

PARAMETER STYLE SQLか又はPARAMETER STYLE GENERALかを示す標識を含む。 

c) <SQLデータアクセス指示>が指定されるならば,メソッド指定記述子は,SQL呼出しルーチンの

<SQLデータアクセス指示>がREADS SQL DATAか,MODIFIES SQL DATAか,CONTAINS SQL

か又はNO SQLかを示す標識を含む。 

d) <ナル呼出し句>が指定されるならば,メソッド指定記述子は,いずれかの引数がナル値のときに

メソッドを呼び出さない方がよいかどうかを示す標識を含む。 

3) SRがメソッドならば,SRのルーチン記述子が次のとおりに修正される。 

a) <外部ルーチン名>が指定されるならば,ルーチン記述子の外部名は,<外部ルーチン名>とする。 

b) <PARAMETER STYLE句>が指定されるならば,ルーチン記述子は,パラメタ受渡し様式が

PARAMETER STYLE SQLか又はPARAMETER STYLE GENERALかを示す標識を含む。 

4) SRのルーチン記述子に含まれる最終変更時刻印は,CURRENT̲TIMESTAMPの値とする。 

適合性規則 

1) 機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<ルーチン変更文>を含んではな

らない。 

11.62 

<ルーチン削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.25 <ルーチン削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“11.11 <ルーチン削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.10 <ルーチン削除文>”によって修正される。 

機能 

<ルーチン削除文> (<drop routine statement>) は,SQL呼出しルーチンを破壊する。 

形式 

<ルーチン削除文> ::= 

  DROP <特定ルーチン指示子> <削除動作> 

構文規則 

1) <特定ルーチン指示子>によって識別されるSQL呼出しルーチンをSRとし,SRの<特定名>をSN

とする。SNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

SRの記述子を含んでいなければならない。 

2) SRは,スキーマレベルルーチンでなければならない。 

3) SRは,どの利用者定義型にも依存していてはならない。 

注記435 利用者定義型に依存しているSQL呼出しルーチンの概念は,“4.28 SQL呼出しルーチン”

で定義している。 

4) RESTRICTが指定されるならば,次による。 

a) SRは,利用者定義型UDTの記述子に含まれる順序付け関数であってはならない。 

b) SRは,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>

又は<メソッド参照>の当該ルーチンであってはならない。 

i) 

ルーチン記述子のSQLルーチン本体。 

ii) ルーチン記述子のSQLパラメタの<パラメタ既定値>。 

iii) ビュー記述子の元の<問合せ式>。 

iv) 制約記述子の<探索条件>。 

624 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

v) 

04 トリガ記述子の被トリガ動作。 

c) SNは,次のいずれかに含まれていてはならない。 

i) 

変換記述子のグループ記述子。 

ii) 

09 利用者定義型変換記述子。 

注記436 CASCADEが指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE

文>の実行によって暗に削除される。 

5) SNに陽に含まれるか又は暗に含まれる<スキーマ名>によって識別されるスキーマを,<ルーチン削

除文>を含むスキーマとする。 

アクセス規則 

1) SNの<スキーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。与えられた

認可識別子は,Aを含まなければならない。 

一般規則 

1) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE EXECUTE ON SPECIFIC ROUTINE SN FROM A CASCADE 

2) 

09 変換記述子のグループ記述子にSNを含む記述子をもつ利用者定義型の<利用者定義型名>をDN

とする。そのグループ記述子の<グループ名>をGNとする。これ以上のアクセス規則の検査なしで,

次の<変換削除文>が実効的に実行される。 

DROP TRANSFORM GN FOR DN CASCADE 

3) SNを型変換関数として含む利用者定義型変換記述子をUDCDとする。UDCDに含まれる変換元デ

ータ型をSDTとする。UDCDに含まれる相手データ型をTDTとする。これ以上のアクセス規則の

検査なしで,次の<利用者定義型変換削除文>が実効的に実行される。 

DROP CAST ( DN AS TD ) CASCADE 

4) SRが,利用者定義型UDTの記述子に含まれる順序付け関数ならば,UDTを識別する<パス解決利

用者定義型名>をUDTNとする。これ以上のアクセス規則の検査なしで,次の<利用者定義順序付け

削除文>が実効的に実行される。 

DROP ORDERING FOR UDTN CASCADE 

5) SRの記述子が破壊される。 

適合性規則 

1) 機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>

を含む<ルーチン削除文>を含んではならない。 

2) 機能S024“拡張構造型”なしでは,適合するSQL言語は,メソッドを識別する<特定ルーチン指示

子>を含む<ルーチン削除文>を含んではならない。 

11.63 

<利用者定義型変換定義> 

この細分箇条は,ISO/IEC 9075-9の“11.12 <利用者定義型変換定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“12.9 <利用者定義型変換定義>”によって修正される。 

機能 

<利用者定義型変換定義> (<user-defined cast definition>) は,利用者定義型変換を定義する。 

形式 

625 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<利用者定義型変換定義> ::= 

  CREATE CAST <左括弧> <変換元データ型> AS <相手データ型> <右括弧> 

      WITH <型変換関数> 

      [ AS ASSIGNMENT ] 

<型変換関数> ::= 

  <特定ルーチン指示子> 

<変換元データ型> ::= 

  <データ型> 

<相手データ型> ::= 

  <データ型> 

構文規則 

1) 

09 <変換元データ型>をSDTとする。SDTによって識別されるデータ型を,変換元データ型 (source 

data type) と呼ぶ。 

2) <相手データ型>をTDTとする。TDTによって識別されるデータ型を,相手データ型 (target data 

type) と呼ぶ。 

3) SDT及びTDTのための利用者定義型変換が存在していてはならない。 

4) SDT又はTDTの少なくとも一つが,<スキーマ解決利用者定義型名>又は<参照型>を含まなければ

ならない。 

5) SDTが<スキーマ解決利用者定義型名>を含むならば,SDTによって識別される利用者定義型の記述

子を含むスキーマをSSDTとする。 

6) SDTが<参照型>を含むならば,SDTによって識別される参照型の被参照型の記述子を含むスキーマ

をSSDTとする。 

7) TDTが<スキーマ解決利用者定義型名>を含むならば,TDTによって識別される利用者定義型の記

述子を含むスキーマをSTDTとする。 

8) TDTが<参照型>を含むならば,TDTによって識別される参照型の被参照型の記述子を含むスキー

マをSTDTとする。 

9) SDT及びTDTの両方が<スキーマ解決利用者定義型名>又は<参照型>を含むならば,SSDTを所有

する<認可識別子>とSTDTを所有する<認可識別子>とが等価でなければならない。 

10) <型変換関数>によって識別されるSQL呼出しルーチンをFとする。Fを,変換元データ型SDT及

び相手データ型TDTのための型変換関数 (cast function) と呼ぶ。 

a) Fは,ただ一つのSQLパラメタをもたなければならず,それの宣言型は,SDTでなければならな

い。 

b) Fの結果データ型は,TDTでなければならない。 

c) SSDT又はSTDT(SDT及びTDTの両方が<スキーマ解決利用者定義型名>ならば,両方)を所有

する<認可識別子>は,FのSQL呼出しルーチン記述子を含むスキーマを所有していなければなら

ない。 

d) Fは,決定的でなければならない。 

e) Fは,SQLデータを潜在的に修正してはならない。 

f) Fは,SQLデータを潜在的に読んではならない。 

アクセス規則 

626 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 与えられた認可識別子は,Fのルーチン記述子を含むスキーマを所有する<認可識別子>を含まなけ

ればならない。 

2) SDTが<スキーマ解決利用者定義型名>又は<参照型>を含むならば,与えられた認可識別子は,SSDT

を所有する<認可識別子>を含まなければならない。 

3) TDTが<スキーマ解決利用者定義型名>又は<参照型>を含むならば,与えられた認可識別子は,STDT

を所有する<認可識別子>を含まなければならない。 

一般規則 

1) 利用者定義型変換を記述する利用者定義型変換記述子CFDが作成される。CFDは,変換元データ

型の名前,相手データ型の名前,型変換関数の特定名,及びAS ASSIGNMENTが指定されることと

同値である,型変換関数が暗に呼出し可能であることを示す標識を含む。 

適合性規則 

1) 機能S211“利用者定義の型変換関数”なしでは,適合するSQL言語は,<利用者定義型変換定義>

を含んではならない。 

11.64 

<利用者定義型変換削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.26 <利用者定義型変換削除文>”によって修正される。 

機能 

<利用者定義型変換削除文> (<drop user-defined cast statement>) は,利用者定義型変換を破壊する。 

形式 

<利用者定義型変換削除文> ::= 

  DROP CAST <左括弧> <変換元データ型> AS <相手データ型> <右括弧> 

      <削除動作> 

構文規則 

1) <変換元データ型>をSDTとし,<相手データ型>をTDTとする。 

2) SDTを変換元データ型として,TDTを相手データ型として含む利用者定義型変換記述子をもつ利用

者定義型変換を,CFとする。 

3) CFの利用者定義型変換記述子に含まれる型変換関数Fの特定名をSNとする。 

4) SNの<スキーマ名>によって識別されるスキーマは,Fの記述子を含んでいなければならない。 

5) 次の全ての条件を満たす<CAST指定>をCSとする。 

a) CSの<値式>が宣言型Pをもつ。 

b) CSの<CAST相手>が,TDTか,又は宣言型TDTをもつ定義域のいずれかである。 

c) SDTの型指示子が,Pの型優先順序リスト中にある。 

d) Pの型優先順序リスト中でSDTに先行する型指示子をもつ他のどのデータ型Qに対しても,Qを

変換元データ型として,TDTを相手データ型として含む利用者定義型変換記述子をもつ利用者定

義型変換CFqが存在しない。 

6) Fに依存している<SQL手続文>をPSとする。 

7) RESTRICTが指定されるならば,CSもPSも,次のいずれかに含まれていてはならない。 

a) ルーチン記述子のSQLルーチン本体。 

b) ビュー記述子の元の<問合せ式>。 

c) 制約記述子の<探索条件>。 

d) 

04 トリガ記述子の被トリガ動作。 

627 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記437 CASCADEが指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE

文>の実行によって暗に削除される。 

アクセス規則 

1) 与えられた認可識別子は,SNの暗に想定されるか又は陽に指定される<スキーマ名>によって識別

されるスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) SQLルーチン本体にCS又はPSを含むSQL呼出しルーチンをRとする。Rの特定名をSNとする。

これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

2) 元の<問合せ式>にCS又はPSを含むビューをVとする。Vの<表名>をVNとする。これ以上のア

クセス規則の検査なしで,次の<ビュー削除文>が実効的に実行される。 

DROP VIEW VN CASCADE 

3) 表記述子に含まれるいずれかの制約記述子の<探索条件>にCS又はPSを含む表をTとする。Tの<

表名>をTNとする。これ以上のアクセス規則の検査なしで,次の<表削除文>が実効的に実行され

る。 

DROP TABLE TN CASCADE 

4) <探索条件>にCS又はPSを含む表明をAとする。Aの<制約名>をANとする。これ以上のアクセ

ス規則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION AN CASCADE 

5) いずれかの制約記述子の<探索条件>にCS又はPSを含む定義域をDとする。Dの<定義域名>をDN

とする。これ以上のアクセス規則の検査なしで,次の<定義域削除文>が実効的に実行される。 

DROP DOMAIN DN CASCADE 

6) CS又はPSを含む被トリガ動作を含むトリガ記述子をもつトリガをTとする。Tの<トリガ名>を

TNとする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行される。 

DROP TRIGGER TN 

7) CFの記述子が破壊される。 

適合性規則 

1) 機能S211“利用者定義の型変換関数”なしでは,適合するSQL言語は,<利用者定義型変換削除文

>を含んではならない。 

11.65 

<利用者定義順序付け定義> 

この細分箇条は,ISO/IEC 9075-9の“11.13 <利用者定義順序付け定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.11 <利用者定義順序付け定義>”によって修正される。 

機能 

<利用者定義順序付け定義> (<user-defined ordering definition>) は,利用者定義型のための利用者定義順序

付けを定義する。 

形式 

<利用者定義順序付け定義> ::= 

  CREATE ORDERING FOR <スキーマ解決利用者定義型名> <順序付け形式> 

<順序付け形式> ::= 

628 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <等順序付け形式> 

| <完全順序付け形式> 

<等順序付け形式> ::= 

  EQUALS ONLY BY <順序付けカテゴリ> 

<完全順序付け形式> ::= 

  ORDER FULL BY <順序付けカテゴリ> 

13 <順序付けカテゴリ> ::= 

  <相対カテゴリ> 

| <写像カテゴリ> 

| <状態カテゴリ> 

<相対カテゴリ> ::= 

  RELATIVE WITH <相対関数指定> 

<写像カテゴリ> ::= 

  MAP WITH <写像関数指定> 

<状態カテゴリ> ::= 

  STATE [ <特定名> ] 

<相対関数指定> ::= 

  <特定ルーチン指示子> 

<写像関数指定> ::= 

  <特定ルーチン指示子> 

構文規則 

1) <スキーマ解決利用者定義型名>をUDTNとする。UDTNによって識別される利用者定義型をUDT

とする。 

2) UDTの記述子は,NONEを指定する順序付け形式を含まなければならない。 

3) UDTが最上位型でないならば,次による。 

場合: 

a) <等順序付け形式>が指定されるならば,UDTのどの直接上位型の比較形式も,EQUALSでなけれ

ばならない。 

b) そうでなければ,UDTのどの直接上位型の比較形式も,FULLでなければならない。 

4) 

13 <相対カテゴリ>又は<状態カテゴリ>が指定されるならば,UDTは,最上位型でなければならな

い。 

5) <写像カテゴリ>が指定され,かつ,UDTが最上位型でないならば,UDTのどの直接上位型の比較

カテゴリも,MAPでなければならない。 

注記438 同じ下位型族中の二つの利用者定義型の比較カテゴリは,同じでなければならない。 

6) 

13 場合: 

a) <状態カテゴリ>が指定されるならば,次による。 

i) 

UDTは,個別型であってはならない。 

ii) EQUALS ONLYを指定しなければならない。 

iii) 

09 UDTの各属性の宣言型は,UDT-NC順序付けであってはならない。 

iv) 場合: 

629 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <特定名>が指定されるならば,<特定名>をSNとする。SNが<スキーマ名>を含むならば,そ

の<スキーマ名>は,UDTNの<スキーマ名>と等価でなければならない。 

2) そうでなければ,UDTNの<スキーマ名> Sと等価な<スキーマ名>をもつ処理系依存の<特定

名>をSNとする。この処理系依存の<特定名>は,Sによって識別されるスキーマ中の他のど

のルーチン記述子の<特定名>とも等価であってはならない。 

b) 

13 そうでなければ,次による。 

i) 

<特定ルーチン指示子> SRDによって識別されるSQL呼出しルーチンをFとする。 

ii) Fは,決定的でなければならない。 

iii) Fは,SQLデータを潜在的に修正してはならない。 

7) <相対関数指定>が指定されるならば,次による。 

a) Fは,宣言型がUDTであるただ二つのSQLパラメタをもたなければならない。 

b) Fは,SQL呼出し通常関数でなければならない。 

c) Fの結果データ型は,INTEGERでなければならない。 

注記439 “8.2 <比較述語>”の構文規則及び一般規則は,二つの引数が等しいとみなされるなら

ば,Fの結果は,0で,第1引数が第2引数未満であるとみなされるならば,-1で,か

つ,第1引数が第2引数より大きいとみなされるならば,1であることを想定している。 

8) <写像関数指定>が指定されるならば,次による。 

a) Fは,宣言型がUDTであるただ一つのSQLパラメタをもたなければならない。 

b) Fの結果データ型は,既定義データ型でなければならない。 

c) Fの結果データ型は,等値性演算のオペランドとする。“9.11 等値性演算”の構文規則及び適合性

規則を適用する。 

d) FULLが指定されるならば,Fの結果データ型は,順序付け操作のオペランドとする。“9.14 順序

付け操作”の構文規則及び適合性規則を適用する。 

アクセス規則 

1) 与えられた認可識別子は,UDTの記述子を含むスキーマ及びFのルーチン記述子を含むスキーマを

所有する<認可識別子>を含まなければならない。 

一般規則 

1) <状態カテゴリ>が指定されるならば,次による。 

a) 利用者定義型の表現の構成要素をC1,...,Cnとする。 

b) UDTの記述子を含むスキーマの<スキーマ名>をSNUDTとする。 

c) 次の<SQL呼出しルーチン>が実効的に実行される。 

CREATE FUNCTION SNUDT.EQUALS ( UDT1 UDTN, UDT2 UDTN ) 

    RETURNS BOOLEAN 

    SPECIFIC SN 

    DETERMINISTIC 

    CONTAINS SQL 

    STATIC DISPATCH 

    RETURN 

      ( TRUE AND 

        UDT1.SPECIFICTYPE = UDT2.SPECIFICTYPE AND 

630 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

        UDT1.C1 = UDT2.C1 AND 

        ... 

        UDT1.Cn = UDT2.Cn ) 

2) 場合: 

a) EQUALSが指定されるならば,UDTの利用者定義型記述子中の順序付け形式には,EQUALSが

設定される。 

b) そうでなければ,UDTの利用者定義型記述子中の順序付け形式には,FULLが設定される。 

3) 場合: 

a) RELATIVEが指定されるならば,UDTの利用者定義型記述子中の順序付けカテゴリには,

RELATIVEが設定される。 

b) MAPが指定されるならば,UDTの利用者定義型記述子中の順序付けカテゴリには,MAPが設定

される。 

c) 

13 そうでなければ,UDTの利用者定義型記述子中の順序付けカテゴリには,STATEが設定され

る。 

4) UDTの記述子中の順序付け関数を識別する<特定ルーチン指示子>には,順序付けカテゴリに依存し

て,SRDが設定される。 

適合性規則 

1) 機能S251“利用者定義順序付け”なしでは,適合するSQL言語は,<利用者定義順序付け定義>を

含んではならない。 

注記440 MAPが指定されるならば,“9.11 等値性演算”の適合性規則を適用する。ORDER FULL 

BY MAPが指定されるならば,“9.14 順序付け操作”の適合性規則も適用する。 

11.66 

<利用者定義順序付け削除文> 

この細分箇条は,ISO/IEC 9075-4の“9.20 <利用者定義順序付け削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“9.12 <利用者定義順序付け削除文>”によって修正される。 

機能 

<利用者定義順序付け削除文> (<drop user-defined ordering statement>) は,利用者定義順序付けメソッドを

破壊する。 

形式 

<利用者定義順序付け削除文> ::= 

  DROP ORDERING FOR <スキーマ解決利用者定義型名> <削除動作> 

構文規則 

1) <スキーマ解決利用者定義型名>をUDTNとする。UDTNによって識別される利用者定義型をUDT

とする。 

2) UDTの記述子は,EQUALS又はFULLを指定する順序付け形式を含んでいなければならない。 

3) UDTの順序付け関数をOFとする。 

4) RESTRICTが指定されるならば,次のどれも,比較型がUDTである利用者定義型T1を宣言型とし

てもつ等値性演算,グループ化操作又は順序付け操作のオペランドを含んではならない。 

a) ルーチン記述子のSQLルーチン本体。 

b) ビュー記述子の元の<問合せ式>。 

c) 制約記述子の<探索条件>。 

631 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) 

04 トリガ記述子の被トリガ動作。 

注記441 CASCADEが指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE

文>の実行によって暗に削除される。 

アクセス規則 

1) 与えられた認可識別子は,UDTNの暗に想定されるか又は陽に指定される<スキーマ名>によって識

別されるスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) 

04 比較型がUDTである利用者定義型T1を宣言型としてもつ等値性演算,グループ化操作又は順序

付け操作のオペランドをSQLルーチン本体が含むSQL呼出しルーチンをRとする。Rの<特定名>

をSNとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行され

る。 

DROP SPECIFIC ROUTINE SN CASCADE 

2) 比較型がUDTである利用者定義型T1を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを元の<問合せ式>が含むビューをVとする。Vの<表名>をVNとする。これ以

上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的に実行される。 

DROP VIEW VN CASCADE 

3) 比較型がUDTである利用者定義型T1を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを<探索条件>が含む制約Cの制約記述子を表記述子が含む表をTとする。Tの

<表名>をTNとする。Cの<制約名>をTCNとする。これ以上のアクセス規則の検査なしで,次の<

表変更文>が実効的に実行される。 

ALTER TABLE TN DROP CONSTRAINT TCN CASCADE 

4) 比較型がUDTである利用者定義型T1を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを<探索条件>が含む表明をAとする。Aの<制約名>をANとする。これ以上の

アクセス規則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION AN CASCADE 

5) 比較型がUDTである利用者定義型T1を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを含む制約記述子を記述子が含む定義域をDとする。Dの<定義域名>をDNと

する。これ以上のアクセス規則の検査なしで,次の<定義域削除文>が実効的に実行される。 

DROP DOMAIN DN CASCADE 

6) 

04 比較型がUDTである利用者定義型T1を宣言型としてもつ等値性演算,グループ化操作又は順序

付け操作のオペランドを被トリガ動作が含むトリガをTとする。Tの<トリガ名>をTNとする。こ

れ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行される。 

DROP TRIGGER TN 

7) UDTの記述子中で,順序付け形式には,NONEが設定され,順序付けカテゴリには,STATEが設定

される。どの順序付け関数も,UDTの記述子に含まれない。 

適合性規則 

1) 機能S251“利用者定義順序付け”なしでは,適合するSQL言語は,<利用者定義順序付け削除文>

を含んではならない。 

11.67 

<変換定義> 

632 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

機能 

<変換定義> (<transform definition>) は,利用者定義型のための一つ以上の変換関数を定義する。 

形式 

<変換定義> ::= 

  CREATE { TRANSFORM | TRANSFORMS } FOR 

      <スキーマ解決利用者定義型名> <変換グループ>... 

<変換グループ> ::= 

  <グループ名> <左括弧> <変換要素リスト> <右括弧> 

<グループ名> ::= 

  <識別子> 

<変換要素リスト> ::= 

  <変換要素> [ <コンマ> <変換要素> ] 

<変換要素> ::= 

  <TO SQL> 

| <FROM SQL> 

<TO SQL> ::= 

  TO SQL WITH <TO SQL関数> 

<FROM SQL> ::= 

  FROM SQL WITH <FROM SQL関数> 

<TO SQL関数> ::= 

  <特定ルーチン指示子> 

<FROM SQL関数> ::= 

  <特定ルーチン指示子> 

構文規則 

1) <変換定義>をTDとする。TDに直に含まれる<スキーマ解決利用者定義型名>をDTNとする。DTN

によって識別されるデータ型をDTとする。DTの記述子を含むスキーマをSDTとする。DTのデー

タ型記述子に含まれる変換記述子をTRDとする。 

2) TDに直に含まれるどの二つの<変換グループ>も,同じ<グループ名>をもってはならない。 

3) <TO SQL関数>によって識別されるSQL呼出し関数を,TO-SQL関数 (to-sql function) と呼ぶ。

<FROM SQL関数>によって識別されるSQL呼出し関数を,FROM-SQL関数 (from-sql function) と

呼ぶ。 

4) TDに直に含まれる<変換グループ>の個数をnとする。1からnまでの範囲のiに対して,次によ

る。 

a) TDに直に含まれるi番目の<変換グループ>をTGiとする。TGiに含まれる<グループ名>をGNi

とする。 

b) TGiに直に含まれる<TO SQL>及び<FROM SQL>のそれぞれは,<変換要素リスト>に高々1回含ま

れなければならない。 

c) <TO SQL関数>及び<FROM SQL関数>によって識別されるSQL呼出しルーチンは,決定的で,か

つ,SQLデータを潜在的に修正しないSQL呼出し関数でなければならない。 

d) TRDは,GNiと等価なグループ名を含む変換グループ記述子GDを含んでいてはならない。 

633 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) DTの真上位型又は真下位型のいずれかであるデータ型DTTjのデータ型記述子に含まれる変換記

述子が,GNiと等価なグループ名を含むグループ記述子GDTj,kを含むような全てのDTTjを含む

集合をSDTTとする。SDTTは,空でなければならない。 

f) 

<TO SQL>が指定されるならば,<TO SQL関数>によって識別されるSQL呼出し関数をTSFiとす

る。 

i) 

場合: 

1) TSFiがSQL呼出しメソッドならば,TSFiは,1番目のSQLパラメタの宣言型がDTで,か

つ,2番目のSQLパラメタの宣言型が既定義データ型であるような,ただ二つのSQLパラメ

タをもたなければならない。TSFiの結果データ型は,DTでなければならない。 

2) そうでなければ,TSFiは,宣言型が既定義データ型であるただ一つのSQLパラメタをもた

なければならない。TSFiの結果データ型は,DTでなければならない。 

ii) DTが構造型で,かつ,TSFiがSQL呼出しメソッドならば,TSFiは,型保持関数でなければな

らない。 

g) <FROM SQL>が指定されるならば,<FROM SQL関数>によって識別されるSQL呼出し関数を

FSFiとする。FSFiは,宣言型がDTであるただ一つのSQLパラメタをもたなければならない。

FSFiの結果データ型は,既定義データ型でなければならない。 

h) <TO SQL>及び<FROM SQL>の両方が指定されるならば,次による。 

場合: 

i) 

TSFiがSQL呼出しメソッドならば,FSFiの結果データ型と,TSFiの2番目のSQLパラメタ

のデータ型とが,互換でなければならない。 

ii) そうでなければ,FSFiの結果データ型と,TSFiの1番目のSQLパラメタのデータ型とが,互

換でなければならない。 

アクセス規則 

1) 1からnまでの範囲のiに対して,与えられた認可識別子は,SDTと,TSFiがあるならば,TSFiの

ルーチン記述子,及びFSFiがあるならば,FSFiのルーチン記述子を含むスキーマとを所有する<

認可識別子>を含まなければならない。 

一般規則 

1) <グループ名>は,変換グループを識別するグループ名を指定する。 

2) どのTGi,1 ≤ i ≤ nに対しても,次による。 

a) TGiに直に含まれる<グループ名>を含む新しいグループ記述子GDiが作成される。GDiは,TRD

に含まれる変換グループ記述子のリストに含められる。 

b) <TO SQL>が指定されるならば,GDi中のTO-SQL関数の特定名には,TSFiが設定される。 

c) <FROM SQL>が指定されるならば,GDi中のFROM-SQL関数の特定名には,FSFiが設定される。 

適合性規則 

1) 機能S241“変換関数”なしでは,適合するSQL言語は,<変換定義>を含んではならない。 

11.68 

<変換変更文> 

機能 

<変換変更文> (<alter transform statement>) は,一つ以上の変換グループの定義を変更する。 

形式 

<変換変更文> ::= 

634 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  ALTER { TRANSFORM | TRANSFORMS } 

      FOR <スキーマ解決利用者定義型名> <変更グループ>... 

<変更グループ> ::= 

  <グループ名> <左括弧> <変更変換動作リスト> <右括弧> 

<変更変換動作リスト> ::= 

  <変更変換動作> [ {<コンマ> <変更変換動作> }... ] 

<変更変換動作> ::= 

  <変換要素リスト追加> 

| <変換要素リスト削除> 

構文規則 

1) <スキーマ解決利用者定義型名>をDNとし,DNによって識別されるデータ型をDとする。DNの

陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,Dのデータ型

記述子を含んでいなければならない。そのスキーマをSとする。Dのデータ型記述子に含まれる変

換記述子をTDとする。 

2) DNの有効範囲は,<変換変更文> AT全体とする。 

3) ATに含まれる<グループ名>の個数をnとする。1からnまでの範囲のiに対して,次による。 

a) ATに含まれるi番目の<グループ名>をGNiとする。 

b) 各GNiに対して,GNiと等価なグループ名をもつTDに含まれる変換グループ記述子が存在しな

ければならない。この変換グループ記述子をGDiとする。 

アクセス規則 

1) 与えられた認可識別子は,Sを所有する<認可識別子>を含まなければならない。 

一般規則 

1) 1からnまでの範囲のiに対して,GDiが<変更変換動作リスト>によって指定されるとおりに修正

される。 

適合性規則 

1) 機能S242“変換変更文”なしでは,適合するSQL言語は,<変換変更文>を含んではならない。 

11.69 

<変換要素リスト追加> 

機能 

<変換要素リスト追加> (<add transform element list>) は,既存の変換グループに変換要素(<TO SQL>及

び/又は<FROM SQL>)を追加する。 

形式 

<変換要素リスト追加> ::= 

  ADD <左括弧> <変換要素リスト> <右括弧> 

構文規則 

1) <変換要素リスト追加>をADとする。 

2) <変換要素リスト追加>を含む<変換変更文>に直に含まれる<スキーマ解決利用者定義型名>をDNと

する。DNによって識別される利用者定義型をDとする。Dのデータ型記述子に含まれる変換記述

子をTDとする。 

3) <変換要素リスト追加>を含む<変更グループ>に直に含まれる<グループ名>と等価なグループ名を

もつTDに含まれる変換グループ記述子をGDとする。 

635 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) (ADに直に含まれる)<TO SQL>及び<FROM SQL>のそれぞれは,<変換要素リスト>に高々1回含

まれなければならない。 

5) GDがTO-SQL関数の特定名を含むならば,ADは,<TO SQL>を含んではならない。 

6) GDがFROM-SQL関数の特定名を含むならば,ADは,<FROM SQL>を含んではならない。 

7) <TO SQL関数>又は<FROM SQL関数>のいずれかによって識別されるSQL呼出しルーチンは,決

定的で,かつ,SQLデータを潜在的に修正しないSQL呼出し関数でなければならない。 

8) <TO SQL>が指定されるならば,<TO SQL関数>によって識別されるSQL呼出し関数をTSFとする。 

a) 場合: 

i) 

TSFがSQL呼出しメソッドならば,TSFは,1番目のSQLパラメタの宣言型がDで,かつ,

2番目のSQLパラメタの宣言型が既定義データ型であるような,ただ二つのSQLパラメタを

もたなければならない。TSFの結果データ型は,Dでなければならない。 

ii) そうでなければ,TSFは,宣言型が既定義データ型であるただ一つのSQLパラメタをもたなけ

ればならない。TSFの結果データ型は,Dでなければならない。 

b) Dが構造型ならば,TSFは,型保持関数でなければならない。 

c) GDがFROM-SQL関数の特定名を含むならば,この特定名によって識別されるSQL呼出し関数

をFSとする。 

場合: 

i) 

TSFがSQL呼出しメソッドならば,FSの結果データ型と,TSFの2番目のSQLパラメタのデ

ータ型とが,互換でなければならない。 

ii) そうでなければ,FSの結果データ型と,TSFの1番目のSQLパラメタのデータ型とが,互換

でなければならない。 

9) <FROM SQL>が指定されるならば,<FROM SQL関数>によって識別されるSQL呼出し関数をFSF

とする。 

a) FSFは,宣言型がDであるただ一つのSQLパラメタをもたなければならない。FSFの結果デー

タ型は,既定義データ型でなければならない。 

b) GDがTO-SQL関数の特定名を含むならば,この特定名によって識別されるSQL呼出しルーチン

をTSとする。 

場合: 

i) 

TSがSQL呼出しメソッドならば,FSFの結果データ型と,TSの2番目のSQLパラメタのデ

ータ型とが,互換でなければならない。 

ii) そうでなければ,FSFの結果データ型と,TSの1番目のSQLパラメタのデータ型とが,互換

でなければならない。 

アクセス規則 

1) 与えられた認可識別子は,TSFがあるならば,TSFのルーチン記述子,及びFSFがあるならば,

FSFのルーチン記述子を含むスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) <TO SQL>が指定されるならば,GD中のTO-SQL関数の特定名には,TSFが設定される。 

2) <FROM SQL>が指定されるならば,GD中のFROM-SQL関数の特定名には,FSFが設定される。 

適合性規則 

なし。 

636 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11.70 

<変換要素リスト削除> 

機能 

<変換要素リスト削除> (<drop transform element list>) は,変換グループから変換要素(<TO SQL>及び/

又は<FROM SQL>)を取り除く。 

形式 

<変換要素リスト削除> ::= 

  DROP <左括弧> <変換種別> 

      [ <コンマ> <変換種別> ] <削除動作> <右括弧> 

<変換種別> ::= 

  TO SQL 

| FROM SQL 

構文規則 

1) <変換要素リスト削除>を含む<変換変更文>に直に含まれる<スキーマ解決利用者定義型名>をDNと

する。DNによって識別される利用者定義型をDとする。Dのデータ記述子に含まれる変換記述子

をTDとする。 

2) <変換要素リスト削除>を含む<変更グループ>に直に含まれる<グループ名>と等価なグループ名を

もつTDに含まれる変換グループ記述子をGDとする。 

3) TO SQL及びFROM SQLのそれぞれは,<変換要素リスト削除>中に高々1回だけ指定されなければ

ならない。 

4) TO SQLが指定されるならば,GDは,TO-SQL関数の特定名を含んでいなければならない。この関

数をTSFとする。 

5) FROM SQLが指定されるならば,GDは,FROM-SQL関数の特定名を含んでいなければならない。

この関数をFSFとする。 

6) RESTRICTが指定されるならば,次による。 

a) TO SQLが指定されるならば,関連付けられたTO-SQL関数がTSFであるSQLパラメタをもつ外

部ルーチンが存在してはならないし,結果に関連付けられたTO-SQL関数がTSFである外部関数

も存在してはならない。 

b) FROM SQLが指定されるならば,関連付けられたFROM-SQL関数がFSFであるSQLパラメタ

をもつ外部ルーチンが存在してはならない。 

アクセス規則 

なし。 

一般規則 

1) FROM SQLが指定されるならば,次による。 

a) 関連付けられたFROM-SQL関数がFSFであるSQLパラメタをもつ外部ルーチンの<特定名>を

FSNとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行され

る。 

DROP SPECIFIC ROUTINE FSN CASCADE 

b) FROM-SQL関数の特定名がGDから取り除かれる。 

2) TO SQLが指定されるならば,次による。 

a) 関連付けられたTO-SQL関数がTSFであるSQLパラメタをもつ外部ルーチンの<特定名>をTSN

637 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE TSN CASCADE 

b) 結果に関連付けられたTO-SQL関数がTSFである外部関数の<特定名>をRSNとする。これ以上

のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE RSN CASCADE 

c) TO-SQL関数の特定名がGDから取り除かれる。 

適合性規則 

なし。 

11.71 

<変換削除文> 

機能 

<変換削除文> (<drop transform statement>) は,変換に関連付けられた一つ以上の変換関数を取り除く。 

形式 

<変換削除文> ::= 

  DROP { TRANSFORM | TRANSFORMS } <削除すべき変換> 

      FOR <スキーマ解決利用者定義型名> <削除動作> 

<削除すべき変換> ::= 

  ALL 

| <変換グループ要素> 

<変換グループ要素> ::= 

  <グループ名> 

構文規則 

1) <スキーマ解決利用者定義型名>によって識別されるデータ型をDTとする。DTの記述子を含むス

キーマをSDTとする。DTのデータ型記述子に含まれる変換記述子をTRDとする。TRD中の変換

グループ記述子の個数をnとする。 

2) <変換グループ要素>が指定されるならば,TRDは,<変換グループ要素>に直に含まれる<グループ

名>と等価なグループ名を含む変換グループ記述子GDを含んでいなければならない。 

3) RESTRCITが指定されるならば,次による。 

場合: 

a) ALLが指定されるならば,1からnまでの範囲のiに対して,次による。 

i) 

TRDに含まれるi番目の変換グループ記述子をGDiとする。 

ii) GDiがFROM-SQL関数FSFiの特定名を含むならば,関連付けられたFROM-SQL関数がFSFi

であるSQLパラメタをもつ外部ルーチンが存在してはならない。 

iii) GDiがTO-SQL関数TSFiの特定名を含むならば,関連付けられたTO-SQL関数がTSFiである

SQLパラメタをもつ外部ルーチンが存在してはならないし,結果に関連付けられたTO-SQL関

数がTSFiである外部関数も存在してはならない。 

b) そうでなければ,次による。 

i) 

GDがFROM-SQL関数FSFの特定名を含むならば,関連付けられたFROM-SQL関数がFSFで

あるSQLパラメタをもつ外部ルーチンが存在してはならない。 

ii) GDがTO-SQL関数TSFの特定名を含むならば,関連付けられたTO-SQL関数がTSFである

SQLパラメタをもつ外部ルーチンが存在してはならないし,結果に関連付けられたTO-SQL関

638 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

数がTSFである関数も存在してはならない。 

アクセス規則 

1) 与えられた認可識別子は,SDTを所有する<認可識別子>を含まなければならない。 

一般規則 

1) 場合: 

a) ALLが指定されるならば,1からnまでの範囲のiに対して,次による。 

i) 

TRDに含まれるi番目の変換グループ記述子をGDiとする。 

ii) GDiがFROM-SQL関数FSFiの特定名を含むならば,関連付けられたFROM-SQL関数がFSFi

であるSQLパラメタをもつ外部ルーチンの<特定名>をFSNとする。これ以上のアクセス規則

の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE FSN CASCADE 

iii) GDiがTO-SQL関数TSFiの特定名を含むならば,次による。 

1) 関連付けられたTO-SQL関数がTSFiであるSQLパラメタをもつ外部ルーチンの<特定名>を

TSNとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行

される。 

DROP SPECIFIC ROUTINE TSN CASCADE 

2) 結果に関連付けられたTO-SQL関数がTSFiである外部関数の<特定名>をRSNとする。これ

以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE RSN CASCADE 

iv) GDiがTRDから取り除かれる。 

b) そうでなければ,次による。 

i) 

GDがFROM-SQL関数FSFの特定名を含むならば,関連付けられたFROM-SQL関数がFSFで

あるSQLパラメタをもつ外部ルーチンの<特定名>をFSNとする。これ以上のアクセス規則の

検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE FSN CASCADE 

ii) GDがTO-SQL関数TSFの特定名を含むならば,次による。 

1) 関連付けられたTO-SQL関数がTSFであるSQLパラメタをもつ外部ルーチンの<特定名>を

TSNとする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行

される。 

DROP SPECIFIC ROUTINE TSN CASCADE 

2) 結果に関連付けられたTO-SQL関数がTSFである外部関数の<特定名>をRSNとする。これ

以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE RSN CASCADE 

iii) GDがTRDから取り除かれる。 

適合性規則 

1) 機能S241“変換関数”なしでは,適合するSQL言語は,<変換削除文>を含んではならない。 

11.72 

<順序数生成子定義> 

機能 

<順序数生成子定義> (<sequence generator definition>) は,外部順序数生成子を定義する。 

形式 

639 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<順序数生成子定義> ::= 

  CREATE SEQUENCE <順序数生成子名> [ <順序数生成子選択肢の並び> ] 

<順序数生成子選択肢の並び> ::= 

  <順序数生成子選択肢> ... 

<順序数生成子選択肢> ::= 

  <順序数生成子データ型選択肢> 

| <共通順序数生成子選択肢の並び> 

<共通順序数生成子選択肢の並び> ::= 

  <共通順序数生成子選択肢> ... 

<共通順序数生成子選択肢> ::= 

  <順序数生成子START WITH選択肢> 

| <基本順序数生成子選択肢> 

<基本順序数生成子選択肢> ::= 

  <順序数生成子INCREMENT BY選択肢> 

| <順序数生成子MAXVALUE選択肢> 

| <順序数生成子MINVALUE選択肢> 

| <順序数生成子CYCLE選択肢> 

<順序数生成子データ型選択肢> ::= 

  AS <データ型> 

<順序数生成子START WITH選択肢> ::= 

  START WITH <順序数生成子開始値> 

<順序数生成子開始値> ::= 

  <符号付き数定数> 

<順序数生成子INCREMENT BY選択肢> ::= 

  INCREMENT BY <順序数生成子増分> 

<順序数生成子増分> ::= 

  <符号付き数定数> 

<順序数生成子MAXVALUE選択肢> ::= 

  MAXVALUE <順序数生成子最大値> 

| NO MAXVALUE 

<順序数生成子最大値> ::= 

  <符号付き数定数> 

<順序数生成子MINVALUE選択肢> ::= 

  MINVALUE <順序数生成子最小値> 

| NO MINVALUE 

<順序数生成子最小値> ::= 

  <符号付き数定数> 

<順序数生成子CYCLE選択肢> ::= 

  CYCLE 

| NO CYCLE 

640 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

1) <順序数生成子定義> SEQDによって定義される順序数生成子をSEQとする。 

2) SEQDが<スキーマ定義> SDに含まれ,かつ,<順序数生成子名> SQNが<スキーマ名>を含むなら

ば,その<スキーマ名>は,SDの暗に想定されるか又は陽に指定される<スキーマ名>と等価でなけ

ればならない。 

3) SQNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,順序数

生成子名がSQNと等価である順序数生成子記述子を含んでいてはならない。 

4) SEQDが<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか又は暗に想定され

る<認可識別子>をAとする。そうでなければ,SQNの暗に想定されるか又は陽に指定される<スキ

ーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。 

5) <順序数生成子データ型選択肢>,<順序数生成子START WITH選択肢>,<順序数生成子INCREMENT 

BY選択肢>,<順序数生成子MAXVALUE選択肢>,<順序数生成子MINVALUE選択肢>及び<順序

数生成子CYCLE選択肢>のそれぞれを高々1回指定しなければならない。 

6) <順序数生成子データ型選択肢>が指定されるならば,<データ型>は,位取り0の真数型DTでなけ

ればならない。そうでなければ,位取り0の処理系定義の真数型をDTとする。 

7) <共通順序数生成子選択肢の並び>をOPTIONSとして,DTをDATA TYPEとして,“9.26 順序数生

成子の作成”の構文規則を適用する。 

アクセス規則 

1) <順序数生成子定義>が<SQLクライアントモジュール定義>に含まれるならば,与えられた認可識別

子は,Aを含まなければならない。 

一般規則 

1) <共通順序数生成子選択肢の並び>をOPTIONSとして,DTをDATA TYPEとして,“9.26 順序数生

成子の作成”の一般規則を適用する。これらの一般規則の適用によって戻されるSEQGENDESCを

順序数生成子記述子SEQDSとする。SEQDSに含まれる順序数生成子名には,SQNが設定される。 

2) Aに対してSEQに関するUSAGE権限を定義する権限記述子が作成される。この権限は,付与可能

とする。この権限記述子の権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。 

適合性規則 

1) 機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子定義>を含んでは

ならない。 

11.73 

<順序数生成子変更文> 

機能 

<順序数生成子変更文> (<alter sequence generator statement>) は,外部順序数生成子の定義を変更する。 

形式 

<順序数生成子変更文> ::= 

  ALTER SEQUENCE <順序数生成子名> <順序数生成子変更選択肢の並び> 

<順序数生成子変更選択肢の並び> ::= 

  <順序数生成子変更選択肢>... 

<順序数生成子変更選択肢> ::= 

  <順序数生成子変更RESTART選択肢> 

| <基本順序数生成子選択肢> 

641 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<順序数生成子変更RESTART選択肢> ::= 

  RESTART [ WITH <順序数生成子再開始値> ] 

<順序数生成子再開始値> ::= 

  <符号付き数定数> 

構文規則 

1) <順序数生成子名> SQNによって識別される順序数生成子記述子をSEQとする。SEQのデータ型を

DTとする。 

2) SQNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,SEQを

含んでいなければならない。 

3) SQNの有効範囲は,<順序数生成子変更文>とする。 

4) <順序数生成子変更選択肢の並び>をOPTIONSとして,SEQをSEQUENCEとして,“9.27 順序数

生成子の変更”の構文規則を適用する。 

アクセス規則 

1) 与えられた認可識別子は,SQNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別

されるスキーマを所有する<認可識別子>を含まなければならない。 

一般規則 

1) <順序数生成子変更選択肢の並び>をOPTIONSとして,SEQをSEQUENCEとして,“9.27 順序数

生成子の変更”の一般規則を適用する。 

適合性規則 

1) 機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子変更文>を含んで

はならない。 

2) 機能T177“順序数生成子提供:単純再開始選択肢”なしでは,適合するSQL言語中で,<順序数生

成子変更文>に含まれる<順序数生成子変更RESTART選択肢>は,<順序数生成子再開始値>を含ま

なければならない。 

11.74 

<順序数生成子削除文> 

機能 

<順序数生成子削除文> (<drop sequence generator statement>) は,外部順序数生成子を破壊する。 

形式 

<順序数生成子削除文> ::= 

  DROP SEQUECE <順序数生成子名> <削除動作> 

構文規則 

1) <順序数生成子名> SQNによって識別される順序数生成子をSEQとする。 

2) SQNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,SEQの

記述子を含んでいなければならない。 

3) RESTRICTが指定されるならば,次のいずれかの中でSEQが参照されていてはならない。 

a) ルーチン記述子のSQLルーチン本体。 

b) トリガ記述子の被トリガ動作。 

注記442 CASCADEが指定されるならば,このようなオブジェクトは,この細分箇条の一般規則

で規定しているSQLスキーマ操作文によって陽に,及び/又は<REVOKE文>の実行に

よって暗に削除される。 

642 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) SQNによって識別される順序数生成子の<スキーマ名>によって識別されるスキーマを所有する<認

可識別子>をAとする。 

アクセス規則 

1) 与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

文>が実効的に実行される。 

REVOKE USAGE ON SEQUENCE SQN FROM A CASCADE 

2) SEQの記述子が破壊される。 

適合性規則 

1) 機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子削除文>を含んで

はならない。 

12 アクセス制御 

12.1 <GRANT文> 

この細分箇条は,ISO/IEC 9075-4の“10.1 <GRANT文>”によって修正される。 

機能 

<GRANT文> (<grant statement>) は,権限及び役割認可を定義する。 

形式 

<GRANT文> ::= 

  <GRANT権限文> 

| <GRANT役割文> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 関与する全ての権限受領者G,及びGによって所有される全ての定義域D1に対して,次の全てが

真ならば, 

a) D1の定義域記述子に含まれる定義域制約記述子に含まれる<探索条件> SC中で参照される全て

の列に関する付与可能なREFERENCE権限を,Gに適用可能な権限が含む。 

b) SCに含まれる<ルーチン呼出し>の当該ルーチンである全てのSQL呼出しルーチンに関する付与

可能なEXECUTE権限を,Gに適用可能な権限が含む。 

c) 表T1が<メソッド参照> MRの<値式一次子>の有効範囲中にあり,かつ,メソッドMが,D1の

定義域記述子に含まれる定義域制約記述子に含まれるMRの<メソッド名>によって識別されるメ

ソッドであるような,SCに含まれるMRが存在するような全てのT1及び全てのMに関する付

与可能なSELECT権限を,Gに適用可能な権限が含む。 

d) SCに含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関す

るWITH HIERARCHY OPTION付きの付与可能なSELECT権限を,Gに適用可能な権限が含む。 

e) <定義域名>,<文字集合名>,<照合順名>及び<文字変換名>が,それぞれ,D1の定義域記述子に

643 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含まれる全ての定義域,文字集合,照合順及び文字変換に関する付与可能なUSAGE権限を,Gに

適用可能な権限が含む。 

<動作> USAGE,“̲SYSTEM”の権限付与者,オブジェクトD1及び権限受領者Gをもち,付与可能

でないどの権限記述子に対しても,“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス

規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT USAGE ON DOMAIN D1 

  TO G WITH 

  GRANT OPTION 

2) 関与する全ての権限受領者G,及びGによって所有される全ての照合順C1に対して,C1の照合順

記述子に含まれる文字集合名に関する付与可能なUSAGE権限,及びC1の照合順記述子に含まれ

る文字変換名があるならば,その文字変換名に関する付与可能なUSAGE権限を,Gに適用可能な

権限が含むならば,<動作> USAGE,“̲SYSTEM”の権限付与者,オブジェクトC1及び権限受領者

Gをもち,付与可能でないどの権限記述子に対しても,“̲SYSTEM”の現行認可識別子で,かつ,

これ以上のアクセス規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT USAGE ON 

  COLLATION C1 

  TO G 

  WITH GRANT OPTION 

3) 関与する全ての権限受領者G,及びGによって所有される全ての文字変換T1に対して,T1の<文

字変換定義>に含まれる<文字集合指定>によって識別される全ての文字集合に関する付与可能な

USAGE権限を,Gに適用可能な権限が含むならば,<動作> P,“̲SYSTEM”の権限付与者,オブジ

ェクトT1及び権限受領者Gをもち,付与可能でないどの権限記述子に対しても,“̲SYSTEM”の

現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT文>が実効的に実

行される。 

GRANT P 

  ON TRANSLATION T1 

  TO G 

  WITH GRANT OPTION 

4) 関与する権限記述子によって指定される全ての表Tに対して,かつ,T若しくはTの列CTがVの

元の<問合せ式> QE中で参照されているか,又はTが,QEに含まれる<参照解決>のための有効範

囲化された表の上位表であるような,関与する権限受領者Gによって所有される各ビューVに対し

て,これらの表の<表名>を,1から,QEに含まれる<表参照>によって識別される表の個数までの範

囲のiに対して,RTiとする。Vのどの列CVに対しても,次による。 

a) これらの列の<列名>を,1から,CVの基となる列であるRTiの列の個数までの範囲のjに対し

て,CRTi,jとする。 

b) <GRANT文>の実行の成功の後に続いて,次の全てが真ならば, 

i) 

CRTi,jの全ての列に関する付与可能なSELECT権限を,Gに適用可能な権限が含む。 

ii) QEに含まれる<ルーチン呼出し>の当該ルーチンである全てのSQL呼出しルーチンに関する付

与可能なEXECUTE権限を,Gに適用可能な権限が含む。 

iii) 表T1が<メソッド参照> MRの<値式一次子>の有効範囲中にあり,かつ,メソッドMが,MR

644 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の<メソッド名>によって識別されるメソッドであるような,QEに含まれるMRが存在する全

てのT1及び全てのMに関する付与可能なSELECT権限を,Gに適用可能な権限が含む。 

iv) QEに含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関

するWITH HIERARCHY OPTION付きの付与可能なSELECT権限を,Gに適用可能な権限が含

む。 

“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

文>が実効的に実行される。 

GRANT SELECT (CV) 

  ON V 

  TO G 

  WITH GRANT OPTION 

c) <GRANT文>の実行の成功の後に続いて,Gに適用可能な権限が,全てのi及び全てのjに対し

て,REFERENCES(CRTi,j) を含み,かつ,全てのiに対して,RTiのいずれかの列に関する

REFERENCES権限を含むならば,次による。 

i) 

場合: 

1) 次の全てが真ならば,“WITH GRANT OPTION”をWGOとする。 

A) Gに適用可能な権限が,全てのi及び全てのjに対して,付与可能なREFERENCES(CRTi,j) 

を含み,かつ,全てのiに対して,RTiのいずれかの列に関する付与可能なREFERENCES

権限を含む。 

B) QEに含まれる<ルーチン呼出し>の当該ルーチンである全てのSQL呼出しルーチンに関す

る付与可能なEXECUTE権限を,Gに適用可能な権限が含む。 

C) 表T1が<メソッド参照> MRの<値式一次子>の有効範囲中にあり,かつ,メソッドMが,

MRの<メソッド名>によって識別されるメソッドであるような,QEに含まれるMRが存

在する全てのT1及び全てのMに関する付与可能なSELECT権限を,Gに適用可能な権限

が含む。 

D) QEに含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表

に関するWITH HIERARCHY OPTION付きの付与可能なSELECT権限を,Gに適用可能な

権限が含む。 

2) そうでなければ,長さ0の文字列をWGOとする。 

ii) “̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

文>が実効的に実行される。 

GRANT REFERENCES (CV) 

  ON V 

  TO G 

  WGO 

d) <GRANT文>の実行の成功の後に続いて,Vの全ての列に関する付与可能なSELECT権限を,G

に適用可能な権限が含むならば,“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス

規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT SELECT 

  ON V 

645 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  TO G 

  WITH GRANT OPTION 

e) <GRANT文>の実行の成功の後に続いて,次による。 

場合: 

i) 

Vの全ての列に関する付与可能なREFERENCES権限を,Gに適用可能な権限が含むならば,

“WITH GRANT OPTION”をWGOとする。 

ii) Vの全ての列に関するREFERENCES権限を,Gに適用可能な権限が含むならば,長さ0の文

字列をWGOとする。 

“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

文>が実効的に実行される。 

GRANT REFERENCES 

  ON V 

  TO G 

  WGO 

5) <GRANT文>の実行の成功の後に続いて,関与する権限記述子によって指定される全ての表Tに対

して,かつ,Tが,実効的に更新可能なビューVの元の<問合せ式>の末端で基となる表であるよう

な,関与する権限受領者Gによって所有される全てのVに対して,VをVIEWとして,“9.29 ビュ

ー権限の決定”の一般規則を適用する。 

6) 関与する全ての権限受領者G,及びGによって所有され,VNと名付けられた全ての参照可能ビュ

ーVに対して,<GRANT文>の実行の成功の後に続いて,Vの直接上位表に関する付与可能なUNDER

権限を,Gに適用可能な権限が含むならば,“̲SYSTEM”の現行認可識別子で,かつ,これ以上の

アクセス規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT UNDER 

  ON VN 

  TO G 

  WITH GRANT OPTION 

7) 関与する全ての権限受領者G,及びGによって所有される全てのスキーマレベルSQL呼出しルー

チンR1に対して,R1の<ルーチン本体>に含まれる全ての<SQL手続文>の実行の成功に必要な権

限の全てを含むGに適用可能な権限が付与可能ならば,<動作> EXECUTE,“̲SYSTEM”の権限付

与者,オブジェクトR1及び権限受領者Gをもち,付与可能でないどの権限記述子に対しても,

“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT文

>が実効的に実行される。 

GRANT EXECUTE 

  ON R1 

  TO G 

  WITH GRANT OPTION 

注記443 必要な権限は,<SQL手続文>に含まれる全ての<ルーチン呼出し>の全ての当該ルーチン

に関するEXECUTE権限を含む。 

8) 権限が付与可能であることを一方の権限記述子が示し,権限が付与可能でないことを他方の権限記

述子が示すことを除いて,二つの権限記述子が同一ならば,権限が付与可能であることを示すよう

646 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

に,両方の権限記述子に設定される。 

9) WITH HIERARCHY OPTION付きであることを一方の権限記述子が示し,他方の権限記述子が示さ

ないことを除いて,二つの権限記述子が同一ならば,権限がWITH HIERARCHY OPTIONをもつこ

とを示すように,両方の権限記述子に設定される。 

10) 冗長な重複権限記述子が全ての権限記述子の集まりから取り除かれる。 

11) 冗長な重複ビュー権限依存記述子が全てのビュー権限依存記述子の集まりから取り除かれる。 

適合性規則 

なし。 

12.2 <GRANT権限文> 

この細分箇条は,ISO/IEC 9075-13の“10.1 <GRANT権限文>”によって修正される。 

機能 

<GRANT権限文> (<grant privilege statement>) は,権限を定義する。 

形式 

<GRANT権限文> ::= 

  GRANT <権限> TO <権限受領者> [ { <コンマ> <権限受領者> }... ] 

      [ WITH HIERARCHY OPTION ] 

      [ WITH GRANT OPTION ] 

      [ GRANTED BY <権限付与者> ] 

構文規則 

1) <権限>に含まれる<オブジェクト名>によって識別されるオブジェクトをOとする。 

2) <オブジェクト名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマは,Oの記述子を含んでいなければならない。 

3) WITH HIERARCHY OPTIONが指定されるならば,次による。 

a) <権限>は,<権限列リスト>なしで,かつ,<権限メソッドリスト>なしで,SELECTの<動作>を指

定しなければならない。 

b) Oは,構造型の表でなければならない。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) GRANTED BYが省略されるならば,OMITTEDをGとする。 

b) そうでなければ,<権限付与者>をGとする。 

2) GをGRANTORとして,“12.8 権限付与者決定”の一般規則を適用した結果をAとする。 

3) Aに適用可能な権限が,Oを識別する権限を含まないならば,例外条件:権限が付与されていない 

(privilege not granted) が引き起こされる。 

4) 権限記述子の集合が識別される。識別される権限記述子は,<権限>中で陽に指定されるか又は暗に

想定される各<動作>に対して,WITH GRANT OPTION付きでAによって保持されるOに関する<

動作>を定義する権限記述子とする。 

5) <オブジェクト権限>は,<オブジェクト名>によって識別されるオブジェクトに関する一つ以上の権

限を指定する。 

647 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) どの識別される権限記述子IPDに対しても,権限受領者<権限受領者>,動作<動作>,オブジェクト

O及び権限付与者Aを指定する権限記述子が各<権限受領者>に対して作成される。作成される権限

記述子の集合をCPDとする。 

7) 列名なしのINSERT,UPDATE又はREFERENCESである動作をもつCPD中のどの権限記述子に対

しても,WITH GRANT OPTION付きの対応する権限をAが保持するO中の各列Cに対する権限記

述子が同様に作成され,CPDに追加される。そのような各列に対して,同一の<権限受領者>,同一

の<動作>,オブジェクトC及び権限付与者Aを指定する権限記述子が作成される。 

8) 列名又はメソッド名なしのSELECTである動作をもつCPD中のどの権限記述子に対しても,WITH 

GRANT OPTION付きの対応する権限をAが保持するO中の各列Cに対する権限記述子が同様に作

成され,CPDに追加される。そのような各列に対して,同一の<権限受領者>,同一の<動作>,オブ

ジェクトC及び権限付与者Aを指定する権限記述子が作成される。 

9) 列名又はメソッド名なしのSELECTである動作をもつCPD中のどの権限記述子に対しても,権限

記述子のオブジェクトによって識別される表Tが構造型TYの表ならば,WITH GRANT OPTION付

きの対応する権限をAが保持するTYの各メソッドMに対する表/メソッド権限記述子が同様に作

成され,CPDに追加される。そのような各メソッドに対して,同一の<権限受領者>,同一の<動作

>,表T及びメソッドMの対から成るオブジェクト,並びに権限付与者Aを指定する表/メソッド権

限記述子が作成される。 

10) WITH GRANT OPTIONが指定されるならば,各権限記述子は,権限が付与可能であることも示す。 

11) SELECT WITH HIERARCHY OPTIONである動作をもつCPD中の権限記述子の集合をSWHとする。

Oの下位表の集合をSTとする。ST中の全ての表T,及びSWH中の全ての権限記述子に対して,

権限受領者G及び権限付与者Aとして,次による。 

場合: 

a) 権限が付与可能ならば,“WITH GRANT OPTION”をWGOとする。 

b) そうでなければ,長さ0の文字列をWGOとする。 

これ以上のアクセス規則の検査なしで,次の<GRANT文>が実効的に実行される。 

GRANT SELECT 

  ON T 

  TO G 

  WGO 

  GRANTED BY A 

12) <権限>中で指定された<権限受領者>とOに関する<動作>とのどの組合せに対しても,対応する権

限記述子がCPD中に存在しないならば,終了条件:警告 (warning) − 権限が付与されていない が

引き起こされる。 

13) ALL PRIVILEGEが指定され,各権限受領者Gに対して,権限受領者Gを指定する権限記述子が

CPD中に存在しないならば,警告 − 権限が付与されていない が引き起こされる。 

14) 関与する権限記述子の集合 (set of involved privilege descriptors) が,CPDとして定義される。 

15) 関与する権限受領者の集合 (set of involved grantees) が,指定された<権限受領者>の集合として定義

される。 

適合性規則 

1) 機能S024“拡張構造型”なしでは,適合するSQL言語は,メソッドを識別する<GRANT権限文>に

648 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含まれる<特定ルーチン指示子>を含んではならない。 

2) 機能S081“下位表”なしでは,適合するSQL言語は,WITH HIERARCHY OPTIONを含む<GRANT

権限文>を含んではならない。 

12.3 <権限> 

この細分箇条は,ISO/IEC 9075-4の“10.2 <権限>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“13.1 <権限>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“10.2 <権限>”によって修正される。 

機能 

<権限> (<privileges>) は,権限を指定する。 

形式 

<権限> ::= 

  <オブジェクトの権限> ON <オブジェクト名> 

04 09 13 <オブジェクト名> ::= 

  [ TABLE ] <表名> 

| DOMAIN <定義域名> 

| COLLATION <照合順名> 

| CHARACTER SET <文字集合名> 

| TRANSLATION <文字変換名> 

| TYPE <スキーマ解決利用者定義型名> 

| SEQUENCE <順序数生成子名> 

| <特定ルーチン指示子> 

<オブジェクトの権限> ::= 

  ALL PRIVILEGES 

| <動作> [ { <コンマ> <動作> }... ] 

<動作> ::= 

  SELECT 

| SELECT <左括弧> <権限列リスト> <右括弧> 

| SELECT <左括弧> <権限メソッドリスト> <右括弧> 

| DELETE 

| INSERT [ <左括弧> <権限列リスト> <右括弧> ] 

| UPDATE [ <左括弧> <権限列リスト> <右括弧> ] 

| REFERENCES [ <左括弧> <権限列リスト> <右括弧> ] 

| USAGE 

| TRIGGER 

| UNDER 

| EXECUTE 

<権限メソッドリスト> ::= 

  <特定ルーチン指示子> [ { <コンマ> <特定ルーチン指示子> }... ] 

<権限列リスト> ::= 

  <列名リスト> 

649 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<権限受領者> ::= 

  PUBLIC 

| <認可識別子> 

<権限付与者> ::= 

  CURRENT̲USER 

| CURRENT̲ROLE 

構文規則 

1) ALL PRIVILEGESは,<オブジェクト名>に関して,<権限付与者>が付与可能な権限記述子をもつ全

ての権限の指定と等価とする。 

2) <権限>を指定している<GRANT文>又は<REVOKE文>の<オブジェクト名>が<表名>を指定するな

らば,その<表名>によって識別される表をTとする。Tは,宣言局所一時表であってはならない。 

3) 

09 13 <オブジェクト名>が<定義域名>,<照合順名>,<文字集合名>,<文字変換名>,<スキーマ解決

利用者定義型名>又は<順序数生成子名>を指定するならば,<権限>は,USAGEを指定してもよい。

そうでなければ,USAGEを指定してはならない。 

4) 実表又はビュー表を識別する<表名>を<オブジェクト名>が指定するならば,<権限>は,TRIGGER

を指定してもよい。そうでなければ,TRIGGERを指定してはならない。 

5) 構造型を識別する<スキーマ解決利用者定義型名>を<オブジェクト名>が指定するか,又は<表名>を

<オブジェクト名>が指定するならば,<権限>は,UNDERを指定してもよい。そうでなければ,

UNDERを指定してはならない。 

6) Tが一時表ならば,<権限>は,ALL PRIVILEGESを指定しなければならない。 

7) 

04 <GRANT文>又は<REVOKE文>の<オブジェクト名>によって識別されるオブジェクトがSQL呼

出しルーチンならば,<権限>は,EXECUTEを指定してもよい。そうでなければ,EXECUTEを指定

してはならない。 

8) <オブジェクトの権限>は,<オブジェクト名>によって識別されるオブジェクトに関する一つ以上の

権限を指定する。 

9) <権限列リスト>中の各<列名>は,Tの列を識別しなければならない。 

10) <権限メソッドリスト>が指定されるならば,<オブジェクト名>は,構造型TYの表を識別する<表名

>を指定しなければならず,かつ,<権限メソッドリスト>中の各<特定ルーチン指示子>は,TYのメ

ソッドを識別しなければならない。 

11) UPDATE (<権限列リスト>) は,<権限列リスト>中の各<列名>に対するUPDATE (<列名>) の指定と

等価とする。INSERT (<権限列リスト>) は,<権限列リスト>中の各<列名>に対するINSERT (<列名

>) の指定と等価とする。REFERENCES (<権限列リスト>) は,<権限列リスト>中の各<列名>に対す

るREFERENCES (<列名>) の指定と等価とする。SELECT (<権限列リスト>) は,<権限列リスト>中

の各<列名>に対するSELECT (<列名>) の指定と等価とする。SELECT (<権限メソッドリスト>) は,

<権限メソッドリスト>中の各<特定ルーチン指示子>に対するSELECT (<特定ルーチン指示子>) の

指定と等価とする。 

アクセス規則 

なし。 

一般規則 

1) PUBLICの<権限受領者>は,SQL環境中の全ての<認可識別子>を含む<権限受領者>のリストを常に

650 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

示す。 

2) SELECT (<列名>) は,示された列に関するSELECT権限を指定し,一つ以上の列権限記述子を暗に

想定する。 

3) SELECT (<特定ルーチン指示子>) は,<オブジェクト名>によって識別される表に対する,示された

メソッドに関するSELECT権限を指定し,一つ以上の表/メソッド権限記述子を暗に想定する。 

4) <権限列リスト>も<権限メソッドリスト>もないSELECTは,Tにその後追加されるどの列も含め

て,Tの全ての列に関するSELECT権限を指定し,表権限記述子及び一つ以上の列権限記述子を暗

に想定する。Tが構造型TYの表ならば,SELECTは,型TYにその後追加されるどのメソッドも含

めて,型TYの全てのメソッドに関するSELECT権限も指定し,一つ以上の表/メソッド権限記述子

も暗に想定する。 

5) UPDATE (<列名>) は,示された列に関するUPDATE権限を指定し,一つ以上の列権限記述子を暗

に想定する。<権限列リスト>が省略されるならば,UPDATEは,Tにその後追加されるどの列も含

めて,Tの全ての列に関するUPDATE権限を指定し,表権限記述子及び一つ以上の列権限記述子を

暗に想定する。 

6) INSERT (<列名>) は,示された列に関するINSERT権限を指定し,一つ以上の列権限記述子を暗に

想定する。<権限列リスト>が省略されるならば,INSERTは,Tにその後追加されるどの列も含め

て,Tの全ての列に関するINSERT権限を指定し,表権限記述子及び一つ以上の列権限記述子を暗

に想定する。 

7) REFERENCES (<列名>) は,示された列に関するREFERENCES権限を指定し,一つ以上の列権限記

述子を暗に想定する。<権限列リスト>が省略されるならば,REFERENCESは,Tにその後追加され

るどの列も含めて,Tの全ての列に関するREFERENCES権限を指定し,表権限記述子及び一つ以

上の列権限記述子を暗に想定する。 

8) WITH ADMIN OPTION付きで<認可識別子> Bに付与された役割を役割認可記述子が識別するか,

又はBに適用可能な別の役割にWITH ADMIN OPTION付きで付与された役割を役割認可記述子が

識別するならば,Bは,その役割に関してWITH ADMIN OPTIONをもつ。 

適合性規則 

1) 機能T332“拡張役割”なしでは,適合するSQL言語は,<権限付与者>を含んではならない。 

2) 機能T211“基本トリガ能力”なしでは,適合するSQL言語は,TRIGGERを含む<動作>を含んでは

ならない。 

3) 機能S081“下位表”なしでは,適合するSQL言語は,UNDERを含む<動作>を含み,かつ,<表名

>を含む<オブジェクト名>を含む<権限>を含んではならない。 

4) 機能S023“基本構造型”なしでは,適合するSQL言語は,UNDERを含む<動作>を含み,かつ,構

造型を識別する<スキーマ解決利用者定義型名>を含む<オブジェクト名>を含む<権限>を含んでは

ならない。 

5) 機能S024“拡張構造型”なしでは,適合するSQL言語は,USAGEを含む<動作>を含み,かつ,構

造型を識別する<スキーマ解決利用者定義型名>を含む<オブジェクト名>を含む<権限>を含んでは

ならない。 

6) 機能T281“列単位のSELECT権限”なしでは,適合するSQL言語中で,SELECTを含む<動作>は,

<権限列リスト>を含んではならない。 

7) 機能F731“INSERT列権限”なしでは,適合するSQL言語中で,INSERTを含む<動作>は,<権限

651 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

列リスト>を含んではならない。 

8) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<権限メソッドリスト>を含んではなら

ない。 

12.4 <役割定義> 

機能 

<役割定義> (<role definition>) は,役割を定義する。 

形式 

<役割定義> ::= 

CREATE ROLE <役割名> [ WITH ADMIN <権限付与者> ] 

構文規則 

1) 指定された<役割名>は,SQL環境中の他のどの<認可識別子>とも等価であってはならない。 

アクセス規則 

1) <役割定義>を実行するために必要な権限は,処理系定義とする。 

一般規則 

1) 役割名が<役割名>である役割記述子がSQL環境中に作成される。 

2) 場合: 

a) WITH ADMINが省略されるならば,OMITTEDをGとする。 

b) そうでなければ,<権限付与者>をGとする。 

3) GをGRANTORとして,“12.8 権限付与者決定”の一般規則を適用した結果をAとする。 

4) 役割名が<役割名>で,権限付与者が“̲SYSTEM”で,かつ,権限受領者がAである付与可能な役割

認可記述子が作成される。 

適合性規則 

1) 機能T331“基本役割”なしでは,適合するSQL言語は,<役割定義>を含んではならない。 

2) 機能T332“拡張役割”なしでは,適合するSQL言語は,WITH ADMINを直に含む<役割定義>を含

んではならない。 

12.5 <GRANT役割文> 

機能 

<GRANT役割文> (<grant role statement>) は,役割認可を定義する。 

形式 

<GRANT役割文> ::= 

  GRANT 付与役割<付与役割> [ { <コンマ> 付与役割<付与役割> }... ] 

    TO <権限受領者> [ { <コンマ> <権限受領者> }... ] 

    [ WITH ADMIN OPTION ] 

    [ GRANTED BY <権限付与者> ] 

付与役割<付与役割> ::= 

  <役割名> 

構文規則 

1) 指定された<権限受領者>によって識別される役割は,指定された付与役割<付与役割>によって識別

されるどの役割に対しても適用可能であってはならない。 

注記444 すなわち,役割認可の循環は,許されない。 

652 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) WITH ADMINが省略されるならば,OMITTEDをGとする。 

b) そうでなければ,<権限付与者>をGとする。 

2) GをGRANTORとして,“12.8 権限付与者決定”の一般規則を適用した結果をAとする。 

3) 各付与役割<付与役割> Rに対して,役割名がRで,かつ,権限受領者がAか又はAに適用可能な

役割である付与可能な役割認可記述子が存在しないならば,例外条件:役割指定が正しくない 

(invalid role specification) が引き起こされる。 

4) 各<権限受領者> GEEに対して,各付与役割<付与役割> Rに対して,役割名R,権限受領者GEE及

び権限付与者Aをもつ役割認可記述子が作成される。 

5) WITH ADMIN OPTIONが指定されるならば,各役割認可記述子は,付与可能とする。 

6) 一方が付与可能で,かつ,他方が付与可能でないことを除いて,二つの役割認可記述子が同一なら

ば,両方の役割認可記述子は,役割認可が付与可能であることを示すように設定される。 

7) 冗長な重複役割認可記述子が破壊される。 

8) 関与する権限記述子の集合 (set of involved privilege descriptors) は,指定された全ての付与役割<付

与役割>に適用可能な権限に対応する権限記述子の集合の和集合とする。 

9) 関与する権限受領者の集合 (set of involved grantees) は,<権限受領者>の集合と,<権限受領者>とし

て指定される可能性がある<役割名>の少なくとも一つが適用可能である<役割名>の集合との和集

合とする。 

適合性規則 

1) 機能T331“基本役割”なしでは,適合するSQL言語は,<GRANT役割文>を含んではならない。 

12.6 <役割削除文> 

機能 

<役割削除文> (<drop role statement>) は,役割を破壊する。 

形式 

<役割削除文> ::= 

  DROP ROLE <役割名> 

構文規則 

1) 指定された<役割名>によって識別される役割をRとする。 

アクセス規則 

1) 役割名がRで,かつ,権限受領者が与えられた認可識別子である付与可能な役割認可記述子が少な

くとも一つ存在しなければならない。 

一般規則 

1) Rに付与された役割認可記述子によって識別される<認可識別子>をAとする。 

2) これ以上のアクセス規則の検査なしで,次の<REVOKE役割文>が実効的に実行される。 

REVOKE R FROM A 

3) Rの記述子が破壊される。 

適合性規則 

653 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 機能T331“基本役割”なしでは,適合するSQL言語は,<役割削除文>を含んではならない。 

12.7 <REVOKE文> 

この細分箇条は,ISO/IEC 9075-4の“10.3 <REVOKE文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“13.2 <REVOKE文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“10.3 <REVOKE文>”によって修正される。 

機能 

<REVOKE文> (<revoke statement>) は,権限及び役割認可を破壊する。 

形式 

<REVOKE文> ::= 

  <REVOKE権限文> 

| <REVOKE役割文> 

<REVOKE権限文> ::= 

  REVOKE [ <選択肢剝奪範囲> ] <権限> 

    FROM <権限受領者> [ { <コンマ> <権限受領者> }... ] 

    [ GRANTED BY <権限付与者> ] 

    <削除動作> 

<選択肢剝奪範囲> ::= 

  GRANT OPTION FOR 

| HIERARCHY OPTION FOR 

<REVOKE役割文> ::= 

  REVOKE [ ADMIN OPTION FOR ] <剝奪役割> [ { <コンマ> <剝奪役割> }... ] 

    FROM <権限受領者> [ { <コンマ> <権限受領者> }... ] 

    [ GRANTED BY <権限付与者> ] 

    <削除動作> 

<剝奪役割> ::= 

  <役割名> 

構文規則 

1) <権限>に含まれる<オブジェクト名>によって識別されるオブジェクトをOとする。Oが表Tなら

ば,Oの下位表の集合をSとする。Tが構造型の表ならば,その型をTYとする。 

2) WITH HIERARCHY OPTIONが指定されるならば,<権限>は,<権限列リスト>なしで,かつ,<権限

メソッドリスト>なしで,SELECTの<動作>を指定しなければならず,Oは,構造型の表でなければ

ならない。 

3) SELECTは,SELECT表権限,及び<表名>の全ての列に対するSELECT (<権限列リスト>) の両方を

指定することと等価とする。Tが構造型TYの表ならば,SELECTは,Tの下位表のそれぞれの中の

Tから継承される全ての列に対するSELECT (<権限列リスト>),及びTの下位表のそれぞれの中の

TYの全てのメソッドに対するSELECT (<権限メソッドリスト>) も指定する。 

4) INSERTは,INSERT表権限,及び<表名>の全ての列に対するINSERT (<権限列リスト>) の両方を

指定することと等価とする。 

5) UPDATEは,UPDATE表権限,及び<表名>の全ての列に対するUPDATE (<権限列リスト>) の両方

を,さらに,Tの下位表のそれぞれの中のTから継承される全ての列に対するUPDATE (<権限列リ

654 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

スト>) を指定することと等価とする。 

6) REFERENCESは,REFERENCES表権限,及び<表名>の全ての列に対するREFERENCES (<権限列

リスト>) の両方を,さらに,Tの下位表のそれぞれの中のTから継承される全ての列に対する

REFERENCES (<権限列リスト>) を指定することと等価とする。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) GRANTED BYが省略されるならば,OMITTEDをGとする。 

b) そうでなければ,<権限付与者>をGとする。 

2) GをGRANTORとして,“12.8 権限付与者決定”の一般規則を適用した結果をAとする。 

3) 場合: 

 a) <REVOKE文>が<REVOKE権限文>で,かつ,Oを識別する権限を,Aに適用可能な権限が含ま

ないならば,例外条件:権限付与者が正しくない (invalid grantor) が引き起こされる。 

 b) <REVOKE文>が<REVOKE役割文>ならば,<剝奪役割>によって識別されるどの役割Rに対して

も,役割名がRで,かつ,権限受領者がA又はAの適用可能な役割である付与可能な役割認可記

述子が存在しないならば,例外条件:権限付与者が正しくない が引き起こされる。 

4) 場合: 

a) <REVOKE文>が<REVOKE権限文>ならば,指定されたどの<権限受領者>に対しても,権限記述

子の集合が識別される。<権限>に陽に含まれるか又は暗に含まれるどの<動作>に対しても,Aに

よって<権限受領者>に付与されたOか,又はS中のオブジェクトのいずれかに関するその<動作

>を定義した権限記述子の集合に権限記述子Pが属するならば,権限記述子Pは,識別される 

(identified) という。 

注記445 列権限記述子は<動作>が<権限列リスト>を陽に含むか又は暗に含むとき,識別される

ことになる。表/メソッド記述子は,<動作>が<権限メソッドリスト>を陽に含むか又は

暗に含むとき,識別されることになる。 

b) <REVOKE文>が<REVOKE役割文>ならば,指定されたどの<権限受領者>に対しても,役割認可

記述子の集合が識別される。指定された<剝奪役割>のいずれかの,権限付与者Aでの<権限受領

者>への付与を役割認可記述子が定義するならば,役割認可記述子は,識別される という。 

5) 次の条件を満たすならば,権限記述子Dは,別の権限記述子Pに直接依存している (directly 

dependent) という。 

場合: 

a) Dがビュー又はビューの列を識別し,かつ,Dの動作がINSERT,UPDATE又はDELETEのとき,

支援権限記述子がPで,かつ,従属権限記述子がDであるビュー権限依存記述子が存在するなら

ば,Dは,Pに直接依存している。 

b) そうでなければ,次のうちの一つが真ならば,Dは,Pに直接依存している。 

i) 

次の条件の全てを満たす。 

1) 表現する権限が付与可能であることをPが示す。 

2) Pの権限受領者がDの権限付与者と同じか若しくはPの権限受領者がPUBLICであるか,又

はDの権限付与者が<役割名>ならば,Pの権限受領者がDの権限付与者に適用可能な役割で

655 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ある。 

3) 場合: 

A) P及びDが両方とも列権限記述子である。Pの動作及び識別される列が,それぞれ,Dの

動作及び識別される列と同じである。 

B) P及びDが両方とも表権限記述子である。Pの動作及び識別される表が,それぞれ,Dの

動作及び識別される表と同じである。 

C) P及びDが両方ともEXECUTE権限記述子である。Pの動作及び識別されるSQL呼出しル

ーチンが,それぞれ,Dの動作及び識別されるSQL呼出しルーチンと同じである。 

D) 

13 P及びDが両方ともUSAGE権限記述子である。Pの動作及び識別される定義域,文字

集合,照合順,文字変換,利用者定義型又は順序数生成子が,それぞれ,Dの動作及び識

別される定義域,文字集合,照合順,文字変換,利用者定義型又は順序数生成子と同じで

ある。 

E) P及びDが両方ともUNDER権限記述子である。Pの動作及び識別される利用者定義型又

は表が,それぞれ,Dの動作及び識別される利用者定義型又は表と同じである。 

F) P及びDが両方とも表/メソッド権限記述子である。Pの動作並びに識別されるメソッド及

び表が,それぞれ,Dの動作並びに識別されるメソッド及び表と同じである。 

ii) 次の条件の全てを満たす。 

1) 権限付与者が特別な付与者の値“̲SYSTEM”であることをDの権限記述子が示す。 

2) Pの動作がDの動作と同じである。 

3) Pの権限受領者が,Dによって識別される表,照合順若しくは文字変換の所有者であるか,

又はPの権限受領者がPUBLICである。 

4) 次の条件のうちの一つを満たす。 

A) P及びDが両方とも列権限記述子で,<ビュー定義> Vの<ビュー列リスト>に陽に含まれ

るか又は暗に含まれる<列名> CVNによって識別される列CVを権限記述子Dが識別し,

かつ,次のうちの一つが真である。 

I) Pの動作がREFERENCESで,かつ,Pの識別される列がCTであるか又はPの識別され

る表がTであるような,Vの元の<問合せ式>に含まれる<表参照>によって識別される表

T,及びTの列で,かつ,CVの基となる列である列CTが存在する。 

II) Pの動作がSELECTで,かつ,Pの識別される列がCTであるか又はPの識別される表

がTであるような,Vの元の<問合せ式>に含まれる<表参照>によって識別される表T,

及びTの列で,かつ,CVの基となる列である列CTが存在する。 

B) <照合順定義> COの<照合順名>を権限記述子Dが識別し,Pの識別される文字集合名が

COの照合順記述子に含まれるか又はPの識別される文字変換名がCOの照合順記述子に

含まれる。 

C) <文字変換定義> TDの<文字変換名>を権限記述子Dが識別し,TDに直に含まれる<源文字

集合指定>又は<相手文字集合指定>に,Pの識別される文字集合名が含まれる。 

iii) 次の条件の全てを満たす。 

1) 権限付与者が特別な付与者の値“̲SYSTEM”であることをDの権限記述子が示す。 

2) Pの権限受領者が,Dによって識別される定義域の所有者であるか,又はPの権限受領者が

PUBLICである。 

656 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) <定義域定義> DOの<定義域名>を権限記述子Dが識別し,かつ,列権限記述子Pが

REFERENCESの動作をもち,DOの定義域記述子に含まれる<探索条件>中で参照される列を

識別するか,又は権限記述子PがUSAGEの動作をもち,DOの定義域記述子の<探索条件>

に含まれる<定義域>,<照合順名>,<文字集合名>若しくは<文字変換名>をもつ定義域,照合

順,文字集合若しくは文字変換を識別するかのいずれかである。 

6) 権限依存グラフ (privilege dependency graph) は,次の全てが真であるような有向グラフとする。 

a) 各ノードが権限記述子を表現する。 

b) ノードP2がノードP1に直接依存しているという事実を,P1からP2への各アークが表現する。 

独立ノード (independent node) は,入ってくるアークをもたないノードとする。 

7) 次の全てが真ならば,権限記述子Pは,修正される (modified) という。 

a) 表現する権限が付与可能であることをPが示す。 

b) 識別される権限記述子又は修正される権限記述子にPが直接依存する。 

c) 場合: 

i) 

Pが,<ビュー定義> Vの<ビュー列リスト>に陽に含まれるか又は暗に含まれる<列名> CVNを

含み,SELECTでもREFERENCESでもない動作をもつ列権限記述子ならば,権限記述子Xに

よって識別されるオブジェクトの識別子,及びXの動作を,それぞれ,XO及びXAとする。P

が直接依存する権限記述子の集合内で,識別される権限記述子の集合と修正される権限記述子

の集合とを和集合演算したものが,WITH GRANT OPTION付きでのXOに関するXAの付与を

指定する全ての権限記述子を含むような,XO及びXAが存在する。 

ii) Pが,<ビュー定義> Vの<ビュー列リスト>に陽に含まれるか又は暗に含まれる<列名> CVNに

よって識別される列CVを識別し,REFERENCES又はSELECTの動作PAをもつ列権限記述子

ならば,Pが直接依存する権限の集合をSPとする。Vの<問合せ式>に含まれる<表参照>によ

って識別されるどの表Tに対しても,Tの<表名>をRTとする。CRTである<列名>をもち,次

の全てが真であるような列CTが存在する。 

1) CTがTの列で,かつ,CVの基となる列である。 

2) SPの要素の記述子で,かつ,WITH GRANT OPTION付きでCRTに関して動作PAを指定す

るどの権限記述子PDも,CRTの識別される権限記述子か又はCRTの修正される権限記述子

のいずれかである。 

d) 次の少なくとも一つが真である。 

i) 

GRANT OPTION FORが指定され,Pの権限付与者が特別な付与者の値“̲SYSTEM”である。 

ii) 識別される権限記述子又は修正される権限記述子を含まない独立ノードからPへのパスが存在

する。Pは,修正されるマーク付き権限記述子 (marked modified privilege descriptor) という。 

iii) 修正されるマーク付き権限記述子にPが直接依存し,かつ,Pの権限付与者が特別な付与者の

値“̲SYSTEM”である。Pは,修正されるマーク付き権限記述子 という。 

8) 次の条件の全てを満たすならば,役割認可記述子Dは,別の役割認可記述子RDに直接依存してい

る という。 

a) 表現する役割が付与可能であることをRDが示す。 

b) Dの役割名がRDの役割名と同じである。 

c) RDの権限受領者がDの権限付与者と同じか若しくはRDの権限受領者がPUBLICであるか,又

はDの権限付与者が<役割名>ならば,RDの権限受領者がDの権限付与者に適用可能な役割であ

657 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る。 

9) 役割依存グラフ (role dependency graph) は,次の全てが真であるような有向グラフとする。 

a) 各ノードが役割認可記述子を表現する。 

b) ノードR2がノードR1に直接依存するという事実を,R1からR2への各アークが表現する。 

独立ノード は,入ってくるアークをもたないノードとする。 

10) 役割認可記述子RDが,独立ノードではなく,識別される役割認可記述子自体ではなく,かつ,識

別される役割認可記述子を含むパス以外の独立ノードからRDへのどのパスも存在しないならば,

RDは,破棄される (abandoned) という。 

11) 次の全てが真ならば,権限依存グラフのノードPからノードDへのアークは,提供されない 

(unsupported) という。 

a) Dの権限付与者及びPの権限受領者が両方とも<役割名>である。 

b) 全ての破棄される役割認可記述子,及びADMIN OPTION FORが指定されないならば,全ての識

別される役割認可記述子の破壊の結果として,Pの権限受領者がもはやDの権限付与者に適用可

能な役割ではなくなる。 

12) 次の条件のうちの少なくとも一つが真ならば,権限記述子Pが破棄される。 

a) Pが独立ノードではなく,識別される権限記述子又は修正される権限記述子自体ではなく,識別

される権限記述子若しくは修正される権限記述子を含むパス又は提供されないアーク以外の独立

ノードからPへのどのパスも存在しないで,かつ,<REVOKE文>がWITH HIERARCHY OPTION

を指定するならば,PがWITH HIERARCHY OPTIONをもつ。 

b) 次の条件の全てを満たす。 

i) 

Pが,<ビュー定義> Vの<ビュー列リスト>に陽に含まれるか又は暗に含まれる<列名> CVNを

含み,かつ,REFERENCES又はSELECTの動作PAをもつ,列権限記述子である。 

ii) Pが直接依存する権限の集合をSPとし,次の少なくとも一つが真である。 

1) 次の全てが真であるような表名RTが存在する。 

A) RTが,Vの元の<問合せ式>に含まれる<表参照>によって識別される表の名前である。 

B) RTに関する動作PAを指定するSPの要素の記述子であるどの列権限記述子CPDに対して

も,CPDがRTの識別される権限記述子か又はRTの破棄される権限記述子のいずれかで

ある。 

2) 次の全てが真であるような列名CRTが存在する。 

A) CRTが,Vの元の<問合せ式>に含まれる<表参照>によって識別される表の列の名前であ

る。 

B) CRTに関する動作PAを指定するSPの要素の記述子であるどの列権限記述子CPDに対し

ても,CPDがCRTの識別される権限記述子か又はCRTの破棄される権限記述子のいずれ

かである。 

13) REVOKE破壊動作 (revoke destruction action) は,次のこととして定義される。 

場合: 

a) <REVOKE文>が<REVOKE権限文>ならば,次のこととする。 

場合: 

i) 

<REVOKE文>がWITH HIERARCHY OPTIONを指定するならば,全ての識別される権限記述子

及び破棄される権限記述子からWITH HIERARCHY OPTIONを取り除くこと。 

658 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,全ての破棄される権限記述子,及びGRANT OPTION FORが指定されないな

らば,全ての識別される権限記述子を破壊すること。 

b) <REVOKE文>が<REVOKE役割文>ならば,全ての破棄される役割認可記述子,全ての破棄され

た権限記述子,及びADMIN OPTION FORが指定されないならば,全ての識別される役割認可記

述子を破壊すること。 

14) スキーマの名前をS1とし,S1によって識別されるスキーマを所有する<認可識別子>をA1とする。 

15) S1に含まれるビュー記述子をVとする。Vの元の<問合せ式>をQEとする。REVOKE破壊動作の

結果として,A1がそれの適用可能な権限中に次のいずれかを,もはやもたなくなるならば,Vは,

破棄される という。 

a) QEに含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関するSELECT権

限。 

b) QEに含まれる<列参照>によって識別される全ての列に関するSELECT権限。 

c) QEに名前が含まれる全ての定義域,照合順,文字集合及び文字変換に関するUSAGE権限。 

d) Vに含まれる<データ型>が利用者定義型UDTに用途依存であるようなUDTに関するUSAGE権

限。 

e) 

04 QEに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参

照>の当該ルーチンである全てのSQL呼出しルーチンに関するEXECUTE権限。 

f) 

表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,QEに含まれるMRが存在する全てのT1及び全てのMに関する表/メ

ソッド権限。 

g) QEに含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって識別される

列に関するSELECT権限。 

h) QEに含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION付きのSELECT権限。 

i) 

QEに含まれる<参照解決>のための有効範囲化された表に関するSELECT権限。 

j) Vが参照可能表の記述子ならば,Vによって記述されるビューに関連付けられた構造型に関する

USAGE権限。 

k) Vによって記述されるビューの全ての直接上位表に関するUNDER権限。 

l) 

QEに含まれ,<ONLY指定>を単純に含む<表参照>によって識別される全ての型付き表の少なく

とも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT権限。 

16) 09 S1に含まれる表記述子をTとする。REVOKE破壊動作の結果として,A1が次のいずれかを,も

はやもたなくなるならば,Tは,破棄される という。 

a) Tが参照可能表の記述子ならば,Tによって記述される表に関連付けられる構造型に関する

USAGE権限。 

b) Tによって記述される表の全ての直接上位表に関するUNDER権限。 

17) S1に含まれる表制約記述子をTCとする。REVOKE破壊動作の結果として,A1がそれの適用可能

な権限中に次のいずれかを,もはやもたなくなるならば,TCは,破棄される という。 

a) TCの適用可能な<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つ

の列に関するREFERENCES権限。 

b) TCの適用可能な<探索条件>に含まれる<列参照>によって識別される全ての列に関する

659 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

REFERENCES権限。 

c) TCの適用可能な<探索条件>に名前が含まれる全ての定義域,照合順,文字集合及び文字変換に

関するUSAGE権限。 

d) TCの適用可能な<探索条件>に含まれる<データ型>が利用者定義型UDTに用途依存であるよう

なUDTに関するUSAGE権限。 

e) 

04 TCの適用可能な<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド

呼出し>又は<メソッド参照>の当該ルーチンである全てのSQL呼出しルーチンに関する

EXECUTE権限。 

f) 

表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,TCの適用可能な<探索条件>に含まれるMRが存在する全てのT1及び

全てのMに関する表/メソッド権限。 

g) TCの適用可能な<探索条件>に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列

参照>によって識別される列に関するSELECT権限。 

h) TCの適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表の少なくとも一

つの上位表に関するWITH HIERARCHY OPTION付きのSELECT権限。 

i) 

TCの適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表に関する

SELECT権限。 

j) TCの適用可能な<探索条件>に含まれ,<ONLY指定>を単純に含む<表参照>によって識別される

全ての型付き表の少なくとも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT

権限。 

18) S1に含まれる表明記述子をAXとする。REVOKE破壊動作の結果として,A1がそれの適用可能な

権限中に次のいずれかを,もはやもたなくなるならば,AXは,破棄される という。 

a) AXの適用可能な<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つ

の列に関するREFERENCES権限。 

b) AXの適用可能な<探索条件>に含まれる<列参照>によって識別される全ての列に関する

REFERENCES権限。 

c) AXの適用可能な<探索条件>に名前が含まれる全ての定義域,照合順,文字集合及び文字変換に

関するUSAGE権限。 

d) AXの適用可能な<探索条件>に含まれる<データ型>が利用者定義型UDTに用途依存であるよう

なUDTに関するUSAGE権限。 

e) 

04 AXの適用可能な<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド

呼出し>又は<メソッド参照>の当該ルーチンである全てのSQL呼出しルーチンに関する

EXECUTE権限。 

f) 

表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,AXの適用可能な<探索条件>に含まれるMRが存在する全てのT1及び

全てのMに関する表/メソッド権限。 

g) AXの適用可能な<探索条件>に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列

参照>によって識別される列に関するSELECT権限。 

h) AXの適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表の少なくとも一

つの上位表に関するWITH HIERARCHY OPTION付きのSELECT権限。 

660 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

AXの適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表に関する

SELECT権限。 

j) AXの適用可能な<探索条件>に含まれ,<ONLY指定>を単純に含む<表参照>によって識別される

全ての型付き表の少なくとも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT

権限。 

19) 04 S1に含まれるトリガ記述子をTRとする。REVOKE破壊動作の結果として,A1がそれの適用可

能な権限中に次のいずれかを,もはやもたなくなるならば,TRは,破棄される という。 

a) TRの当該表に関するTRIGGER権限。 

b) TRの<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関す

るREFRENCES権限。 

c) TRの<探索条件>に含まれる<列参照>によって識別される全ての列に関するSELECT権限。 

d) TRの<探索条件>に名前が含まれる全ての定義域,照合順,文字集合及び文字変換に関するUSAGE

権限。 

e) TRの<探索条件>に含まれる<データ型>が利用者定義型UDTに用途依存であるようなUDTに関

するUSAGE権限。 

f) 

表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,TRの<探索条件>に含まれるMRが存在する全てのT1及び全てのM

に関する表/メソッド権限。 

g) 

04 TRの<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又

は<メソッド参照>の当該ルーチンであるSQL呼出しルーチンに関するEXECUTE権限。 

h) 

04 TRの<被トリガSQL文>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼

出し>又は<メソッド参照>の当該ルーチンであるSQL呼出しルーチンに関するEXECUTE権限。 

i) 

TRの<被トリガSQL文>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に含

まれる<問合せ式>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関

するSELECT権限。 

j) TRの<被トリガSQL文>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リス

ト>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関するSELECT権

限。 

k) TRの<被トリガSQL文>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文>

に含まれる<探索条件>に含まれる<表参照>及び<列参照>によって識別される全ての表の少なく

とも一つの列に関するSELECT権限。 

l) 

TRの<被トリガSQL文>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる<

表参照>及び<列参照>によって識別される全ての表の少なくとも一つの列に関するSELECT権限。 

m) 次の全ての列に関するINSERT権限。 

場合: 

i) 

TRの<被トリガSQL文>に含まれる<INSERT文>又は<MERGE文>の<挿入列リスト>に含まれ

る<列名>によって識別される列。 

ii) TRの<被トリガSQL文>に含まれ,かつ,<挿入列リスト>を含まない<INSERT文>に直に含ま

れる<表名>によって識別される表の列。 

iii) TRの<被トリガSQL文>に含まれ,<併合挿入指定>を含み,かつ,<挿入列リスト>を含まない

661 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<MERGE文>に含まれる<相手表>によって識別される表の列。 

n) TRの<被トリガSQL文>に含まれる <UPDATE文:位置付け>,<UPDATE文:探索>又は<MERGE

文>のいずれかに含まれる<対象列>に含まれる<列名>によって識別される全ての列に関する

UPDATE権限。 

o) TRの<被トリガSQL文>に含まれる<DELETE文:位置付け>又は<DELETE文:探索>のいずれか

に含まれる<表名>によって識別される全ての表に関するDELETE権限。 

p) TRの<被トリガSQL文>に含まれ,かつ,<併合削除指定>を含む<MERGE文>に含まれる<相手

表>によって識別される表に関するDELETE権限。 

q) TRの<被トリガSQL文>に名前が含まれる全ての定義域,照合順,文字集合,文字変換及び順序

数生成子に関するUSAGE権限。 

r) TRの<被トリガSQL文>に含まれる<データ型>が利用者定義型UDTに用途依存であるような

UDTに関するUSAGE権限。 

s) 表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,TRの<被トリガSQL文>に含まれるMRが存在する全てのT1及び全

てのMに関する表/メソッド権限。 

t) 

次のいずれかに含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって

識別される列に関するSELECT権限。 

i) 

TRの<探索条件>。 

ii) TRの<被トリガSQL文>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に

含まれる<問合せ式>。 

iii) TRの<被トリガSQL文>に含まれる<SELECT文:単一行> に直に含まれる<表式>又は<選択リ

スト>。 

iv) TRの<被トリガSQL文>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文

>に含まれる<探索条件>。 

v) TRの<被トリガSQL文>に含まれる<更新元>又は<代入行>に含まれる<値式>。 

u) 次のいずれかに含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に

関するWITH HIERARCHY OPTION付きのSELECT権限。 

i) 

TRの<探索条件>。 

ii) TRの<被トリガSQL文>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に

含まれる<問合せ式>。 

iii) TRの<被トリガSQL文>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リ

スト>。 

iv) TRの<被トリガSQL文>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文

>に含まれる<探索条件>。 

v) TRの<被トリガSQL文>に含まれる<更新元>又は<代入行>に含まれる<値式>。 

v) 次のいずれかに含まれる<参照解決>のための有効範囲化された表に関するSELECT権限。 

i) 

TRの<探索条件>。 

ii) TRの<被トリガSQL文>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に

含まれる<問合せ式>。 

iii) TRの<被トリガSQL文>に含まれる<SELECT文:単一行> に直に含まれる<表式>又は<選択リ

662 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

スト>。 

iv) TRの<被トリガSQL文>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文

>に含まれる<探索条件>。 

v) TRの<被トリガSQL文>に含まれる<更新元>又は<代入行>に含まれる<値式>。 

w) TRの<被トリガSQL文>に含まれ,<ONLY指定>を単純に含む<表参照>によって識別される全て

の型付き表の少なくとも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT権

限。 

20) S1に含まれる定義域制約記述子をDCとする。REVOKE破壊動作の結果として,A1がそれの適用

可能な権限中に次のいずれかを,もはやもたなくなるならば,DCは,破棄される という。 

a) DCの<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関す

るREFERENCES権限。 

b) DCの<探索条件>に含まれる<列参照>によって識別される全ての列に関するREFERENCES権限。 

c) DCの<探索条件>に名前が含まれる全ての定義域,利用者定義型,照合順,文字集合及び文字変

換に関するUSAGE権限。 

d) DCの<探索条件>に含まれる<データ型>が利用者定義型UDTに用途依存であるようなUDTに関

するUSAGE権限。 

e) 

04 DCの<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又

は<メソッド参照>の当該ルーチンである全てのSQL呼出しルーチンに関するEXECUTE権限。 

f) 

表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,DCの<探索条件>に含まれるMRが存在する全てのT1及び全てのM

に関する表/メソッド権限。 

g) DCの<探索条件>に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によっ

て識別される列に関するSELECT権限。 

h) DCの<探索条件>に含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表

に関するWITH HIERARCHY OPTION付きのSELECT権限。 

i) 

DCの<探索条件>に含まれる<参照解決>のための有効範囲化された表に関するSELECT権限。 

j) DCの<探索条件>に含まれ,<ONLY指定>を単純に含む<表参照>によって識別される全ての型付

き表の少なくとも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT権限。 

21) S1に含まれるどの定義域記述子DOに対しても,REVOKE破壊動作の結果として,DOに含まれる

データ型記述子に含まれる全ての文字集合に関するUSAGE権限を,A1がそれの適用可能な権限中

に,もはやもたなくなるならば,DOは,失われる (lost) という。 

22) S1に含まれるどの表記述子TDに対しても,TDに含まれる全ての列記述子CDに対して,次のい

ずれかが真ならば,CDは,失われる という。 

a) REVOKE破壊動作の結果として,CDに含まれるデータ型記述子に含まれる文字集合に関する

USAGE権限を,A1がそれの適用可能な権限中に,もはやもたなくなる。 

b) REVOKE破壊動作の結果として,CDに含まれるデータ型記述子が利用者定義型UDTに用途依

存である型を記述するようなUDTに関するUSAGE権限を,A1がそれの適用可能な権限中に,

もはやもたなくなる。 

c) CDに含まれる定義域DNがあるならば,その定義域の名前が,失われる定義域記述子を識別し,

かつ,REVOKE破壊動作の結果として,DNの定義域記述子のデータ型記述子に含まれる文字集

663 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

合に関するUSAGE権限を,A1がそれの適用可能な権限中に,もはやもたなくなる。 

d) 

04 CDが生成式GEをもち,かつ,REVOKE破壊動作の結果として,GEに含まれる<ルーチン呼

出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンであるSQL

呼出しルーチンに関するEXECUTE権限を,A1がそれの適用可能な権限中に,もはやもたなくな

る。 

23) どのSQLクライアントモジュールMOに対しても,MOを所有する<モジュール認可識別子>をG

とする。REVOKE破壊動作の結果として,MOの<モジュール文字集合指定>中で参照される文字集

合に関するUSAGE権限を,Gがそれの適用可能な権限中に,もはやもたなくなるならば,MOは,

失われる という。 

24) S1に含まれるどの利用者定義型記述子DTに対しても,次のいずれかが真ならば,DTは,破棄さ

れる という。 

a) REVOKE破壊動作の結果として,DTに含まれるデータ型記述子が利用者定義型UDTに用途依存

である型を記述するようなUDTに関するUSAGE権限を,A1がそれの適用可能な権限中に,も

はやもたなくなる。 

b) 

13 REVOKE破壊動作の結果として,DTの直接上位型である利用者定義型に関するUNDER権限

を,A1がそれの適用可能な権限中に,もはやもたなくなる。 

25) REVOKE破壊動作の結果として,S1に含まれる既定文字集合に関するUSAGE権限を,A1がそれ

の適用可能な権限中に,もはやもたなくなるならば,S1は,失われる という。 

26) S1に含まれるどの照合順記述子CNに対しても,REVOKE破壊動作の結果として,CNの<既存照

合順名>に名前が含まれる照合順に関するUSAGE権限を,A1がそれの適用可能な権限中に,もは

やもたなくなるならば,CNは,影響を受ける (impacted) という。 

27) S1に含まれるどの文字集合記述子CSDに対しても,REVOKE破壊動作の結果として,CSDに名前

が含まれる照合順に関するUSAGE権限を,A1がそれの適用可能な権限中に,もはやもたなくなる

ならば,CSDは,影響を受ける という。 

28) 13 S1に含まれ,データ型記述子DTDを含むどの記述子に対しても,REVOKE破壊動作の結果とし

て,DTDに名前が含まれる照合順に関するUSAGE権限を,A1がそれの適用可能な権限中に,もは

やもたなくなるならば,DTDは,影響を受ける という。 

29) S1に含まれ,DEFINERのSQL安全保護特性をもつルーチン記述子をRDとする。REVOKE破壊動

作の結果として,A1がそれの適用可能な権限中に次のいずれかを,もはやもたなくなるならば,RD

は,破棄される という。 

a) 

04 RDの<SQLルーチン本体>又はRDのSQLパラメタの<パラメタ既定値>に含まれる<ルーチン

呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである

SQL呼出しルーチンに関するEXECUTE権限。 

b) RDの<SQLルーチン本体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に

含まれる<問合せ式>に含まれる<表参照>によって識別される各表の少なくとも一つの列に関す

るSELECT権限。 

c) RDの<SQLルーチン本体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リ

スト>に含まれる<表参照>によって識別される各表の少なくとも一つの列に関するSELECT権限。 

d) RDの<SQLルーチン本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文

>に含まれる<探索条件>に含まれる<表参照>によって識別される各表の少なくとも一つの列に関

664 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

するSELECT権限。 

e) RDの<SQLルーチン本体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれ

る<表参照>によって識別される各表の少なくとも一つの列に関するSELECT権限。 

f) RDの<SQLルーチン本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文

>に含まれる<探索条件>に含まれる<列参照>によって識別される少なくとも一つの列に関する

SELECT権限。 

g) RDの<SQLルーチン本体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれ

る<列参照>によって識別される少なくとも一つの列に関するSELECT権限。 

h) 次の各列に関するINSERT権限。 

場合: 

i) 

RDの<SQLルーチン本体>に含まれる<INSERT文>又は<MERGE文>の<挿入列リスト>に含ま

れる<列名>によって識別される列。 

ii) RDの<SQLルーチン本体>に含まれ,かつ,<挿入列リスト>を含まない<INSERT文>に直に含

まれる<表名>によって識別される表の列。 

iii) RDの<SQLルーチン本体>に含まれ,<併合挿入指定>を含み,かつ,<挿入列リスト>を含まな

い<MERGE文>に直に含まれる<相手表>によって識別される表の列。 

i) 

RDの<SQLルーチン本体>に含まれる<UPDATE文:位置付け>,<UPDATE文:探索>又は<MERGE

文>のいずれかに含まれる<対象列>に名前が含まれる各列に関するUPDATE権限。 

j) RDの<SQLルーチン本体>に含まれる<DELETE文:位置付け>又は<DELETE文:探索>のいずれ

かに含まれる<表名>に名前が含まれる各表に関するDELETE権限。 

k) RDの<SQLルーチン本体>に含まれ,かつ,<併合削除指定>を含む<MERGE文>に含まれる<相手

表>によって識別される表に関するDELETE権限。 

l) 

RDの<SQLルーチン本体>に名前が含まれる各定義域,照合順,文字集合,文字変換及び順序数

生成子に関するUSAGE権限。 

m) RDに含まれるSQLパラメタ,戻りデータ型又は結果型変換の宣言型が利用者定義型UDTに用

途依存であるような各UDTに関するUSAGE権限。 

n) RDの<SQLルーチン本体>に含まれる<データ型>が利用者定義型UDTに用途依存であるような

各UDTに関するUSAGE権限。 

o) 表T1が<メソッド参照> MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当

該ルーチンであるような,RDの<SQLルーチン本体>に含まれるMRが存在する全てのT1及び

全てのMに関する表/メソッド権限。 

p) 次のいずれかに含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって

識別される列に関するSELECT権限。 

i) 

RDの<SQLルーチン本体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純

に含まれる<問合せ式>。 

ii) RDの<SQLルーチン本体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択

リスト>。 

iii) RDの<SQLルーチン本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE

文>に含まれる<探索条件>。 

iv) RDの<SQLルーチン本体>に含まれる<更新元>又は<代入行>に含まれる<値式>。 

665 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

q) 次のいずれかに含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に

関するWITH HIERARCHY OPTION付きのSELECT権限。 

i) 

RDの<SQLルーチン本体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純

に含まれる<問合せ式>。 

ii) RDの<SQLルーチン本体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択

リスト>。 

iii) RDの<SQLルーチン本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE

文>に含まれる<探索条件>。 

iv) RDの<SQLルーチン本体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>。 

r) 次のいずれかに含まれる<参照解決>のための有効範囲化された表に関するSELECT権限。 

i) 

RDの<SQLルーチン本体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純

に含まれる<問合せ式>。 

ii) RDの<SQLルーチン本体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択

リスト>。 

iii) RDの<SQLルーチン本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE

文>に含まれる<探索条件>。 

iv) RDの<SQLルーチン本体>に含まれる<更新元>又は<代入行>に含まれる<値式>。 

s) 

13 RDの<SQLルーチン本体>に含まれ,<ONLY指定>を単純に含む<表参照>によって識別される

全ての型付き表の少なくとも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT

権限。 

30) 09 S1に含まれるどの表記述子TDに対しても,TDに含まれる全ての列記述子に対して,CDが次の

うちの一つを含むならば,CDは,汚染されている (contaminated) という。 

a) 破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子。 

b) 破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子を含む参照型記述子。 

c) 破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子を含む集まり型記述子。 

d) 破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子を含む参照型記述子を含む集まり型記述子。 

31) 09 13 RESTRICTが指定され,かつ,破棄される権限記述子,破棄されるビュー,破棄される表制約,

破棄される表明,破棄される定義域制約,失われる定義域,失われる列,失われるスキーマ,又は

影響を受けるデータ型記述子,影響を受ける照合順,影響を受ける文字集合,破棄される利用者定

義型若しくは破棄されるルーチン記述子を含む記述子が存在するならば,例外条件:依存している

権限記述子がまだ存在する (dependent privilege descriptors still exist) が引き起こされる。 

32) 04 CASCADEが指定されるならば,失われるモジュールであると決定されるSQLクライアントモジ

ュールに与える影響は,処理系定義とする。 

33) 場合: 

a) <REVOKE文>が<REVOKE権限文>ならば,次による。 

場合: 

666 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

WITH HIERARCHY OPTIONも,GRANT OPTION FORも,指定されないならば,次による。 

1) 全ての破棄される権限記述子が破壊される。 

2) 識別される権限記述子が破壊される。 

3) 修正される権限記述子は,付与可能でないことを示すように設定される。 

ii) WITH HIERARCHY OPTIONが指定されるならば,識別される権限記述子又は破棄される権限

記述子が存在するとき,それらの全てからWITH HIERARCHY OPTIONが取り除かれる。 

iii) GRANT OPTION FORが指定されるならば,次による。 

場合: 

1) CASCADEが指定されるならば,全ての破棄される権限記述子が破壊される。 

2) そうでなければ,修正される権限記述子ではない識別される権限記述子に直接依存している

権限記述子が存在するならば,例外条件:依存している権限記述子がまだ存在する が引き起

こされる。 

識別される権限記述子及び修正される権限記述子は,付与可能でないことを示すように設定さ

れる。 

b) <REVOKE文> が<REVOKE役割文>ならば,次による。 

i) 

CASCADEが指定されるならば,全ての破棄される役割認可記述子が破壊される。 

ii) 全ての破棄される権限記述子が破壊される。 

iii) 場合: 

1) ADMIN OPTION FORが指定されるならば,識別される役割認可記述子は,付与可能でない

ことを示すように設定される。 

2) ADMIN OPTION FORが指定されないならば,識別される役割認可記述子が破壊される。 

34) どの破棄されるビュー記述子Vに対しても,Vの<表名>をS1.VNとする。これ以上のアクセス規

則の検査なしで,次の<ビュー削除文>が実効的に実行される。 

DROP VIEW S1.VN CASCADE 

35) どの破棄される表記述子Tに対しても,Tの<表名>をS1.TNとする。これ以上のアクセス規則の

検査なしで,次の<表削除文>が実効的に実行される。 

DROP TABLE S1.TN CASCADE 

36) どの破棄される表制約記述子TCに対しても,TCの<制約名>をS1.TCNとし,TCを含む表の<表

名>をS2.T2(S1とS2とは,場合によって等価)とする。これ以上のアクセス規則の検査なしで,

次の<表変更文>が実効的に実行される。 

ALTER TABLE S2.T2 

 DROP CONSTRAINT S1.TCN 

 CASCADE 

37) どの破棄される表明記述子AXに対しても,AXの<制約名>をS1.AXNとする。これ以上のアクセ

ス規則の検査なしで,次の<表明削除文>が実効的に実行される。 

DROP ASSERTION S1.AXN CASCADE 

38) どの破棄されるトリガ記述子TRに対しても,TRの<トリガ名>をS1.TRNとする。これ以上のア

クセス規則の検査なしで,次の<トリガ削除文>が実効的に実行される。 

DROP TRIGGER S1.TRN 

39) どの破棄される定義域制約記述子DCに対しても,DCの<制約名>をS1.DCNとし,DCを含む定

667 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

義域の<定義域名>をS2.DNとする。これ以上のアクセス規則の検査なしで,次の<定義域変更文>

が実効的に実行される。 

ALTER DOMAIN S2.DN 

 DROP CONSTRAINT S1.DCN 

40) どの失われる列記述子CDに対しても,CDを記述子が含む表の<表名>をS1.TNとし,CDの<列名

>をCNとする。これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行される。 

ALTER TABLE S1.TN 

 DROP COLUMN CN CASCADE 

41) どの失われる定義域記述子DOに対しても,DOの<定義域名>をS1.DNとする。これ以上のアクセ

ス規則の検査なしで,次の<定義域削除文>が実効的に実行される。 

DROP DOMAIN S1.DN CASCADE 

42) どの失われるスキーマS1に対しても,<スキーマ定義>が<スキーマ文字集合指定>を指定しなかっ

たときにこのスキーマの既定文字集合となる処理系定義の<文字集合指定>の名前を含むように,そ

のスキーマの既定文字集合が修正される。 

43) Oによって識別されるオブジェクトが照合順ならば,その照合順の名前をOCNとする。 

44) 影響を受けるデータ型記述子DTDを含むどの記述子に対しても,DTDは,OCNを含まないように

修正される。 

45) 照合順名CNが含まれているどの影響を受ける照合順記述子CDに対しても,これ以上のアクセス

規則の検査なしで,次の<照合順削除文>が実効的に実行される。 

DROP COLLATION CN CASCADE 

46) 文字集合名CSNが含まれているどの影響を受ける文字集合記述子CSDに対しても,CSDは,含ま

れている照合順名が,CSDが基にする文字集合の既定照合順の名前になるように修正される。 

47) <利用者定義型名> S1.DTNをもつどの破棄される利用者定義型記述子DTに対しても,これ以上の

アクセス規則の検査なしで,次の<データ型削除文>が実効的に実行される。 

DROP TYPE S1.DTN CASCADE 

48) 04 13 どの破棄されるSQL呼出しルーチン記述子RDに対しても,記述子がRDであるSQL呼出し

ルーチンをRとする。Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ル

ーチン削除文>が実効的に実行される。 

DROP SPECIFIC ROUTINE SN CASCADE 

49) <REVOKE文>が<REVOKE権限文>ならば,次による。 

a) <権限>中に指定されるOに関する<権限受領者>と<動作>とのどの組合せに対しても,識別され

る権限記述子の集合中に,対応する権限記述子が存在しないならば,終了条件:警告 (warning) − 

権限が剝奪されていない (privilege not revoked) が引き起こされる。 

b) ALL PRIVILEGESが指定されたとき,各<権限受領者>に対して,どの権限記述子も識別されなか

ったならば,終了条件:警告 (warning) − 権限が剝奪されていない が引き起こされる。 

50) どの汚染されている列記述子CDに対しても,CDを記述子が含む表の<表名>をS1.TNとし,CD

の<列名>をCNとする。これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行さ

れる。 

ALTER TABLE S1.TN 

 DROP COLUMN CN CASCADE 

668 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能T331“基本役割”なしでは,適合するSQL言語は,<REVOKE役割文>を含んではならない。 

2) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>を含

む<REVOKE文>を含んではならない。 

3) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,GRANT OPTION FORを含む<選択

肢剝奪範囲>を含んではならない。 

4) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,<オブジェクト名>中に陽に指定さ

れるか又は暗に想定されるSQLスキーマの所有者が現行認可識別子ではない<オブジェクト名>を

含む<権限>を含む<REVOKE文>を含んではならない。 

5) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,次の全ての条件を満たす権限記述

子PDが存在するような<REVOKE文>を含んではならない。 

a) <REVOKE文>に含まれる<権限>に単純に含まれる<オブジェクト名>によって識別されるオブジ

ェクトをPDが識別する。 

b) <REVOKE文>に単純に含まれるいずれかの<権限受領者>によって識別される<権限受領者>をPD

が識別し,その<権限受領者>は,<REVOKE文>に含まれる<権限>に単純に含まれる<オブジェク

ト名>中に陽に指定されるか又は暗に想定されるSQLスキーマの所有者を識別しない。 

c) <REVOKE文>に含まれる<権限>に単純に含まれる<動作>によって識別される動作をPDが識別

する。 

d) 権限が付与可能であることをPDが示す。 

6) 機能S081“下位表”なしでは,適合するSQL言語は,HIERARCHY OPTION FORを含む<選択肢剝

奪範囲>を含んではならない。 

12.8 権限付与者決定 

細分箇条署名 

 “権限付与者決定” [一般規則] ( 

パラメタ: “GRANTOR” 

機能 

権限付与者決定 (Grantor determination) は,権限若しくは役割認可の権限付与者,又は役割の意図した所

有者を決定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,GRANTORをGとする。 

2) 権限付与者Aは,次のとおりに,Gから導出される。 

場合: 

a) GがOMITTEDならば,次による。 

場合: 

i) 

現行利用者識別子が存在するならば,Aは,現行利用者識別子とする。 

669 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,Aは,現行役割名とする。 

b) GがCURRENT̲USERならば,次による。 

場合: 

i) 

現行利用者識別子が存在しないならば,例外条件:権限付与者が正しくない (invalid grantor) が

引き起こされる。 

ii) そうでなければ,Aは,現行利用者識別子とする。 

a) GがCURRENT̲ROLEならば,次による。 

場合: 

i) 

現行役割名が存在しないならば,例外条件:権限付与者が正しくない が引き起こされる。 

ii) そうでなければ,Aは,現行役割名とする。 

適合性規則 

1) 機能T332“拡張役割”なしでは,適合するSQL言語は,<権限付与者>を含んではならない。 

13 SQLクライアントモジュール 

13.1 <SQLクライアントモジュール定義> 

この細分箇条は,ISO/IEC 9075-9の“14.1 <SQLクライアントモジュール定義>”によって修正される。 

機能 

<SQLクライアントモジュール定義> (<SQL-client module definition>) は,SQLクライアントモジュール

を定義する。 

形式 

<SQLクライアントモジュール定義> ::= 

  <モジュール名句> <LANGUAGE句> <モジュール認可句> 

      [ <モジュールパス指定> ] 

      [ <モジュール変換グループ指定> ] 

      [ <モジュール照合順> ] 

      [ <一時表宣言>... ] 

      <モジュール内容>... 

<モジュール認可句> ::= 

  SCHEMA <スキーマ名> 

| AUTHORIZATION <モジュール認可識別子> 

      [ FOR STATIC { ONLY | AND DYNAMIC } ] 

| SCHEMA <スキーマ名> AUTHORIZATION <モジュール認可識別子> 

      [ FOR STATIC { ONLY | AND DYNAMIC } ] 

<モジュール認可識別子> ::= 

  <認可識別子> 

<モジュールパス指定> ::= 

  <パス指定> 

<モジュール変換グループ指定> ::= 

  <変換グループ指定> 

<モジュール照合順> ::= 

670 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <モジュール照合順指定>... 

<モジュール照合順指定> ::= 

  COLLATION <照合順名> [ FOR <文字集合指定リスト> ] 

<文字集合指定リスト> ::= 

  <文字集合指定> [ { <コンマ> <文字集合指定> }... ] 

<モジュール内容> ::= 

  <カーソル宣言> 

| <動的カーソル宣言> 

| <外部呼出し手続> 

構文規則 

1) <LANGUAGE句>は,SQLを指定してはならない。 

2) SCHEMA <スキーマ名>が指定されないならば,<モジュール認可識別子>と等価な<スキーマ名>が

暗に想定される。 

3) 陽に指定されるか又は暗に想定される<スキーマ名>が<カタログ名>を指定しないならば,処理系定

義の<カタログ名>が暗に想定される。 

4) 暗に想定されるか又は陽に指定される<カタログ名>は,<SQLクライアントモジュール定義>中の全

ての修飾なし<スキーマ名>に対して暗に想定される<カタログ名>とする。 

5) <モジュールパス指定>が指定されないならば,<モジュール認可句>に含まれる<スキーマ名>を含む

処理系定義の<スキーマ名リスト>を含む<モジュールパス指定>が暗に想定される。 

6) <モジュールパス指定>の<スキーマ名リスト>に含まれる各<スキーマ名>の陽に指定されるか又は

暗に想定される<カタログ名>は,<モジュール認可句>に含まれる陽に指定されるか又は暗に想定さ

れる<スキーマ名>の<カタログ名>と等価でなければならない。 

7) 陽に指定されるか又は暗に想定される<モジュールパス指定>の<スキーマ名リスト>は,<SQLクラ

イアントモジュール定義>のSQLパスとして用いられる。SQLパスは,<SQLクライアントモジュ

ール定義>に含まれる<ルーチン呼出し>に直に含まれる修飾なし<ルーチン名>を実効的に修飾する

ために用いられる。 

8) 場合: 

a) <モジュール変換グループ指定>が指定されないならば,<SQLクライアントモジュール定義>に含

まれる各<外部呼出し手続>の<ホストパラメタ宣言リスト>に含まれ,<位置付け子標識>をもたな

い利用者定義型を<ホストパラメタデータ型> UDTが識別する各<ホストパラメタ宣言>に対して,

<グループ指定> GSをもつ<複数グループ指定>を含む<モジュール変換グループ指定>が暗に想定

される。GSの<グループ名>は,処理系定義とし,それの<パス解決利用者定義型名>は,UDTと

する。 

b) <グループ名> GNをもつ<単一グループ指定>を<モジュール変換グループ指定>が含むならば,

<SQLクライアントモジュール定義>に含まれる各<外部呼出し手続>の<ホストパラメタ宣言リス

ト>に含まれ,<位置付け子標識>をもたない利用者定義型を<ホストパラメタデータ型> UDTが識

別する各<ホストパラメタ宣言>に対して,<グループ指定> GSを含む<複数グループ指定>を含む

<モジュール変換グループ指定>が暗に想定される。GSの<グループ名>は,GNとし,それの<パ

ス解決利用者定義型名>は,UDTとする。 

c) <モジュール変換グループ指定>が<複数グループ指定> MGSを含むならば,<SQLクライアント

671 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

モジュール定義>に含まれる各<外部呼出し手続>の<ホストパラメタ宣言リスト>に含まれ,<位置

付け子標識>をもたない利用者定義型を<ホストパラメタデータ型> UDTが識別し,かつ,UDTと

等価のものがMGSに含まれるどの<グループ指定>にも含まれない各<ホストパラメタ宣言>に対

して,<グループ指定> GSで拡張したMGSを含む<複数グループ指定>を含む<モジュール変換グ

ループ指定>が暗に想定される。GSの<グループ名>は,処理系定義とし,それの<パス解決利用

者定義型名>は,UDTとする。 

9) <モジュール照合順指定>に含まれるどの二つの<文字集合指定>も,等価であってはならない。 

10) <モジュール照合順指定> MCSは,SQLクライアントモジュールの一つ以上の文字集合に対して,

SQLクライアントモジュール照合順を指定する。MCSに含まれる<照合順名>によって識別される

照合順をCOとする。 

場合: 

a) <文字集合指定リスト>が指定されるならば,COによって指定される照合順は,<モジュール照合

順指定>に単純に含まれる<文字集合指定>によって識別されるどの文字集合にも適用可能でなけ

ればならない。指定された各文字集合に対して,その文字集合のSQLクライアントモジュール照

合順には,COが設定される。 

b) そうでなければ,SQLクライアントモジュール照合順にCOが設定される文字集合は,処理系定

義とする。 

11) <カーソル宣言>は,<SQLクライアントモジュール定義>のテキスト中で,その<カーソル宣言>の<

カーソル名>を参照するどの<外部呼出し手続>にも先行しなければならない。 

12) <動的カーソル宣言>は,<SQLクライアントモジュール定義>のテキスト中で,その<動的カーソル

宣言>の<カーソル名>を参照するどの<外部呼出し手続>にも先行しなければならない。 

13) FOR STATIC ONLYも,FOR STATIC AND DYNAMICも,指定されないならば,FOR STATIC AND 

DYNAMICが暗に想定される。 

14) <SQLクライアントモジュール定義>中のどの<カーソル宣言>に対しても,<SQLクライアントモジ

ュール定義>は,<カーソル宣言>中で宣言される<カーソル名>を指定するただ一つの<OPEN文>を

含まなければならない。 

注記446 “14.1 <カーソル宣言>”の構文規則参照。 

15) <SQLクライアントモジュール定義>に含まれ,同じ個数の<ホストパラメタ宣言>をもち,かつ,同

じ<カーソル名>を参照する<FETCH文>を直に含む二つの<外部呼出し手続>をEIP1及びEIP2とす

る。<ホストパラメタ宣言>の個数をnとする。EIP1のi番目の<ホストパラメタ宣言>をP1i,1 ≤ i 

≤ nとする。P1iに含まれる<データ型>をDT1iとする。EIP2のi番目の<ホストパラメタ宣言>を

P2iとする。P2iに含まれる<データ型>をDT2iとする。各i,1 ≤ i ≤ nに対して,次による。 

場合: 

a) DT1i及びDT2iが両方とも2進オクテット長大オブジェクト型を識別するならば,P1i及びP2i

は,両方とも2進オクテット長大オブジェクト位置付け子パラメタであるか,又は両方とも2進

オクテット長大オブジェクト位置付け子パラメタでないかのいずれかでなければならない。 

b) DT1i及びDT2iが両方とも文字長大オブジェクト型を識別するならば,P1i及びP2iは,両方とも

文字長大オブジェクト位置付け子パラメタであるか,又は両方とも文字長大オブジェクト位置付

け子パラメタでないかのいずれかでなければならない。 

c) DT1i及びDT2iの両方が利用者定義型を識別するならば,P1i及びP2iは,両方とも利用者定義型

672 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

位置付け子パラメタであるか,又は両方とも利用者定義型位置付け子パラメタでないかのいずれ

かでなければならない。 

アクセス規則 

なし。 

一般規則 

1) <SQLクライアントモジュール定義>中の<外部呼出し手続>の呼出しを実行するSQLエージェント

が,その<SQLクライアントモジュール定義>の<LANGUAGE句>によって指定されたプログラム言

語の仕様に適合するプログラムでないならば,その効果は,処理系依存とする。 

2) 二つ以上のAdaタスクからの<外部呼出し手続>の呼出しをSQLエージェントが実行するならば,

その結果は,処理系依存とする。 

3) FOR STATIC ONLYが指定されるならば,SQLクライアントモジュールは,そのモジュールに含ま

れる外部呼出し手続の実行の結果としてもたらされる被準備文が所有者をもたないことを示す標識

を含む。 

4) SQLエージェントによる<外部呼出し手続>の呼出しの最後の実行の後は,次による。 

a) 

09 <ROLLBACK文>又は<COMMIT文>が実効的に実行される。回復不可能な誤りが発生したか,

SQLエージェントが不意に終了したか,又はいずれかの強制制約が満たされないならば,

<ROLLBACK文>が実行される。そうでなければ,これらのSQL文のどちらが実行されるかの選

択は,処理系依存とする。処理系の選択が<COMMIT文>ならば,全ての保持可能カーソルが最初

に閉じられる。SQLエージェントが不意に終了したかどうかの決定は,処理系依存とする。 

b) SQLエージェントに関連付けられたSQLセション内で現在割り当てられているどのSQL記述子

領域に対しても,そのSQL記述子領域の<記述子名>をDとし,次のテキストを指定する

<DEALLOCATE DESCRIPTOR文>が実効的に実行される。 

DEALLOCATE DESCRIPTOR D 

c) SQLエージェントに関連付けられた全てのSQLセションを終了させる。 

適合性規則 

1) 機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<モジュールパ

ス指定>を含んではならない。 

2) 機能S241“変換関数”なしでは,適合するSQL言語は,<モジュール変換グループ指定>を含んで

はならない。 

3) 機能F693“SQLセション及びクライアントモジュールの照合順”なしでは,適合するSQL言語は,

<モジュール照合順指定>を含んではならない。 

4) 機能B051“拡張実行権”なしでは,適合するSQL言語は,FOR STATIC ONLY又はFOR STATIC 

AND DYNAMICを直に含む<モジュール認可句>を含んではならない。 

5) 機能B111“モジュール言語Ada”なしでは,適合するSQL言語は,ADAを含む<LANGUAGE句>

を含む<SQLクライアントモジュール定義>を含んではならない。 

6) 機能B112“モジュール言語C”なしでは,適合するSQL言語は,Cを含む<LANGUAGE句>を含む

<SQLクライアントモジュール定義>を含んではならない。 

7) 機能B113“モジュール言語COBOL”なしでは,適合するSQL言語は,COBOLを含む<LANGUAGE

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

8) 機能B114“モジュール言語Fortran”なしでは,適合するSQL言語は,FORTRANを含む<LANGUAGE

673 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

9) 機能B115“モジュール言語MUMPS”なしでは,適合するSQL言語は,Mを含む<LANGUAGE句

>を含む<SQLクライアントモジュール定義>を含んではならない。 

10) 機能B116“モジュール言語Pascal”なしでは,適合するSQL言語は,PASCALを含む<LANGUAGE

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

11) 機能B117“モジュール言語PL/I”なしでは,適合するSQL言語は,PLIを含む<LANGUAGE句>を

含む<SQLクライアントモジュール定義>を含んではならない。 

13.2 <モジュール名句> 

機能 

<モジュール名句> (<module name clause>) は,SQLクライアントモジュールに名前を付ける。 

形式 

<モジュール名句> ::= 

  MODULE [ <SQLクライアントモジュール名> ] [ <モジュール文字集合指定> ] 

<モジュール文字集合指定> ::= 

  NAMES ARE <文字集合指定> 

構文規則 

1) <モジュール名句>が<SQLクライアントモジュール名>を指定しないならば,<SQLクライアントモ

ジュール定義>は,名前なしとする。 

2) <SQLクライアントモジュール名>は,同じSQL環境中の他のどの<SQLクライアントモジュール定

義>の<SQLクライアントモジュール名>とも等価であってはならない。 

注記447 SQL環境は,複数の名前なしの<SQLクライアントモジュール定義>をもってもよい。 

3) <モジュール名句>を含む<SQLクライアントモジュール定義>の<LANGUAGE句>がADAを指定す

るならば,<SQLクライアントモジュール名>を指定しなければならず,その<SQLクライアントモ

ジュール名>は,正しいAdaライブラリ単位名 (Ada library unit name) でなければならない。 

4) <モジュール文字集合指定>が指定されないならば,少なくとも<SQL言語文字>中の全ての文字を含

む処理系定義の文字集合を指定する<モジュール文字集合指定>が暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) <SQLクライアントモジュール名>が指定されるならば,SQL環境中で,<モジュール名句>を含む

<SQLクライアントモジュール定義>は,<SQLクライアントモジュール名>によって与えられる名

前をもつ。 

適合性規則 

1) 機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<モジュール文字集合指定>を含

んではならない。 

13.3 <外部呼出し手続> 

この細分箇条は,ISO/IEC 9075-4の“11.1 <外部呼出し手続>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“14.2 <外部呼出し手続>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“13.1 <外部呼出し手続>”によって修正される。 

機能 

674 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<外部呼出し手続> (<externally-invoked procedure>) は,外部呼出し手続を定義する。 

形式 

<外部呼出し手続> ::= 

  PROCEDURE <手続名> <ホストパラメタ宣言リスト> <セミコロン> 

      <SQL手続文> <セミコロン> 

<ホストパラメタ宣言リスト> ::= 

  <左括弧> <ホストパラメタ宣言> 

      [ { <コンマ> <ホストパラメタ宣言> }... ] <右括弧> 

<ホストパラメタ宣言> ::= 

  <ホストパラメタ名> <ホストパラメタデータ型> 

| <状態パラメタ> 

<ホストパラメタデータ型> ::= 

  <データ型> [ <位置付け子標識> ] 

<状態パラメタ> ::= 

  SQLSTATE 

構文規則 

1) 

09 <手続名>は,<外部呼出し手続>を含む<SQLクライアントモジュール定義>中の他のどの<外部呼

出し手続>の<手続名>とも等価であってはならない。 

注記448 <手続名>は,当該<LANGUAGE句>によって指定される言語の,規格に適合する手続名,

関数名又はルーチン名であることが望ましい。この推奨を守ることを怠ると,処理系依

存の影響を伴う。 

2) <外部呼出し手続>中の各<ホストパラメタ宣言>の<ホストパラメタ名>は,その<外部呼出し手続>

中の他のどの<ホストパラメタ宣言>の<ホストパラメタ名>とも等価であってはならない。 

3) <外部呼出し手続>の<SQL手続文>に含まれるどの<ホストパラメタ名>も,その<外部呼出し手続>

中の<ホストパラメタ宣言>中で指定しなければならない。 

4) <位置付け子標識>が<ホストパラメタ宣言>に単純に含まれるならば,次による。 

a) <ホストパラメタデータ型>に直に含まれる<データ型>によって識別される宣言型Tは,2進オク

テット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又は利用者定義型

のいずれかでなければならない。 

b) Tが2進オクテット長大オブジェクト型ならば,<ホストパラメタ名>によって識別されるホスト

パラメタを2進オクテット長大オブジェクト位置付け子パラメタ (binary large object locator 

parameter) と呼ぶ。 

c) Tが文字長大オブジェクト型ならば,<ホストパラメタ名>によって識別されるホストパラメタを

文字長大オブジェクト位置付け子パラメタ (character large object locator parameter) と呼ぶ。 

d) Tが配列型ならば,<ホストパラメタ名>によって識別されるホストパラメタを配列位置付け子パ

ラメタ (array locator parameter) と呼ぶ。 

e) Tがマルチ集合型ならば,<ホストパラメタ名>によって識別されるホストパラメタをマルチ集合

位置付け子パラメタ (multiset locator parameter) と呼ぶ。 

f) Tが利用者定義型ならば,<ホストパラメタ名>によって識別されるホストパラメタを利用者定義

型位置付け子パラメタ (user-defined type locator parameter) と呼ぶ。 

675 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) <外部呼出し手続> EP中の<ホストパラメタ宣言>の個数をnとする。 

6) <外部呼出し手続>の呼出しは,n個の引数を与えなければならない。 

7) <外部呼出し手続>は,SQLSTATEホストパラメタ (SQLSTATE host parameter) として参照される一

つの<状態パラメタ>を含まなければならない。SQLSTATEホストパラメタを状態パラメタ (status 

parameter) として参照する。 

8) 各<ホストパラメタ宣言>に対して,対応するホストパラメタが入力ホストパラメタか,出力ホスト

パラメタか,又は入出力ホストパラメタ(入力ホストパラメタで,かつ,出力ホストパラメタ)か

を決定するために,<ホストパラメタ宣言>をHOST PARAM DECLとして,<SQL手続文>をSQL 

PROC STMTとして,“9.8 ホストパラメタモード決定”の構文規則を適用する。 

9) i番目の<ホストパラメタ宣言>をPDi,1 ≤ i ≤ nとする。PDiに含まれる<データ型>をPDTiとする。

PDiに対応する引数のデータ型をADTiとする。 

10) <外部呼出し手続>の呼出し元言語がADAならば,次による。 

a) SQL処理系は,Adaライブラリ単位パッケージALUPのソースコードを生成しなければならず,

それの名前は,次による。 

場合: 

i) 

<SQLクライアントモジュール定義>の<SQLクライアントモジュール名> SCMNが,正しいAda

識別子ならば,SCMNと等価でなければならない。 

ii) そうでなければ,処理系定義でなければならない。 

b) <SQLクライアントモジュール定義>の各<外部呼出し手続>に対して,手続を宣言する副プログラ

ム宣言 (subprogram declaration) がALUP内に現れなければならない。 

i) 

<手続名>が,正しいAda識別子ならば,その手続の名前PNは,<手続名>と等価でなければな

らない。そうでなければ,PNは,処理系定義でなければならない。 

ii) 各Ada手続宣言APD中のパラメタは,対応する<外部呼出し手続> EIPの<ホストパラメタ宣

言>と同じ順序で現れなければならない。EIPの<ホストパラメタ宣言>中で宣言されるパラメ

タの名前が,正しいAda識別子ならば,APD中のパラメタは,EIPに含まれる<ホストパラメ

タ宣言>中で宣言される対応するパラメタの名前と等価なパラメタ名をもたなければならない。

そうでなければ,APD中のパラメタは,処理系定義のパラメタ名をもたなければならない。 

iii) パラメタ仕様 (parameter specification) 中で用いるパラメタモード及び部分型標識 (subtype 

mark) は,この細分箇条の残りの段落によって制約される。 

c) 各i,1 ≤ i ≤ nに対して,PDiが<位置付け子標識>を含まないならば,PDTiは,表16“Adaのた

めのデータ型対応”の“Adaデータ型”列が“なし”の行の“SQLデータ型”列中に記載された

データ型を識別してはならない。 

d) Ada副プログラム宣言内のパラメタ仕様の型は,ライブラリ単位パッケージInterfaces.SQL,

それの子Numerics及びVARYING,並びに省略可能な子Adacsn及びAdacsn.VARYINGから

選ばなければならない。 

e) 

04 09 14 ライブラリ単位パッケージInterfaces.SQLの宣言は,次のテンプレートに適合しなけ

ればならない。 

package Interfaces.SQL is 

‒  CHAR及びNCHARの宣言は,部分型宣言でもよい。 

676 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  type CHAR is (構文規則参照) 

  type NCHAR is (構文規則参照) 

  type SMALLINT is range bs .. ts; 

  type INT is range bi .. ti; 

  type BIGINT is range bb .. tb; 

  type REAL is digits dr; 

  type DOUBLE̲PRECISION is digits dd; 

  type BOOLEAN is new Boolean; 

  subtype INDICATOR̲TYPE is t; 

  type SQLSTATE̲TYPE is new CHAR (1 .. 5); 

  package SQLSTATE̲CODES is 

    AMBIGUOUS̲CURSOR̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="3C000"; 

    ATTEMPT̲TO̲ASSIGN̲TO̲NON̲UPDATABLE̲COLUMN̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE := "0U000"; 

    ATTEMPT̲TO̲ASSIGN̲TO̲ORDERING̲COLUMN̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE := "0V000"; 

    CARDINALITY̲VIOLATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="21000"; 

    CLI̲SPECIFIC̲CONDITION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="HY000"; 

    CONNECTION̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="08000"; 

    CONNECTION̲EXCEPTION̲CONNECTION̲DOES̲NOT̲EXIST: 

      constant SQLSTATE̲TYPE :="08003"; 

    CONNECTION̲EXCEPTION̲CONNECTION̲FAILURE: 

      constant SQLSTATE̲TYPE :="08006"; 

    CONNECTION̲EXCEPTION̲CONNECTION̲NAME̲IN̲USE: 

      constant SQLSTATE̲TYPE :="08002"; 

    CONNECTION̲EXCEPTION̲SQLCLIENT̲UNABLE̲TO̲ESTABLISH̲SQLCONNECTION: 

      constant SQLSTATE̲TYPE :="08001"; 

    CONNECTION̲EXCEPTION̲SQLSERVER̲REJECTED̲ESTABLISHMENT̲OF̲SQLCONNECTION: 

      constant SQLSTATE̲TYPE :="08004"; 

    CONNECTION̲EXCEPTION̲TRANSACTION̲RESOLUTION̲UNKNOWN: 

      constant SQLSTATE̲TYPE :="08007"; 

    DATA̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="22000"; 

    DATA̲EXCEPTION̲ARRAY̲ELEMENT̲ERROR: 

      constant SQLSTATE̲TYPE :="2202E"; 

    DATA̲EXCEPTION̲ATTEMPT̲TO̲REPLACE̲A̲ZERO̲LENGTH̲STRING: 

677 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      constant SQLSTATE̲TYPE :="2201U"; 

    DATA̲EXCEPTION̲CHARACTER̲NOT̲IN̲REPERTOIRE: 

      constant SQLSTATE̲TYPE :="22021"; 

    DATA̲EXCEPTION̲DATETIME̲FIELD̲OVERFLOW: 

      constant SQLSTATE̲TYPE :="22008"; 

    DATA̲EXCEPTION̲DIVISION̲BY̲ZERO: 

      constant SQLSTATE̲TYPE :="22012"; 

    DATA̲EXCEPTION̲ERROR̲IN̲ASSIGNMENT: 

      constant SQLSTATE̲TYPE :="22005"; 

    DATA̲EXCEPTION̲ESCAPE̲CHARACTER̲CONFLICT: 

      constant SQLSTATE̲TYPE :="2200B"; 

    DATA̲EXCEPTION̲INDICATOR̲OVERFLOW: 

      constant SQLSTATE̲TYPE :="22022"; 

    DATA̲EXCEPTION̲INTERVAL̲FIELD̲OVERFLOW: 

      constant SQLSTATE̲TYPE :="22015"; 

    DATA̲EXCEPTION̲INTERVAL̲VALUE̲OUT̲OF̲RANGE: 

      constant SQLSTATE̲TYPE :="2200P"; 

    DATA̲EXCEPTION̲INVALID̲ARGUMENT̲FOR̲NATURAL̲LOGARITHM: 

      constant SQLSTATE̲TYPE :="2201E"; 

    DATA̲EXCEPTION̲INVALID̲ARGUMENT̲FOR̲NTILE̲FUNCTION: 

      constant SQLSTATE̲TYPE :="22014"; 

    DATA̲EXCEPTION̲INVALID̲ARGUMENT̲FOR̲NTH̲VALUE̲FUNCTION: 

      constant SQLSTATE̲TYPE :="22016"; 

    DATA̲EXCEPTION̲INVALID̲ARGUMENT̲FOR̲POWER̲FUNCTION: 

      constant SQLSTATE̲TYPE :="2201F"; 

    DATA̲EXCEPTION̲INVALID̲ARGUMENT̲FOR̲WIDTH̲BUCKET̲FUNCTION: 

      constant SQLSTATE̲TYPE :="2201G"; 

    DATA̲EXCEPTION̲INVALID̲CHARACTER̲VALUE̲FOR̲CAST: 

      constant SQLSTATE̲TYPE :="22018"; 

    DATA̲EXCEPTION̲INVALID̲DATETIME̲FORMAT: 

      constant SQLSTATE̲TYPE :="22007"; 

    DATA̲EXCEPTION̲INVALID̲ESCAPE̲CHARACTER: 

      constant SQLSTATE̲TYPE :="22019"; 

    DATA̲EXCEPTION̲INVALID̲ESCAPE̲OCTET: 

      constant SQLSTATE̲TYPE :="2200D"; 

    DATA̲EXCEPTION̲INVALID̲ESCAPE̲SEQUENCE: 

      constant SQLSTATE̲TYPE :="22025"; 

    DATA̲EXCEPTION̲INVALID̲INDICATOR̲PARAMETER̲VALUE: 

      constant SQLSTATE̲TYPE :="22010"; 

    DATA̲EXCEPTION̲INVALID̲INTERVAL̲FORMAT: 

678 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      constant SQLSTATE̲TYPE :="22006"; 

    DATA̲EXCEPTION̲INVALID̲PARAMETER̲VALUE: 

      constant SQLSTATE̲TYPE :="22023"; 

    DATA̲EXCEPTION̲INVALID̲PERIOD̲VALUE: 

      constant SQLSTATE̲TYPE :="22020"; 

    DATA̲EXCEPTION̲INVALID̲PRECEDING̲OR̲FOLLOWING̲SIZE̲IN̲WINDOW̲FUNCTION: 

      constant SQLSTATE̲TYPE :="22013"; 

    DATA̲EXCEPTION̲INVALID̲REGULAR̲EXPRESSION: 

      constant SQLSTATE̲TYPE :="2201B"; 

    DATA̲EXCEPTION̲INVALID̲REPEAT̲ARGUMENT̲IN̲A̲SAMPLE̲CLAUSE: 

      constant SQLSTATE̲TYPE :="2202G"; 

    DATA̲EXCEPTION̲INVALID̲ROW̲COUNT̲IN̲FETCH̲FIRST̲CLAUSE: 

      constant SQLSTATE̲TYPE :="2201W"; 

    DATA̲EXCEPTION̲INVALID̲ROW̲COUNT̲IN̲RESULT̲OFFSET̲CLAUSE: 

      constant SQLSTATE̲TYPE :="2201X"; 

    DATA̲EXCEPTION̲INVALID̲ROW̲VERSION: 

      constant SQLSTATE̲TYPE :="2201H"; 

    DATA̲EXCEPTION̲INVALID̲SAMPLE̲SIZE: 

      constant SQLSTATE̲TYPE :="2202H"; 

    DATA̲EXCEPTION̲INVALID̲TIME̲ZONE̲DISPLACEMENT̲VALUE: 

      constant SQLSTATE̲TYPE :="22009"; 

    DATA̲EXCEPTION̲INVALID̲USE̲OF̲ESCAPE̲CHARACTER: 

      constant SQLSTATE̲TYPE :="2200C"; 

    DATA̲EXCEPTION̲INVALID̲XQUERY̲OPTION̲FLAG: 

      constant SQLSTATE̲TYPE :="2201T"; 

    DATA̲EXCEPTION̲INVALID̲XQUERY̲REGULAR̲EXPRESSION: 

      constant SQLSTATE̲TYPE :="2201S"; 

    DATA̲EXCEPTION̲INVALID̲XQUERY̲REPLACEMENT̲STRING: 

      constant SQLSTATE̲TYPE :="2201V"; 

    DATA̲EXCEPTION̲NULL̲VALUE̲NO̲INDICATOR̲PARAMETER: 

      constant SQLSTATE̲TYPE :="2200G"; 

    DATA̲EXCEPTION̲MOST̲SPECIFIC̲TYPE̲MISMATCH: 

      constant SQLSTATE̲TYPE :="22002"; 

    DATA̲EXCEPTION̲MULTISET̲VALUE̲OVERFLOW: 

      constant SQLSTATE̲TYPE :="2200Q"; 

    DATA̲EXCEPTION̲NONCHARACTER̲IN̲UCS̲STRING: 

      constant SQLSTATE̲TYPE :="22029"; 

    DATA̲EXCEPTION̲NULL̲VALUE̲NOT̲ALLOWED: 

      constant SQLSTATE̲TYPE :="22004"; 

    DATA̲EXCEPTION̲NULL̲VALUE̲SUBSTITUTED̲FOR̲MUTATOR̲SUBJECT̲PARAMETER: 

679 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      constant SQLSTATE̲TYPE :="2202D"; 

    DATA̲EXCEPTION̲NUMERIC̲VALUE̲OUT̲OF̲RANGE: 

      constant SQLSTATE̲TYPE :="22003"; 

    DATA̲EXCEPTION̲SEQUENCE̲GENERATOR̲LIMIT̲EXCEEDED: 

      constant SQLSTATE̲TYPE :="2200H"; 

    DATA̲EXCEPTION̲STRING̲DATA̲LENGTH̲MISMATCH: 

      constant SQLSTATE̲TYPE :="22026"; 

    DATA̲EXCEPTION̲STRING̲DATA̲RIGHT̲TRUNCATION: 

      constant SQLSTATE̲TYPE :="22001"; 

    DATA̲EXCEPTION̲SUBSTRING̲ERROR: 

      constant SQLSTATE̲TYPE :="22011"; 

    DATA̲EXCEPTION̲TRIM̲ERROR: 

      constant SQLSTATE̲TYPE :="22027"; 

    DATA̲EXCEPTION̲UNTERMINATED̲C̲STRING: 

      constant SQLSTATE̲TYPE :="22024"; 

    DATA̲EXCEPTION̲ZERO̲LENGTH̲CHARACTER̲STRING: 

      constant SQLSTATE̲TYPE :="2200F"; 

    DEPENDENT̲PRIVILEGE̲DESCRIPTORS̲STILL̲EXIST̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="2B000"; 

    DIAGNOSTICS̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0Z000"; 

    DIAGNOSTICS̲EXCEPTION̲MAXIMUM̲NUMBER̲OF̲DIAGNOSTICS̲AREAS̲EXCEEDED: 

      constant SQLSTATE̲TYPE :="0Z001"; 

    DYNAMIC̲SQL̲ERROR̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE := "07000"; 

    DYNAMIC̲SQL̲ERROR̲CURSOR̲SPECIFICATION̲CANNOT̲BE̲EXECUTED: 

      constant SQLSTATE̲TYPE := "07003"; 

    DYNAMIC̲SQL̲ERROR̲INVALID̲DATETIME̲INTERVAL̲CODE: 

      constant SQLSTATE̲TYPE := "0700F"; 

    DYNAMIC̲SQL̲ERROR̲INVALID̲DESCRIPTOR̲COUNT: 

      constant SQLSTATE̲TYPE := "07008"; 

    DYNAMIC̲SQL̲ERROR̲INVALID̲DESCRIPTOR̲INDEX: 

      constant SQLSTATE̲TYPE := "07009"; 

    DYNAMIC̲SQL̲ERROR̲PREPARED̲STATEMENT̲NOT̲A̲CURSOR̲SPECIFICATION: 

      constant SQLSTATE̲TYPE := "07005"; 

    DYNAMIC̲SQL̲ERROR̲RESTRICTED̲DATA̲TYPE̲ATTRIBUTE̲VIOLATION: 

      constant SQLSTATE̲TYPE := "07006"; 

    DYNAMIC̲SQL̲ERROR̲DATA̲TYPE̲TRANSFORM̲FUNCTION̲VIOLATION: 

      constant SQLSTATE̲TYPE := "0700B"; 

    DYNAMIC̲SQL̲ERROR̲INVALID̲DATA̲TARGET: 

680 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      constant SQLSTATE̲TYPE := "0700D"; 

    DYNAMIC̲SQL̲ERROR̲INVALID̲LEVEL̲VALUE: 

      constant SQLSTATE̲TYPE := "0700E"; 

    DYNAMIC̲SQL̲ERROR̲UNDEFINED̲DATA̲VALUE: 

      constant SQLSTATE̲TYPE := "0700C"; 

    DYNAMIC̲SQL̲ERROR̲USING̲CLAUSE̲DOES̲NOT̲MATCH̲DYNAMIC̲PARAMETER̲SPEC: 

      constant SQLSTATE̲TYPE := "07001"; 

    DYNAMIC̲SQL̲ERROR̲USING̲CLAUSE̲DOES̲NOT̲MATCH̲TARGET̲SPEC: 

      constant SQLSTATE̲TYPE := "07002"; 

    DYNAMIC̲SQL̲ERROR̲USING̲CLAUSE̲REQUIRED̲FOR̲DYNAMIC̲PARAMETERS: 

      constant SQLSTATE̲TYPE := "07004"; 

    DYNAMIC̲SQL̲ERROR̲USING̲CLAUSE̲REQUIRED̲FOR̲RESULT̲FIELDS: 

      constant SQLSTATE̲TYPE := "07007"; 

    EXTERNAL̲ROUTINE̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="38000"; 

    EXTERNAL̲ROUTINE̲EXCEPTION̲CONTAINING̲SQL̲NOT̲PERMITTED: 

      constant SQLSTATE̲TYPE :="38001"; 

    EXTERNAL̲ROUTINE̲EXCEPTION̲MODIFYING̲SQL̲DATA̲NOT̲PERMITTED: 

      constant SQLSTATE̲TYPE :="38002"; 

    EXTERNAL̲ROUTINE̲EXCEPTION̲PROHIBITED̲SQL̲STATEMENT̲ATTEMPTED: 

      constant SQLSTATE̲TYPE :="38003"; 

    EXTERNAL̲ROUTINE̲EXCEPTION̲READING̲SQL̲DATA̲NOT̲PERMITTED: 

      constant SQLSTATE̲TYPE :="38004"; 

    EXTERNAL̲ROUTINE̲INVOCATION̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="39000"; 

    EXTERNAL̲ROUTINE̲INVOCATION̲EXCEPTION̲NULL̲VALUE̲NOT̲ALLOWED: 

      constant SQLSTATE̲TYPE :="39004"; 

    FEATURE̲NOT̲SUPPORTED̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0A000"; 

    FEATURE̲NOT̲SUPPORTED̲MULTIPLE̲ENVIRONMENT̲TRANSACTIONS: 

      constant SQLSTATE̲TYPE :="0A001"; 

    INTEGRITY̲CONSTRAINT̲VIOLATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="23000"; 

    INTEGRITY̲CONSTRAINT̲VIOLATION̲RESTRICT̲VIOLATION: 

      constant SQLSTATE̲TYPE :="23001"; 

    INVALID̲AUTHORIZATION̲SPECIFICATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="28000"; 

    INVALID̲CATALOG̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="3D000"; 

    INVALID̲CHARACTER̲SET̲NAME̲NO̲SUBCLASS: 

681 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      constant SQLSTATE̲TYPE :="2C000"; 

    INVALID̲COLLATION̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="2H000"; 

    INVALID̲CONDITION̲NUMBER̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="35000"; 

    INVALID̲CONNECTION̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="2E000"; 

    INVALID̲CURSOR̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="34000"; 

    INVALID̲CURSOR̲STATE̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="24000"; 

    INVALID̲GRANTOR̲STATE̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0L000"; 

    INVALID̲ROLE̲SPECIFICATION: 

      constant SQLSTATE̲TYPE :="0P000"; 

    INVALID̲SCHEMA̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="3F000"; 

    INVALID̲SCHEMA̲NAME̲LIST̲SPECIFICATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0E000"; 

    INVALID̲SQL̲DESCRIPTOR̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="33000"; 

    INVALID̲SQL̲INVOKED̲PROCEDURE̲REFERENCE̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0M000"; 

    INVALID̲SQL̲STATEMENT: 

      constant SQLSTATE̲TYPE :="30000"; 

    INVALID̲SQL̲STATEMENT̲IDENTIFIER̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="30000"; 

    INVALID̲SQL̲STATEMENT̲NAME̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="26000"; 

    INVALID̲TRANSFORM̲GROUP̲NAME̲SPECIFICATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0S000"; 

    INVALID̲TRANSACTION̲STATE̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="25000"; 

    INVALID̲TRANSACTION̲STATE̲ACTIVE̲SQL̲TRANSACTION: 

      constant SQLSTATE̲TYPE :="25001"; 

    INVALID̲TRANSACTION̲STATE̲BRANCH̲TRANSACTION̲ALREADY̲ACTIVE: 

      constant SQLSTATE̲TYPE :="25002"; 

    INVALID̲TRANSACTION̲STATE̲HELD̲CURSOR̲REQUIRES̲SAME̲ISOLATION̲LEVEL: 

      constant SQLSTATE̲TYPE :="25008"; 

    INVALID̲TRANSACTION̲STATE̲INAPPROPRIATE̲ACCESS̲MODE̲FOR̲BRANCH̲TRANSACTION: 

682 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      constant SQLSTATE̲TYPE :="25003"; 

    INVALID̲TRANSACTION̲STATE̲INAPPROPRIATE̲ISOLATION̲LEVEL̲FOR̲BRANCH̲TRANSACTION: 

      constant SQLSTATE̲TYPE :="25004"; 

    INVALID̲TRANSACTION̲STATE̲NO̲ACTIVE̲SQL̲TRANSACTION̲FOR̲BRANCH̲TRANSACTION: 

      constant SQLSTATE̲TYPE :="25005"; 

    INVALID̲TRANSACTION̲STATE̲READ̲ONLY̲SQL̲TRANSACTION: 

      constant SQLSTATE̲TYPE :="25006"; 

    INVALID̲TRANSACTION̲STATE̲SCHEMA̲AND̲DATA̲STATEMENT̲MIXING̲NOT̲SUPPORTED: 

      constant SQLSTATE̲TYPE :="25007"; 

    INVALID̲TRANSACTION̲TERMINATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="2D000"; 

    LOCATOR̲EXCEPTION̲INVALID̲SPECIFICATION: 

      constant SQLSTATE̲TYPE :="0F001"; 

    LOCATOR̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0F000"; 

    NO̲DATA̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="02000"; 

    NO̲DATA̲NO̲ADDITIONAL̲RESULT̲SETS̲RETURNED: 

      constant SQLSTATE̲TYPE :="02001"; 

    PROHIBITED̲STATEMENT̲DURING̲TRIGGER̲EXECUTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE := "0W000"; 

    PROHIBITED̲STATEMENT̲DURING̲TRIGGER̲EXECUTION̲MODIFY̲TABLE̲MODIFIED̲ 

BY̲DATA̲CHANGE̲DELTA̲TABLE: 

      constant SQLSTATE̲TYPE := "0W001"; 

    REMOTE̲DATABASE̲ACCESS̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="HZ000"; 

    SAVEPOINT̲EXCEPTION̲INVALID̲SPECIFICATION: 

      constant SQLSTATE̲TYPE :="3B001"; 

    SAVEPOINT̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="3B000"; 

    SAVEPOINT̲EXCEPTION̲TOO̲MANY: 

      constant SQLSTATE̲TYPE :="3B002"; 

    SQL̲ROUTINE̲EXCEPTION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="2F000"; 

    SQL̲ROUTINE̲EXCEPTION̲FUNCTION̲EXECUTED̲NO̲RETURN̲STATEMENT: 

      constant SQLSTATE̲TYPE :="2F005"; 

    SQL̲ROUTINE̲EXCEPTION̲MODIFYING̲SQL̲DATA̲NOT̲PERMITTED: 

      constant SQLSTATE̲TYPE :="2F002"; 

    SQL̲ROUTINE̲EXCEPTION̲PROHIBITED̲SQL̲STATEMENT̲ATTEMPTED: 

      constant SQLSTATE̲TYPE :="2F003"; 

683 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    SQL̲ROUTINE̲EXCEPTION̲READING̲SQL̲DATA̲NOT̲PERMITTED: 

      constant SQLSTATE̲TYPE :="2F004"; 

    SUCCESSFUL̲COMPLETION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="00000"; 

    SYNTAX̲ERROR̲OR̲ACCESS̲RULE̲VIOLATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="42000"; 

    SYNTAX̲ERROR̲OR̲ACCESS̲RULE̲VIOLATION̲IN̲DIRECT̲STATEMENT̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="2A000"; 

    SYNTAX̲ERROR̲OR̲ACCESS̲RULE̲VIOLATION̲IN̲DYNAMIC̲STATEMENT̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="37000"; 

    TARGET̲TABLE̲DISAGREES̲WITH̲CURSOR̲SPECIFICATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="0T000"; 

    TRANSACTION̲ROLLBACK̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="40000"; 

    TRANSACTION̲ROLLBACK̲INTEGRITY̲CONSTRAINT̲VIOLATION: 

      constant SQLSTATE̲TYPE :="40002"; 

    TRANSACTION̲ROLLBACK̲SERIALIZATION̲FAILURE: 

      constant SQLSTATE̲TYPE :="40001"; 

    TRANSACTION̲ROLLBACK̲STATEMENT̲COMPLETION̲UNKNOWN: 

      constant SQLSTATE̲TYPE :="40003"; 

    TRIGGERED̲DATA̲CHANGE̲VIOLATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="27000"; 

    TRIGGERED̲DATA̲CHANGE̲VIOLATION̲MODIFY̲TABLE̲MODIFIED̲BY̲DATA̲CHANGE̲DELTA̲TABLE: 

      constant SQLSTATE̲TYPE := "27001"; 

    WARNING̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="01000"; 

    WARNING̲ADDITIONAL̲RESULT̲SETS̲RETURNED: 

      constant SQLSTATE̲TYPE :="0100D"; 

    WARNING̲ARRAY̲DATA̲RIGHT̲TRUNCATION: 

      constant SQLSTATE̲TYPE :="0102F"; 

    WARNING̲ATTEMPT̲TO̲RETURN̲TOO̲MANY̲RESULT̲SETS: 

      constant SQLSTATE̲TYPE :="0100E"; 

    WARNING̲CURSOR̲OPERATION̲CONFLICT: 

      constant SQLSTATE̲TYPE :="01001"; 

    WARNING̲DEFAULT̲VALUE̲TOO̲LONG̲FOR̲INFORMATION̲SCHEMA: 

      constant SQLSTATE̲TYPE :="0100B"; 

    WARNING̲DISCONNECT̲ERROR: 

      constant SQLSTATE̲TYPE :="01002"; 

    WARNING̲DYNAMIC̲RESULT̲SETS̲RETURNED: 

      constant SQLSTATE̲TYPE :="0100C"; 

684 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    WARNING̲INSUFFICIENT̲ITEM̲DESCRIPTOR̲AREAS: 

      constant SQLSTATE̲TYPE :="01005"; 

    WARNING̲NULL̲VALUE̲ELIMINATED̲IN̲SET̲FUNCTION: 

      constant SQLSTATE̲TYPE :="01003"; 

    WARNING̲PRIVILEGE̲NOT̲GRANTED: 

      constant SQLSTATE̲TYPE :="01007"; 

    WARNING̲PRIVILEGE̲NOT̲REVOKED: 

      constant SQLSTATE̲TYPE :="01006"; 

    WARNING̲QUERY̲EXPRESSION̲TOO̲LONG̲FOR̲INFORMATION̲SCHEMA: 

      constant SQLSTATE̲TYPE :="0100A"; 

    WARNING̲RESULT̲SETS̲RETURNED: 

      constant SQLSTATE̲TYPE :="0100C"; 

    WARNING̲SEARCH̲CONDITION̲TOO̲LONG̲FOR̲INFORMATION̲SCHEMA: 

      constant SQLSTATE̲TYPE :="01009"; 

    WARNING̲STATEMENT̲TOO̲LONG̲FOR̲INFORMATION̲SCHEMA: 

      constant SQLSTATE̲TYPE :="0100F"; 

    WARNING̲STRING̲DATA̲RIGHT̲TRUNCATION̲WARNING: 

      constant SQLSTATE̲TYPE :="01004"; 

    WITH̲CHECK̲OPTION̲VIOLATION̲NO̲SUBCLASS: 

      constant SQLSTATE̲TYPE :="44000"; 

  end SQLSTATE̲CODES; 

end Interfaces.SQL; 

ここで,bs,ts,bi,ti,bb,tb,dr,dd,bsc及びtscは,処理系定義の整数値とする。tは,標識

パラメタの処理系定義の<真数型>に対応するINT又はSMALLINTとする。 

ライブラリ単位パッケージInterfaces.SQLは,後続の構文規則で規定するとおり,追加の

宣言を含んでもよい。 

注記449 Ada識別子INVALID̲SQL̲STATEMENTは,JIS X 3005 (ISO/IEC 9075) 規格群の前の

版との互換性のために現れる。しかし,目的とする記号は,

INVALID̲SQL̲STATEMENT̲IDENTIFIER̲NO̲SUBCLASSであり,これは,例外条件

名に正確に対応付けるために追加された。 

f) 

ライブラリ単位パッケージInterfaces.SQL.Numericsは,次の形式の10進固定小数点型宣

言の並びを含まなければならない。 

type Scale̲s is delta 10.0 **−s digits max̲p; 

ここで,sは,0から処理系定義の最大値までの範囲の整数とし,max̲pは,処理系定義の,整

数の最大精度とする。 

g) ライブラリ単位パッケージInterfaces.SQL.VARYINGは,定義識別子CHAR及びNCHARを

もつ型宣言 (type declaration) 又は部分型宣言 (subtype declaration) を含まなければならない。これ

らの型宣言又は部分型宣言の定義は,処理系定義とするが,それぞれ,SQLデータ型の

CHARACTER VARYING及びNATIONAL CHARACTER VARYINGを提供しなければならない。 

685 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

h) <文字集合名>をSQLcsnとし,SQLcsn中の<ピリオド>を<下線文字>に置き換えた結果をAdacsn

とする。Adacsnが,正しいAda識別子ならば,ライブラリ単位パッケージ

Interfaces.SQL.Adacsn及びInterfaces.SQL.Adacsn.VARYINGは,定義識別子CHAR

をもつ型宣言又は部分型宣言を含まなければならない。Adacsnが,正しいAda識別子でないなら

ば,これらのパッケージの名前は,処理系定義でなければならない。 

i) 

Interfaces.SQL及びそれの子は,必要に応じて,文脈節 (context clause) 及び表現項目 

(representation item) を含んでもよい。これらのパッケージは,型CHAR及びNCHARの宣言を提

供するために,必要に応じて,Ada文字型の宣言も含んでもよい。Interfaces.SQL.CHAR及び

Interfaces.SQL.NCHARの定義は,処理系定義とするが,それぞれ,SQLデータ型の

CHARACTER及びNATIONAL CHARACTERを提供しなければならない。 

注記450 固定長文字列型に既定で用いる処理系定義の文字集合指定がLatin1ならば,(適切な

文脈節を仮定した)Interfaces.SQL内の次の宣言 

subtype CHAR is String; 

及びInterfaces.SQL.VARYING内の次の宣言 

subtype CHAR is 

    Ada.Strings.Unbounded.Unbounded̲String; 

が,この細分箇条のこの段落の要件に適合する。NATIONAL CHARACTERの基となる

文字集合が,与えられた文字集合上の文字列を格納する型String̲Typeを宣言する

Adaパッケージ仕様 (Ada package specification) Host̲Char̲Pkg,及び,さらに,(Latin1

以外の)各国文字列型上のAda.Strings.Unbounded.Unbounded̲Stringの機能

性を再現する型String̲Type̲Varyingを宣言する(Host̲Char̲Pkgとは必ずし

も異ならない)パッケージ仕様Host̲Char̲Pkg̲Varyingによって提供されるなら

ば,Interfaces.SQL内の次の宣言 

subtype NCHAR is Host̲Char̲Pkg.String̲Type; 

及びInterfaces.SQL.VARYING内の次の宣言 

subtype NCHAR is Host̲Char̲Pkg̲Varying.String̲Type̲Varying; 

が,この段落の要件に適合する。同様の注釈が,他の文字集合,並びにパッケージ

Interfaces.SQL.Adacsn及びInterfaces.SQL.Adacsn.VARYINGに適用され

る。 

j) 

ライブラリ単位パッケージInterfaces.SQLは,次の形式の宣言を含まなければならない。 

package CHARACTER̲SET renames Interfaces.SQL.Adacsn; 

subtype CHARACTER̲TYPE is CHARACTER̲SET.cst; 

ここで,cstは,既定文字集合からの単一の文字を格納することができるデータ型とする。パッケ

ージInterfaces.SQL.Adacsnは,cstに必要な宣言を含まなければならない。 

注記451 既定文字集合がLatin1ならば,次の形式の宣言は,CHARACTER̲SETの別名宣言 

(renaming declaration) で代用してもよい。 

package CHARACTER̲SET is 

  subtype cst is Character; 

end CHARACTER̲SET; 

k) SQLSTATEパラメタの基底型 (base type) は,Interfaces.SQL.SQLSTATE̲TYPEでなければな

686 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

らない。 

l) 

SQLSTATEパラメタのAdaパラメタモード (Ada parameter mode) は,outとする。 

m) i番目の<ホストパラメタ宣言>が指定する<データ型>によって,次による。 

i) 

あるLのCHARACTER(L) ならば,i番目のパラメタ宣言中の部分型標識は,

Interfaces.SQL.CHARを指定しなければならない。 

ii) あるLのCHARACTER VARYING (L) ならば,i番目のパラメタ宣言中の部分型標識は,

Interfaces.SQL.VARYING.CHARを指定しなければならない。 

iii) あるLのNATIONAL CHARACTER (L) ならば,i番目のパラメタ宣言中の部分型標識は,

Interfaces.SQL.NCHARを指定しなければならない。 

iv) あるLのNATIONAL CHARACTER VARYING (L) ならば,i番目のパラメタ宣言中の部分型標

識は,Interfaces.SQL.VARYING.NCHARを指定しなければならない。 

v) あるLで,かつ,ある文字集合名csnのCHARACTER(L) CHARACTER SET csnならば,i番目

のパラメタ宣言中の部分型標識は,Interfaces.SQL.Adacsn.CHARを指定しなければなら

ない。 

vi) あるLで,かつ,ある文字集合名csnのCHARACTER VARYING (L) CHARACTER SET csnな

らば,i番目のパラメタ宣言中の部分型標識は,Interfaces.SQL.Adacsn.VARYING.CHAR

を指定しなければならない。 

Pが,包含している手続 (encompassing procedure) の呼出し中での,i番目のパラメタに関連付け

られた実パラメタ (actual parameter) ならば,Pは,適切な文字集合中の長さLの文字列を格納す

るために十分でなければならない。 

注記452 文字集合が固定長の符号化を用いるならば,固定長文字列のための部分型CHARの定

義は,要素型 (element type) がAda文字型 (Ada character type) の配列型 (array type) 

であってもよい。SQL符号化によって用いられる文字ごとのビット数を用いるために,

そのAda文字型が定義されるならば,Pに関する制限は,正確に,P'LENGTH = Lであ

る。固定長の符号化を用いる可変長文字列に対して,適切なVARYINGパッケージ中

のCHARの定義が型Ada.Strings.Unbounded.Unbounded̲Stringに基づくな

らば,Pに関する制限がない。そうでなければ,Pに関する制限の正確な記述は,処理

系定義である。 

n) ある<精度> Pで,かつ,<位取り> SのNUMERIC(P,S) である<データ型>を,i番目の<ホストパ

ラメタ宣言>が指定するならば,包含しているモジュールに対して生成されるAdaライブラリ単

位パッケージは,次の指定と等しい宣言を含まなければならない。 

subtype Numeric̲p̲s is 

  Interfaces.SQL.Numerics.Scale̲s digits p; 

i番目のパラメタ宣言中の部分型標識は,この部分型を指定しなければならない。 

o) SMALLINTである<データ型>をi番目の<ホストパラメタ宣言>が指定するならば,i番目のパラ

メタ宣言中の部分型標識は,Interfaces.SQL.SMALLINTを指定しなければならない。 

p) INTEGERである<データ型>をi番目の<ホストパラメタ宣言>が指定するならば,i番目のパラメ

タ宣言中の部分型標識は,Interfaces.SQL.INTを指定しなければならない。 

q) BIGINTである<データ型>をi番目の<ホストパラメタ宣言>が指定するならば,i番目のパラメタ

宣言中の部分型標識は,Interfaces.SQL.BIGINTを指定しなければならない。 

687 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

r) REALである<データ型>をi番目の<ホストパラメタ宣言>が指定するならば,i番目のパラメタ宣

言中の部分型標識は,Interfaces.SQL.REALを指定しなければならない。 

s) DOUBLE̲PRECISIONである<データ型>をi番目の<ホストパラメタ宣言>が指定するならば,i番

目のパラメタ宣言中の部分型標識は,Interfaces.SQL.DOUBLE̲PRECISIONを指定しなけれ

ばならない。 

t) 

<位置付け子標識>をi番目の<ホストパラメタ宣言>が指定するならば,i番目のパラメタ宣言中

の部分型標識は,Interfaces.SQL.INTを指定しなければならない。 

u) どのパラメタに対しても,次による。 

場合: 

i) 

パラメタが入力パラメタであるが,出力パラメタでないならば,Adaパラメタモードは,inと

する。 

ii) パラメタが出力パラメタであるが,入力パラメタでないならば,Adaパラメタモードは,outと

する。 

iii) パラメタが入出力パラメタ(入力パラメタで,かつ,出力パラメタ)ならば,Adaパラメタモ

ードは,in outとする。 

iv) そうでなければ,Adaパラメタモードは,in,out又はin outとする。 

v) 次のAdaライブラリ単位別名宣言 (Ada library unit renaming declaration) が存在する。 

with Interfaces.SQL; 

package SQL̲Standard renames Interfaces.SQL. 

11) <外部呼出し手続>の呼出し元言語がCならば,次による。 

a) SQLSTATEホストパラメタの宣言型は,長さ6のCのcharでなければならない。 

b) 各i,1 ≤ i ≤ nに対して,次による。 

場合: 

i) 

PDiが<位置付け子標識>を含むならば,ADTiは,Cのunsigned longでなければならない。 

ii) そうでなければ,次による。 

1) PDTiは,表17“Cのためのデータ型対応”の“Cデータ型”列が“なし”の行の“SQLデー

タ型”列中に記載されたデータ型を識別してはならない。 

2) ADTiは,表17“Cのためのデータ型対応”の“SQLデータ型”列がPDTiの行の“Cデータ

型”列中に記載されたデータ型でなければならない。 

12) <外部呼出し手続>の呼出し元言語がCOBOLならば,次による。 

a) SQLSTATEホストパラメタの宣言型は,COBOLのPICTURE X(5) でなければならない。 

b) 各i,1 ≤ i ≤ nに対して,次による。 

場合: 

i) 

PDiが<位置付け子標識>を含むならば,ADTiは,COBOLのPIC S9(9) USAGE IS BINARY

でなければならない。 

ii) そうでなければ,次による。 

1) PDTiは,表18“COBOLのためのデータ型対応”の“COBOLデータ型”列が“なし”の行

の“SQLデータ型”列中に記載されたデータ型を識別してはならない。 

2) ADTiは,表18“COBOLのためのデータ型対応”の“SQLデータ型”列がPDTiの行の“COBOL

データ型”列中に記載されたデータ型でなければならない。 

688 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

13) <外部呼出し手続>の呼出し元言語がFORTRANならば,次による。 

a) SQLSTATEホストパラメタの宣言型は,長さ5のFortranのCHARACTERでなければならない。 

b) 各i,1 ≤ i ≤ nに対して,次による。 

場合: 

i) 

PDiが<位置付け子標識>を含むならば,ADTiは,FortranのINTEGERでなければならない。 

ii) そうでなければ,次による。 

1) PDTiは,表19“Fortranのためのデータ型対応”の“Fortranデータ型”列が“なし”の行の

“SQLデータ型”列中に記載されたデータ型を識別してはならない。 

2) ADTiは,表19“Fortranのためのデータ型対応”の“SQLデータ型”列がPDTiの行の“Fortran

データ型”列中に記載されたデータ型でなければならない。 

14) <外部呼出し手続>の呼出し元言語がMならば,次による。 

a) SQLSTATEホストパラメタの宣言型は,Mのcharacterでなければならない。 

b) 各i,1 ≤ i ≤ nに対して,次による。 

場合: 

i) 

PDiが<位置付け子標識>を含むならば,ADTiは,Mのcharacterでなければならない。 

ii) そうでなければ,次による。 

1) PDTiは,表20“Mのためのデータ型対応”の“Mデータ型”列が“なし”の行の“SQLデ

ータ型”列中に記載されたデータ型を識別してはならない。 

2) ADTiは,表20“Mのためのデータ型対応”の“SQLデータ型”列がPDTiの行の“Mデー

タ型”列中に記載されたデータ型でなければならない。 

15) <外部呼出し手続>の呼出し元言語がPASCALならば,次による。 

a) SQLSTATEホストパラメタの宣言型は,PascalのPACKED ARRAY[1..5] OF CHARでなければ

ならない。 

b) 各i,1 ≤ i ≤ nに対して,次による。 

場合: 

i) 

PDiが<位置付け子標識>を含むならば,ADTiは,PascalのINTEGERでなければならない。 

ii) そうでなければ,次による。 

1) PDTiは,表21“Pascalのためのデータ型対応”の“Pascalデータ型”列が“なし”の行の“SQL

データ型”列中に記載されたデータ型を識別してはならない。 

2) ADTiは,表21“Pascalのためのデータ型対応”の“SQLデータ型”列がPDTiの行の“Pascal

データ型”列中に記載されたデータ型でなければならない。 

16) <外部呼出し手続>の呼出し元言語がPLIならば,次による。 

a) SQLSTATEホストパラメタの宣言型は,PL/IのCHARACTER(5) でなければならない。 

b) 各i,1 ≤ i ≤ nに対して,次による。 

場合: 

i) 

PDiが<位置付け子標識>を含むならば,ADTiは,PL/IのINTEGERでなければならない。 

ii) そうでなければ,次による。 

1) PDTiは,表22“PL/Iのためのデータ型対応”の“PL/Iデータ型”列が“なし”の行の“SQL

データ型”列中に記載されたデータ型を識別してはならない。 

2) ADTiは,表22“PL/Iのためのデータ型対応”の“SQLデータ型”列がPDTiの行の“PL/Iデ

689 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ータ型”列中に記載されたデータ型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <外部呼出し手続>は,SQLエージェントによって呼び出されてもよい外部呼出し手続 (externally-

invoked procedure) を定義する。 

2) <外部呼出し手続>を含む<SQLクライアントモジュール定義>が,等価な<手続名>をもつ<外部呼出

し手続>を含む別の<SQLクライアントモジュール定義>に関連付けられているSQLエージェントに

関連付けられるならば,その効果は,処理系定義とする。 

3) <外部呼出し手続>を含む<SQLクライアントモジュール定義>の<LANGUAGE句>に含まれる<言語

名>によって識別される言語は,<外部呼出し手続>の呼出し元言語 (caller language) とする。 

4) <外部呼出し手続>の呼出しを実行するSQLエージェントが,<外部呼出し手続>の呼出し元言語に

よって指定されるプログラム言語の仕様に適合するプログラムでないならば,その効果は,処理系

依存とする。 

5) <外部呼出し手続>の呼出し元言語がADAで,かつ,二つ以上のAdaタスクからの<外部呼出し手続

>の呼出しをSQLエージェントが実行するならば,その結果は,処理系依存とする。 

6) <外部呼出し手続>を含む<SQLクライアントモジュール定義>が,SQLセションの<認可識別子> SAI

と等価でない陽に指定される<モジュール認可識別子> MAIをもつならば,次による。 

a) 陽に指定される<モジュール認可識別子> MAIをもつ<SQLクライアントモジュール定義>中の<

外部呼出し手続>をSAIが呼び出すことができるかどうかは,そのような呼出しに関する制限を

含めて,処理系定義とする。 

b) 陽に指定される<モジュール認可識別子> MAIをもつ<SQLクライアントモジュール定義>中の<

外部呼出し手続>を呼び出すことをSAIが制限されているならば,例外条件:認可指定が正しく

ない (invalid authorization specification) が引き起こされる。 

7) SQLエージェントによって与えられる入力ホストパラメタの値が,そのホストパラメタの宣言型の

許される値の集合の範囲外になるか,又は<外部呼出し手続>の実行の結果として得られる出力ホス

トパラメタの値が,そのホストパラメタに対してSQLエージェントによって提供される値の集合の

範囲外になるならば,その効果は,処理系定義とする。処理系定義の効果が例外条件を引き起こす

ことならば,例外条件:データ例外 (data exception) − パラメタ値が正しくない (invalid parameter 

value) が引き起こされる。 

8) 認可スタックの最上部セルの写しが認可スタックに押し込まれる。外部呼出し手続を含むSQLクラ

イアントモジュールMが所有者をもつならば,認可スタックの最上部セルは,Mの所有者の認可識

別子だけを含むように設定される。 

9) これが現行SQLセション中のMの外部呼出し手続の最初の呼出しならば,Mの宣言カーソルの各

カーソル宣言記述子CDDに対して,カーソル宣言記述子がCDDで,SQLセションが現行SQLセ

ションで,かつ,状態が閉じている新しいカーソル実現値記述子をCIDとする。 

10) <外部呼出し手続>の<SQL手続文>をSとする。 

11) SをEXECUTING STATEMENTとして,“13.4 <SQL手続文>”の一般規則を適用する。 

12) 実行の完了時に,認可スタック中の最上部セルが取り除かれる。 

適合性規則 

690 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,かつ,

構造型を識別する<データ型>を単純に含む<ホストパラメタデータ型>を含んではならない。 

2) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,かつ, 

<配列型>を単純に含む<ホストパラメタデータ型>を含んではならない。 

3) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,<マルチ集合型>を単純に含む<ホストパラメタデータ型>を含んではならない。 

4) 機能B221“ルーチン言語Ada:VARCHAR及びNUMERIC提供”なしでは,<外部呼出し手続>の呼

出し元言語がADAならば,<ホストパラメタデータ型>は,CHARACTER VARYING又はNUMERIC

であってはならない。 

13.4 <SQL手続文> 

この細分箇条は,ISO/IEC 9075-4の“11.2 <SQL手続文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“14.4 <SQL手続文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“13.2 <SQL手続文>”によって修正される。 

細分箇条署名 

 “<SQL手続文>” [一般規則] ( 

パラメタ: “EXECUTING STATEMENT” 

機能 

<SQL手続文> (<SQL procedure statement>) は,<SQL手続文>である全てのSQL文を定義する。 

形式 

<SQL手続文> ::= 

  <SQL実行可能文> 

<SQL実行可能文> ::= 

  <SQLスキーマ文> 

| <SQLデータ文> 

| <SQL制御文> 

| <SQLトランザクション文> 

| <SQLコネクション文> 

| <SQLセション文> 

| <SQL診断文> 

| <動的SQL文> 

<SQLスキーマ文> ::= 

  <SQLスキーマ定義文> 

| <SQLスキーマ操作文> 

04 09 <SQLスキーマ定義文> ::= 

  <スキーマ定義> 

| <表定義> 

| <ビュー定義> 

| <SQL呼出しルーチン> 

| <GRANT文> 

691 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <役割定義> 

| <定義域定義> 

| <文字集合定義> 

| <照合順定義> 

| <文字変換定義> 

| <表明定義> 

| <トリガ定義> 

| <利用者定義型定義> 

| <利用者定義型変換定義> 

| <利用者定義順序付け定義> 

| <変換定義> 

| <順序数生成子定義> 

04 09 <SQLスキーマ操作文> ::= 

  <スキーマ削除文> 

| <表変更文> 

| <表削除文> 

| <ビュー削除文> 

| <ルーチン変更文> 

| <ルーチン削除文> 

| <利用者定義型変換削除文> 

| <REVOKE文> 

| <役割削除文> 

| <定義域変更文> 

| <定義域削除文> 

| <文字集合削除文> 

| <照合順削除文> 

| <文字変換削除文> 

| <表明削除文> 

| <トリガ削除文> 

| <型変更文> 

| <データ型削除文> 

| <利用者定義順序付け削除文> 

| <変換変更文> 

| <変換削除文> 

| <順序数生成子変更文> 

| <順序数生成子削除文> 

<SQLデータ文> ::= 

  <OPEN文> 

| <FETCH文> 

| <CLOSE文> 

692 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <SELECT文:単一行> 

| <FREE LOCATOR文> 

| <HOLD LOCATOR文> 

| <SQLデータ変更文> 

<SQLデータ変更文> ::= 

  <DELETE文:位置付け> 

| <DELETE文:探索> 

| <INSERT文> 

| <UPDATE文:位置付け> 

| <UPDATE文:探索> 

| <TRUNCATE TABLE文> 

| <MERGE文> 

04 <SQL制御文> ::= 

  <CALL文> 

| <RETURN文> 

<SQLトランザクション文> ::= 

  <START TRANSACTION文> 

| <SET TRANSACTION文> 

| <SET CONSTRAINTS MODE文> 

| <SAVEPOINT文> 

| <RELEASE SAVEPOINT文> 

| <COMMIT文> 

| <ROLLBACK文> 

<SQLコネクション文> ::= 

  <CONNECT文> 

| <SET CONNECTION文> 

| <DISCONNECT文> 

09 14 <SQLセション文> ::= 

  <セション利用者識別子設定文> 

| <SET ROLE文> 

| <地方時刻帯設定文> 

| <SET SESSION CHARACTERISTICS文> 

| <SET CATALOG文> 

| <SET SCHEMA文> 

| <SET NAMES文> 

| <SET PATH文> 

| <SET TRANSFORM GROUP文> 

| <セション照合順設定文> 

04 <SQL診断文> ::= 

  <GET DIAGNOSTICS文> 

693 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<動的SQL文> ::= 

  <SQL記述子文> 

| <PREPARE文> 

| <DEALLOCATE PREPARE 文> 

| <記述文> 

| <EXECUTE文> 

| <EXECUTE IMMEDIATE文> 

| <SQL動的データ文> 

<SQL動的データ文> ::= 

  <拡張動的カーソル割当て文> 

| <受取りカーソル割当て文> 

| <動的OPEN文> 

| <動的FETCH文> 

| <動的CLOSE文> 

| <動的DELETE文:位置付け> 

| <動的UPDATE文:位置付け> 

<SQL記述子文> ::= 

  <ALLOCATE DESCRIPTOR文> 

| <DEALLOCATE DESCRIPTOR文> 

| <SET DESCRIPTOR文> 

| <GET DESCRIPTOR文> 

構文規則 

1) <SQL手続文>をSとする。 

2) <SQL呼出しルーチン>によって指定されるSQL呼出しルーチンは,スキーマレベルルーチンでな

ければならない。 

注記453 “スキーマレベルルーチン”は,“11.60 <SQL呼出しルーチン>”で定義している。 

3) Sが潜在的に非決定的 (possibly non-deterministic) であることは,Sが<SQLスキーマ文>ではなく,

かつ,次の少なくとも一つを満たすことと同値とする。 

a) Sが,潜在的に非決定的な<SELECT文:単一行>である。 

b) 潜在的に非決定的なSQL呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を,Sが含

む。 

c) 潜在的に非決定的な<問合せ指定>又は<問合せ式>を,Sが一般に含む。 

d) 

04 潜在的に非決定的な<値式>を,Sが一般に含む。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,EXECUTING STATEMENTをSとする。 

注記454 Sは,必然的に“4.38 SQLセション”で定義されるSQLセションの最も内側の実行文で

ある。 

注記455 Sは,必ずしも<SQL手続文>ではない。 

694 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 文実行文脈 (statement execution context) NEWSECが,Sの実行のために確立される。最も新しい文

実行文脈をOLDSECとする。NEWSECが最も新しい文実行文脈になる。NEWSECが,基本単位の

実行文脈であること,したがって,最も新しい基本単位の実行文脈であることは,Sが,基本単位

のSQL文であることと同値とする。 

3) 現行トリガ実行文脈CTECは,あるならば,保存され,状態変更SSCの空集合をもつ新しいトリガ

実行文脈NTECが作成される。 

4) <SQLデータ文>,<SQL動的データ文>,<動的SELECT文>又は<動的単一行SELECT文>の動的で

ない実行又は動的実行が,SQLスキーマ文の動的でない実行又は動的実行と同じSQLトランザク

ション内で発生し,かつ,これがSQL処理系によって許されないならば,例外条件:トランザクシ

ョン状態が正しくない (invalid transaction state) − スキーマ文とデータ文との混在は提供されない 

(schema and data statement mixing not supported) が引き起こされる。 

5) 場合: 

a) Sが<外部呼出し手続> EPに直に含まれるならば,EPの呼出し元言語をLANGとする。EP中に

指定される<ホストパラメタ宣言>の個数をnとし,i番目のこのような<ホストパラメタ宣言>を

PDi,1 ≤ i ≤ nとし,PDi中に指定される<ホストパラメタ名>及び<ホストパラメタデータ型>を,

それぞれ,PNi及びDTiとし,PDiに対応するホストパラメタをPiする。EPがSQLエージェン

トによって呼び出されるとき,手続の呼出し中のi番目の引数をPIiとする。 

場合: 

i) 

Sが<SQLコネクション文>ならば,次による。 

1) Sを含むSQLクライアントモジュールがSQLエージェントに関連付けられる。 

2) 1番目の診断領域が空にされる。 

3) 各i,1 ≤ i ≤ nに対して,Piが入力ホストパラメタ又は入出力ホストパラメタ(入力ホストパ

ラメタで,かつ,出力ホストパラメタ)ならば,LANGをLANGUAGEとして,DTiをSQL 

TYPEとして,PIiをHOST VALUEとして,“9.3 ホスト言語からSQLサーバへの値の受渡

し”の一般規則を適用する。これらの一般規則の適用によって戻されるSQL VALUEをSVと

する。Piには,SVの値が設定される。 

4) Sの一般規則を評価する。 

5) 各i,1 ≤ i ≤ nに対して,Piが出力ホストパラメタ又は入出力ホストパラメタならば,LANG

をLANGUAGEとして,DTiをSQL TYPEとして,Piの値をSQL VALUEとして,“9.4 SQL

サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用に

よって戻されるHOST VALUEをLVとする。PIiには,LVの値が設定される。 

6) SがSQLセションの開始又は再開に成功したならば,SQLエージェントによる<外部呼出し

手続>の後続する呼出し及び<直接SQL文>の後続する起動は,SQLエージェントがそのSQL

セションを終了させるか又は休眠の状態にするまで,そのSQLセションに関連付けられる。 

ii) Sが<SQL診断文>ならば,次による。 

1) Sを含むSQLクライアントモジュールがSQLエージェントに関連付けられる。 

2) 各i,1 ≤ i ≤ nに対して,Piが入力ホストパラメタ又は入出力ホストパラメタならば,LANG

をLANGUAGEとして,DTiをSQL TYPEとして,PIiをHOST VALUEとして,“9.3 ホスト

言語からSQLサーバへの値の受渡し”の一般規則を適用する。これらの一般規則の適用によ

って戻されるSQL VALUEをSVとする。Piには,SVの値が設定される。 

695 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) Sの一般規則を評価する。 

4) 各i,1 ≤ i ≤ nに対して,Piが出力ホストパラメタ又は入出力ホストパラメタならば,LANG

をLANGUAGEとして,DTiをSQL TYPEとして,Piの値をSQL VALUEとして,“9.4 SQL

サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用に

よって戻されるHOST VALUEをLVとする。PIiには,LVの値が設定される。 

iii) そうでなければ,次による。 

1) SQLエージェントに対して,現行のSQLセションがないならば,次による。 

場合: 

A) SQLエージェントが<SQLコネクション文>を実行しておらず,かつ,SQLエージェントに

関連付けられた既定のSQLセションがないならば,次の<CONNECT文>が実効的に実行さ

れる。 

CONNECT TO DEFAULT 

B) SQLエージェントが<SQLコネクション文>を実行しておらず,かつ,SQLエージェントに

関連付けられた既定のSQLセションがあるならば,次の<SET CONNECTION文>が実効的

に実行される。 

SET CONNECTION DEFAULT 

C) そうでなければ,例外条件:コネクション例外 (connection exception) − コネクションが存

在しない (connection does not exist) が引き起こされ,この一般規則のこれ以降の部分規則

は評価されず,次の一般規則から評価を続ける。 

2) SQLエージェントによる<外部呼出し手続>の後続する呼出し及び<直接SQL文>の後続する

起動は,SQLエージェントがそのSQLセションを終了させるか又は休眠の状態にするまで,

そのSQLセションに関連付けられる。 

3) SQLエージェントに対して,動作中のSQLトランザクションがなく,かつ,Sが,SQLトラ

ンザクションを暗に開始するSQL文ならば,SQLトランザクションが開始される。Sを含む

SQLクライアントモジュールがそのSQLトランザクションに関連付けられる。 

注記456 Sが<PREPARE文>ならば,<SQL文変数>の内容に基づいて,トランザクション

が開始されるかもしれないし,開始されないかもしれない。“4.34.4 SQL文及びト

ランザクション状態”参照。 

4) Sを含むSQLクライアントモジュールがSQLエージェントに関連付けられる。 

5) Sが<SQLスキーマ文>を含み,かつ,現行SQLトランザクションのアクセスモードが読込み

専用ならば,例外条件:トランザクション状態が正しくない が引き起こされ,この一般規則

のこれ以降の部分規則は評価されず,次の一般規則から評価を続ける。 

6) 

04 1番目の診断領域が空にされる。 

7) 各i,1 ≤ i ≤ nに対して,Piが入力ホストパラメタ又は入出力ホストパラメタならば,LANG

をLANGUAGEとして,DTiをSQL TYPEとして,PIiをHOST VALUEとして,“9.3 ホスト

言語からSQLサーバへの値の受渡し”の一般規則を適用する。これらの一般規則の適用によ

って戻されるSQL VALUEをSVとする。Piには,SVの値が設定される。 

8) <SQL手続文>の構文規則及びアクセス規則にSが適合しないならば,例外条件:構文誤り又

はアクセス規則違反 (syntax error or access rule violation) が引き起こされ,この一般規則のこ

れ以降の部分規則は評価されず,次の一般規則から評価を続ける。 

696 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

9) Sの一般規則を評価する。 

10) 各i,1 ≤ i ≤ nに対して,Piが出力ホストパラメタ又は入出力ホストパラメタならば,LANG

をLANGUAGEとして,DTiをSQL TYPEとして,Piの値をSQL VALUEとして,“9.4 SQL

サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用に

よって戻されるHOST VALUEをLVとする。PIiには,LVの値が設定される。 

11) Sが<SELECT文:単一行>又は<FETCH文>で,かつ,終了条件:データなし (no data) が引

き起こされるか,又は例外条件が引き起こされるならば,PNiがS中の<相手指定>中で参照

される各PIiの値は,処理系依存とする。 

b) そうでなければ,次による。 

i) 

SQLエージェントに対して,動作中のSQLトランザクションがなく,かつ,Sが,SQLトラン

ザクションを暗に開始するSQL文ならば,SQLトランザクションが開始される。 

注記457 Sが<PREPARE文>ならば,<SQL文変数>の内容に基づいて,トランザクションが

開始されるかもしれないし,開始されないかもしれない。“4.34.4 SQL文及びトラン

ザクション状態”参照。 

ii) Sが<SQL診断文>でないならば,1番目の診断領域が空にされる。 

iii) Sが<SQLスキーマ文>で,かつ,現行SQLトランザクションのトランザクションアクセスモー

ドが読込み専用ならば,例外条件:トランザクション状態が正しくない が引き起こされる。 

6) どの強制の参照制約RCに対しても,RCをCONSTRAINTとして,“15.17参照動作の実行”の一般

規則を適用する。 

7) トリガ事象がDELETEであるSSC中のどの状態変更DSCに対しても,DSC中の遷移の集合をDSOT

とし,DSCの当該表をDBTとする。 

場合: 

a) DBTがシステムバージョン表ならば,次による。 

i) 

DBTのシステム時刻期間開始列をSTARTCOLとする。DBTのシステム時刻期間終了列を

ENDCOLとする。ENDCOLの宣言型をDTとする。 

ii) 現行SQLトランザクションのトランザクション時刻印をTTSとする。次のCAST指定の結果

をCTTSとする。 

CAST (TTS AS DT) 

iii) DBTからの削除のためにマーク付けされている各行Rに対して,STARTCOLの値をSTARTVAL

とする。 

場合: 

1) CTTS < STARTVALならば,例外条件:データ例外 (data exception) − 行バージョンが正し

くない (invalid row version) が引き起こされる。 

2) CTTS = STARTVALならば,RがDBTから削除される。 

3) そうでなければ,ENDCOLの値がCTTSによって置き換えられる。 

b) そうでなければ,DBTからの削除のためにマーク付けされている各行が,DBTから削除される。 

8) 場合: 

a) ある強制制約Cに対して,現行SQLセション中のCの制約モードが即時で,かつ,Cの記述子

に含まれる適用可能な<探索条件>が偽 (False) と評価されるならば,例外条件:整合性制約違反 

(integrity constraint violation) が引き起こされる。 

697 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記458 NO ACTIONを指定する参照制約及び参照動作の適用後に満たされない参照制約の両

方に適応するために,これが必要とされる。 

b) そうでなければ,SSCをSET OF STATE CHANGESとして,“15.18 AFTERトリガの実行”の構

文規則を適用する。“15.18 AFTERトリガの実行”の一般規則を適用する。 

9) NTECがそれの全ての内容とともに破壊され,CTECが存在するならば,それが現行トリガ実行文

脈になるように回復される。 

10) 場合: 

a) Sが<外部呼出し手続>に直に含まれるならば,次による。 

場合: 

i) 

Sが成功実行したならば,この規格群のこの細分箇条及び他の細分箇条の一般規則によって決

定されるとおりに,終了条件:成功終了 (successful completion) 若しくは終了条件:警告 

(warning) が引き起こされるか,又は終了条件:データなし が引き起こされるかのいずれかと

する。 

ii) Sが成功実行しなかったならば,次による。 

1) 状態パラメタには,“24 状態コード”中の,条件に対して規定される値が設定される。 

2) Sが,基本単位のSQL文ならば,Sの実行によってSQLデータ又はスキーマになされた全て

の変更が取り消される。 

注記459 基本単位のSQL文及び基本単位でないSQL文は,“4.34.5 SQL文の基本単位性及

び文実行文脈”で定義している。 

b) そうでなければ,Sに対する一般規則を評価する。 

場合: 

i) 

Sが成功実行したならば,この規格群のこの細分箇条及び他の細分箇条の一般規則によって決

定されるとおりに,終了条件:成功終了 若しくは終了条件:警告 が引き起こされるか,又は

終了条件:データなし が引き起こされるかのいずれかとする。 

ii) そうでなければ,次による。 

1) Sが,基本単位のSQL文ならば,Sの実行によってSQLデータ又はスキーマになされた全て

の変更が取り消される。 

注記460 基本単位のSQL文及び基本単位でないSQL文は,“4.34.5 SQL文の基本単位性及

び文実行文脈”で定義している。 

2) Sの実行を終了させた例外条件が引き起こされる。 

11) Sが<SQL診断文>でないならば,Sの実行の結果として生じる診断情報が,1番目の診断領域に格

納され,1番目の診断領域中の最初の条件領域が占有されることになる。他のいずれかの条件領域

が占有されることになるかどうかは,処理系定義とする。 

12) 04 NEWSECが基本単位ならば,それが存在している間に確立された全ての保存点が破壊される。 

13) NEWSECは,存在しなくなり,OLDSECが最も新しい文実行文脈になる。 

14) 04 Sは,実行文ではなくなる。 

注記461 最も内側の実行文は,あるならば,Sの実行を引き起こした最も内側の実行文であった

ものになる。 

適合性規則 

なし。 

background image

698 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

13.5 データ型対応 

この細分箇条は,ISO/IEC 9075-9の“14.5 データ型対応”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“13.3 データ型対応”によって修正される。 

機能 

データ型対応 (Data type correspondences) は,SQLデータ型とホスト言語の型とのデータ型対応を規定

する。 

次の表の中で,<精度>をPとし,<位取り>をSとし,<長さ>又は<長大オブジェクト長>をLとし,<文

字長単位>をUとし,<文字集合指定>をCSとし,<時刻小数秒精度>をTとし,<時間隔修飾子>をQと

し,構造型参照の処理系定義の大きさをNとする。 

表 

09 14 表16−Adaのためのデータ型対応 

SQLデータ型 

Adaデータ型 

SQLSTATE 

Interfaces.SQL.SQLSTATE̲TYPE 

CHARACTER (L U) 
CHARACTER SET CS 

Interfaces.SQL.CHAR(1..L*k) 1) 

CHARACTER VARYING (L U) 
CHARACTER SET CS 

Interfaces.SQL.VARYING.CHAR (1..L*k) 又は 
Interfaces.SQL.VARYING.NCHAR (1..L*k) 1), 3) 

CHARACTER LARGE OBJECT (L U) 
CHARACTER SET CS 

TYPE HVN IS 
  RECORD 
    HVN̲RESERVED : Interfaces.SQL.INT; 
    HVN̲LENGTH : Interfaces.SQL.INT; 
    HVN̲DATA : Interfaces.SQL.CHAR(1..L*k) 1), 2), 4); 

  END RECORD; 

BINARY (L) 

Interfaces.SQL.CHAR(1..L) 

BINARY VARYING (L) 

TYPE HVN IS 
  RECORD 
    HVN̲RESERVED : Interfaces.SQL.INT; 
    HVN̲LENGTH : Interfaces.SQL.INT; 
    HVN̲DATA : Interfaces.SQL.CHAR(1..L) 2), 4); 

  END RECORD; 

BINARY LARGE OBJECT(L) 

TYPE HVN IS 
  RECORD 
    HVN̲RESERVED : Interfaces.SQL.INT; 
    HVN̲LENGTH : Interfaces.SQL.INT; 
    HVN̲DATA : Interfaces.SQL.CHAR(1..L) 2), 4); 

  END RECORD; 

NUMERIC (P, S) 

Interfaces.SQL.NUMERIC̲P̲S 3) 

DECIMAL (P, S) 

なし 

SMALLINT 

Interfaces.SQL.SMALLINT 

INTEGER 

Interfaces.SQL.INT 

BIGINT 

Interfaces.SQL.BIGINT 

FLOAT (P) 

なし 

REAL 

Interfaces.SQL.REAL 

DOUBLE PRECISION 

Interfaces.SQL.DOUBLE̲PRECISION 

BOOLEAN 

Interfaces.SQL.BOOLEAN 

DATE 

なし 

background image

699 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

09 14 表16−Adaのためのデータ型対応(続き) 

SQLデータ型 

Adaデータ型 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

Interfaces.SQL.CHAR(1..N) 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

注1) UがOCTETSならば,kは,1とする。そうでなければ,kは,文字集合CSでの文字当たりのオクテットの最

大個数とする。 

2) HVNは,SQLデータ型に対応するように定義するホスト変数の名前とする。 

3) SQLデータ型のCHARACTER VARYING及びNUMERICのAdaでの提供は,機能B211“モジュール言語Ada:

VARCHAR及びNUMERIC提供”又は機能B221“ルーチン言語Ada:VARCHAR及びNUMERIC提供” の提供
を条件とする。 

4) この型のAdaの値AV中で,AVの長さ部分 (length portion) は,HVN̲LENGTHと呼ぶAVのフィールドとし,AV

のデータ部分 (data portion) は,HVN̲DATAと呼ぶAVのフィールドとする。 

background image

700 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 表17−Cのためのデータ型対応 

SQLデータ型 

Cデータ型 

SQLSTATE 

長さ6のchar 

CHARACTER (L U) 
CHARACTER SET CS 

長さ(L+1)* kのunit  1) 

CHARACTER VARYING (L U) 
CHARACTER SET CS 

長さ(L+1)* kのunit  1) 

CHARACTER LARGE OBJECT (L U) 
CHARACTER SET CS 

struct {   
    long  hvn̲reserved ; 
    unsigned long  hvn̲length ; 
    unit  hvn̲data [L*k ]; 
} hvn ; 1), 2), 3) 

BINARY (L) 

長さLのchar 

BINARY VARYING (L) 

struct {   
    long  hvn̲reserved ; 
    unsigned long  hvn̲length ; 
    char  hvn̲data [L]; 
} hvn ; 2), 3) 

BINARY LARGE OBJECT (L) 

struct {   
    long  hvn̲reserved ; 
    unsigned long  hvn̲length ; 
    char  hvn̲data [L]; 
} hvn  ; 2), 3) 

NUMERIC (P, S) 

なし 

DECIMAL (P, S) 

なし 

SMALLINT 

shortへのポインタ 

INTEGER 

longへのポインタ 

BIGINT 

long longへのポインタ 

FLOAT (P) 

なし 

REAL 

floatへのポインタ 

DOUBLE PRECISION 

doubleへのポインタ 

BOOLEAN 

longへのポインタ 

DATE 

なし 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

長さNのchar 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

注1) UがOCTETSならば,unitは,charとし,kは,1とする。そうでなければ,(すなわち,UがCHARACTERSな

らば,)unitは,処理系定義の適切なCデータ型(典型的にはchar,unsigned char,unsigned short又
はunsigned int)とし,kは,unitを選択させる適切なサイズ決定係数とする。unit及びkの選択は,処理系
定義とし,文字集合CSに基づく。例えば,UTF32に対しては,unitがcharで,kが4であってもよいし,unit
がunsigned intで,kが1であってもよい。 

2) hvnは,SQLデータ型に対応するように定義するホスト変数の名前とする。 

3) この型のCの値CV中で,CVの長さ部分 (length portion) は,hvn̲lengthと呼ぶCVのフィールドとし,CV

のデータ部分 (data portion) は,hvn̲dataと呼ぶCVのフィールドとする。 

background image

701 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 表18−COBOLのためのデータ型対応 

SQLデータ型 

COBOLデータ型 

SQLSTATE 

PICTURE X(5) 

CHARACTER (L U) 
CHARACTER SET CS 

PICTURE X(L) 3) 

CHARACTER VARYING (L U) 
CHARACTER SET CS 

なし 

CHARACTER LARGE OBJECT (L U) 
CHARACTER SET CS 

01  hvn. 
   49  hvn-RESERVED PIC S9(9) USAGE IS BINARY. 
   49  hvn-LENGTH PIC S9(9) USAGE IS BINARY. 
   49  hvn-DATA PIC X(L)2), 3), 4). 

BINARY (L) 

PICTURE X(L) 

BINARY VARYING (L) 

なし 

BINARY LARGE OBJECT (L) 

01  hvn. 
   49  hvn-RESERVED PIC S9(9) USAGE IS BINARY. 
   49  hvn-LENGTH PIC S9(9) USAGE IS BINARY. 
   49  hvn-DATA PIC X(L)2), 4). 

NUMERIC (P, S) 

指定されたとおりのPICTURE 1) をもつUSAGE DISPLAY SIGN LEADING 
SEPARATE  

DECIMAL (P, S) 

なし 

SMALLINT 

PICTURE S9(SPI) USAGE BINARY 
ここで,SPIは,処理系定義とする。 

INTEGER 

PICTURE S9(PI) USAGE BINARY 
ここで,PIは,処理系定義とする。 

BIGINT 

PICTURE S9(BPI) USAGE BINARY 
ここで,BPIは,処理系定義とする。 

FLOAT (P) 

なし 

REAL 

なし 

DOUBLE PRECISION 

なし 

BOOLEAN 

PICTURE X 

DATE 

なし 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

長さNの英数字alphanumeric 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

注1) 場合: 

a) S = Pならば,ʼSʼ,それに続くʼVʼ,及びそれに続くP個のʼ9ʼをもつPICTUREとする。 
b) S > P > 0ならば,ʼSʼ,それに続くP-S個のʼ9ʼ,それに続くʼVʼ,及びそれに続くS個のʼ9ʼをもつPICTURE

とする。 

c) S = 0ならば,ʼSʼ,それに続くP個のʼ9ʼ,及びそれに続く省略可能なʼVʼをもつPICTUREとする。 

2) hvnは,SQLデータ型に対応するように定義するホスト変数の名前とする。 

3) UがCHARACTERSならば,処理系定義のCOBOL固有の文字集合に対しては,PICTURE X(L)を用いる。他

の文字集合に対しては,その文字集合に対する適切なロケール名をLOCALE句で指定して,PICTURE N(L)を
用いる。 

4) この型のCOBOLの値CV中で,CVの長さ部分 (length portion) は,hvn-LENGTHと呼ぶCVのフィールドと

し,CVのデータ部分 (data portion) は,hvn-DATAと呼ぶCVのフィールドとする。 

background image

702 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 表19−Fortranのためのデータ型対応 

SQLデータ型 

Fortranデータ型 

SQLSTATE 

長さ5のCHARACTER 

CHARACTER (L U) 
CHARACTER SET CS 

長さLのCHARACTER 2) 

CHARACTER VARYING (L U) 
CHARACTER SET CS 

なし 

CHARACTER LARGE OBJECT (L U) 
CHARACTER SET CS 

CHARACTER hvn(L+8) 
    INTEGER*4 hvn̲RESERVED 
    INTEGER*4 hvn̲LENGTH 
    CHARACTER hvn̲DATA 
    EQUIVALENCE(hvn(1), hvn̲RESERVED) 
    EQUIVALENCE(hvn(5), hvn̲LENGTH) 
    EQUIVALENCE(hvn(9), hvn̲DATA) 1), 2), 3) 

BINARY (L) 

長さLのCHARACTER 

BINARY VARYING (L) 

 
CHARACTER hvn(L+8) 
    INTEGER*4 hvn̲RESERVED 
    INTEGER*4 hvn̲LENGTH 
    CHARACTER hvn̲DATA 
    EQUIVALENCE(hvn(1), hvn̲RESERVED) 
    EQUIVALENCE(hvn(5), hvn̲LENGTH) 
    EQUIVALENCE(hvn(9), hvn̲DATA) 1), 3) 

BINARY LARGE OBJECT (L) 

CHARACTER hvn(L+8) 
    INTEGER*4 hvn̲RESERVED 
    INTEGER*4 hvn̲LENGTH 
    CHARACTER hvn̲DATA 
    EQUIVALENCE(hvn(1), hvn̲RESERVED) 
    EQUIVALENCE(hvn(5), hvn̲LENGTH) 
    EQUIVALENCE(hvn(9), hvn̲DATA) 1), 3) 

NUMERIC (P, S) 

なし 

DECIMAL (P, S) 

なし 

SMALLINT 

なし 

INTEGER 

INTEGER 

BIGINT 

なし 

FLOAT (P) 

なし 

REAL 

REAL 

DOUBLE PRECISION 

DOUBLE PRECISION 

BOOLEAN 

LOGICAL 

DATE 

なし 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

長さNのCHARACTER 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

background image

703 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 表19−Fortranのためのデータ型対応(続き) 

注1) hvnは,SQLデータ型に対応するように定義するホスト変数の名前とする。 

2) UがCHARACTERSならば,文字集合UTF16,及び符号単位が2オクテット以上を占める処理系定義の他の文

字集合に対して,“CHARACTER KIND = n”を用いるのがよい。この場合,与えられた文字集合に対応するnの
値は,処理系定義とする。そうでなければ,(“KIND = n”なしで)“CHARACTER”を用いるのがよい。 

3) この型のFortranの値FV中で,FVの長さ部分 (length portion) は,hvn̲LENGTHと呼ぶFVのフィールドとし,

FVのデータ部分 (data portion) は,hvn̲DATAと呼ぶFVのフィールドとする。 

09 14 表20−Mのためのデータ型対応 

SQLデータ型 

Mデータ型 

SQLSTATE 

character 

CHARACTER (L U) 
CHARACTER SET CS 

なし 

CHARACTER VARYING (L U) 
CHARACTER SET CS 

character 

CHARACTER LARGE OBJECT (L U) 
CHARACTER SET CS 

なし 

BINARY (L) 

なし 

BINARY VARYING (L) 

なし 

BINARY LARGE OBJECT (L) 

なし 

NUMERIC (P, S) 

なし 

DECIMAL (P, S) 

character 

SMALLINT 

なし 

INTEGER 

character 

BIGINT 

なし 

FLOAT (P) 

なし 

REAL 

character 

DOUBLE PRECISION 

なし 

BOOLEAN 

なし 

DATE 

なし 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

character 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

background image

704 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 表21−Pascalのためのデータ型対応 

SQLデータ型 

Pascalデータ型 

SQLSTATE 

PACKED ARRAY [1..5] OF CHAR 

CHARACTER (L U)  
CHARACTER SET CS 

L* k = 1ならば,CHAR 

そうでなければ,PACKED ARRAY [1..L * k] OF CHAR 1) 

CHARACTER VARYING (L U)  
CHARACTER SET CS 

なし 

CHARACTER LARGE OBJECT (L U)  
CHARACTER SET CS 

VAR HVN = RECORD  
                HVN̲RESERVED : INTEGER; 
                HVN̲LENGTH : INTEGER; 
                HVN̲DATA : PACKED ARRAY [1..L * k] OF CHAR 

1); 

                END; 2), 3) 

BINARY (L) 

PACKED ARRAY [1..L] OF CHAR 

BINARY VARYING (L) 

なし 

BINARY LARGE OBJECT (L) 

VAR HVN = RECORD 
                HVN̲RESERVED : INTEGER; 
                HVN̲LENGTH : INTEGER; 
                HVN̲DATA : PACKED ARRAY [1..L] OF CHAR; 

                END; 2), 3) 

NUMERIC (P, S) 

なし 

DECIMAL (P, S) 

なし 

SMALLINT 

なし 

INTEGER 

INTEGER 

BIGINT  

なし 

FLOAT (P) 

なし 

REAL 

REAL 

DOUBLE PRECISION 

なし 

BOOLEAN 

BOOLEAN 

DATE 

なし 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

PACKED ARRAY [1..N] OF CHAR 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

注1) UがOCTETSならば,kは,1とする。そうでなければ,kは,文字集合CSでの文字当たり最大オクテット

数とする。 

2) HVNは,SQLデータ型に対応するように定義するホスト変数の名前とする。 

3) この型のPascalの値PV中で,PVの長さ部分 (length portion) は,HVN̲LENGTHと呼ぶPVのフィールドと

し,PVのデータ部分 (data portion) は,HVN̲DATAと呼ぶPVのフィールドとする。 

background image

705 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

09 14 表22−PL/Iのためのデータ型対応 

SQLデータ型 

PL/Iデータ型 

SQLSTATE 

CHARACTER(5) 

CHARACTER (L U)  
CHARACTER SET CS 

CHARACTER (L * k) 2)   

CHARACTER VARYING (L U)  
CHARACTER SET CS 

CHARACTER (L * k) VARYING  2) 

CHARACTER LARGE OBJECT (L U)  
CHARACTER SET CS 

DCL 01 hvn , 
      49 hvn̲reserved FIXED BINARY (31) , 
      49 hvn̲length FIXED BINARY (31) , 
      49 hvn̲data CHAR (L * k) 1), 2), 3) ; 

BINARY (L) 

CHARACTER (L) 

BINARY VARYING (L) 

CHARACTER (L) VARYING 

BINARY LARGE OBJECT (L) 

DCL 01 hvn , 
      49 hvn̲reserved FIXED BINARY (31) , 
      49 hvn̲length FIXED BINARY (31) , 
      49 hvn̲data CHAR (L) 1), 3) ; 

NUMERIC (P, S) 

なし 

DECIMAL (P, S) 

FIXED DECIMAL (P, S) 

SMALLINT 

FIXED BINARY(SPI) 
ここで,SPIは,処理系定義とする。 

INTEGER 

FIXED BINARY(PI) 
ここで,PIは,処理系定義とする。 

BIGINT 

FIXED BINARY(BPI) 
ここで,BPIは,処理系定義とする。 

FLOAT (P) 

FLOAT BINARY (P) 

REAL 

なし 

DOUBLE PRECISION 

なし 

BOOLEAN 

BIT(1) 

DATE 

なし 

TIME (T) 

なし 

TIMESTAMP (T) 

なし 

INTERVAL (Q) 

なし 

利用者定義型 

なし 

REF 

CHARACTER(N) VARYING 

ROW 

なし 

ARRAY 

なし 

MULTISET 

なし 

注1) hvnは,SQLデータ型に対応するように定義するホスト変数の名前とする。 

2) UがOCTETSならば,kは,1とする。そうでなければ,kは,文字集合CSでの文字当たり最大オクテット数

とする。 

3) この型のPL/Iの値PV中で,PVの長さ部分 (length portion) は,hvn̲lengthと呼ぶPVのフィールドとし,

PVのデータ部分 (data portion) は,hvn̲dataと呼ぶPVのフィールドとする。 

適合性規則 

なし。 

706 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

14 データ操作 

14.1 <カーソル宣言> 

この細分箇条は,ISO/IEC 9075-4の“12.1 <カーソル宣言>”によって修正される。 

機能 

<カーソル宣言> (<declare cursor>) は,元祖カーソルを宣言する。 

形式 

<カーソル宣言> ::= 

  DECLARE <カーソル名> <カーソル特性> 

      FOR <カーソル指定> 

構文規則 

1) 

04 <カーソル宣言>が<SQLクライアントモジュール定義> Mに含まれるならば,次による。 

a) <カーソル名>は,M中の他のどの<カーソル宣言>,<動的カーソル宣言>又は<受取りカーソル割

当て文>の<カーソル名>とも等価であってはならない。 

b) <カーソル名>の有効範囲は,Mに含まれるどの<SQLスキーマ文>も除いて,Mとする。 

c) <カーソル指定>に含まれるどの<ホストパラメタ名>も,<カーソル名>を指定し,かつ,その<カ

ーソル名>の有効範囲に含まれる<OPEN文>を含む<外部呼出し手続>中の<ホストパラメタ宣言>

で定義しなければならない。 

注記462 “13.1 <SQLクライアントモジュール定義>”の構文規則参照。 

アクセス規則 

なし。 

一般規則 

1) カーソル宣言記述子CDDが作成される。CDDは,次のことを示す標識を含む。 

a) カーソルの種類が元祖カーソルである。 

b) 

04 カーソルの出所が,<カーソル宣言>を含む<SQLクライアントモジュール定義>をもつSQLク

ライアントモジュールの標識である。 

c) カーソルの名前が<カーソル名>である。 

d) カーソルの起源が,<カーソル宣言>に含まれる<カーソル指定>である。 

e) カーソルの宣言特性が,<カーソル特性>によって決定されるとおりである。 

適合性規則 

1) 機能F831“完全カーソル更新”なしでは,適合するSQL言語は,FOR UPDATEを指定する<更新可

能性句>を含む<カーソル指定>,及び<カーソルスクロール可能性>を含む<カーソル特性>の両方を

含む<カーソル宣言>を含んではならない。 

14.2 <カーソル特性> 

機能 

<カーソル特性> (<cursor properties>) は,カーソルの宣言特性を指定する。 

形式 

<カーソル特性> ::= 

  [ <カーソル感度> ] [ <カーソルスクロール可能性> ] CURSOR 

      [ <カーソル保持可能性> ] 

      [ <カーソル戻り可能性> ] 

707 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<カーソル感度> ::= 

  SENSITIVE 

| INSENSITIVE 

| ASENSITIVE 

<カーソルスクロール可能性> ::= 

  SCROLL 

| NO SCROLL 

<カーソル保持可能性> ::= 

  WITH HOLD 

| WITHOUT HOLD 

<カーソル戻り可能性> ::= 

  WITH RETURN 

| WITHOUT RETURN 

構文規則 

1) <カーソル感度>が指定されないならば,ASENSITIVEが暗に想定される。 

2) <カーソルスクロール可能性>が指定されないならば,NO SCROLLが暗に想定される。 

3) <カーソル保持可能性>が指定されないならば,WITHOUT HOLDが暗に想定される。 

4) <カーソル戻り可能性>が指定されないならば,WITHOUT RETURNが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) <カーソル特性>に関連付けられたカーソル宣言記述子の宣言特性は,次によって与えられる。 

a) 宣言感度特性は,陽に指定されるか又は暗に想定される<カーソル感度>とする。 

b) 宣言スクロール可能性特性は,陽に指定されるか又は暗に想定される<カーソルスクロール可能

性>とする。 

c) 宣言保持可能性特性は,陽に指定されるか又は暗に想定される<カーソル保持可能性>とする。 

d) 宣言戻り可能性特性は,陽に指定されるか又は暗に想定される<カーソル戻り可能性>とする。 

適合性規則 

1) 機能T231“敏感カーソル”なしでは,適合するSQL言語は,SENSITIVEを直に含む<カーソル感度

>を含んではならない。 

2) 機能F791“鈍感カーソル”なしでは,適合するSQL言語は,INSENSITIVEを直に含む<カーソル感

度>を含んではならない。 

3) 機能F791“鈍感カーソル”又は機能T231“敏感カーソル”なしでは,適合するSQL言語は,

ASENSITIVEを直に含む<カーソル感度>を含んではならない。 

4) 機能F431“読込み専用スクロール可能カーソル”なしでは,適合するSQL言語は,<カーソルスク

ロール可能性>を含んではならない。 

5) 機能T471“結果集合戻り値”なしでは,適合するSQL言語は,<カーソル戻り可能性>を含んでは

ならない。 

6) 機能T551“既定構文のための省略可能なキーワード”なしでは,適合するSQL言語は,WITHOUT 

HOLDを直に含む<カーソル保持可能性>を含んではならない。 

708 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

14.3 <カーソル指定> 

機能 

<カーソル指定> (<cursor specification>) は,結果集合を定義する。 

形式 

<カーソル指定> ::= 

  <問合せ式> [ <更新可能性句> ] 

<更新可能性句> ::= 

  FOR { READ ONLY | UPDATE [ OF <列名リスト> ] } 

構文規則 

1) <カーソル指定>をCSとする。 

2) CSに直に含まれる<問合せ式>をQEとする。 

3) 場合: 

a) <カーソル特性>を含む<カーソル宣言> DCにCSが含まれるならば,その<カーソル特性>をCP

とする。 

b) CSが,<PREPARE文>によって準備されているか,又は<拡張動的カーソル割当て文>若しくは<

動的OPEN文>によって再準備されている<準備可能文>ならば,次による。 

i) 

CSを準備している<PREPARE文>,又はCSを再準備している<拡張動的カーソル割当て文>若

しくは<動的OPEN文>をSTMTとする。STMTを含む<SQLクライアントモジュール定義>を

SCMDとする。 

ii) 場合: 

1) CSが<PREPARE文>によって準備されているならば,その<PREPARE文>をPSとする。 

2) そうでなければ,CSを以前に準備した<PREPARE文>をPSとする。 

iii) PSに含まれる<SQL文変数>をSSVとする。 

iv) 場合: 

1) CSが<PREPARE文>によって準備されているならば,次による。 

場合: 

A) SSVが<文名>で,かつ,SSVと等価な<文名>をもち,SCMDに含まれるただ一つの<動的

カーソル宣言> DDCが存在するならば,DDCに含まれる<カーソル特性>をCP1とする。 

B) SSVが,LOCALである<有効範囲選択肢>を指定するか又は暗に想定する<拡張文名>で,

かつ,LOCALを指定するか又は暗に想定する<拡張文名>をもち,SCMDに含まれるただ

一つの<拡張動的カーソル割当て文> ACSが存在するならば,ACSに含まれる<カーソル特

性>をCP1とする。 

C) そうでなければ,長さ0の文字列をCP1とする。 

2) CSが<拡張動的カーソル割当て文> ACSによって再準備されているならば,ACSに含まれる

<カーソル特性>をCP1とする。 

3) CSが<動的OPEN文>によって再準備されているならば,STMTに含まれる<カーソル名>と

等価な<カーソル名>をもつ<動的カーソル宣言>をDDCとする。DDCに含まれる<カーソル

特性>をCP1とする。 

v) PSが<属性変数>を含むならば,その<属性変数>の値をCP2とする。そうでなければ,長さ0

の文字列をCP2とする。 

709 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

vi) 場合: 

1) CP2が<カーソル感度>を含むならば,その<カーソル感度>をSENSとする。 

2) CP1が<カーソル感度>を含むならば,その<カーソル感度>をSENSとする。 

3) そうでなければ,長さ0の文字列をSENSとする。 

vii) 場合: 

1) CP2が<カーソルスクロール可能性>を含むならば,その<カーソルスクロール可能性>を

SCROとする。 

2) CP1が<カーソルスクロール可能性>を含むならば,その<カーソルスクロール可能性>を

SCROとする。 

3) そうでなければ,長さ0の文字列をSCROとする。 

viii) 場合: 

1) CP2が<カーソル保持可能性>を含むならば,その<カーソル保持可能性>をHOLDとする。 

2) CP1が<カーソル保持可能性>を含むならば,その<カーソル保持可能性>をHOLDとする。 

3) そうでなければ,長さ0の文字列をHOLDとする。 

ix) 場合: 

1) CP2が<カーソル戻り可能性>を含むならば,その<カーソル戻り可能性>をRETとする。 

2) CP1が<カーソル戻り可能性>を含むならば,その<カーソル戻り可能性>をRETとする。 

3) そうでなければ,長さ0の文字列をRETとする。 

x) 次の<カーソル特性>をCPとする。 

SENS SCRO CURSOR HOLD RET 

4) <更新可能性句>が指定されないで,かつ,CSが<カーソル宣言>に含まれるか,又は<拡張動的カー

ソル割当て文>若しくは<動的OPEN文>によって再準備されているならば,次による。 

場合: 

a) CPがINSENSITIVE若しくはSCROLLを含むか,QEが<ORDER BY句>を直に含むか,又はQE

が単純に更新可能な<問合せ指定>でないならば,READ ONLYの<更新可能性句>が暗に想定され

る。 

b) そうでなければ,<列名リスト>なしのFOR UPDATEの<更新可能性句>が暗に想定される。 

注記463 CSが<PREPARE文>によって準備されているならば,<更新可能性句>の既定値の設定

は,CSが再準備されるまで延期される。 

5) <列名リスト>付き又は<列名リスト>なしのFOR UPDATEの<更新可能性句>が指定されるならば,

CPは,INSENSITIVEを含んではならず,QEは,更新可能でなければならず,かつ,QEは,QEが

末端で基となる表LUTに関して1対1対応であるような,一つだけのLUTをもたなければならな

い。 

6) 場合: 

a) FOR UPDATEを指定する<更新可能性句>が指定されるか又は暗に想定されるならば,CSは,更

新可能 (updatable) とする。 

b) FOR READ ONLYを指定する<更新可能性句>が指定されるか又は暗に想定されるならば,CSは,

更新可能でない (not updatable)。 

c) そうでなければ,CSの更新可能性の決定は,CSが再準備されるまで延期される。 

7) CSが更新可能ならば,LUTを参照する<表名>をLUTNとする。LUTNは,有効範囲が<更新可能性

710 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

句>である露出した<表名又は問合せ名>とする。 

8) <列名リスト>なしのFOR UPDATEの<更新可能性句>が指定されるか又は暗に想定されるならば,

LUTの全ての列の<列名>から成る<列名リスト>が暗に想定される。 

9) <列名リスト>付きのFOR UPDATEの<更新可能性句>が指定されるならば,<列名リスト>中の各<列

名>は,LUTの列の<列名>でなければならない。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能F831“完全カーソル更新”なしでは,適合するSQL言語は,FOR UPDATEを指定する<更新可

能性句>,及び<ORDER BY句>の両方を含む<カーソル指定>を含んではならない。 

2) 機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語中で,FOR UPDATEが

指定されるならば,QEは,単純に更新可能でなければならない。 

14.4 <OPEN文> 

この細分箇条は,ISO/IEC 9075-4の“12.2 <OPEN文>”によって修正される。 

機能 

<OPEN文> (<open statement>) は,元祖カーソルを開く。 

形式 

<OPEN文> ::= 

  OPEN <カーソル名> 

構文規則 

1) 

04 <OPEN文>中の<カーソル名>をCNとする。CNは,CNと等価な<カーソル名>の有効範囲内に含

まれなければならない。 

2) CNは,元祖カーソルを識別しなければならない。 

3) CNによって識別される元祖カーソルのカーソル宣言記述子をCDDとする。 

アクセス規則 

1) <カーソル名>によって識別される<カーソル宣言>に単純に含まれる<問合せ式>に対するアクセス

規則を適用する。 

一般規則 

1) CDDであるカーソル宣言記述子をもつ,現行SQLセション中のカーソル実現値記述子をCRとす

る。 

2) CRをCURSORとして,“15.1 カーソルを開くことの効果”の一般規則を適用する。 

適合性規則 

なし。 

14.5 <FETCH文> 

この細分箇条は,ISO/IEC 9075-4の“12.3 <FETCH文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“11.15 <FETCH文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“14.1 <FETCH文>”によって修正される。 

機能 

background image

711 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<FETCH文> (<fetch statement>) は,元祖カーソルの結果集合の指定された行の上に,元祖カーソルを位

置付けて,その行から値を取り出す。 

形式 

10 <FETCH文> ::= 

  FETCH [ [ <取出し方向> ] FROM ] <カーソル名> INTO <取出し相手リスト> 

<取出し方向> ::= 

  NEXT 

| PRIOR 

| FIRST 

| LAST 

| { ABSOLUTE | RELATIVE } <単純値指定> 

14 <取出し相手リスト> ::= 

  <相手指定> [ { <コンマ> <相手指定> }... ] 

構文規則 

1) <取出し相手リスト>は,<列参照>を指定する<相手指定>を含んではならない。 

2) <取出し方向>が省略されるならば,NEXTが暗に想定される。 

3) 

04 10 <FETCH>文中の<カーソル名>をCNとする。CNは,CNと等価な<カーソル名>の有効範囲内

に含まれなければならない。 

4) CNは,元祖カーソルを識別しなければならない。 

5) CNによって識別される元祖カーソルのカーソル宣言記述子をCDDとする。 

6) CDDの<カーソル指定>によって定義される結果集合をTとする。 

7) 暗に想定されるか又は陽に指定される<取出し方向>がNEXTでないならば,CDDの宣言スクロー

ル可能性特性は,SCROLLでなければならない。 

8) <単純値指定>を含む<取出し方向>が指定されるならば,その<単純値指定>の宣言型は,位取り0の

真数でなければならない。 

9) 場合: 

a) <取出し相手リスト>が単一の<相手指定> TSを含み,かつ,Tの次数が1より大きいならば,TS

の宣言型は,行型でなければならない。 

場合: 

i) 

04 TSが<SQLパラメタ参照>ならば,TSをTARGETとして,Tの行型の任意の値をVALUEと

して,“9.2 格納代入”の構文規則を適用する。 

ii) そうでなければ,TSをTARGETとして,Tの行型の任意の値をVALUEとして,“9.1 取出し

代入”の構文規則を適用する。 

b) そうでなければ,次による。 

i) 

<取出し相手リスト>中の<相手指定>の個数NTSは,Tの次数と同じでなければならない。<取

出し相手リスト>中のi番目の<相手指定>,1 ≤ i ≤ NTSは,Tのi番目の列に対応する。 

ii) 1からNTSまでの範囲のiに対して,Tのi番目の列の宣言型の任意の値をCSiとする。 

iii) 

04 <SQLパラメタ参照>又は<相手配列要素指定>のいずれかである各<相手指定> TS1i,1 ≤ i ≤ 

NTSに対して,次による。 

場合: 

background image

712 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) TS1iが<単純値指定>を含むならば,宣言型がTS1iの宣言型である一時的な格納場所を

TARGETとしてCSiをVALUEとして,“9.2 格納代入”の構文規則を適用する。 

2) そうでなければ,TS1iをTARGETとして,CSiをVALUEとして,“9.2 格納代入”の構文規

則を適用する。 

iv) 

10 <ホストパラメタ指定>である各<相手指定> TS2i,1 ≤ i ≤ NTSに対して,TS2iをTARGETと

して,CSiをVALUEとして,“9.1 取出し代入”の構文規則を適用する。 

v) <埋込み変数指定>である各<相手指定> TS2i,1 ≤ i ≤ NTSに対して,TS2iをTARGETとして,

CSiをVALUEとして,“9.1 取出し代入”の構文規則を適用する。 

アクセス規則 

なし。 

一般規則 

1) CDDであるカーソル宣言記述子をもつ,現行SQLセションのカーソル実現値記述子をCRとする。 

2) CRが開いている状態にないならば,例外条件:カーソル状態が正しくない (invalid cursor state) が

引き起こされる。 

3) CRをCURSORとして,<取出し方向>をFETCH ORIENTATIONとして,“15.3 カーソルの現在行

の決定”の一般規則を適用する。 

4) 終了条件:データなし (no data) が引き起こされたならば,この細分箇条の一般規則は,これ以上適

用しない。 

5) 場合: 

a) <取出し相手リスト>が単一の<相手指定> TSを含み,かつ,Tの次数が1より大きいならば,現

在行がTSに代入され,かつ,次による。 

場合: 

i) 

04 14 TSが<SQLパラメタ参照>ならば,TSをTARGETとして,現在行をVALUEとして,“9.2 

格納代入”の一般規則を適用する。 

ii) そうでなければ,TSをTARGETとして,現在行をVALUEとして,“9.1 取出し代入”の一般

規則を適用する。 

b) 

10 そうでなければ,<取出し相手リスト>が二つ以上の<相手指定>を含むならば,現在行からの値

が,<取出し相手リスト>によって識別されるそれらに対応する相手に代入される。代入は,処理

系依存の順序で行われる。相手をTVとし,CRの現在行中の対応する値をSVで示す。 

場合: 

i) 

04 TVが<SQLパラメタ参照>又は<相手配列要素指定>のいずれかならば,<取出し相手リスト>

中の各<相手指定>に対して,<取出し相手リスト>中のi番目の<相手指定>をTViとし,CRの

現在行中のi番目の対応する値をSViで示す。 

場合: 

1) <相手配列要素指定>が指定されるならば,次による。 

場合: 

A) TViの値がナル値ならば,例外条件:データ例外 (data exception) − 配列相手にナル値 (null 

value in array target) が引き起こされる。 

B) そうでなければ,次による。 

I) TViの最大基数をNとする。 

713 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

II) TViの値の基数をMとする。 

III) TViに直に含まれる<単純値指定>の値をIとする。 

IV) TViの要素型をEDTとする。 

V) 場合: 

1) Iが0より大きく,M以下ならば,TViの値は,要素型EDT及び基数Mをもち,次の

とおりに導出される配列Aによって置き換えられる。 

a) 1からI-1まで,及びI+1からMまでの範囲のjに対して,A中のj番目の要素は,

TVi中のj番目の要素の値とする。 

b) 

14 AのI番目の要素をTARGETとして,SViをVALUEとして,“9.2 格納代入”の

一般規則を適用する。 

2) IがMより大きく,N以下ならば,TViの値は,要素型EDT及び基数Iをもち,次の

とおりに導出される配列Aによって置き換えられる。 

a) 1からMまでの範囲のjに対して,A中のj番目の要素は,TVi中のj番目の要素の

値とする。 

b) M+1からIまでの範囲のjに対して,A中のj番目の要素は,ナル値とする。 

c) 

14 AのI番目の要素をTARGETとして,SViをVALUEとして,“9.2 格納代入”の

一般規則を適用する。 

3) そうでなければ,例外条件:データ例外 − 配列要素誤り (array element error) が引き

起こされる。 

2) 

14 そうでなければ,TViをTARGETとして,SViをVALUEとして,“9.2 格納代入”の一般

規則を適用する。 

ii) TVが<ホストパラメタ名>ならば,TVをTARGETとして,SVをVALUEとして,“9.1 取出し

代入”の一般規則を適用する。 

iii) TVが<埋込み変数指定>ならば,TVをTARGETとして,SVをVALUEとして,“9.1 取出し代

入”の一般規則を適用する。 

注記464 SQLパラメタは,それらのデータ型として行型をもつことができない。 

6) 相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とし,CR

は,現在行に位置付けられたままとする。 

注記465 <導出列>の導出中に例外条件が引き起こされるとき,CRが現在行の上に位置付けられ

たままかどうかは,処理系依存である。 

適合性規則 

1) 機能F431“読込み専用スクロール可能カーソル”なしでは,適合するSQL言語中で,<FETCH文>

は,<取出し方向>を含んではならない。 

14.6 <CLOSE文> 

この細分箇条は,ISO/IEC 9075-4の“12.4 <CLOSE文>”によって修正される。 

機能 

<CLOSE文> (<close statement>) は,元祖カーソルを閉じる。 

形式 

<CLOSE文> ::= 

  CLOSE <カーソル名> 

714 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

1) 

04 <CLOSE文>中の<カーソル名>をCNとする。CNは,CNと等価な<カーソル名>の有効範囲内に

含まれなければならない。 

2) CNは,元祖カーソルを識別しなければならない。 

3) CNによって識別される元祖カーソルのカーソル宣言記述子をCDDとする。 

アクセス規則 

なし。 

一般規則 

1) CDDであるカーソル宣言記述子をもつ,現行SQLセションのカーソル実現値記述子をCRとする。 

2) CRをCURSORとして,DESTROYをDISPOSITIONとして,“15.4 カーソルを閉じることの効果”

の一般規則を適用する。 

適合性規則 

なし。 

14.7 <SELECT文:単一行> 

この細分箇条は,ISO/IEC 9075-4の“12.5 <SELECT文:単一行>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“11.14 <SELECT文:単一行>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“14.2 <SELECT文:単一行>”によって修正される。 

機能 

<SELECT文:単一行> (select statement: single row>) は,表の指定された行から値を取り出す。 

形式 

<SELECT文:単一行> ::= 

  SELECT [ <集合限定子> ] <選択リスト> 

      INTO <選択相手リスト> 

      <表式> 

14 <選択相手リスト> ::= 

<相手指定> [ { <コンマ> <相手指定> }... ] 

構文規則 

1) <選択相手リスト>は,<列参照>を指定する<相手指定>を含んではならない。 

2) <表式>によって定義される表をTとする。 

3) 場合: 

a) <選択相手リスト>が単一の<相手指定> TSを含み,かつ,Tの次数が1より大きいならば,TSの

宣言型は,行型でなければならない。 

場合: 

i) 

TSが<SQLパラメタ参照>ならば,TSをTARGETとして,Tの行型の任意の値をVALUEとし

て,“9.2 格納代入”の構文規則を適用する。 

ii) そうでなければ,TSをTARGETとして,Tの行型の任意の値をVALUEとして,“9.1 取出し

代入”の構文規則を適用する。 

b) そうでなければ,次による。 

i) 

<選択リスト>中の要素の個数NOEは,<選択相手リスト>中の要素の個数と同じでなければな

らない。<選択相手リスト>中のi番目の<相手指定>,1 ≤ i ≤ NOEは,<選択リスト>のi番目の

715 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

要素に対応する。 

ii) 

04 1からNOEまでの範囲のiに対して,<選択相手リスト>中の,<SQLパラメタ参照>又は<相

手配列要素指定>のいずれかであるi番目の<相手指定>をTS1iとし,<選択相手リスト>中の<

相手指定>に対応する<選択リスト>のi番目の要素をSLiとする。 

場合: 

1) <相手配列要素指定>が指定されるならば,宣言型がTS1iの宣言型である一時的な格納場所

をTARGETとして,SLiをVALUEとして,“9.2 格納代入”の構文規則を適用する。 

2) そうでなければ,TS1iをTARGETとして,<選択リスト>の対応する要素をVALUEとして,

“9.2 格納代入”の構文規則を適用する。 

iii) <ホストパラメタ指定>である各<相手指定> TS2i,1 ≤ i ≤ NOEに対して,TS2iをTARGETとし

て,<選択リスト>の対応する要素をVALUEとして,“9.1 取出し代入”の構文規則を適用する。 

iv) 

10 <埋込み変数指定>である各<相手指定> TS2i,1 ≤ i ≤ NOEに対して,TS2iをTARGETとして,

<選択リスト>の対応する要素をVALUEとして,“9.1 取出し代入”の構文規則を適用する。 

4) <SELECT文:単一行>中に指定される<選択リスト>及び<表式>である<選択リスト>及び<表式>を

もち,かつ,<SELECT文:単一行>中に<集合限定子>が指定されるならば,その<集合限定子>を指

定する<問合せ指定>をSとする。Sは,正しい<問合せ指定>でなければならない。 

5) Sの結果中の対応する列がナルでないことが分かるならば,<SELECT文:単一行>の結果中の列は,

ナルでないことが分かる。 

6) Sが潜在的に非決定的ならば,<SELECT文:単一行>は,潜在的に非決定的 (possibly non-deterministic) 

とする。 

アクセス規則 

なし。 

一般規則 

1) <問合せ指定> Sの結果をQとする。 

2) 場合: 

a) Qの基数が1より大きいならば,例外条件:基数違反 (cardinality violation) が引き起こされる。<

選択相手リスト>によって識別される相手にSQLデータの値が代入されるかどうかは,処理系依

存とする。 

b) Qが空ならば,<選択相手リスト>によって識別されるどの相手にも,SQLデータの値が代入され

ず,かつ,終了条件:データなし (no data) が引き起こされる。 

c) そうでなければ,Qの行中の値がそれらに対応する相手に代入される。 

3) 終了条件:データなし が引き起こされたならば,この細分箇条の一般規則は,これ以上適用しない。 

4) 場合: 

a) <選択相手リスト>が単一の<相手指定> TSを含み,かつ,表Tの次数が1より大きいならば,現

在行がTSに代入され,次による。 

場合: 

i) 

14 TSが<SQLパラメタ参照>ならば,TSをTARGETとして,現在行をVALUEとして,“9.2 格

納代入”の一般規則を適用する。 

ii) そうでなければ,TSをTARGETとして,現在行をVALUEとして,“9.1 取出し代入”の一般

規則を適用する。 

background image

716 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) そうでなければ,次による。 

i) 

<選択リスト>中の要素の個数をNOEとする。 

ii) 

04 1からNOEまでの範囲のiに対して,<SQLパラメタ参照>又は<相手配列要素指定>のいずれ

かである<選択相手リスト>中のi番目の<相手指定>をTSiとし,Qの行中の対応する(i番目

の)値をSLiで示す。<選択相手リスト>中の相手への値の代入の順序は,処理系依存とする。 

場合: 

1) TSiが<相手配列要素指定>ならば,次による。 

場合: 

A) TSiの値がナル値ならば,例外条件:データ例外 (data exception) − 配列相手にナル値 (null 

value in array target) が引き起こされる。 

B) そうでなければ,次による。 

I) TSiの最大基数をNとする。 

II) TSiの値の基数をMとする。 

III) TSiに直に含まれる<単純値指定>の値をIとする。 

IV) TSiの要素型をEDTとする。 

V) 場合: 

1) Iが0より大きく,M以下ならば,TSiの値は,要素型EDT及び基数Mをもち,次の

とおりに導出される配列Aによって置き換えられる。 

a) 1からI-1まで,及びI+1からMまでの範囲のjに対して,A中のj番目の要素は,

TSi中のj番目の要素の値とする。 

b) 

14 AのI番目の要素をTARGETとして,SLiをVALUEとして,“9.2 格納代入”の

一般規則を適用することによって,SLiが設定される。 

2) IがMより大きく,N以下ならば,TSiの値は,要素型EDT及び基数Iをもち,次の

とおりに導出される配列Aによって置き換えられる。 

a) 1からMまでの範囲のjに対して,A中のj番目の要素は,TSi 中のj番目の要素の

値とする。 

b) M+1からI-1までの範囲のjに対して,A中のj番目の要素は,ナル値とする。 

c) 

14 AのI番目の要素をTARGETとして,SLiをVALUEとして,“9.2 格納代入”の

一般規則を適用する。 

3) そうでなければ,例外条件:データ例外 − 配列要素誤り (array element error) が引き

起こされる。 

2) 

14 そうでなければ,TSiをTARGETとして,Qの行中の対応する値SLiをVALUEとして,

“9.2 格納代入”の一般規則を適用する。 

iii) <ホストパラメタ指定>である各<相手指定> TSに対して,TSをTARGETとして,Qの行中の

対応する値をVALUEとして,“9.1 取出し代入”の一般規則を適用する。<選択相手リスト>中

の相手への値の代入の順序は,処理系依存とする。 

iv) 

10 <埋込み変数指定>である各<相手指定> TSに対して,TSをTARGETとして,Qの行中の対

応する値をVALUEとして,“9.1 取出し代入”の一般規則を適用する。<選択相手リスト>中の

相手への値の代入の順序は,処理系依存とする。 

5) 相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とする。 

717 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

なし。 

14.8 <DELETE文:位置付け> 

この細分箇条は,ISO/IEC 9075-4の“12.6 <DELETE文:位置付け>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“11.12 <DELETE文:位置付け>”によって修正される。 

機能 

<DELETE文:位置付け> (<delete statement: positioned>) は,表の一つの行を削除する。 

形式 

10 <DELETE文:位置付け> ::= 

  DELETE FROM <相手表> [ [ AS ] <相関名> ] 

      WHERE CURRENT OF <カーソル名> 

<相手表> ::= 

  <表名> 

| ONLY <左括弧> <表名> <右括弧> 

構文規則 

1) 

04 <DELETE文:位置付け>をDSPとし,DSPに直に含まれる<カーソル名>をCNとする。CNは,

CNと等価な<カーソル名>の有効範囲内に含まれなければならない。 

2) CNは,元祖カーソルを識別しなければならない。 

3) CNによって識別される元祖カーソルのカーソル宣言記述子をCDDとする。 

4) CDDのカーソル指定は,更新可能でなければならない。 

5) CNによって識別されるカーソルの単純に基となる表をTUとする。TUがTUの末端で基となる表

LUTに関して1対1対応であるような,TUの末端で基となる表をLUTとする。 

6) <相手表>をTTとし,TTに含まれる<表名>をTNとする。TNは,LUTを識別しなければならない。 

7) LUTは,遷移旧表又は遷移新表であってはならない。 

8) TTがONLYを直に含み,かつ,LUTが型付き表でないならば,TTは,TNと等価とする。 

9) TTがONLYを指定しなければならないことは,LUTを参照するTUに含まれる<表参照>がONLY

を指定することと同値とする。 

10) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUTの

記述子を含んでいなければならない。 

11) 場合: 

a) <相関名>が指定されるならば,その<相関名>をCORとする。CORは,露出する<相関名>とする。 

b) そうでなければ,TNをCORとする。CORは,露出する<表名又は問合せ名>とする。 

注記466 CORは,有効範囲をもたない。 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,DSPが<SQLスキー

マ文>に含まれるならば,そのスキーマを所有する認可識別子をAとする。Aに適用可能な権限

は,TNによって識別される表に関するDELETEを含まなければならない。 

b) そうでなければ,現行の権限は,TNによって識別される表に関するDELETEを含まなければな

らない。 

718 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) CDDであるカーソル宣言記述子をもつ,現行SQLセションのカーソル実現値記述子をCRとする。 

2) CRをCURSORとして,DSPをSTATEMENTとして,TTをTARGETとして,“15.5 位置付け削除

の効果”の一般規則を適用する。 

適合性規則 

1) 機能S111“問合せ式中のONLY”なしでは,適合するSQL言語は,ONLYを含む<相手表>を含んで

はならない。 

14.9 <DELETE文:探索> 

この細分箇条は,ISO/IEC 9075-14の“14.3 <DELETE文:探索>”によって修正される。 

機能 

<DELETE文:探索> (<delete statement: searched>) は,表の複数の行を削除する。 

形式 

14 <DELETE文:探索> ::= 

  DELETE FROM <相手表>  

      [ FOR PORTION OF <適用業務時刻期間名> 

        FROM <時点1> TO <時点2> ] 

      [ [ AS ] <相関名> ] 

      [ WHERE <探索条件> ] 

構文規則 

1) <DELETE文:探索>をDSSとし,<相手表>をTTとする。 

2) TTに含まれる<表名>をTNとする。TNによって識別される表をTとする。 

3) Tは,更新可能な表又はトリガ削除可能な表でなければならない。 

4) Tは,遷移旧表又は遷移新表であってはならない。 

5) WHERE <探索条件>が指定されないならば,WHERE TRUEが暗に想定される。 

6) 暗に想定されるか又は陽に指定される<探索条件>をDSCとする。DSCは,SQLデータを潜在的に

修正するSQL呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含んではなら

ない。 

場合: 

a) Tがシステムバージョン表ならば,Tのシステム時刻期間終了列をENDCOLとする。ENDCOLの

宣言型によって提供される最高値をENDVALとする。次の<探索条件>をTSCとする。 

( DSC ) AND ( ENDCOL = ENDVAL ) 

b) そうでなければ,DSCをTSCとする。 

7) 場合: 

a) FOR PORTION OF <適用業務時刻期間名> ATPNが指定されるならば,Tの表記述子は,ATPNと

等価な期間名をもつ期間記述子を含まなければならない。 

i) 

TのATPN期間開始列の名前をBSTARTCOLとする。TのATPN期間終了列の名前をBENDCOL

とする。 

ii) <時点1>をFROMVALとする。FROMVALは,Tの列への参照,又は潜在的に非決定的である

か若しくはSQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチンをもつ<ル

ーチン呼出し>を一般に含んではならない。 

719 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) <時点2>をTOVALとする。TOVALは,Tの列への参照,又は潜在的に非決定的であるか若し

くはSQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチンをもつ<ルーチン

呼出し>を一般に含んではならない。 

iv) 次の<探索条件>をSCとする。 

TSC AND  

(FROMVAL < TOVAL) AND 

(BENDCOL > FROMVAL) AND 

(BSTARTCOL < TOVAL) 

b) そうでなければ,TSCをSCとする。 

8) DSSが<被トリガSQL文>に含まれるならば,SCは,パラメタ参照を指定する<値指定>を含んでは

ならない。 

9) 場合: 

a) <相関名>が指定されるならば,その<相関名>をCNとする。CNは,露出する<相関名>とする。 

b) そうでなければ,TNをCNとする。CNは,露出する<表名又は問合せ名>とする。 

10) CNの有効範囲は,SCとする。 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,DSSが<SQLスキー

マ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。 

i) 

Aに適用可能な権限は,Tに関するDELETEを含まなければならない。 

ii) TTがONLYを直に含むならば,Aに適用可能な権限は,Tの少なくとも一つの上位表に関する

SELECT WITH HIERARCHY OPTIONを含まなければならない。 

b) そうでなければ,次による。 

i) 

現行の権限は,Tに関するDELETEを含まなければならない。 

ii) TTがONLYを直に含むならば,現行の権限は,Tの少なくとも一つの上位表に関するSELECT 

WITH HIERARCHY OPTIONを含まなければならない。 

一般規則 

1) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,Tが

一時表でないならば,例外条件:トランザクション状態が正しくない (invalid transaction state) − 読

込み専用 SQLトランザクション (read-only SQL-transaction) が引き起こされる。 

2) このSQL文が実行されているSQLトランザクション中で現在開いている敏感カーソルCRが存在

するならば,次による。 

場合: 

a) 後続のSQLトランザクション中にCRが保持されなかったならば,この文の成功実行の結果とし

て生じる変更がCRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかでなければならな

い。 

b) そうでなければ,このSQL文の成功実行の結果として生じる変更がCRに対して可視になるかど

うかは,処理系定義とする。 

720 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) 開いている鈍感カーソルCRが存在するならば,この文の成功実行の結果として生じる変更がCR

に対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が引き起こされる

かのいずれかでなければならない。 

4) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

5) 露出する<相関名>又は<表名又は問合せ名>が行に結び付けられたTの各行に対して,SCが実効的

に評価される。 

6) 場合: 

a) TTがONLYを含むならば,SCの結果が真 (True) で,かつ,Tの真下位表中に下位行が存在しな

い行が,Tからの削除のために識別される。 

b) そうでなければ,SCの結果が真 である行が,Tからの削除のために識別される。 

注記467 削除のために行を識別することは,処理系依存の機構である。 

7) Tからの削除のために識別される全ての行から成る集合をSとする。Sは,Tに対する削除操作の

差分旧表 (old delta table of delete operation) とする。FOR PORTION OFが指定されるならば,

FROMVAL及びTOVALは,それぞれ,FROM値の部分に対して関連するもの (associated for portion 

of from-value) 及びTO値の部分に対して関連するもの (associated for portion of to-value) として,S

中のどの行にも関連付けられる。 

8) 場合: 

a) Tが実表ならば,次による。 

i) 

場合: 

1) TTがONLYを指定するならば,Tは,下位表なしでの削除処理のために識別される (identified 

for deletion processing without subtables)。 

2) そうでなければ,Tは,下位表ありでの削除処理のために識別される (identified for deletion 

processing with subtables)。 

注記468 下位表あり又はなしでの削除処理のために実表を識別することは,処理系依存の機

構である。 

ii) “15.7 実表からの行の削除の効果”の一般規則を適用する。 

b) Tがビュー表ならば,TTをVIEW NAMEとして,“15.9 ビュー表からの行の削除の効果”の一般

規則を適用する。 

9) DSSによって削除のためにマーク付けされるいずれかの行が,開いているカーソルCRを識別する

<DELETE文:位置付け>,<動的DELETE文:位置付け>若しくは<準備可能動的DELETE文:位置

付け>によって削除のためにマーク付けされていたか,又は開いているカーソルCRを識別する

<UPDATE文:位置付け>, <動的UPDATE文:位置付け>若しくは<準備可能動的UPDATE文:位置

付け>によって更新されていたならば,終了条件:警告 (warning) − カーソル操作衝突 (cursor 

operation conflict) が引き起こされる。 

10) どの行も,削除のためにマーク付けされないならば,終了条件:データなし (no data) が引き起こさ

れる。 

適合性規則 

1) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<DELETE文:

探索>を含んではならない。 

a) Tの末端で一般に基となる表が,<探索条件>に広く含まれる<問合せ式>の基となる表である。 

721 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

ド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。 

2) 機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能でな

い表を識別する<相手表>を含む<DELETE文:探索>を含んではならない。 

3) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語中で,<DELETE文:探索>は,FOR 

PORTION OFを含んではならない。 

14.10 

<TRUNCATE TABLE文> 

機能 

<TRUNCATE TABLE文>(<truncate table statement>)は,どの被トリガ動作も引き起こさないで,実表の

全ての行を削除する。 

形式 

<TRUNCATE TABLE文> ::= 

  TRUNCATE TABLE <相手表> [<識別列再開始選択肢> ] 

<識別列再開始選択肢> ::= 

  CONTINUE IDENTITY 

| RESTART IDENTITY 

構文規則 

1) <TRUNCATE TABLE文>をTTSとし,TTSに含まれる<相手表>をTTとする。 

2) TTに含まれる<表名>をTNとし,TNによって識別される表をTとする。TNの陽に指定されるか

又は暗に想定される<スキーマ名>によって識別されるスキーマは,Tの記述子を含んでいなければ

ならない。 

3) Tは,実表でなければならず,システムバージョン表であってはならない。 

4) Tは,どの参照制約記述子中の被参照表の名前によっても識別されていてはならない。 

5) <識別列再開始選択肢>が指定されないならば,CONTINUE IDENTITYが暗に想定される。 

アクセス規則 

1) Tの<スキーマ名>によって識別されるスキーマを所有する<認可識別子>をAとする。 

2) 与えられた認可識別子は,Aを含まなければならない。 

一般規則 

1) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,Tが

一時表でないならば,例外条件:トランザクション状態が正しくない (invalid transaction state) − 読

込み専用 SQLトランザクション (read-only SQL-transaction) が引き起こされる。 

2) このSQL文が実行されているSQLトランザクション中で現在開いている敏感カーソルCRが存在

するならば,次による。 

場合: 

a) 後続のSQLトランザクション中にCRが保持されなかったならば,この文の成功実行の結果とし

て生じる変更がCRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかでなければならな

い。 

b) そうでなければ,このSQL文の成功実行の結果として生じる変更がCRに対して可視になるかど

722 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

うかは,処理系定義とする。 

3) 開いている鈍感カーソルCRが存在するならば,この文の成功実行の結果として生じる変更がCR

に対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が引き起こされる

かのいずれかでなければならない。 

4) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

5) 場合: 

a) TTがONLYを含むならば,Tの真下位表中に下位行が存在しない行が,Tから削除される。 

b) そうでなければ,全ての行がTから削除される。 

6) TTSによってTから削除されるいずれかの行が,開いているカーソルCRを識別する<DELETE文:

位置付け>,<動的DELETE文:位置付け>若しくは<準備可能動的DELETE文:位置付け>によって

削除のためにマーク付けされていたか,又は開いているカーソルCRを識別する<UPDATE文:位置

付け>, <動的UPDATE文:位置付け>若しくは<準備可能動的UPDATE文:位置付け>によって更新

されていたならば,終了条件:警告 (warning) − カーソル操作衝突 (cursor operation conflict) が引

き起こされる。 

7) どの行も,Tから削除されないならば,終了条件:データなし (no data) が引き起こされる。 

8) RESTART IDENTITYが指定され,かつ,識別列の列記述子IDCDをTの表記述子が含むならば,次

による。 

a) IDCDに含まれる列名をCNとし,IDCDに含まれる開始値をSVとする。 

b) これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行される。 

ALTER TABLE TN ALTER COLUMN CN RESTART WITH SV 

適合性規則 

1) 機能F200“TRUNCATE TABLE文”なしでは,適合するSQL言語は,<TRUNCATE TABLE文>を含

んではならない。 

2) 機能F202“TRUNCATE TABLE文:識別列再開始選択肢”なしでは,適合するSQL言語は,<識別

列再開始選択肢>を含んではならない。 

14.11 

<INSERT文> 

この細分箇条は,ISO/IEC 9075-14の“14.4 <INSERT文>”によって修正される。 

機能 

<INSERT文> (<insert statement>) は,表中に新しい行を作成する。 

形式 

14 <INSERT文> ::= 

  INSERT INTO <挿入相手> <挿入列及び挿入元> 

<挿入相手> ::= 

  <表名> 

<挿入列及び挿入元> ::= 

  <副問合せ発> 

| <構成子発> 

| <既定値発> 

<副問合せ発> ::= 

  [ <左括弧> <挿入列リスト> <右括弧> ] 

723 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      [ <置換句> ] 

      <問合せ式> 

<構成子発> ::= 

  [ <左括弧> <挿入列リスト> <右括弧> ] 

      [ <置換句> ] 

      <文脈型付き表値構成子> 

<置換句> ::= 

  OVERRIDING USER VALUE 

| OVERRIDING SYSTEM VALUE 

<既定値発> ::= 

  DEFAULT VALUES 

<挿入列リスト> ::= 

  <列名リスト> 

構文規則 

1) <INSERT文>をISとする。 

2) <挿入相手>に含まれる<表名>をTNとする。TNによって識別される表をTとする。 

3) Tは,挿入可能な表又はトリガ挿入可能な表でなければならない。 

4) Tは,遷移旧表又は遷移新表であってはならない。 

5) 利用者定義型名UDTNを含む記述子をもつTの末端で一般に基となる各表に対して,UDTNによっ

て識別される利用者定義型UDTのデータ型記述子は,UDTが実現値生成可であることを示さなけ

ればならない。 

6) DEFAULT VALUESを指定する<挿入列及び挿入元>は,次の形式の<文脈型付き表値構成子>を指定

する<挿入列及び挿入元>によって暗に置き換えられる。 

VALUES (DEFAULT, DEFAULT, ..., DEFAULT) 

ここで,“DEFAULT”の実現値の個数は,Tの列の個数と等しい。 

7) <挿入列リスト>が省略されるならば,T内の順序位置の昇順の並びで,Tの全ての列を識別する<挿

入列リスト>が暗に想定される。 

8) <挿入列リスト>によって識別される列は,対象列とする。Tのどの<列名>も,2回以上識別しては

ならない。 

9) Tがトリガ挿入可能でないならば,Tは,更新可能な表でなければならない。各対象列は,Tの更新

可能な列でなければならない。 

注記469 実表の更新可能な列の概念は,“4.15 表”で定義している。ビュー表の更新可能な列の概

念は,“11.32 <ビュー定義>”で定義している。 

10) <文脈型付き表値構成子> CTTVCが指定されるならば,基となる列が生成列である列を参照し,か

つ,位置で対応する<列名>を,<挿入列リスト>中にもつ,CTTVCに単純に含まれるどの<文脈型付

き行値構成子要素>も,<既定値指定>でなければならない。 

11) 場合: 

a) <挿入列リスト>に含まれる<列名>によって参照される列の基となる列がシステム生成自己参照

列又は導出自己参照列ならば,<置換句>を指定しなければならない。 

b) あるnに対して,<挿入列リスト>中のn番目の順序位置に含まれる<列名> CNによって参照され

724 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る列の基となる列が,値が常時生成されることを示す標識を含む記述子をもつ識別列,システム

時刻期間開始列又はシステム時刻期間終了列ならば,次による。 

場合: 

i) 

<副問合せ発>が指定されるならば,<置換句>を指定しなければならない。 

ii) <文脈型付き表値構成子>に単純に含まれるいずれかの<文脈型付き行値式>が<行値の特別な場

合>ならば,<置換句>を指定しなければならない。 

iii) <文脈型付き表値構成子>に単純に含まれるいずれかの<文脈型付き行値構成子>に単純に含ま

れるn番目の<文脈型付き行値構成子要素>が<既定値指定>でないならば,<置換句>を指定しな

ければならない。 

注記470 先行する部分規則は,全ての可能性を含むわけではない。残りの可能性は,どの識別

列に対しても,又はシステム時刻期間開始列若しくはシステム時刻期間終了列に対し

て,<既定値指定>が指定される場合で,その場合には,<置換句>が指定されるかどう

かは,重要ではない。 

c) あるnに対して,<挿入列リスト>中のn番目の順序位置に含まれる<列名> CNによって参照され

る列の基となる列が,値が既定生成されることを示す標識を含む記述子をもつ識別列ならば,<置

換句>が指定されるとき,<置換句>は,OVERRIDING USER VALUEを指定しなければならない。 

d) あるnに対して,<挿入列リスト>中のn番目の順序位置に含まれる<列名> CNによって参照され

る列の基となる列が,値が常時生成されることを示す標識を含む記述子をもつシステム時刻期間

開始列又はシステム時刻期間終了列で,かつ,<置換句>が指定されるならば,<置換句>は,

OVERRIDING USER VALUEを指定しなければならない。 

e) そうでなければ,<置換句>を指定してはならない。 

12) <文脈型付き表値構成子> CVCが指定されるならば,CVCに含まれる全ての<文脈型付き行値式> 

CRVS中に指定される全ての<文脈型付き値指定> CVSのデータ型は,陽に指定されるか又は暗に想

定される<挿入列リスト>中の,位置で対応する列に対する列記述子中で示されるデータ型DTとす

る。CVSがARRAYを指定する<空指定>ならば,DTは,配列型でなければならない。CVSが

MULTISETを指定する<空指定>ならば,DTは,マルチ集合型でなければならない。 

13) <問合せ式>又は<文脈型付き表値構成子>によって指定される表をQTとする。QTの次数は,<挿入

列リスト>中の<列名>の個数と等しくなければならない。<挿入列リスト>中のi番目の<列名>によ

って識別される表Tの列は,QTのi番目の列に対応する。 

14) Tの各列に対して,Tの列をTARGETとして,QTの対応する列をVALUEとして,“9.2 格納代入”

の構文規則を適用する。 

15) ISが<被トリガSQL文>に含まれるならば,<挿入列及び挿入元>は,パラメタ参照を指定する<値指

定>を含んではならない。 

16) <副問合せ発>に単純に含まれる<問合せ式>は,<表値構成子>であってはならない。 

注記471 この規則は,構文上の曖昧さを取り除く。そうでなければ,“VALUES (1)”が次のどちら

としても解析されることがあり得る。 

<挿入列及び挿入元> ::=   

    <副問合せ発> ::= 

    <問合せ式> ::= 

    <表値構成子> ::= 

725 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    VALUES (1) 

又は 

<挿入列及び挿入元> ::= 

    <構成子発> ::= 

    <文脈型付き表値構成子> ::= 

    VALUES (1) 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,ISが<SQLスキーマ

文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。Tに関してAに適用

可能な権限は,各対象列に関するINSERTを含まなければならない。 

b) そうでなければ,Tに関する現行の権限は,各対象列に関するINSERTを含まなければならない。 

一般規則 

1) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,Tが

一時表でないならば,例外条件:トランザクション状態が正しくない (invalid transaction state) − 読

込み専用SQLトランザクション (read-only SQL-transaction) が引き起こされる。 

2) このSQL文が実行されているSQLトランザクション中で,現在開いている敏感カーソルCRが存

在するならば,次による。 

場合: 

a) 後続のSQLトランザクションにCRが保持されなかったならば,この文の成功実行の結果として

生じる変更は,CRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかでなければならな

い。 

b) そうでなければ,このSQL文の成功実行の結果として生じる変更が,CRに対して可視になるか

どうかは,処理系定義とする。 

3) 開いている鈍感カーソルCRが存在するならば,この文の成功実行の結果として生じる変更がCR

に対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が引き起こされる

かのいずれかでなければならない。 

4) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

5) QTは,Tにいずれかの行が挿入される前に実効的に評価される。 

6) QTを評価した結果をQとする。 

7) Qの各行Rに対して,次による。 

a) “11.5 <DEFAULT句>”の一般規則で規定するとおりに,各列の値がその列の既定値であるTの

候補行が実効的に作成される。候補行は,Tの全ての列から成る。 

b) 候補行中の各対象列に対して,<挿入列リスト>中のi番目の<列名>によって識別される対象列を

Ciとし,Rのi番目の値をSViとする。 

c) Ciが,代入されないとしてマーク付けされていなくて,かつ,Ciの基となる列が自己参照列では

ないような,どのCiに対しても,CiをTARGETとして,SViをVALUEとして,“9.2 格納代入”

の一般規則を適用する。Ciは,もはや代入されないとしてマーク付けされない。 

726 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) 基となる列が自己参照列である列RCをTがもつならば,次による。 

場合: 

i) 

RCがシステム生成自己参照列ならば,RCの値は,候補行のREF値によって実効的に置き換え

られる。 

ii) RCが導出自己参照列ならば,RCの値は,処理系依存の方法で,RCの参照型の導出表現の属

性のリストに対応する候補行中の列から導出される値によって,実効的に置き換えられる。 

e) 次の条件のうちの一つが真であるどのCiに対しても,CiをTARGETとして,SViをVALUEとし

て,“9.2 格納代入”の一般規則を適用する。 

i) 

Ciの基となる列が利用者生成自己参照列である。 

ii) Ciの基となる列が自己参照列で,かつ,OVERRIDING SYSTEM VALUEが指定されている。 

iii) Ciの基となる列が識別列で,Rのi番目の列が<既定値指定>から導出されず,かつ,

OVERRIDING SYSTEM VALUEが指定されている。 

iv) Ciの基となる列が,値が既定生成されることを示す標識を記述子が含む識別列で,かつ,

OVERRIDING USER VALUEも指定されないし,i番目の列が<既定値指定>から導出されること

もない。 

Ciは,もはや代入されないとしてマーク付けされない。 

注記472 OVERRIDING USER VALUEが指定されるならば,先行する規則の結果として,候補行

の幾つかの列は,代入されないとしてマーク付けされ続けるかもしれない。このような

列の値は,<挿入列及び挿入元>中に指定された利用者値の置換の効果をもつ“15.10 実

表への表の挿入の効果”の一般規則によって最終的に決定される。 

注記473 候補行中で許されるデータ値が,WITH CHECK OPTION制約によって制約されてもよい。

WITH CHECK OPTION制約の効果は,“15.12 ビュー表への表の挿入の効果”の一般規則

で定義している。 

8) 候補行から成る表をSとする。 

場合: 

a) Tが実表ならば,次による。 

i) 

Tは,挿入元の表Sの挿入のために識別される (identified for insertion of source table S)。 

注記474 挿入元の表の挿入のために実表を識別することは,処理系依存の操作である。 

ii) “15.10 実表への表の挿入の効果”の一般規則を適用する。 

b) Tがビュー表ならば,SをSOURCEとして,TをTARGETとして,“15.12 ビュー表への表の挿

入の効果”の一般規則を適用する。 

9) Qが空ならば,終了条件:データなし (no data) が引き起こされる。 

適合性規則 

1) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<INSERT文

>を含んではならない。 

a) 列参照の修飾する表の表名を除いて,Tの末端で一般に基となる表の<表名>が<副問合せ発>に広

く含まれる。 

b) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

ド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<副問合せ発>が広く含む。 

2) 機能F222“INSERT文:DEFAULT VALUES句”なしでは,適合するSQL言語は,<既定値発>を含

727 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

んではならない。 

3) 機能S024“拡張構造型”なしでは,適合するSQL言語中で,陽に指定されるか又は暗に想定される

<挿入列リスト>中で識別される各列Cに対して,Cの宣言型が構造型TYならば,<問合せ式>又は

<文脈型付き表値構成子>の対応する列の宣言型は,TYでなければならない。 

4) 機能S043“拡張参照型”なしでは,適合するSQL言語は,<置換句>を含んではならない。 

5) 機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能でな

い表を識別する<挿入相手>を含む<INSERT文>を含んではならない。 

14.12 

<MERGE文> 

この細分箇条は,ISO/IEC 9075-14の“14.5 <MERGE文>”によって修正される。 

機能 

<MERGE文> (<merge statement>) は,条件付きで,表の複数の行の更新,表の複数の行の削除,及び/

又は表への複数の新しい行の挿入を行う。 

形式 

14 <MERGE文> ::= 

  MERGE INTO <相手表> [ [ AS ] <併合相関名> ] 

      USING <表参照> 

      ON <探索条件> <併合操作指定> 

<併合相関名> ::= 

  <相関名> 

<併合操作指定> ::= 

  <併合WHEN句>... 

<併合WHEN句> ::= 

  <併合WHEN MATCHED句> 

| <併合WHEN NOT MATCHED句> 

<併合WHEN MATCHED句> ::= 

  WHEN MATCHED [ AND <探索条件> ] 

      THEN <併合更新又は削除指定> 

<併合更新又は削除指定> ::= 

  <併合更新指定> 

| <併合削除指定> 

<併合WHEN NOT MATCHED句> ::= 

  WHEN NOT MATCHED [ AND <探索条件> ] 

      THEN <併合挿入指定> 

<併合更新指定> ::= 

  UPDATE SET <設定句リスト> 

<併合削除指定> ::= 

  DELETE 

<併合挿入指定> ::= 

  INSERT [ <左括弧> <挿入列リスト> <右括弧> ] 

      [ <置換句> ] 

728 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      VALUES <併合挿入値リスト> 

<併合挿入値リスト> ::= 

  <左括弧> 

      <併合挿入値要素> [ { <コンマ> <併合挿入値要素> }... ] 

      <右括弧> 

<併合挿入値要素> ::= 

  <値式> 

| <文脈型付き値指定> 

構文規則 

1) <相手表> TTに含まれる<表名>をTNとし,TNによって識別される表をTとする。 

2) <併合WHEN NOT MATCHED句>が指定されるならば,Tは,挿入可能か又はトリガ挿入可能でな

ければならない。 

3) <併合更新指定>が指定されるならば,Tは,更新可能か又はトリガ更新可能でなければならない。 

4) <併合削除指定>が指定されるならば,Tは,更新可能か又はトリガ削除可能でなければならない。 

5) Tは,遷移旧表又は遷移新表であってはならない。 

6) 利用者定義型名UDTNを記述子が含むTの末端で一般に基となる各表に対して,UDTNによって識

別される利用者定義型UDTのデータ型記述子は,UDTが実現値生成可であることを示さなければ

ならない。 

7) Tがビューならば,<相手表>は,次のONLY指定によって実効的に置き換えられる。 

ONLY ( TN ) 

8) 場合: 

a) <併合相関名>が指定されるならば,<併合相関名>に含まれる<相関名>をCNとする。CNは,露

出する<相関名>とする。 

b) そうでなければ,<相手表>に含まれる<表名>をCNとする。CNは,露出する<表名又は問合せ名

>とする。 

9) CNの有効範囲は,<MERGE文>に直に含まれる<探索条件>,<併合WHEN MATCHED句>に直に含

まれる<探索条件>,<併合WHEN NOT MATCHED句>に直に含まれる<探索条件>,及び<設定句リ

スト>とする。 

10) <MERGE文>に直に含まれる<表参照>をTRとする。TRは,<結合表>を直接含んではならない。 

11) TR中に露出する<相関名>又は<表名又は問合せ名>は,CNと等価であってはならない。 

12) <挿入列リスト>が省略されるならば,T内の順序位置の昇順の並びで,Tの全ての列を識別する<挿

入列リスト>が暗に想定される。 

13) 場合: 

a) <挿入列リスト>に含まれる<列名>によって参照される列の基となる列が,システム生成自己参照

列又は導出自己参照列ならば,<置換句>を指定しなければならない。 

b) あるnに対して,<挿入列リスト>中のn番目の順序位置に含まれる<列名>によって参照される列

の基となる列が,値が常時生成されることを示す標識を記述子が含む識別列,システム時刻期間

開始列又はシステム時刻期間終了列で,かつ,<併合挿入値リスト>に単純に含まれるどの<併合挿

入値要素>に単純に含まれるn番目の<文脈型付き値指定>も,<既定値指定>でないならば,<置換

句>を指定しなければならない。 

729 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) あるnに対して,<挿入列リスト>中のn番目の順序位置に含まれる<列名>によって参照される列

の基となる列が,値が既定生成されることを示す標識を記述子が含む識別列で,かつ,<置換句>

が指定されるならば,<置換句>は,OVERRIDING USER VALUEを指定しなければならない。 

d) あるnに対して,<挿入列リスト>中のn番目の順序位置に含まれる<列名>によって参照される列

の基となる列が,値が常時生成されることを示す標識を記述子が含むシステム時刻期間開始列又

はシステム時刻期間終了列で,かつ,<置換句>が指定されるならば,<置換句>は,OVERRIDING 

USER VALUEを指定しなければならない。 

e) そうでなければ,<置換句>を指定してはならない。 

14) <MERGE文>に直に含まれる<探索条件>,<併合WHEN MATCHED句>に直に含まれる<探索条件>,

及び<併合WHEN NOT MATCHED句>に直に含まれる<探索条件>は,SQLデータを潜在的に修正す

るSQL呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含んではならない。 

15) <設定句リスト>中の<対象列>によって識別される各列は,更新対象列 (update object column) とす

る。暗に想定されるか又は陽に指定される<挿入列リスト>中の<列名>によって識別される各列は,

挿入対象列 (insert object column) とする。各更新対象列及び各挿入対象列は,対象列 (object column) 

とする。 

16) <併合WHEN NOT MATCHED句> が指定され,かつ,Tがトリガ挿入可能でないか,又は<併合

WHEN MATCHED句>が指定され,かつ,Tがトリガ更新可能でないならば,どの対象列も,Tの更

新可能な列を識別しなければならない。 

注記475 実表の更新可能な列の概念は,“4.15 表”で定義している。ビュー表の更新可能な列の概

念は,“11.32 <ビュー定義>”で定義している。 

17) Tのどの<列名>も,<挿入列リスト>中で2回以上識別してはならない。 

18) 各<併合WHEN NOT MATCHED句>に対して,次による。 

a) <併合挿入値リスト>に含まれる<併合挿入値要素>の個数をNIとする。それらの<併合挿入値要素

>をEXP1,EXP2,...,EXPNIとする。 

b) <挿入列リスト>中の<列名>の個数は,NIと等しくなければならない。 

c) <併合挿入値リスト>中のどの<文脈型付き値指定> CVSの宣言型も,陽に指定されるか又は暗に

想定される<挿入列リスト>中の,位置で対応する列に対する列記述子中で示されるデータ型DT

とする。CVSが,ARRAYを指定する<空指定>ならば,DTは,配列型でなければならない。CVS

が,MULTISETを指定する<空指定>ならば,DTは,マルチ集合型でなければならない。 

d) 基となる列が生成列である列を参照し,かつ,位置で対応する<列名>を,<挿入列リスト>中にも

つどの<併合挿入値要素>も,<既定値指定>でなければならない。 

e) 1 ≤ i ≤ NIに対して,EXPiをVALUEとして,<挿入列リスト>中のi番目の<列名>によって識別さ

れる表Tの列をTARGETとして,“9.2 格納代入”の構文規則を適用する 

19) <MERGE文>に直に含まれる<探索条件>をDSCとする。 

場合: 

a) Tがシステムバージョン表ならば,Tのシステム時刻期間終了列をENDCOLとする。ENDCOLの

宣言型によって提供される最高値をENDVALとする。次の<探索条件>をSC1とする。 

( DSC ) AND ( ENDCOL = ENDVAL ) 

b) そうでなければ,DSCをSC1とする。 

アクセス規則 

730 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,<MERGE文>が<SQL

スキーマ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。 

i) 

<併合更新指定>が指定されるならば,Aに適用可能な権限は,各更新対象列に関するUPDATE

を含まなければならない。 

ii) <併合削除指定>が指定されるならば,Aに適用可能な権限は,Tに関するDELETEを含まなけ

ればならない。 

iii) <併合挿入指定>が指定されるならば,Aに適用可能な権限は,各挿入対象列に関するINSERT

を含まなければならない。 

iv) TTがONLYを直に含むならば,Aに適用可能な権限は,Tの少なくとも一つの上位表に関する

SELECT WITH HIERARCHY OPTIONを含まなければならない。 

b) そうでなければ,次による。 

i) 

<併合更新指定>が指定されるならば,現行の権限は,各更新対象列に関するUPDATEを含まな

ければならない。 

ii) <併合削除指定>が指定されるならば,Aに適用可能な権限は,Tに関するDELETEを含まなけ

ればならない。 

iii) <併合挿入指定>が指定されるならば,現行の権限は,各挿入対象列に関するINSERTを含まな

ければならない。 

iv) TTがONLYを直に含むならば,現行の権限は,Tの少なくとも一つの上位表に関するSELECT 

WITH HIERARCHY OPTIONを含まなければならない。 

一般規則 

1) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,Tが

一時表でないならば,例外条件:トランザクション状態が正しくない (invalid transaction state) − 読

込み専用SQLトランザクション (read-only SQL-transaction) が引き起こされる。 

2) このSQL文が実行されているSQLトランザクション中で,現在開いている敏感カーソルCRが存

在するならば,次による。 

場合: 

a) 後続のSQLトランザクションにCRが保持されなかったならば,この文の成功実行の結果として

生じる変更は,CRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかでなければならな

い。 

b) そうでなければ,このSQL文の成功実行の結果として生じる変更が,CRに対して可視になるか

どうかは,処理系定義とする。 

3) 開いている鈍感カーソルCRが存在するならば,この文の成功実行の結果として生じる変更がCR

に対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が引き起こされる

かのいずれかでなければならない。 

4) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

5) <表参照>によって指定される表をQTとする。QTは,T中のいずれかの行が更新されるか,削除さ

れるか又は挿入される前に実効的に評価される。QTを評価した結果をQとする。 

731 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) <併合操作指定>中に指定される順序で,各<併合WHEN句>に対して,次による。 

場合: 

a) <併合WHEN MATCHED句> MWMCが指定されるならば,次による。 

i) 

Tの各行R1に対して,次による。 

1) TTの露出する<表名>が結び付けられたR1,及び<表参照>の露出する<相関名>又は<表名又

は問合せ名>が行に結び付けられたQの各行に対して,SC1,及びあるならば,MWMCに直

に含まれる<探索条件> SC2が実効的に評価される。SC1及びSC2は,両方とも,Tのいずれ

かの行が更新されるか又は削除される前に,かつ,Tのいずれかの行の更新又は削除によっ

て引き起こされるどの<被トリガ動作>の呼出しにも先立って,Tにいずれかの行が挿入され

る前に,かつ,Tのいずれかの行の挿入によって引き起こされるどの<被トリガ動作>の呼出

しにも先立って,実効的に評価される。 

場合: 

A) TTがONLYを含むならば,R1がTの真下位表中に下位行をもたないで,Qのいずれかの

行R2に対してSC1及びSC2の両方の結果が真 (True) で,かつ,R1が<併合操作指定>中

でMWMCに先行する他のどの<併合WHEN MATCHED句>によって識別される当該行で

もないとき,R1は,当該行とする。R2は,一致行とする。 

B) そうでなければ,Qのいずれかの行R2に対してSC1及びSC2の両方の結果が真 で,か

つ,R1が<併合操作指定>中でMWMCに先行する他のどの<併合WHEN MATCHED句>に

よって識別される当該行でもないとき,R1は,当該行とする。R2は,一致行とする。 

2) R1が当該行ならば,次による。 

A) R1に対するQ中の一致行の個数をMとする。 

B) Mが1より大きいならば,例外条件:基数違反 (cardinality violation) が引き起こされる。 

C) <併合更新指定>が指定されるならば,次による。 

I) 

各<設定句>の<更新元>は,Tのいずれかの行が更新される前に,かつ,Tのいずれかの

行の更新によって引き起こされるどの<被トリガ動作>の呼出しにも先立って,実効的に

評価される。その結果の値は,更新値とする。 

II) 当該行を写して,“14.15 <設定句リスト>”の一般規則を適用することによって,各<設定

句>によって指定されるとおりにそれを更新することによって,新しい候補行が構成され

る。 

ii) 全ての当該行から成る集合をSとする。Sは,Tに対する併合操作の差分旧表 (old delta table of 

merge operation) とする。 

iii) Tが実表ならば,各当該行も,対象行とする。そうでなければ,対象行は,当該行が導出され

るTの末端で一般に基となる表の行とする。 

注記476 対象行中で許されるデータ値が,WITH CHECK OPTION制約によって制約されても

よい。WITH CHECK OPTION制約の効果は,“15.15 ビュー表中の行の置換えの効

果”の一般規則で定義している。 

iv) 対象行の集合中のいずれかの行が,開いているカーソルCRを識別する<DELETE文:位置付け

>,<動的DELETE文:位置付け>若しくは<準備可能動的DELETE文:位置付け>によって削除

のためにマーク付けされていたか,又は開いているカーソルCRを識別する<UPDATE文:位置

付け>,<動的UPDATE文:位置付け>若しくは<準備可能動的UPDATE文:位置付け>によって

732 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

更新されていたならば,終了条件:警告 (warning) − カーソル操作衝突 (cursor operation 

conflict) が引き起こされる。 

v) <併合更新指定>が指定されるならば,次による。 

1) <設定句リスト>に含まれる<対象列>によって識別されるTの列をCLとする。 

2) 各当該行SRは,それに対応する新しい候補行CNRによるT中での置換えのために識別され

る。(SR,CNR) 対の集合は,Tに対する置換え集合 (replacement set) とする。 

注記477 置換えのために行を識別すること,置換行を識別される行に関連付けること,及

び置換え集合を表に関連付けることは,処理系依存の操作である。 

3) 場合: 

A) Tが実表ならば,次による。 

I) 

場合: 

1) TTがONLYを指定するならば,Tは,対象列CLに関して下位表なしでの置換え処理

のために識別される (identified for replacement processing without subtables)。 

2) そうでなければ,Tは,対象列CLに関して下位表ありでの置換え処理のために識別

される (identified for replacement processing with subtables)。 

注記478 下位表あり又はなしでの置換え処理のために実表を識別することは,処理

系依存の機構である。ここでは存在しないが,一般には,対象列のリスト

が空の可能性がある。 

II) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

B) Tがビュー表ならば,TTをVIEW NAMEとして,Tに対する置換え集合をREPLACEMENT 

SET FOR VIEW NAMEとして,“15.15 ビュー表中の行の置換えの効果”の一般規則を適

用する。 

vi) <併合削除指定>が指定されるならば,次による。 

1) 各当該行は,Tからの削除のために識別される。 

2) 場合: 

A) Tが実表ならば,次による。 

I) 

場合: 

1) TTがONLYを指定するならば,Tは,下位表なしでの削除処理のために識別される 

(identified for deletion processing without subtables)。 

2) そうでなければ,Tは,下位表ありでの削除処理のために識別される (identified for 

deletion processing with subtables)。 

注記479 下位表あり又はなしでの削除処理のために実表を識別することは,処理系

依存の機構である。 

II) “15.7 実表からの行の削除の効果”の一般規則を適用する。 

B) Tがビュー表ならば,TTをVIEW NAMEとして,“15.9 ビュー表からの行の削除の効果”

の一般規則を適用する。 

b) <併合WHEN NOT MATCHED句> MWNMCが指定されるならば,次による。 

i) 

<MERGE文>に直に含まれる<相手表>をTR1とし,<MERGE文>に直に含まれる<表参照>を

TR2とする。<併合相関名>が指定されるならば,“AS <併合相関名>”をMCNとする。そうで

なければ,長さ0の文字列をMCNとする。MWNMCが<探索条件> SC2を直に含むならば,

733 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

“OR NOT SC2”をONSC2とする。そうでなければ,長さ0の文字列をONSC2とする。次の

問合せ指定の結果をS1とする。 

SELECT * 

FROM TR1 MCN, TR2 

WHERE SC1 ONSC2 

ii) Tの行R1とQの行R2とを連結した行がS1中に存在するQの行の集まりをS2とする。 

iii) S2中にないQの行の集まりをS3とする。S3に対する実効的な異なる名前をSN3とする。TR2

の露出する<相関名>又は<表名又は問合せ名>をENとする。 

iv) 次の問合せ指定の結果をS4とする。 

SELECT EXP1, EXP2, ... , EXPNI 

FROM SN3 AS EN 

v) <併合操作指定>中でMWNMCに先行する他のどの<併合WHEN NOT MATCHED句>によって

も実効的に作成されることがないS4の行の集まりをS5とする。 

vi) S5は,Tからいずれかの行が削除されるか,Tにいずれかの行が挿入されるか又はTのいずれ

かの行が更新される前に,実効的に評価される。 

vii) S5の各行Rに対して,次による。 

1) “11.5 <DEFAULT句>”の一般規則で規定するとおりに,各列の値がそれの既定値であるT

の候補行が,実効的に作成される。候補行は,Tの全ての列から成る。 

2) 基となる列が自己参照列である列RCをTがもつならば,次による。 

場合: 

A) RCがシステム生成自己参照列ならば,RCの値は,候補行のREF値によって実効的に置き

換えられる。 

B) RCが導出自己参照列ならば,RCの値は,処理系依存の方法でRCの参照型の導出表現の

属性のリストに対応する候補行中の列から導出される値によって,実効的に置き換えられ

る。 

3) 候補行中の各対象列に対して,<挿入列リスト>中のi番目の<列名>によって識別される対象

行をCiとし,Rのi番目の値をSViとする。 

4) 次の条件のうちの一つが真であるどのCiに対しても,CiをTARGETとして,SViをVALUE

として,“9.2 格納代入”の一般規則を適用する。 

A) Ciが,代入されないとしてマーク付けされていなくて,かつ,Ciの基となる列が自己参照

列ではない。 

B) Ciの基となる列が利用者生成自己参照列である。 

C) Ciの基となる列が自己参照列で,かつ,OVERRIDING SYSTEM VALUEが指定されている。 

D) Ciの基となる列が識別列で,Rのi番目の列が<既定値指定>から導出されず,かつ,

OVERRIDING SYSTEM VALUEが指定されている。 

E) Ciの基となる列が,値が既定生成されることを示す標識を記述子が含む識別列で,かつ,

OVERRIDING USER VALUEも指定されないし,i番目の列が<既定値指定>から導出される

こともない。 

Ciは,もはや代入されないとしてマーク付けされない。 

注記480 OVERRIDING USER VALUEが指定されるならば,先行する規則の結果として,

734 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

候補行の幾つかの列は,代入されないとしてマーク付けされ続けるかもしれない。

このような列の値は,<挿入列及び挿入元>中に指定された利用者値の置換の効果

をもつ“15.10 実表への表の挿入の効果”の一般規則によって最終的に決定される。 

注記481 候補行中で許されるデータ値が,WITH CHECK OPTION制約によって制約されて

もよい。WITH CHECK OPTION制約の効果は,“15.12 ビュー表への表の挿入の効

果”の一般規則で定義している。 

viii) 候補行から成る表をSとする。 

場合: 

1) Tが実表ならば,次による。 

A) Tは,挿入元の表Sの挿入のために識別される (identified for insertion of source table S)。 

注記482 挿入元の表の挿入のために実表を識別することは,処理系依存の操作である。 

B) “15.10 実表への表の挿入の効果”の一般規則を適用する。 

2) Tがビュー表ならば,SをSOURCEとして,TをTARGETとして,“15.12 ビュー表への表

の挿入の効果”の一般規則を適用する。 

7) Qが空ならば,終了条件:データなし (no data) が引き起こされる。 

適合性規則 

1) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<MERGE文

>を含んではならない。 

a) 列参照の<表名又は問合せ名>又は<相関名>を除いて,<表参照>に直に含まれる<問合せ式>に,T

の末端で一般に基となる表が広く含まれる。 

b) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

ド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<表参照>に直に含まれる<問合せ式>

が広く含む。 

2) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<MERGE文

>を含んではならない。 

a) Tの末端で一般に基となる表が,<探索条件>に広く含まれるいずれかの<問合せ式>の基となる表

である。 

b) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

ド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。 

3) 機能S024“拡張構造型”なしでは,適合するSQL言語は,陽に指定されるか又は暗に想定される<

挿入列リスト>中で識別される各列Cに対して,Cの宣言型が構造型TYならば,<問合せ式>又は<

文脈型付き表値構成子>の対応する列の宣言型は,TYであるという条件を満たさない<MERGE文>

を含んではならない。 

4) 機能F312“MERGE文”なしでは,適合するSQL言語は,<MERGE文>を含んではならない。 

5) 機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能でな

い表を識別する<相手表>を含む<MERGE文>を含んではならない。 

6) 機能F313“拡張MERGE文”なしでは,適合するSQL言語中で,<MERGE文>は,<併合WHEN 

MATCHED句>及び<併合WHEN NOT MATCHED句>のそれぞれを2回以上含んではならない。 

7) 機能F313“拡張MERGE文”なしでは,適合するSQL言語中で,<併合WHEN MATCHED句>又は

<併合WHEN NOT MATCHED句>は,<探索条件>を直に含んではならない。 

735 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

8) 機能F314“DELETE分岐をもつMERGE文”なしでは,適合するSQL言語中で,<併合WHEN 

MATCHED句>は,<併合削除指定>を直に含んではならない。 

14.13 

<UPDATE文:位置付け> 

この細分箇条は,ISO/IEC 9075-4の“12.7 <UPDATE文:位置付け>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“11.13 <UPDATE文:位置付け>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“14.6 <UPDATE文:位置付け>”によって修正される。 

機能 

<UPDATE文:位置付け> (<update statement: positioned>) は,表の一つの行を更新する。 

形式 

10 14 <UPDATE文:位置付け> ::= 

  UPDATE <相手表> [ [ AS ] <相関名> ] 

      SET <設定句リスト> 

      WHERE CURRENT OF <カーソル名> 

構文規則 

1) 

04 <UPDATE文:位置付け>をUSPとし,USPに直に含まれる<カーソル名>をCNとする。CNは,

CNと等価な<カーソル名>の有効範囲内に含まれなければならない。 

2) CNは,元祖カーソルを識別しなければならない。 

3) CNによって識別される元祖カーソルのカーソル宣言記述子をCDDとする。 

4) CDDのカーソル指定は,更新可能でなければならない。 

5) CNによって識別されるカーソルの単純に基となる表をTUとする。TUがLUTに関して1対1対

応であるようなTUの末端で基となる表をLUTとする。 

6) <相手表>をTTとし,TTに含まれる<表名>をTNとする。TNは,LUTを識別しなければならない。 

7) LUTは,遷移旧表又は遷移新表であってはならない。 

8) TTがONLYを直に含み,かつ,LUTが型付き表でないならば,TTは,TNと等価でなければなら

ない。 

9) TTがONLYを指定しなければならないことは,LUTを参照するTUに含まれる<表参照>がONLY

を指定することと同値とする。 

10) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUTの

記述子を含んでいなければならない。 

11) 場合: 

a) <相関名>が指定されるならば,その<相関名>をCORとする。CORは,露出する<相関名>とする。 

b) そうでなければ,TTに含まれる<表名>をCORとする。CORは,露出する<表名又は問合せ名>と

する。 

12) CORの有効範囲は,<設定句リスト>とする。 

13) CDDの宣言された<カーソル指定> CSが順序付けられているならば,<設定句リスト>に含まれる各

<対象列> OCに対して,CSの<問合せ式>に単純に含まれる<ORDER BY句>中の<ソートキー>の一

般に基となる列は,OC又はOCの一般に基となる列であってはならない。 

14) <対象列>として指定される各<列名>は,CDDの<カーソル指定>の陽に指定されるか又は暗に想定

される<更新可能性句>に含まれる,陽に指定されるか又は暗に想定される<列名リスト>中の列を識

別しなければならない。 

736 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,USPが<SQLスキー

マ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。Aに適用可能な権

限は,各<対象列>に関するUPDATEを含まなければならない。 

b) そうでなければ,現行の権限は,各<対象列>に関するUPDATEを含まなければならない。 

一般規則 

1) CDDであるカーソル宣言記述子をもつ,現行SQLセションのカーソル実現値記述子をCRとする。 

2) <設定句リスト>をSCLとする。 

3) CRをCURSORとして,SCLをSET CLAUSE LISTとして,USPをSTATEMENTとして,TTを

TARGETとして,“15.6 位置付け更新の効果”の一般規則を適用する。 

適合性規則 

1) 機能F831“完全カーソル更新”なしでは,適合するSQL言語は,CDDの宣言された<カーソル指定

>が順序付けられている<UPDATE文:位置付け>を含んではならない。 

14.14 

<UPDATE文:探索> 

この細分箇条は,ISO/IEC 9075-14の“14.7 <UPDATE文:探索>”によって修正される。 

機能 

<UPDATE文:探索> (<update statement: searched>) は,表の複数の行を更新する。 

形式 

14 <UPDATE文:探索> ::= 

  UPDATE <相手表>  

      [ FOR PORTION OF <適用業務時刻期間名> 

        FROM <時点1> TO <時点2> ] 

      [ [ AS ] <相関名> ] 

      SET <設定句リスト> 

      [ WHERE <探索条件> ] 

構文規則 

1) <UPDATE文:探索>をUSSとし,USSに含まれる<相手表>をTTとし,USSに含まれる<設定句リ

スト>をSCLとする。 

2) TTに含まれる<表名>をTNとし,TNによって識別される表をTとする。 

3) Tは,更新可能な表又はトリガ更新可能な表でなければならない。 

4) Tは,遷移旧表又は遷移新表であってはならない。 

5) WHEREが指定されないならば,WHERE TRUEが暗に想定される。 

6) 暗に想定されるか又は陽に指定される<探索条件>をDSCとする。DSCは,SQLデータを潜在的に

修正するSQL呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含んではなら

ない。 

場合: 

a) Tがシステムバージョン表ならば,Tのシステム時刻期間終了列をENDCOLとする。ENDCOLの

宣言型によって提供される最高値をENDVALとする。次の<探索条件>をTSCとする。 

( DSC ) AND ( ENDCOL = ENDVAL ) 

737 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) そうでなければ,DSCをTSCとする。 

7) 場合: 

a) FOR PORTION OF <適用業務時刻期間名> ATPNが指定されるならば,Tの表記述子は,ATPN期

間記述子を含まなければならない。 

i) 

TのATPN期間開始列の名前をBSTARTCOLとする。TのATPN期間終了列の名前をBENDCOL

とする。TのATPN期間開始列の宣言型をBCDとする。 

ii) BSTARTCOLも,BENDCOLも,陽に指定されて<設定句リスト>に含まれる<対象列>であって

はならない。 

iii) <時点1>をFROMVALとする。FROMVALは,Tの列への参照,又は潜在的に非決定的である

か若しくはSQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチンをもつ<ル

ーチン呼出し>を一般に含んではならない。 

iv) <時点2>をTOVALとする。TOVALは,Tの列への参照,又は潜在的に非決定的であるか若し

くはSQLデータを潜在的に修正するSQL呼出しルーチンである当該ルーチンをもつ<ルーチン

呼出し>を一般に含んではならない。 

v) 次の<探索条件>をSCとする。 

TSC AND  

(FROMVAL < TOVAL) AND 

(BENDCOL > FROMVAL) AND 

(BSTARTCOL < TOVAL) 

vi) 次の二つの<設定句>がSCLに暗に追加される。 

BSTARTCOL = CASE 

                WHEN BSTARTCOL > FROMVAL 

                  THEN BSTARTCOL 

                ELSE CAST ( FROMVAL AS BCD ) 

              END, 

BENDCOL   = CASE 

                WHEN BENDCOL < TOVAL 

                  THEN BENDCOL 

                ELSE CAST ( TOVAL AS BCD )  

              END 

b) そうでなければ,TSCをSCとする。 

8) USSが<被トリガSQL文>に含まれるならば,SCは,パラメタ参照を指定する<値指定>を含んでは

ならない。 

9) 場合: 

a) <相関名>が指定されるならば,その<相関名>をCNとする。CNは,露出する<相関名>とする。 

b) そうでなければ,TTに含まれる<表名>をCNとする。CNは,露出する<表名又は問合せ名>とす

る。 

10) CNの有効範囲は,SCL及びSCとする。 

アクセス規則 

1) 場合: 

738 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,USSが<SQLスキー

マ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。 

i) 

Tに関してAに適用可能な権限は,各<対象列>に関するUPDATEを含まなければならない。 

ii) TTがONLYを直に含むならば,Aに適用可能な権限は,Tの少なくとも一つの上位表に関する

SELECT WITH HIERARCHY OPTIONを含まなければならない。 

b) そうでなければ,次による。 

i) 

Tに関する現行の権限は,各<対象列>に関するUPDATEを含まなければならない。 

ii) TTがONLYを直に含むならば,現行の権限は,Tの少なくとも一つの上位表に関するSELECT 

WITH HIERARCHY OPTIONを含まなければならない。 

一般規則 

1) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,Tが

一時表でないならば,例外条件:トランザクション状態が正しくない (invalid transaction state) − 読

込み専用SQLトランザクション (read-only SQL-transaction) が引き起こされる。 

2) このSQL文が実行されているSQLトランザクション中で,現在開いている敏感カーソルCRが存

在するならば,次による。 

場合: 

a) 後続のSQLトランザクションにCRが保持されなかったならば,この文の成功実行の結果として

生じる変更は,CRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかでなければならな

い。 

b) そうでなければ,このSQL文の成功実行の結果として生じる変更が,CRに対して可視になるか

どうかは,処理系定義とする。 

3) 開いている鈍感カーソルCRが存在するならば,この文の成功実行の結果として生じる変更がCR

に対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が引き起こされる

かのいずれかでなければならない。 

4) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

5) 場合: 

a) TTがONLYを含むならば,TTの露出する<相関名>又は<表名又は問合せ名>が行に結び付けら

れたTの各行に対して,SCが実効的に評価され,当該行は,SCの結果が真 (True) で,かつ,

Tの真下位表中に下位行が存在しないそれらの行とする。SCは,Tのいずれかの行が更新され

る前に,Tの各行に対して実効的に評価される。 

b) そうでなければ,TTの露出する<相関名>又は<表名又は問合せ名>が行に結び付けられたTの

各行に対して,SCが実効的に評価され,当該行は,SCの結果が真 であるそれらの行とする。

SCは,Tのいずれかの行が更新される前に,Tの各行に対して実効的に評価される。 

6) 全ての当該行から成る集合をSとする。Sは,Tに対する更新操作の差分旧表 (old delta table of update 

operation) とする。FOR PORTION OFが指定されるならば,FROMVAL及びTOVALは,それぞれ,

FROM値の部分に対して関連するもの (associated for portion of from-value) 及びTO値の部分に対し

て関連するもの (associated for portion of to-value) として,S中のどの行にも関連付けられる。 

7) Tが実表ならば,各当該行も,対象行 (object row) とする。そうでなければ,対象行 は,当該行が

739 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

導出されるTの末端で一般に基となる表の行とする。 

8) 対象行の集合中のいずれかの行が,開いているカーソルCRを識別する<DELETE文:位置付け>,

<動的DELETE文:位置付け>若しくは<準備可能動的DELETE文:位置付け>によって削除のため

にマーク付けされていたか,又は開いているカーソルCRを識別する<UPDATE文:位置付け>,<動

的UPDATE文:位置付け>若しくは<準備可能動的UPDATE文:位置付け>によって更新されていた

ならば,終了条件:警告 (warning) − カーソル操作衝突 (cursor operation conflict) が引き起こされ

る。 

9) SCは,Tのいずれかの行の更新によって引き起こされるどの<被トリガ動作>の呼出しにも先立っ

て,Tの各行に対して評価される。 

10) SCLに含まれる各<設定句>の<更新元>は,Tのいずれかの行が更新される前に,Tの各行に対して

実効的に評価される。 

11) 当該行を写して,“14.15 <設定句リスト>”の一般規則を適用することによって,SCLに含まれる各

<設定句>によって指定されるとおりにそれを更新することによって,新しい候補行が構成される。 

注記483 対象行中で許されるデータ値が,WITH CHECK OPTION制約によって制約されてもよい。

WITH CHECK OPTION制約の効果は,“15.15 ビュー表中の行の置換えの効果”の一般規

則で定義している。 

12) SCLに含まれる<対象列>によって識別されるTの列をCLとする。 

13) 各当該行SRは,それに対応する新しい候補行CNRによるT中での置換えのために識別される。 

(SR,CNR) 対の集合は,Tに対する置換え集合 (replacement set) とする。 

注記484 置換えのために行を識別すること,置換行を識別される行に関連付けること,及び置換

え集合を表に関連付けることは,処理系依存の操作である。 

14) 場合: 

a) Tが実表ならば,次による。 

i) 

場合: 

1) TTがONLYを指定するならば,Tは,対象列CLに関して下位表なしでの置換え処理のため

に識別される (identified for replacement processing without subtables)。 

2) そうでなければ,Tは,対象列CLに関して下位表ありでの置換え処理のために識別される 

(identified for replacement processing with subtables)。 

注記485 下位表あり又はなしでの置換え処理のために実表を識別することは,処理系依存の

機構である。ここでは存在しないが,一般には,対象列のリストが空の可能性があ

る。 

ii) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

b) Tがビュー表ならば,TTをVIEW NAMEとして,Tに対する置換え集合をREPLACEMENT SET 

FOR VIEW NAMEとして,“15.15 ビュー表中の行の置換えの効果”の一般規則を適用する。 

15) 

対象行の集合が空ならば,終了条件:データなし (no data) が引き起こされる。 

適合性規則 

1) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<UPDATE文:

探索>を含んではならない。 

a) Tの末端で一般に基となる表が,<探索条件>に広く含まれる<問合せ式>の基となる表である。 

b) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

740 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。 

2) 機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能でな

い表を識別する<相手表>を含む<UPDATE文:探索>を含んではならない。 

3) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語中で,<UPDATE文:探索>は,FOR 

PORTION OFを含んではならない。 

14.15 

<設定句リスト> 

機能 

<設定句リスト> (<set clause list>) は,更新のリストを指定する。 

形式 

<設定句リスト> ::= 

  <設定句> [ { <コンマ> <設定句> }... ] 

<設定句> ::= 

  <複数列代入> 

| <設定相手> <等号演算子> <更新元> 

<設定相手> ::= 

  <更新相手> 

| <変異設定句> 

<複数列代入> ::= 

  <設定相手リスト> <等号演算子> <代入行> 

<設定相手リスト> ::= 

  <左括弧> <設定相手> [ { <コンマ> <設定相手> }... ] <右括弧> 

<代入行> ::= 

  <文脈型付き行値式> 

<更新相手> ::= 

  <対象列> 

| <対象列> 

      <左角括弧又は3文字表記> <単純値指定> <右角括弧又は3文字表記> 

<対象列> ::= 

  <列名> 

<変異設定句> ::= 

  <変異相手> <ピリオド> <メソッド名> 

<変異相手> ::= 

  <対象列> 

| <変異設定句> 

<更新元> ::= 

  <値式> 

| <文脈型付き値指定> 

構文規則 

1) <設定句リスト>を含む<UPDATE文:位置付け>,<UPDATE文:探索>又は<MERGE文>に含まれる

<相手表>によって識別される表をTとする。 

741 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) Tがトリガ更新可能でないならば,<対象列>として指定される各<列名>は,Tの更新可能な列を識

別しなければならない。 

注記486 実表の更新可能な列の概念は,“4.15 表”で定義している。ビュー表の更新可能な列の概

念は,“11.32 <ビュー定義>”で定義している。 

3) どの<対象列>も,基となる列がシステム時刻期間開始列又はシステム時刻期間終了列である列を参

照してはならない。 

4) <複数列代入>を直に含む各<設定句> SCは,次のとおりに,<設定句リスト> MSCLによって実効的

に置き換えられる。 

a) <設定相手リスト>に含まれる<設定相手>の個数をSTNとする。 

b) STNは,SCに含まれる<代入行> ARの次数と等しくなければならない。 

c) SCの<設定相手リスト>に含まれるi番目の<設定相手>をSTi,1 ≤ i ≤ STNとし,ARのi番目の

フィールドの宣言型をDTiとする。MSCL中のi番目の<設定句>は,次のとおりとする。 

STi = 

CAST ( AR AS ROW ( F1 DT1, 

F2 DT2, ..., 

FSTN DTSTN ) ).Fi 

注記487 ここでの“Fn”は,<分離符号>を介在しないで,値nに対応する<定数>を構成する一

つ又は複数の10進<数字>が続く文字“F”から成る<フィールド名>を表す。 

5) 基となる列が生成列か又は値が常時生成されることを示す記述子をもつ識別列のいずれかである列

を参照する<対象列>を,<設定句> SCが指定するならば,SC中に指定される<更新元>は,<既定値

指定>から成らなければならない。 

6) <設定句>中の<更新元>に単純に含まれる<値式>は,<集合関数指定>を直接含んではならない。 

7) <設定句リスト> OSCLが,<変異設定句>を含む一つ以上の<設定句>を含むならば,次による。 

a) <変異設定句>を含むOSCL中の<設定句>の個数をNとする。 

b) 1 ≤ i ≤ Nに対して,次による。 

i) 

<変異設定句>を含むi番目の<設定句>をSCiとする。 

ii) SCiに直に含まれる<更新元>をRCVEiとする。 

iii) SCiに直に含まれる<設定相手>に直に含まれる<変異設定句>を,MSCiとする。 

iv) MSCiに含まれる<対象列>をOCiとする。OCiによって識別される列の宣言型は,構造型でな

ければならない。 

v) MSCiに含まれる<メソッド名>の個数をMiとする。 

vi) 1 ≤ j ≤ Miに対して,次による。 

場合: 

1) j = 1ならば,次による。 

A) MSCiに直に含まれる<変異相手>をMTi,1とする。 

B) MSCiに直に含まれる<メソッド名>をMNi,1とする。 

C) 次の指定をVi,1とする。 

MTi,1 . MNi,1 ( RCVEi ) 

2) そうでなければ,次による。 

A) MTi,j-1に直に含まれる<変異設定句>に直に含まれる<変異相手>をMTi,jとする。 

742 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

B) MTi,j-1に直に含まれる<変異設定句>に直に含まれる<メソッド名>をMNi,jとする。 

C) 次の指定をVi,jとする。 

MTi,j . MNi,j ( Vi,j-1 ) 

c) OSCLは,次のとおりに導出される<設定句リスト> NSCLと等価とする。 

i) 

<変異設定句>を含むどの<設定句> SCa,1 ≤ a ≤ Nも,次の<設定句>に置き換えることによっ

て,OSCLから導出される<設定句リスト>をNSCLとする。 

MTa,Ma = Va,Ma 

ii) 1 ≤ b ≤ Nに対して,c < bで,かつ,OCcがOCbと等価であるようなcが存在するならば,次

による。 

1) Vb,Mb中のOCbのどの出現も,Vc,Mcに置き換える。 

2) SCcをNSCLから削除する。 

8) <設定句リスト>中に等価な<対象列>が2回以上現れてはならない。 

注記488 <変異設定句>内での等価な<対象列>の複数の出現は,この細分箇条の先行する構文規則

によって取り除かれる。 

9) <設定句> SCの<更新元>が<文脈型付き値指定> CVSを指定するならば,CVSのデータ型は,SC中

に指定される<更新相手>又は<変異設定句>のデータ型DTとする。 

10) CVSが<空指定>ならば,DTは,集まり型又は元型が集まり型の個別型でなければならない。CVS

がARRAYを指定するならば,DTは,配列型又は元型が配列型の個別型でなければならない。CVS

がMULTISETを指定するならば,DTは,マルチ集合型又は元型がマルチ集合型の個別型でなけれ

ばならない。 

11) <設定句>中のどの<対象列>に対しても,次による。 

場合: 

a) <更新相手>が<単純値指定>を直に含むならば,<対象列>によって識別されるTの列の宣言型は,

配列型又は元型が配列型の個別型でなければならない。<対象列>によって識別されるTの列の要

素型である宣言型をもつ一時的な格納場所をTARGETとして,<設定句>の<更新元>をVALUEと

して,“9.2 格納代入”の構文規則を適用する。 

b) そうでなければ,<対象列>によって識別されるTの列をTARGETとして,<設定句>の<更新元>

をVALUEとして,“9.2 格納代入”の構文規則を適用する。 

アクセス規則 

なし。 

一般規則 

1) <設定句>は,一つ以上の対象列及び一つの更新値を指定する。対象列 (object column) は,<設定句

>中の<対象列>によって識別される列とする。更新値 (update value) は,<設定句>に含まれる<更新

元>によって指定される値とする。 

2) i番目の対象列をCによって示すと,その値は,次のとおりに置き換えられる。 

場合: 

a) <単純値指定>を直に含む<更新相手>をi番目の<設定句>が含むならば,次による。 

場合: 

i) 

Cの値がナル値ならば,例外条件:データ例外 (data exception) − 配列相手にナル値 (null value 

in array target) が引き起こされる。 

743 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) そうでなければ,次による。 

1) Cの最大基数をNとする。 

2) Cの値の基数をMとする。 

3) <更新相手>に直に含まれる<単純値指定>の値をIとする。 

4) Cの要素型をEDTとする。 

5) 場合: 

A) Iが0より大きく,M以下ならば,Cの値は,要素型EDT及び基数Mをもち,次のとおり

に導出される配列Aによって置き換えられる。 

I) 

1からI-1まで,及びI+1からMまでの範囲のjに対して,A中のj番目の要素は,C中

のj番目の要素の値とする。 

II) AのI番目の要素をTARGETとして,i番目の更新値をVALUEとして,“9.2 格納代入”

の一般規則を適用する。 

B) IがMより大きく,N以下ならば,Cの値は,要素型EDT及び基数Iをもち,次のとおり

に導出される配列Aによって置き換えられる。 

I) 

1からMまでの範囲のjに対して,A中のj番目の要素は,C中のj番目の要素の値とす

る。 

II) M+1からI-1までの範囲のjに対して,A中のj番目の要素は,ナル値とする。 

III) i番目の更新値をSVによって示すと,AのI番目の要素をTARGETとして,i番目の更

新値をVALUEとして,“9.2 格納代入”の一般規則を適用する。 

C) そうでなければ,例外条件:データ例外 − 配列要素誤り (array element error) が引き起こ

される。 

b) そうでなければ,Cの値は,SVによって示されるi番目の更新値によって置き換えられる。Cを

TARGETとして,SVをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

適合性規則 

1) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<設定句>を

含んではならない。 

a) Tの末端で一般に基となる表が,<設定句>に直に含まれる<更新元>又は<代入行>に単純に含まれ

るいずれかの<値式>に広く含まれるいずれかの<問合せ式>の基となる表である。 

b) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

ド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<設定句>に直に含まれる<更新元>又

は<代入行>が広く含む。 

2) 機能S091“基本配列提供”なしでは,適合するSQL言語は,<単純値指定>を直に含む<更新相手>

を含んではならない。 

3) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<設定句>中の<更新相手>の宣言型が構

造型TYで,かつ,<設定句>に含まれる<更新元>の宣言型,又は<設定句>に含まれる<代入行>の対

応するフィールドの宣言型がTYでない<設定句>を含んではならない。 

4) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<変異設定句>を含み,最後の<メソッド

名>の宣言型が構造型TYを識別し,かつ,<設定句>に含まれる<更新元>の宣言型がTYでない<設

定句>を含んではならない。 

5) 機能T641“複数列代入”なしでは,適合するSQL言語は,<複数列代入>を含んではならない。 

744 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

14.16 

<一時表宣言> 

この細分箇条は,ISO/IEC 9075-4の“12.8 <一時表宣言>”によって修正される。 

機能 

<一時表宣言> (<temporary table declaration>) は,宣言局所一時表を宣言する。 

形式 

<一時表宣言> ::= 

  DECLARE LOCAL TEMPORARY TABLE <表名> <表要素リスト> 

  [ ON COMMIT <表コミット動作> ROWS ] 

構文規則 

1) <一時表宣言> TTDの<表名>をTNとし,TNの<被修飾識別子>をTとする。 

2) 

04 TTDは,<SQLクライアントモジュール定義>に含まれなければならない。 

3) 場合: 

a) TNが<局所又はスキーマ修飾子> LSQを含むならば,LSQは,“MODULE”でなければならない。 

b) TNが<局所又はスキーマ修飾子>を含まないならば,“MODULE”が暗に想定される。 

4) 

04 <一時表宣言>が<SQLクライアントモジュール定義> Mに含まれるならば,TNの<被修飾識別子

>は,Mに含まれる他のどの<一時表宣言>の<表名>の<被修飾識別子>とも,等価であってはならな

い。 

5) <一時表宣言>によって定義される表の記述子は,TN,及び各<列定義>によって指定される列記述子

を含む。i番目の列記述子は,i番目の<列定義>によって与えられる。 

6) <表要素リスト>は,少なくとも一つの<列定義>又は少なくとも一つの<LIKE句>を含まなければな

らない。 

7) <表要素リスト>は,<表期間定義>である<表要素>を含んではならない。 

8) ON COMMITが指定されないならば,ON COMMIT DELETE ROWSが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) 宣言局所一時表を含むスキーマの<スキーマ名>で,それによって識別されるスキーマがTNと等価

な<表名>をもつ表を含まないような処理系依存の<スキーマ名>をUとする。 

2) 現行利用者識別子をUIとし,現行役割名をRとする。 

場合: 

a) UIがナル値でないならば,UIをAとする。 

b) そうでなければ,RをAとする。 

3) 

04 SQLクライアントモジュール内でのTの定義は,永続実表U.Tの定義と実効的に等価とする。

そのSQLクライアントモジュール内で,MODULE.Tへのどの参照も,U.Tへの参照と等価とする。 

4) この表に関するINSERT,SELECT,UPDATE,DELETE及びREFERENCES権限,並びに表定義中

の全ての<列定義>に対するINSERT,SELECT,UPDATE及びREFERENCES権限を,Aに対して定

義する権限記述子の集合が作成される。これらの権限は,付与可能でない。これらの権限記述子の

それぞれに対する権限付与者には,特別な付与者の値“̲SYSTEM”が設定される。権限受領者は,

“PUBLIC”とする。 

5) 一時表の定義は,SQLセションが存続している間,永続する。SQLセションの終了に続いて,現行

745 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

認可識別子A及び現行<スキーマ名> Uで,これ以上のアクセス規則の検査なしで,次の<表削除文

>が実効的に実行される。 

DROP TABLE T CASCADE 

6) 宣言局所一時表の定義は,情報スキーマのどのビューにも現れない。 

注記489 情報スキーマは,[ISO9075-11] で定義している。 

適合性規則 

1) 機能F531“一時表”なしでは,適合するSQL言語は,<一時表宣言>を含んではならない。 

14.17 

<FREE LOCATOR文> 

機能 

<FREE LOCATOR文> (<free locator statement>) は,位置付け子変数と,その位置付け子によって表現さ

れる値との間の関連付けを取り除く。 

形式 

<FREE LOCATOR文> ::= 

  FREE LOCATOR <位置付け子参照> [ { <コンマ> <位置付け子参照> }... ] 

<位置付け子参照> ::= 

  <ホストパラメタ名> 

| <埋込み変数名> 

| <動的パラメタ指定> 

構文規則 

1) <位置付け子参照>に直に含まれる<ホストパラメタ名>によって識別される各ホストパラメタは,2

進オクテット長大オブジェクト位置付け子パラメタ,文字長大オブジェクト位置付け子パラメタ,

配列位置付け子パラメタ,マルチ集合位置付け子パラメタ又は利用者定義型位置付け子パラメタで

なければならない。 

2) <位置付け子参照>に直に含まれる<埋込み変数名>によって識別される各ホスト変数は,2進オクテ

ット長大オブジェクト位置付け子変数,文字長大オブジェクト位置付け子変数,配列位置付け子変

数,マルチ集合位置付け子変数又は利用者定義型位置付け子変数でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <FREE LOCATOR文>に直に含まれるどの<位置付け子参照> LRに対しても,LRの値をLとする。 

場合: 

a) Lが有効な位置付け子の値でないならば,例外条件:位置付け子例外 (locator exception) − 指定

が正しくない (invalid specification) が引き起こされる。 

b) そうでなければ,Lは,無効とマーク付けされる。 

適合性規則 

1) 機能T561“保持可能位置付け子”なしでは,適合するSQL言語は,<FREE LOCATOR文>を含んで

はならない。 

14.18 

<HOLD LOCATOR文> 

機能 

<HOLD LOCATOR文> (<hold locator statement>) は,位置付け子変数を,保持可能であるとしてマーク付

746 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

けする。 

形式 

<HOLD LOCATOR文> ::= 

  HOLD LOCATOR <位置付け子参照> [ { <コンマ> <位置付け子参照> }... ] 

構文規則 

1) <位置付け子参照>に直に含まれる<ホストパラメタ名>によって識別される各ホストパラメタは,2

進オクテット長大オブジェクト位置付け子パラメタ,文字長大オブジェクト位置付け子パラメタ,

配列位置付け子パラメタ,マルチ集合位置付け子パラメタ又は利用者定義型位置付け子パラメタで

なければならない。 

アクセス規則 

なし。 

一般規則 

1) <HOLD LOCATOR文>に直に含まれるどの<位置付け子参照> LRに対しても,LRの値をLとする。 

場合: 

a) Lが有効な位置付け子の値でないならば,例外条件:位置付け子例外 (locator exception) − 指定

が正しくない (invalid specification) が引き起こされる。 

b) そうでなければ,Lは,保持可能 (holdable) とマーク付けされる。 

適合性規則 

1) 機能T561“保持可能位置付け子”なしでは,適合するSQL言語は,<HOLD LOCATOR文>を含ん

ではならない。 

15 その他のデータ操作規則 

15.1 カーソルを開くことの効果 

この細分箇条は,ISO/IEC 9075-3の“7.1 カーソルを開くことの効果”によって修正される。 

この細分箇条は,ISO/IEC 9075-4の“13.1 カーソルを開くことの効果”によって修正される。 

細分箇条署名 

“カーソルを開くことの効果” [一般規則] ( 

パラメタ: “CURSOR” 

機能 

カーソルを開くことの効果 (Effect of opening a cursor) は,受取りカーソルでないカーソルを開くことの

効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CURSORをCRとする。 

2) CRが閉じている状態でないならば,例外条件:カーソル状態が正しくない (invalid cursor state) が

引き起こされる。 

747 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) CRのカーソル宣言記述子をCDDとする。 

4) 場合: 

a) 

03 CDDによって記述されたカーソルの種類が元祖カーソルならば,CDDの宣言された<カーソル

指定>をSとする。 

b) CDDによって記述されたカーソルの種類が宣言動的カーソルならば,CDDの起源である<文名>

によって示される被準備文をSとする。 

c) CDDによって記述されたカーソルの種類が拡張動的カーソルならば,CDDの起源である被準備

文をSとする。 

注記490 カーソルの種類が受取りカーソルならば,この細分箇条を適用しないで,代わりに“15.2 

結果集合を受け取ることの効果”を適用する。 

5) CRが開かれ,次の手順で,結果集合記述子RSDが作成され,CRに含まれる。 

a) RSDの<カーソル指定>は,次のとおりに実効的に作成されるSの写しCSとする。 

i) 

04 各<埋込み変数指定>,<ホストパラメタ指定>,<SQLパラメタ参照>及び<動的パラメタ指定

>は,それぞれ,<埋込み変数指定>,<ホストパラメタ指定>,<SQLパラメタ参照>及び<動的パ

ラメタ指定>を評価した結果として生じる値を示す<定数>によって置き換えられる。このとき,

このような全ての評価は,実効的に同時に行われる。 

ii) 

09 Sに一般に含まれ,CURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,

CURRENT̲CATALOG,CURRENT̲SCHEMA,CURRENT̲PATH, 

CURRENT̲DEFAULT̲TRANSFORM̲GROUP,又は 

CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE <パス解決利用者定義型名>である各<値指定>は,

それぞれ,CURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,

CURRENT̲CATALOG,CURRENT̲SCHEMA,CURRENT̲PATH, 

CURRENT̲DEFAULT̲TRANSFORM̲GROUP,又は 

CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE <パス解決利用者定義型名>を評価した結果とし

て生じる値を示す<定数>によって置き換えられる。このとき,このような全ての評価は,実効

的に同時に行われる。 

iii) Sに一般に含まれる各<日時値関数>は,その<日時値関数>を評価した結果として生じる値を示

す<定数>によって置き換えられる。このとき,このような全ての評価は,実効的に同時に行わ

れる。 

b) 場合: 

i) 

CRが元祖カーソルならば,RSDの操作上の特性は,CDDの対応する宣言特性と同じとする。 

ii) そうでなければ,CRは,動的カーソルとする。 

1) RSDの操作上の特性は,最初に,CDDの対応する宣言特性から写される。 

2) Sを準備した<PREPARE文>が<属性変数>を含んでいたならば,その<属性変数>の値をCAと

する。 

A) CAが<カーソル感度>を含むならば,RSDの操作上の感度特性には,その<カーソル感度>

が設定される。 

B) CAが<カーソルスクロール可能性>を含むならば,RSDの操作上のスクロール可能性特性

には,その<カーソルスクロール可能性>が設定される。 

C) CAが<カーソル保持可能性>を含むならば,RSDの操作上の保持可能性特性には,その<カ

748 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ーソル保持可能性>が設定される。 

D) CAが<カーソル戻り可能性>を含むならば,RSDの操作上の戻り可能性特性には,その<カ

ーソル戻り可能性>が設定される。 

c) SQL呼出し手続の実行を介在しないで,次のいずれかの間にCRが開かれているならば,RSDの

操作上の戻り可能性特性には,WITHOUT RETURNが設定される。 

i) 

SQL呼出し関数の実行。 

ii) 外部呼出し手続の実行。 

d) CSに単純に含まれる<問合せ式>をQEとする。 

e) QEによって指定される表をTとする。 

f) 

場合: 

i) 

RSDの操作上の感度特性がINSENSITIVEならば,Tの写しをTTとする。 

ii) そうでなければ,TをTTとする。 

g) RSDの行の並びは,TTの行から成り,“7.13 <問合せ式>”の一般規則によって決定されるとおり

に順序付けられる。 

h) CRが開いている状態にされ,それの位置は,TTの最初の行の前とする。 

i) 

CRのカーソル実現値記述子がSQLセション文脈に追加される。 

6) CRが鈍感で,かつ,CRが開かれるSQLトランザクションの間,及びCRが開いたまま保持されて

もよい後続の全てのSQLトランザクションの間,著しい変更がCRに対して不可視になることを

SQL処理系が保証できないならば,例外条件:カーソル感度例外 (cursor sensitivity exception) − 要

求が拒絶された (request rejected) が引き起こされる。 

7) CRが敏感で,かつ,CRが開かれるSQLトランザクションの間,著しい変更がCRに対して可視に

なることをSQL処理系が保証できないならば,例外条件:カーソル感度例外 − 要求が拒絶された 

が引き起こされる。 

注記491 後続のSQLトランザクションの間の,敏感な保持可能カーソルに対する著しい変更の可

視性は,処理系定義である。 

8) 現在開いているカーソルに対して可視にならない著しい変更を,SQL処理系が許さないことが可能

かどうかは,処理系定義とする。 

9) RSDの操作上の戻り可能性特性がWITH RETURNならば,動作中のSQL呼出し手続をSIPとし,

SIPの呼出し元をINVとし,動作中のSQLセション文脈中のSIP及びINVに対する結果集合並び

をRSSとする。RSDがRSSの最後に追加される。 

適合性規則 

なし。 

15.2 結果集合を受け取ることの効果 

細分箇条署名 

“結果集合を受け取ることの効果” [一般規則] ( 

パラメタ: “CURSOR”, 

パラメタ: “RESULT SET SEQUENCE” 

機能 

結果集合を受け取ることの効果 (Effect of receiving a result set) は,結果集合並び中の次の結果集合に,

749 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

受取りカーソルを進める。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CURSORをCRとし,RESULT SET SEQUENCEをRSSとす

る。 

2) RSS中の1番目の結果集合記述子をRSとする。 

3) RSをCRに含まれる結果集合記述子として,CRが開いている状態にされる。 

4) RSがRSSから取り除かれる。 

5) RSの操作上のスクロール可能性特性がNO SCROLLならば,RSの位置には,最初の行の前が設定

される。 

6) RSの操作上の戻り可能性特性は,処理系定義とする。 

7) RSの<カーソル指定>は,陽に指定されるか又は暗に想定される<更新可能性句>をFOR READ ONLY

に置き換えることによって更新可能ではなくなる。 

適合性規則 

なし。 

15.3 カーソルの現在行の決定 

細分箇条署名 

“カーソルの現在行の決定” [一般規則] ( 

パラメタ: “CURSOR”, 

パラメタ: “FETCH ORIENTATION” 

機能 

カーソルの現在行の決定 (Determination of the current row of a cursor) は,カーソルの現在行がどのように

決定されるかを規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CURSORをCRとし,FETCH ORIENTATIONをFOとする。 

2) CRが開いている状態でないならば,例外条件:カーソル状態が正しくない (invalid cursor state) が

引き起こされる。 

3) CRの結果集合記述子をRSDとする。 

4) FOがNEXTでなく,RSDの操作上のスクロール可能性特性がSCROLLでないならば,例外条件:

構文誤り又はアクセス規則違反 (syntax error or access rule violation) が引き起こされる。 

5) 場合: 

a) FOが<単純値指定>を含むならば,その<単純値指定>の値をJとする。 

750 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) FOがNEXT又はFIRSTを指定するならば,+1をJとする。 

c) FOがPRIOR又はLASTを指定するならば,-1をJとする。 

6) RSDの行の並びをTとする。 

7) Tと同じ次数の行の並びをTtとする。 

場合: 

a) FOがABSOLUTE,FIRST又はLASTを指定するならば,T中での順序を保存して,Tの全ての

行を含むものをTtとする。 

b) FOがNEXTを指定するか,又はJが正の値でRELATIVEを指定するならば,次による。 

i) 

Tが空か,又はCRの位置がTの最後の行の上若しくは後にあるならば,行の空の並びをTtと

する。 

ii) CRの位置が,Tの最後の行以外の行Rの上にあるならば,T中での順序を保存して,行Rよ

り後に順序付けられるTの全ての行を含むものをTtとする。 

iii) CRの位置が行Rの前にあるならば,T中での順序を保存して,行R,及び行Rより後に順序

付けられるTの全ての行を含むものをTtとする。 

c) FOがPRIORを指定するか,又はJが負の値でRELATIVEを指定するならば,次による。 

i) 

Tが空か,又はCRの位置がTの最初の行の上若しくは前にあるならば,行の空の並びをTtと

する。 

ii) CRの位置が,Tの最初の行以外の行Rの上にあるならば,T中での順序を保存して,行Rよ

り前に順序付けられるTの全ての行を含むものをTtとする。 

iii) CRの位置が,Tの最初の行でない行Rの前にあるならば,T中での順序を保存して,行Rよ

り前に順序付けられるTの全ての行を含むものをTtとする。 

iv) CRの位置がTの最後の行の後にあるならば,T中での順序を保存して,Tの全ての行を含むも

のをTtとする。 

d) Jが値0でRELATIVEが指定されるならば,次による。 

場合: 

i) 

CRの位置がTの行の上にあるならば,その一つの行から成る行の並びをTtとする。 

ii) そうでなければ,行の空の並びをTtとする。 

8) Tt中の行の個数をNとする。Jが正の値ならば,JをKとする。Jが負の値ならば,N+J+1をKと

する。Jが0で,かつ,ABSOLUTEが指定されるならば,0をKとし,Jが0で,かつ,RELATIVE

が指定されるならば,1をKとする。 

9) 場合: 

a) Kが0より大きく,N以下ならば,CRは,TtのK番目の行及びTの対応する行の上に位置付け

られる。その行は,CRの現在行になる。 

b) そうでなければ,終了条件:データなし (no data) が引き起こされる。 

場合: 

i) 

FOがRELATIVEを指定し,Jが0と等しいならば,CRの位置は,変更されない。 

ii) FOがNEXTを暗に若しくは陽に指定するか,Nより大きいKでABSOLUTE若しくはRELATIVE

を指定するか,又はLASTを指定するならば,CRは,最後の行の後に位置付けられる。 

iii) そうでなければ,FOは,PRIOR,FIRST,又はN以下のKでABSOLUTE若しくはRELATIVE

を指定し,CRは,最初の行の前に位置付けられる。 

751 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

なし。 

15.4 カーソルを閉じることの効果 

細分箇条署名 

“カーソルを閉じることの効果” [一般規則] ( 

パラメタ: “CURSOR”, 

パラメタ: “DISPOSITION” 

機能 

カーソルを閉じることの効果 (Effect of closing a cursor) は,カーソルを閉じることの効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CURSORをCRとし,DISPOSITIONをDISPとする。 

2) CRが開いている状態でないならば,例外条件:カーソル状態が正しくない (invalid cursor state) が

引き起こされる。 

3) CRの結果集合記述子をRSとする。 

4) CRが閉じている状態にされる。 

5) CRのカーソル実現値記述子がSQLセション文脈から取り除かれる。 

6) 場合: 

a) RSの操作上の戻り可能性特性がWITHOUT RETURNならば,RSは,破壊される。 

b) DISPがDESTROYならば,RSを含む結果集合並びがあるならば,その結果集合並びからRSが

取り除かれ,RSは,破壊される。 

注記492 そうでなければ,RSは,破壊されない。 

7) CRが受取りカーソルで,かつ,CRのカーソル宣言記述子中で指定されるSQL呼出しルーチンの結

果集合並びRSSが空でないならば,CRをCURSORとして,RSSをRESULT SET SEQUENCEとし

て,“15.2 結果集合を受け取ることの効果”の一般規則を適用する。 

適合性規則 

なし。 

15.5 位置付け削除の効果 

細分箇条署名 

“位置付け削除の効果” [一般規則] ( 

パラメタ: “CURSOR”, 

パラメタ: “STATEMENT”, 

パラメタ: “TARGET” 

機能 

位置付け削除の効果 (Effect of a positioned delete) は,位置付け削除の効果を規定する。 

752 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CURSORをCRとし,STATEMENTをDSPとし,TARGETを

TTとする。 

2) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,CR

の末端で一般に基となるどの表も,一時表でないならば,例外条件:トランザクション状態が正し

くない (invalid transaction state) − 読込み専用SQLトランザクション (read-only SQL-transaction) 

が引き起こされる。 

3) DSPが実行されているSQLトランザクション中で,現行開いているCR以外の敏感カーソルSCR

が存在するならば,次による。 

場合: 

a) 後続のSQLトランザクションにSCRが保持されなかったならば,DSPの成功実行の結果として

生じる変更は,SCRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかとする。 

b) そうでなければ,DSPの成功実行の結果として生じる変更が,SCRに対して可視になるかどうか

は,処理系定義とする。 

4) 現在開いているCR以外の鈍感カーソルICRが存在するならば,DSPの成功実行の結果として生じ

る変更がICRに対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が

引き起こされるかのいずれかとする。 

5) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

6) CRが行の上に位置付けられていないならば,例外条件:カーソル状態が正しくない (invalid cursor 

state) が引き起こされる。 

7) CRが保持可能カーソルで,かつ,現行SQLトランザクション内でCRに対して<FETCH文>が発行

されていないならば,例外条件:カーソル状態が正しくない が引き起こされる。 

8) CRの単純に基となる表をTとし,Tの末端で基となる表をLUTとする。 

9) CRの現在行をRとする。R中の各フィールドが,R1中の対応するフィールドと同一であるような,

LUT中のただ一つの行R1が,LUTからの削除のために識別される。 

注記493 二つ以上の行R1がこのような条件を満たす場合には,どの行が削除のために識別され

るかは,処理系依存である。 

注記494 削除のために行を識別することは,処理系依存の機構である。 

10) CRの結果集合記述子の行の並びから現在行が取り除かれるかどうかは,処理系定義とする。 

11) 場合: 

a) LUTが実表ならば,次による。 

i) 

場合: 

1) TTがONLYを指定するならば,LUTは,下位表なしでの削除処理のために識別される 

(identified for deletion processing without subtables)。 

753 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) そうでなければ,LUTは,下位表ありでの削除処理のために識別される (identified for deletion 

processing with subtables)。 

注記495 下位表あり又はなしでの削除処理のために実表を識別することは,処理系依存の機

構である。 

ii) “15.7 実表からの行の削除の効果”の一般規則を適用する。 

b) LUTがビュー表ならば,TTをVIEW NAMEとして,“15.9 ビュー表からの行の削除の効果”の

一般規則を適用する。 

12) CRが開いている間に,CRの現在行が導出される元の行が,<DELETE文:探索>,CR以外のカー

ソルを識別する<DELETE文:位置付け>,<動的DELETE文:位置付け>若しくは<準備可能動的

DELETE文:位置付け>,又は<MERGE文>によって削除のためにマーク付けされていたか,

<UPDATE文:探索>,CR以外のカーソルを識別する<UPDATE文:位置付け>,<動的UPDATE文:

位置付け>若しくは<準備可能動的UPDATE文:位置付け>,又は<MERGE文>によって更新されて

いたならば,終了条件:警告 (warning) − カーソル操作衝突 (cursor operation conflict) が引き起こ

される。 

13) DSPの実行がCRの最後の行を削除したならば,CRの位置は,最後の行の後とする。そうでなけれ

ば,CRの位置は,次の行の前とする。 

適合性規則 

なし。 

15.6 位置付け更新の効果 

細分箇条署名 

“位置付け更新の効果” [一般規則] ( 

パラメタ: “CURSOR”, 

パラメタ: “SET CLAUSE LIST”, 

パラメタ: “STATEMENT”, 

パラメタ: “TARGET” 

機能 

位置付け更新の効果 (Effect of a positioned update) は,位置付け更新の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CURSORをCRとし,SET CLAUSE LISTをSCLとし,

STATEMENTをUSPとし,TARGETをTTとする。 

2) 現行SQLトランザクションのトランザクションアクセスモード,又は現行SQLコネクションでの

現行SQLトランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,CR

の末端で一般に基となるどの表も,一時表でないならば,例外条件:トランザクション状態が正し

くない (invalid transaction state) − 読込み専用SQLトランザクション (read-only SQL-transaction) 

が引き起こされる。 

754 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) USPが実行されているSQLトランザクション中で,現在開いているCR以外の敏感カーソルSCR

が存在するならば,次による。 

場合: 

a) 後続のSQLトランザクションにSCRが保持されなかったならば,USPの成功実行の結果として

生じる変更は,SCRに対して可視になるか,又は例外条件:カーソル感度例外 (cursor sensitivity 

exception) − 要求が失敗した (request failed) が引き起こされるかのいずれかとする。 

b) そうでなければ,USPの成功実行の結果として生じる変更が,SCRに対して可視になるかどうか

は,処理系定義とする。 

4) 現在開いているCR以外の鈍感カーソルICRが存在するならば,USPの成功実行の結果として生じ

る変更がICRに対して不可視であるか,又は例外条件:カーソル感度例外 − 要求が失敗した が

引き起こされるかのいずれかとする。 

5) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

6) CRが行の上に位置付けられていないならば,例外条件:カーソル状態が正しくない (invalid cursor 

state) が引き起こされる。 

7) CRが保持可能カーソルで,かつ,現行SQLトランザクション内でCRに対して<FETCH文>が発行

されていないならば,例外条件:カーソル状態が正しくない が引き起こされる。 

8) 対象行は,CRの現在行の導出元の実表の行とする。 

9) CRが開いている間に,対象行が,<DELETE文:探索>,CR以外のカーソルを識別する<DELETE

文:位置付け>,<動的DELETE文:位置付け>若しくは<準備可能動的DELETE文:位置付け>,又

は<MERGE文>によって削除のためにマーク付けされていたか,<UPDATE文:探索>,CR以外のカ

ーソルを識別する<UPDATE文:位置付け>,<動的UPDATE文:位置付け>若しくは<準備可能動的

UPDATE文:位置付け>,又は<MERGE文>によって更新されていたならば,終了条件:警告 (warning) 

− カーソル操作衝突 (cursor operation conflict) が引き起こされる。 

10) DEFAULTに関連付けられる値は,“11.5 <DEFAULT句>”の一般規則で示すとおりの,SCLに含ま

れ,DEFAULTを含む<設定句>中の,<対象列>に対する既定値とする。 

11) SCLに含まれる各<更新元>は,現在行の対象行のいずれかが更新される前に,現在行に対して実効

的に評価される。 

12) いずれかの<更新元>の評価中に例外条件が引き起こされたとしても,CRは,現在行の上に位置付

けられたままとする。 

13) CRの現在行を写して,“14.15 <設定句リスト>”の一般規則を適用することによって,SCLに含ま

れる各<設定句>によって指定されるとおりにそれを更新することによって,新しい候補行が構成さ

れる。 

注記496 対象行中で許されるデータ値が,WITH CHECK OPTION制約によって制約されてもよ

い。WITH CHECK OPTION制約の効果は,“15.15 ビュー表中の行の置換えの効果”の一

般規則で定義している。 

14) CRの単純に基となる表をTとし,Tの末端で基となる表をLUTとする。 

15) SCLに含まれる<対象列>によって識別されるTの列をCLとする。 

16) 新しい候補行をR1とし,CRの現在行をRとする。TR中の一つ以上のフィールドから導出される

R中の各フィールドの値が,TR中の一つ以上の同じフィールドから導出される対応する値と同一で

あるようなT中のただ一つの行TRが,T中での置換えのために識別される。CRの現在行RがR1

755 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

によって置き換えられる。T中の対応する列の順序に従って順序付けて,R1のフィールド,及びR1

中に対応するフィールドがないTRのフィールドから成る行をTR1とする。TR1は,TRを置換行

とし,{ (TR,TR1) } は,Tに対する置換え集合とする。 

注記497 二つ以上の行R1がこのような条件を満たす場合には,どの行が置換えのために識別さ

れるかは,処理系依存である。 

注記498 置換えのために行を識別すること,置換行を識別される行に関連付けること,及び置換

え集合を表に関連付けることは,処理系依存の機構である。 

17) 場合: 

a) LUTが実表ならば,次による。 

i) 

場合: 

1) TTがONLYを指定するならば,LUTは,対象列CLに関して下位表なしでの置換え処理の

ために識別される (identified for replacement processing without subtables)。 

2) そうでなければ,LUTは,対象列CLに関して下位表ありでの置換え処理のために識別され

る (identified for replacement processing with subtables)。 

注記499 下位表あり又はなしでの置換え処理のために実表を識別することは,処理系依存の

機構である。ここでは存在しないが,一般には,対象列のリストが空の可能性があ

る。 

ii) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

b) LUTがビュー表ならば,TTをVIEW NAMEとして,Tに対する置換え集合をREPLACEMENT 

SET FOR VIEW NAMEとして,“15.15 ビュー表中の行の置換えの効果”の一般規則を適用する。 

18) 実表の列Cが修正され,CRの<カーソル指定>の<問合せ式>に単純に含まれるいずれかの<ソート

キー>の<値式>の評価がCを参照したならば,CRの位置は,処理系依存とする。 

適合性規則 

なし。 

15.7 実表からの行の削除の効果 

この細分箇条は,ISO/IEC 9075-9の“15.1 実表からの行の削除の効果”によって修正される。 

機能 

実表からの行の削除の効果 (Effect of deleting rows from base tables) は,一つ以上の実表からの行の削除

の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 削除処理のために識別される全ての実表から成る集合をTTとする。TT中の表中の,削除のために

識別される全ての行から成る集合をSとする。 

2) S中のどの行Rに対しても,Rの下位行又は上位行である全ての行SRが,SRを含む実表BTから

の削除のために識別され,BTが,削除処理のために識別される。 

3) 現行トリガ実行文脈中の状態変更の集合をSSCとする。 

4) TT中のどの表Tに対しても,Tの上位表であるか,又はTが下位表なしでの削除処理のために識

756 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

別されていない限り,Tの下位表である全ての表STに対して,次による。 

場合: 

a) 当該表ST及びトリガ事象DELETEをもつ状態変更SCがSSC中に存在するならば,ST中で削除

のために識別されるSTの全ての行のそれぞれの一つの写しが,SCの遷移の集合に追加される。 

b) そうでなければ,状態変更SCが,次のとおりにSSCに追加される。 

i) 

SCの遷移の集合は,ST中で削除のために識別されるSTの全ての行のそれぞれの一つの写し

から成る。 

ii) SCのトリガ事象は,DELETEとする。 

iii) SCの当該表は,STとする。 

iv) SCの列リストは,空とする。 

v) SCが実行されるとみなされる文レベルトリガの集合は,空とする。 

vi) 行レベルトリガの集合は,(実行されるとみなされる行の)空集合と対にされた,SCによって

活性化される各行レベルトリガから成る。 

5) SSCをSET OF STATE CHANGESとして,“15.16 BEFOREトリガの実行”の構文規則を適用する。

“15.16 BEFOREトリガの実行”の一般規則を適用する。 

6) 

09 削除処理のために識別される表中の,削除のために識別されるどの行も,削除のためにマーク付

けされる。これらの行は,もはや削除のために識別されず,それらの行を含む表も,削除処理のた

めに識別されない。 

注記500 “削除のためにマーク付けすること”は,処理系依存の機構である。 

7) FROM値の部分に対して関連するもの及びTO値の部分に対して関連するものをS中にもつどの行

BRに対しても,次による。 

a) Tの記述子に含まれる適用業務時刻期間記述子に含まれる期間名をATPNとする。FROM値の部

分に対して関連するものをFROMVALとする。TO値の部分に対して関連するものをTOVALと

する。ATPN期間開始列の値をBSTARTVALとする。ATPN期間開始列の宣言型をBCDとする。

ATPN期間終了列の値をBENDVALとする。Tの記述子に含まれる表名をTNとする。BRの次数

をdとする。 

b) i,1 ≤ i ≤ dに対して,次による。 

場合: 

i) 

BRのi番目のフィールドに対応する列記述子が,識別列,生成列,システム時刻期間開始列又

はシステム時刻期間終了列を記述するならば,DEFAULTをViとする。 

ii) そうでなければ,BRのi番目のフィールドの値をViとする。 

c) BSTARTVAL < FROMVALで,かつ,FROMVAL < BENDVALならば,次による。 

i) 

j,1 ≤ j ≤ dに対して,次による。 

場合: 

1) BRのj番目のフィールドが,TのATPN期間終了列に対応するならば,CAST ( FROMVAL 

AS BCD ) をVLjとする。 

2) そうでなければ,VjをVLjとする。 

ii) これ以上のアクセス規則及び制約の検査なしで,次の<INSERT文>が実効的に実行される。 

INSERT INTO TN VALUES (VL1, ..., VLd) 

注記501 制約の検査は,トリガの契機となるDELETE文の最後に行われる。 

757 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) BSTARTVAL < TOVALで,かつ,TOVAL < BENDVALならば,次による。 

i) 

k,1 ≤ k ≤ dに対して,次による。 

場合: 

1) BRのk番目のフィールドが,TのATPN期間開始列に対応するならば,CAST (TOVAL AS 

BCD ) をVRkとする。 

2) そうでなければ,VkをVRkとする。 

ii) これ以上のアクセス規則及び制約の検査なしで,次の<INSERT文>が実効的に実行される。 

INSERT INTO TN VALUES (VR1, ..., VRd) 

注記502 制約の検査は,トリガの契機となるDELETE文の最後に行われる。 

適合性規則 

なし。 

15.8 導出表からの行の削除の効果 

細分箇条署名 

“導出表からの行の削除の効果” [一般規則] ( 

パラメタ: “TABLE” 

機能 

導出表からの行の削除の効果 (Effect of deleting some rows from a derived table) は,導出表からの行の削

除の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,TABLEをQEとする。 

2) QEを評価した結果をTとする。 

3) 場合: 

a) <問合せ式本体>を直に含む<問合せ一次子>をQEが単純に含むならば,その<問合せ式本体>を

QEBとする。QEBによって識別される表をTABLEとして,この細分箇条の一般規則を適用する。 

b) UNION ALLを指定する<問合せ式本体> QEBをQEが単純に含むならば,QEBに直に含まれる<

問合せ式本体>及び<問合せ項>を,それぞれ,LO及びROとする。LO及びROによって識別さ

れる表を,それぞれ,T1及びT2とする。 

i) 

削除のために識別されたT中のどの行Rに対しても,Rが導出されたT1又はT2のいずれか中

の行をRDとし,その表をTDとする。削除のためにRDを識別する。 

ii) LOをTABLEとして,この細分箇条の一般規則を適用する。 

iii) ROをTABLEとして,この細分箇条の一般規則を適用する。 

c) そうでなければ,QEに単純に含まれる<問合せ指定>をQSとする。QSに直に含まれる<表式>を

TEとし,TEの<FROM句>に単純に含まれる<表参照>をTREFとする。 

i) 

場合: 

1) TREFが<表参照>を一つだけ含むならば,その<表参照>をTR1とし,1をmとする。 

758 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) そうでなければ,QSが表に関して1対1対応である表を識別する<表参照>の個数をmとす

る。これらの<表参照>をTRi,1 ≤ i ≤ mとする。 

注記503 1対1対応の<問合せ指定>の概念は,“7.12 <問合せ指定>”で定義している。 

ii) TRiによって識別される表をTTi,1 ≤ i ≤ mとする。 

iii) 削除のために識別されたTのどの行Rに対しても,1からmまでの範囲のiに対して,Rが導

出されたTTi中の行をRDとする。削除のためにそのRDを識別する。 

iv) 1からmまでの範囲のiに対して,次による。 

場合: 

1) TTiが実表ならば,次による。 

場合: 

A) TRiがONLYを指定するならば,TTiが,下位表なしでの削除処理のために識別される。 

B) そうでなければ,TTiが,下位表ありでの削除処理のために識別される。 

2) TTiがビュー表ならば,TTiの<表名>をVIEW NAMEとして,“15.9 ビュー表からの行の削

除の効果”の一般規則を適用する。 

3) そうでなければ,TRiをTABLEとして,この細分箇条の一般規則を適用する。 

v) “15.7 実表からの行の削除の効果”の一般規則を適用する。 

適合性規則 

なし。 

15.9 ビュー表からの行の削除の効果 

細分箇条署名 

“ビュー表からの行の削除の効果” [一般規則] ( 

パラメタ: “VIEW NAME” 

機能 

ビュー表からの行の削除の効果 (Effect of deleting some rows from a viewed table) は,ビュー表からの行の

削除の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,VIEW NAMEをVNとする。 

2) VNによって識別されるビュー表をVとする。 

3) 場合: 

a) Vがトリガ削除可能ならば,次による。 

i) 

当該表がVである削除INSTEAD OFトリガをTRとする。 

ii) 状態変更SCが次のとおりに作成される。 

1) SCの遷移の集合は,削除のために識別されるVの全ての行のそれぞれの一つの写しから成

る。 

2) SCのトリガ事象は,DELETEとする。 

759 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) SCの当該表は,Vとする。 

4) SCの列リストは,空とする。 

5) SCが実行されるとみなされる文レベルトリガの集合は,空とする。 

6) 行レベルトリガの集合は,(実行されるとみなされる行の)空集合と対にされたTRから成る。 

iii) TRをTRIGGERとして,SCをSTATE CHANGEとして,“15.19 トリガの実行”の一般規則を

適用する。 

b) そうでなければ,次による。 

i) 

VNがONLYを指定するならば,VNによって識別されるビューVの記述子に含まれる,元の<

問合せ式>をQEとする。そうでなければ,その記述子に含まれる階層的な<問合せ式>をQEと

する。QEを評価した結果をTとする。 

ii) 削除のために識別されたVの各行Rに対して,Rが導出されたT中の行をRDとする。削除の

ためにその行を識別する。 

iii) QEをTABLEとして,“15.8 導出表からの行の削除の効果”の一般規則を適用する。 

適合性規則 

なし。 

15.10 

実表への表の挿入の効果 

この細分箇条は,ISO/IEC 9075-9の“15.2 実表への表の挿入の効果”によって修正される。 

機能 

実表への表の挿入の効果 (Effect of inserting tables into base tables) は,与えられた一つ以上の表のそれぞ

れの,それに関連付けられた実表への挿入の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 現行トリガ実行文脈中の状態変更の集合をSSCとする。 

2) 挿入のために識別される各実表Tに対して,Tに対する挿入元の表をSとする。 

a) Tの列ICがTの識別列ならば,ICに対応する格納場所ICSが,代入されないとしてマーク付け

されているS中の各行に対して,次による。 

i) 

ICSは,もはや代入されないとしてマーク付けされない。 

ii) ICの列記述子に含まれる順序数生成子記述子をSEQUENCEとして,“9.25 順序数生成子の次

値の生成”の一般規則を適用する。これらの一般規則の適用によって戻されるRESULTをNV

とする。 

場合: 

1) ICの宣言型が個別型DISTならば,DIST(NV) をICNVとする。 

2) そうでなければ,NVをICNVとする。 

iii) ICSをTARGETとして,ICNVをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

b) Tの列ICがTのシステム時刻期間開始列ならば,ICに対応する格納場所ICSが,代入されない

としてマーク付けされているS中の各行に対して,次による。 

i) 

ICSは,もはや代入されないとしてマーク付けされない。 

760 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) 現行SQLトランザクションのトランザクション時刻印をNVとする。Tのシステム時刻期間開

始列の宣言型をDTとする。次の<CAST指定>の結果をNVVとする。 

CAST (NV AS DT)  

iii) ICSをTARGETとして,NVVをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

c) Tの列ICがTのシステム時刻期間終了列ならば,ICに対応する格納場所ICSが,代入されない

としてマーク付けされているS中の各行に対して,次による。 

i) 

ICSは,もはや代入されないとしてマーク付けされない。 

ii) Tのシステム時刻期間終了列の宣言型によって提供される最高値をNVとする。 

iii) ICSをTARGETとして,NVをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

d) Tのどの真上位表STも,挿入のために識別される。各STへの挿入のための挿入元の表は,次の

とおりに構成される。 

i) 

Tへの挿入のための挿入元の表をSとする。値がSである<表値構成子>をTVCとする。 

ii) STの表記述子に含まれる列記述子の個数をnとし,それらの列記述子をCDi,1 ≤ i ≤ nとする。

1からnまでの範囲のiに対して,i番目の<選択副リスト>が,CDiに含まれる列名から成るよ

うなn個の<選択副リスト>を含む<選択リスト>をSLとする。 

iii) STへの挿入のための挿入元の表は,次の<問合せ式>の結果中の行から成る。 

SELECT SL FROM TVC 

3) 挿入のために識別されるどの実表BTに対しても,次による。 

場合: 

a) 当該表ST及びトリガ事象INSERTをもつ状態変更SCがSSC中に存在するならば,BTに対する

挿入元の表中の行が,SCの遷移の集合に追加される。 

b) そうでなければ,状態変更SCが,次のとおりにSSCに追加される。 

i) 

SCの遷移の集合は,BTに対する挿入元の表中の行から成る。 

ii) SCのトリガ事象は,INSERTとする。 

iii) SCの当該表は,BTとする。 

iv) SCの列リストは,空とする。 

v) SCが実行されるとみなされる文レベルトリガの集合は,空とする。 

vi) 行レベルトリガの集合は,(実行されるとみなされる行の)空集合と対にされた,SCによって

活性化される各行レベルトリガから成る。 

4) SSCをSET OF STATE CHANGESとして,“15.16 BEFOREトリガの実行”の構文規則を適用する。

“15.16 BEFOREトリガの実行”の一般規則を適用する。 

5) SSC中のどの状態変更SCに対しても,SC中の遷移の集合をSOTとし,SCの当該表をBTとする。 

a) SOT中の各行R中で,生成列GCに対応するR中の各格納場所GCSに対して,GCの列記述子に

含まれる生成式を,Rに対して評価した結果をGCRとする。GCSをTARGETとして,GCRを

VALUEとして,“9.2 格納代入”の一般規則を適用する。 

b) SOTは,BTに対する挿入操作の差分新表 (new delta table of insert operation) とする。 

c) 

09 SOT中の全ての行がBTに挿入され,BTは,もはや挿入のためにマーク付けされない。 

適合性規則 

なし。 

15.11 

導出表への表の挿入の効果 

761 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

細分箇条署名 

“導出表への表の挿入の効果” [一般規則] ( 

パラメタ: “SOURCE”, 

パラメタ: “TARGET” 

機能 

導出表への表の挿入の効果 (Effect of inserting a table into a derived table) は,導出表への表の挿入の効果

を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,SOURCEをQとし,TARGETをTとする。 

2) Tの記述子に含まれる<問合せ式>をQEとする。 

場合: 

a) <問合せ式本体>を直に含む<問合せ一次子>をQEが単純に含むならば,その<問合せ式本体>を

QEBとする。QをSOURCEとして,QEBの結果をTARGETとして,この細分箇条の一般規則を

適用する。 

b) そうでなければ,QEに単純に含まれる<問合せ指定>をQSとする。QSに直に含まれる<表式>を

TEとし,TEの<FROM句>に単純に含まれる<表参照>をTREFとする。QSに直に含まれる<選

択リスト>をSLとし,SLに単純に含まれる<値式> VEj,1 ≤ j ≤ nの個数をnとする。 

i) 

場合: 

1) TREFが<表参照>を一つだけ含むならば,その<表参照>をTR1とし,1をmとする。 

2) そうでなければ,QSが表に関して1対1対応である表を識別する<表参照>の個数をmとす

る。これらの<表参照>をTRi,1 ≤ i ≤ mとする。 

ii) TRiによって識別される表をTTi,1 ≤ i ≤ mとする。TTiに対する候補行から成る,最初は空の

表をSiとする。 

iii) Qのどの行Rに対しても,1からmまでの範囲のiに対して,次による。 

1) “11.5 <DEFAULT句>”の一般規則で規定するとおりに,各列の値がその列の既定値である

TTiの候補行が実効的に作成される。候補行は,TTiの全ての列を含む。 

2) 1からnまでの範囲のjに対して,VEjによって識別される候補行の列をCとし,Rのj番目

の値をSVとする。CをTARGETとして,SVをVALUEとして,“9.2 格納代入”の一般規則

を適用する。 

3) 候補行が対応するSiに追加される。 

iv) 1からmまでの範囲のiに対して,次による。 

場合: 

1) TTiが実表ならば,TTiは,挿入元の表Siの挿入のために識別される。 

2) TTiがビュー表ならば,SiをSOURCEとして,TTiをTARGETとして,“15.12 ビュー表へ

の表の挿入の効果”の一般規則を適用する。 

762 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) そうでなければ,SiをSOURCEとして,TTiをTARGETとして,この細分箇条の一般規則

を適用する。 

v) “15.10 実表への表の挿入の効果”の一般規則を適用する。 

適合性規則 

なし。 

15.12 

ビュー表への表の挿入の効果 

細分箇条署名 

 “ビュー表への表の挿入の効果” [一般規則] ( 

パラメタ: “SOURCE”, 

パラメタ: “TARGET” 

機能 

ビュー表への表の挿入の効果 (Effect of inserting a table into a viewed table) は,ビュー表への表の挿入の

効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,SOURCEをSとし,TARGETをTとする。 

2) Tのビュー記述子をTDとする。TDに含まれる,元の<問合せ式>をQEとする。 

3) 場合: 

a) Tがトリガ挿入可能ならば,次による。 

i) 

当該表がTである挿入INSTEAD OFトリガをTRとする。 

ii) 状態変更SCが次のとおりに作成される。 

1) SCの遷移の集合は,Sの全ての行のそれぞれの一つの写しから成る。 

2) SCのトリガ事象は,INSERTとする。 

3) SCの当該表は,Tとする。 

4) SCの列リストは,空とする。 

5) SCが実行されるとみなされる文レベルトリガの集合は,空とする。 

6) 行レベルトリガの集合は,(実行されるとみなされる行の)空集合と対にされたTRから成る。 

iii) TRをTRIGGERとして,SCをSTATE CHANGEとして,“15.19 トリガの実行”の一般規則を

適用する。 

b) そうでなければ,次による。 

場合: 

i) 

TDがWITH CHECK OPTIONを示すならば,次による。 

1) 場合: 

A) TDがLOCALを指定するならば,WITH CHECK OPTIONを示す標識を取り除くことによ

ってTDから導出されるビュー記述子をVDとする。 

B) そうでなければ,次のとおりにTDから導出されるビュー記述子をVDとする。 

763 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

I) 

WITH CHECK OPTIONを示す標識が取り除かれる。 

II) ビュー表である,QEの基となる表UVへの,QEに含まれるどの参照も,WITH 

CASCADED CHECK OPTIONが示されることを除いて,UVの記述子と同一である記述

子をもつビューへの参照によって置き換えられる。 

2) SをSOURCEとして,VDによって記述されるビューをTARGETとして,この細分箇条の一

般規則を適用する。 

3) 次の述語の結果が真 (True) ならば,例外条件:WITH CHECK OPTION違反 (with check option 

violation) が引き起こされる。 

EXISTS ( SELECT * FROM S 

           EXCEPT ALL 

           SELECT * FROM T ) 

ii) そうでなければ,SをSOURCEとして,TをTARGETとして,“15.11 導出表への表の挿入の

効果”の一般規則を適用する。 

4) QEの末端で一般に基となる表の個数をnとする。QEの末端で一般に基となる表をTi,1 ≤ i ≤ nと

する。Tiに対する挿入操作の差分新表をNTi,1 ≤ i ≤ nとする。Ti,1 ≤ i ≤ nへの各参照をNTiへの

参照に置き換えたQEの評価の結果をSとする。Sは,Tに対する挿入操作の差分新表 (new delta 

table of insert operation)とする。 

適合性規則 

なし。 

15.13 

実表中の行の置換えの効果 

この細分箇条は,ISO/IEC 9075-9の“15.3 実表中の行の置換えの効果”によって修正される。 

機能 

実表中の行の置換えの効果 (Effect of replacing rows in base tables) は,一つ以上の実表中の幾つかの行の

置換えの効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 置換え処理のために識別される全ての実表から成る集合をTTとする。TT中の全ての表中の,置換

えのために識別される全ての行から成る集合をSとする。 

2) TT中のどの実表Tに対しても,対象列に関してTが置換え処理のために識別される全ての対象列,

及びこれらの対象列のうちの少なくとも一つに依存するTの全ての生成列から成る集合をOCとす

る。Tの下位表又は上位表であるどの表STも,OCとSTの列との(空かもしれない)共通部分に

関して置換え処理のために識別される。 

3) TT中の表T中での置換えのために識別される全ての行Rに対して,Rの下位行又は上位行である

どの行SRも,SRを含む実表ST中で置換えのために識別される。STに対する置換え集合RSTは,

次のとおりに,Tに対する置換え集合RRから導出される。 

場合: 

a) STがTの下位表ならば,RST中の各置換行は,ST中の対応する識別される行の,T中に対応す

764 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

る列がないフィールドで拡張された,RR中の対応する置換行とする。 

b) STがTの上位表ならば,RST中の各置換行は,RR中の対応する置換行から,ST中に対応する列

がないフィールドを除いたものとする。 

4) 現行トリガ実行文脈中の状態変更の集合をSSCとする。 

5) 置換え処理のために識別されるどの表STに対しても,次による。 

a) Tの列ICがSTの識別列ならば,行RRに対する置換行中のICに対応する格納場所ICSが代入

されない (unassigned) としてマーク付けされるST中での置換えのために識別される各行RRに

対して,次による。 

i) 

ICSは,もはや代入されないとしてマーク付けされない。 

ii) ICの列記述子に含まれる順序数生成子記述子をSEQUENCEとして,“9.25 順序数生成子の次

値の生成”の一般規則を適用する。これらの一般規則の適用によって戻されるRESULTをNV

とする。 

場合: 

1) ICの宣言型が個別型DISTならば,DIST(NV) をICNVとする。 

2) そうでなければ,NVをICNVとする。 

iii) ICSをTARGETとして,ICNVをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

b) STの列の名前から成る集合をTLとする。STLが空であるか,又はSTLとOCとの共通部分が空

でないかのいずれかであるような,TLのどの部分集合STLに対しても,次による。 

場合: 

i) 

当該表ST,トリガ事象UPDATE及び列リストSTLをもつ状態変更SCがSSC中に存在するな

らば,ST中での置換えのために識別される各行を,それに対応する置換行と対にすることによ

って形成される行対が,SCの遷移の集合に追加される。 

ii) そうでなければ,状態変更SCは,次のとおりにSSCに追加される。 

1) SCの遷移の集合は,ST中での置換えのために識別される各行を,それに対応する置換行と

対にすることによって形成される行対から成る。 

2) SCのトリガ事象は,UPDATEとする。 

3) SCの当該表は,STとする。 

4) SCの列リストは,STLとする。 

5) SCが実行されるとみなされる文レベルトリガの集合は,空とする。 

6) 行レベルトリガの集合は,(実行されるとみなされる行の)空集合と対にされた,SCによっ

て活性化される各行レベルトリガから成る。 

6) SSCをSET OF STATE CHANGESとして,“15.16 BEFOREトリガの実行”の構文規則を適用する。

“15.16 BEFOREトリガの実行”の一般規則を適用する。 

7) SSC中の各状態変更SC中の遷移の各集合RSTに対して,RST中の各行R中で,SCの当該表中の

生成列GCに対応するR中の各格納場所GCSに対して,GCの列記述子に含まれる生成式のRに対

する評価の結果をGCRとする。GCSをTARGETとして,GCRをVALUEとして,“9.2 格納代入”

の一般規則を適用する。 

8) 

09 TT中の全ての表Tに対して,次による。 

場合: 

a) Tの記述子がシステム時刻期間記述子を含むならば,次による。 

765 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

Tのシステム時刻期間開始列をSTARTとし,Tのシステム時刻期間終了列をENDとする。

STARTの宣言型をDTとする。 

ii) 現行SQLトランザクションのトランザクション時刻印をTTSとする。次の<CAST指定>の結

果をCTTSとする。 

CAST (TTS AS DT)  

iii) T中での置換えのために識別される各行Rに対して,システム時刻期間開始列の値を

STARTVALとする。 

1) 場合: 

A) CTTS < STARTVALならば,例外条件:データ例外 (data exception) − 行バージョンが正

しくない (invalid row version) が引き起こされる。 

B) CTTS = STARTVALならば,Rは,それに対応する置換行に置き換えられる。 

C) そうでなければ,次による。 

I) Tがシステムバージョン表ならば,ENDの値がCTTSに実効的に置き換えられたRの写

しがTに挿入される。 

II) Rは,それに対応し,STARTの値がCTTSに実効的に置き換えられた置換行に置き換え

られる。 

2) Rは,もはや置換えのために識別されない。Tは,もはや置換え処理のために識別されない。 

iv) 全てのRの全ての置換行から成る集合をSUPとする。SUPは,Tの更新操作の差分新表 (new 

delta table of update operation) とする。 

b) そうでなければ,Tの上位表又は下位表である全ての表STに対して,ST中での置換えのために

識別されるどの行Rに対しても,Rがそれに対応する置換行によって置き換えられる。Rは,も

はや置換えのために識別されない。STは,もはや置換え処理のために識別されない。全てのRの

全ての置換行から成る集合をSUPとする。SUPは,STの更新操作の差分新表 とする。 

9) FROM値の部分に対して関連するもの及びTO値の部分に対して関連するものをS中にもつどの行

BRに対しても,次による。 

a) Tの記述子に含まれる適用業務時刻期間記述子に含まれる期間名をATPNとする。FROM値の部

分に対して関連するものをFROMVALとする。TO値の部分に対して関連するものをTOVALと

する。ATPN期間開始列の値をBSTARTVALとする。ATPN期間開始列の宣言型をBCDとする。

ATPN期間終了列の値をBENDVALとする。Tの記述子に含まれる表名をTNとする。BRの次数

をdとする。 

b) i,1 ≤ i ≤ dに対して,次による。 

場合: 

i) 

BRのi番目のフィールドに対応する列記述子が,識別列,生成列,システム時刻期間開始列又

はシステム時刻期間終了列を記述するならば,DEFAULTをViとする。 

ii) そうでなければ,BRのi番目のフィールドの値をViとする。 

c) BSTARTVAL < FROMVALで,かつ,FROMVAL < BENDVALならば,次による。 

i) 

j,1 ≤ j ≤ dに対して,次による。 

場合: 

1) BRのj番目のフィールドが,TのATPN期間終了列に対応するならば,CAST ( FROMVAL 

AS BCD ) をVLjとする。 

766 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) そうでなければ,VjをVLjとする。 

ii) これ以上のアクセス規則及び制約の検査なしで,次の<INSERT文>が実効的に実行される。 

INSERT INTO TN VALUES (VL1, ..., VLd) 

注記504 制約の検査は,トリガの契機となるUPDATE文の最後に行われる。 

d) BSTARTVAL < TOVALで,かつ,TOVAL < BENDVALならば,次による。 

i) 

k,1 ≤ k ≤ dに対して,次による。 

場合: 

1) BRのk番目のフィールドが,TのATPN期間開始列に対応するならば,CAST (TOVAL AS 

BCD ) をVRkとする。 

2) そうでなければ,VkをVRkとする。 

ii) これ以上のアクセス規則及び制約の検査なしで,次の<INSERT文>が実効的に実行される。 

INSERT INTO TN VALUES (VR1, ..., VRd) 

注記505 制約の検査は,トリガの契機となるUPDATE文の最後に行われる。 

適合性規則 

なし。 

15.14 

導出表中の行の置換えの効果 

細分箇条署名 

 “導出表中の行の置換えの効果” [一般規則] ( 

パラメタ: “TABLE”, 

パラメタ: “REPLACEMENT SET FOR TABLE” 

機能 

導出表中の行の置換えの効果 (Effect of replacing some rows in a derived table) は,導出表中の行の置換え

の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,TABLEをQEとし,REPLACEMENT SET FOR TABLEをRS

とする。 

2) QEを評価した結果をTとする。QEの対象列をCLとする。 

3) 場合: 

a) <問合せ式本体>を直に含む<問合せ一次子>をQEが単純に含むならば,その<問合せ式本体>を

QEBとする。QEBをTABLEとして,RSをREPLACEMENT SET FOR TABLEとして,この細分

箇条の一般規則を適用する。 

b) UNION ALLを指定する<問合せ式本体> QEBをQEが単純に含むならば,QEBに直に含まれる<

問合せ式本体>及び<問合せ項>を,それぞれ,LO及びROとする。LO及びROによって識別さ

れる表を,それぞれ,T1及びT2とする。CLの対象列の基となる列であるT1及びT2の列を,

それぞれ,対象列CL1及びCL2とする。T1及びT2に対する,最初は空の置換え集合を,それぞ

767 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

れ,RS1及びRS2とする。 

i) 

RSのどの対 (SR, CNR) に対しても,次による。 

場合: 

1) SRがT1の行から導出されたならば,その行SR1をCNRによる置換えのために識別し,対 

(SR1, CNR) がRS1に実効的に追加される。 

2) そうでなければ,SRが導出されたT2の行をSR2とする。その行をCNRによる置換えのた

めに識別し,対 (SR2, CNR) がRS2に実効的に追加される。 

ii) LOをTABLEとして,RS1をREPLACEMENT SET FOR TABLEとして,この細分箇条の一般

規則を適用する。 

iii) ROをTABLEとして,RS2をREPLACEMENT SET FOR TABLEとして,この細分箇条の一般

規則を適用する。 

c) そうでなければ,QEに単純に含まれる<問合せ指定>をQSとする。QSに直に含まれる<表式>を

TEとし,TEの<FROM句>に単純に含まれる<表参照>をTREFとする。QSに直に含まれる<選

択リスト>をSLとし,SLに単純に含まれる<値式> VEj,1 ≤ j ≤ nの個数をnとする。 

i) 

場合: 

1) TREFが<表参照>を一つだけ含むならば,その<表参照>をTR1とし,1をmとする。 

2) そうでなければ,QSが表に関して1対1対応である表を識別する<表参照>の個数をmとす

る。それらの<表参照>をTRi,1 ≤ i ≤ mとする。 

ii) TRiによって識別される表をTTi,1 ≤ i ≤ mとし,TTiに対する,最初は空の置換え集合をRSi

とし,CLiのどの列もCLの基となる列であるような,TTiの対象列リストをCLiとする。 

iii) RSのどの対 (SR, CNR) に対しても,1からmまでの範囲のiに対して,次による。 

1) SRが導出されたTTiの行をSRTIとする。 

2) SRTIを写すことによって,TTiの候補行CNRIが実効的に作成される。候補行は,TTiの全

ての列を含む。 

3) 1からnまでの範囲のjに対して,VEjによって識別される候補行の列をCとし,CNRのj

番目の値をSVとする。CをTARGETとして,SVをVALUEとして,“9.2 格納代入”の一般

規則を適用する。 

4) CNRIによる置換えのためにSRTIを識別し,対 (SRTI, CNRI) がRSiに実効的に追加され

る。 

iv) 1からmまでの範囲のiに対して,次による。 

場合: 

1) TTiが実表ならば,次による。 

場合: 

A) TRiがONLYを指定するならば,TTiは,対象列CLiに関して下位表なしでの置換え処理

のために識別される。 

B) そうでなければ,TTiは,対象列CLiに関して下位表ありでの置換え処理のために識別さ

れる。 

2) TTiがビュー表ならば,TTiの<表名>をVIEW NAMEとして,RSiをREPLACEMENT SET 

FOR VIEW NAMEとして,“15.15 ビュー表中の行の置換えの効果”の一般規則を適用する。 

3) TTiが導出表ならば,TRiをTABLEとして,RSiをREPLACEMENT SET FOR TABLEとし

768 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

て,この細分箇条の一般規則を適用する。 

v) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

適合性規則 

なし。 

15.15 

ビュー表中の行の置換えの効果 

細分箇条署名 

 “ビュー表中の行の置換えの効果” [一般規則] ( 

パラメタ: “VIEW NAME”, 

パラメタ: “REPLACEMENT SET FOR VIEW NAME” 

機能 

ビュー表中の行の置換えの効果 (Effect of replacing some rows in a viewed table) は,ビュー表中の行の置

換えの効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,VIEW NAMEをVNとし,REPLACEMENT SET FOR VIEW 

NAMEをRSとする。 

2) VNによって識別されるビューをTとする。Tのビュー記述子をTDとする。VNがONLYを指定す

るならば,TDに含まれる,元の<問合せ式>をQEとする。そうでなければ,TDに含まれる階層的

な<問合せ式>をQEとする。 

3) 場合: 

a) Tがトリガ更新可能ならば,次による。 

i) 

当該表がTである更新INSTEAD OFトリガをTRとする。 

ii) 状態変更SCが次のとおりに作成される。 

1) SCの遷移の集合は,Tに対する置換え集合中の行対の写しから成る。 

2) SCのトリガ事象は,UPDATEとする。 

3) SCの当該表は,Tとする。 

4) SCの列リストは,空とする。 

5) SCが実行されるとみなされる文レベルトリガの集合は,空とする。 

6) 行レベルトリガの集合は,(実行されるとみなされる行の)空集合と対にされたTRから成る。 

iii) TRをTRIGGERとして,SCをSTATE CHANGEとして,“15.19 トリガの実行”の一般規則を

適用する。 

b) そうでなければ,次による。 

場合: 

i) 

TDがWITH CHECK OPTIONを示すならば,次による。 

1) 場合: 

A) TDがLOCALを指定するならば,WITH CHECK OPTIONを示す標識を取り除くことによ

769 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ってTDから導出されるビュー記述子をVDとする。 

B) そうでなければ,次のとおりに,TDから導出されるビュー記述子をVDとする。 

I) 

WITH CHECK OPTIONを示す標識が取り除かれる。 

II) ビュー表である,QEの基となる表UVへの,QEに含まれるどの参照も,WITH 

CASCADED CHECK OPTIONが示されることを除いて,UVの記述子と同一である記述

子をもつビューへの参照によって置き換えられる。 

2) VDによって記述されるビューの<表名> VをVIEW NAMEとして,RSをREPLACEMENT 

SET FOR VIEW NAMEとして,この細分箇条の一般規則を適用する。 

3) RSの新しい候補行から成る表をSとする。次の述語の結果が真 (True) ならば,例外条件:

WITH CHECK OPTION違反 (with check option violation) が引き起こされる。 

EXISTS ( SELECT * FROM S 

           EXCEPT ALL 

           SELECT * FROM T ) 

ii) そうでなければ,QEをTABLEとして,RSをREPLACEMENT SET FOR TABLEとして,“15.14 

導出表中の行の置換えの効果”の一般規則を適用する。 

4) QEの末端で一般に基となる表の個数をnとする。QEの末端で一般に基となる表をTi,1 ≤ i ≤ nと

する。Tiに対する更新操作の差分新表をNTi,1 ≤ i ≤ nとする。Ti,1 ≤ i ≤ nへの各参照をNTiへの

参照に置き換えたQEの評価の結果をSとする。Sは,Tに対する更新操作の差分新表 (new delta 

table of update operation)とする。 

適合性規則 

なし。 

15.16 

BEFOREトリガの実行 

細分箇条署名 

 “BEFOREトリガの実行” [構文規則] ( 

パラメタ: “SET OF STATE CHANGES” 

“BEFOREトリガの実行” [一般規則] () 

機能 

BEFOREトリガの実行 (Execution of BEFORE triggers) は,BEFOREトリガの実行を定義する。 

構文規則 

1) この細分箇条の構文規則の適用では,SET OF STATE CHANGESをSSCとする。 

2) SSC中の状態変更によって活性化されるBEFOREトリガの集合をBTとする。 

注記506 トリガの活性化は,“4.39 トリガ”で定義している。 

3) BT中のトリガの個数をNTとし,それらの実行順序に従って順序付けられたそのようなk番目のト

リガをTRkとする。TRkを活性化したSSC中の状態変更をSCkとする。 

注記507 トリガの順序付けは,“4.39 トリガ”で定義している。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則は,記号引数なしで適用する。 

770 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 1からNTまでの範囲のkに対して,TRkをTRIGGERとして,SCkをSTATE CHANGEとして,

“15.19 トリガの実行”の一般規則を適用する。 

適合性規則 

なし。 

15.17 

参照動作の実行 

細分箇条署名 

 “参照動作の実行” [一般規則] ( 

パラメタ: “CONSTRATINT” 

機能 

参照動作の実行 (Execution of referential actions) は,参照動作の効果を規定する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,CONSTRAINTをRCとする。 

2) RCは,参照制約とする。 

3) RCの<一致型>(SIMPLE,PARTIAL又はFULLのいずれか)をMとする。 

4) RCの<更新規則>をURとし,RCの<削除規則>をDRとする。 

5) RCの参照表をFFとする。 

場合: 

a) FFがシステムバージョン表ならば,次の問合せ指定の結果をFとする。 

SELECT * 

FROM FF FOR SYSTEM̲TIME AS OF CURRENT̲TIMESTAMP 

b) そうでなければ,FFをFとする。 

6) 場合: 

a) MがSIMPLE又はFULLを指定するならば,参照制約の被参照表中の与えられた行に対して,参

照列の値がR中の対応する被参照列の値と等しいような,F中の行Rの下位行又は上位行である

どの行も,一致行 (matching row) とする。 

b) MがPARTIALを指定するならば,次による。 

i) 

参照制約の被参照表中の与えられた行に対して,行Rが少なくとも一つのナルでない参照列の

値をもち,かつ,Rのそのナルでない参照列の値が対応する被参照列の値と等しいような,F中

の行Rの下位行又は上位行であるどの行も,一致行 (matching row)とする。 

ii) 参照制約の被参照表中の与えられた行に対して,被参照表中の与えられた行に対してだけ一致

行であるその与えられた行のどの一致行も,一意一致行 (unique matching row) とする。参照制

約の被参照表中の与えられた行に対して,その与えられた行に対する一意一致行でないその与

えられた行の一致行は,一意でない一致行 (non-unique matching row) とする。 

7) 被参照表中の各行に対して,それの一致行,一意一致行及び一意でない一致行は,<SQL手続文>の

実行の直前に決定される。その<SQL手続文>の実行中には,新しい一致行は,追加されない。 

771 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

被参照行が削除のためにマーク付けされるか,又はナルでない参照列に対応する被参照列上で異

なる値に更新されるかのいずれかならば,被参照行と一意でない一致行との間の関連付けは,その

SQL文の実行中に削除される。これは,被参照行のそのような削除のためのマーク付け又は更新の

直後に起こる。被参照行に対する一意一致行及び一意でない一致は,その被参照行と一意でない一

致行との間の関連付けが削除された直後に評価される。 

8) 現行トリガ実行文脈をCTECとする。CTEC中の状態変更の集合をSSCとする。SSC中の状態変更

をSCiとする。 

9) 削除のためにマーク付けされ,かつ,以前には削除のためにマーク付けされていなかった被参照表

のどの行に対しても,次による。 

場合: 

a) MがSIMPLE又はFULLを指定するならば,次による。 

場合: 

i) 

DRがCASCADEを指定するならば,次による。 

1) Fが削除処理のために識別され,F中のどの一致行も,削除のために識別される。 

2) “15.7 実表からの行の削除の効果”の一般規則を適用する。 

ii) DRがSET NULLを指定するならば,次による。 

1) F中の各一致行MRは,MRを写し,その写し中の各参照列にナル値を設定することによっ

て形成される候補置換行NMRと対にされる。MRは,F中でのNMRによる置換えのために

識別される。(MR,NMR) 対の集合は,Fに対する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iii) DRがSET DEFAULTを指定するならば,次による。 

1) F中の各一致行MRは,MRを写し,その写し中の各参照列に,“11.5 <DEFAULT句>”の一

般規則で規定する既定値を設定することによって形成される候補置換行NMRと対にされる。

MRは,F中でのNMRによる置換えのために識別される。(MR,NMR) 対の集合は,Fに対

する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iv) DRがRESTRICTを指定し,かつ,一致行が存在するならば,例外条件:整合性制約違反 (integrity 

constraint violation) − RESTRICT違反 (restrict violation) が引き起こされる。 

注記508 DRがNO ACTIONを指定するならば,参照削除動作は,実行されない。 

b) MがPARTIALを指定するならば,次による。 

場合: 

i) 

DRがCASCADEを指定するならば,次による。 

1) Fが削除処理のために識別され,F中のどの一意一致行も,削除のために識別される。 

2) “15.7 実表からの行の削除の効果”の一般規則を適用する。 

ii) DRがSET NULLを指定するならば,次による。 

1) F中の各一意一致行UMRは,UMRを写して,その写し中の各参照列にナル値を設定するこ

とによって形成される候補置換行NUMRと対にされる。UMRは,F中でのNUMRによる置

換えのために識別される。(UMR,NUMR) 対の集合は,Fに対する置換え集合とする。 

772 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iii) DRがSET DEFAULTを指定するならば,次による。 

1) F中の各一意一致行UMRは,UMRを写して,その写し中の各参照列に,“11.5 <DEFAULT

句>”の一般規則で規定する既定値を設定することによって形成される候補置換行NUMRと

対にされる。UMRは,F中でのNUMRによる置換えのために識別される。(UMR,NUMR) 

対の集合は,Fに対する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iv) DRがRESTRICTを指定し,かつ,一意一致行が存在するならば,例外条件:整合性制約違反 

(integrity constraint violation) − RESTRICT違反 (restrict violation) が引き起こされる。 

注記509 DRがNO ACTIONを指定するならば,参照削除動作は,実行されない。 

10) 被参照表中の被参照列RCのナルでない値が,RCの現在値とは異なる値に更新されるならば,参照

表の下位表族のどの要素Fに対しても,次による。 

場合: 

a) MがSIMPLE又はFULLを指定するならば,次による。 

場合: 

i) 

URがCASCADEを指定するならば,次による。 

1) F中の各一致行MRは,MRを写して,その写し中の各参照列に,その被参照列の新しい値

を設定することによって形成される候補置換行NMRと対にされる。MRは,F中でのNMR

による置換えのために識別される。(MR,NMR) 対の集合は,Fに対する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

ii) URがSET NULLを指定するならば,次による。 

場合: 

1) MがSIMPLEを指定するならば,次による。 

A) F中の各一致行MRは,MRを写して,その写し中の各参照列にナル値を設定することに

よって形成される候補置換行NMRと対にされる。MRは,F中でのNMRによる置換えの

ために識別される。(MR,NMR) 対の集合は,Fに対する置換え集合とする。 

B) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

C) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

2) MがFULLを指定するならば,次による。 

A) F中の各一致行MRは,MRを写して,その写し中の被参照列に対応する各参照列にナル

値を設定することによって形成される候補置換行NMRと対にされる。MRは,F中での

NMRによる置換えのために識別される。(MR,NMR) 対の集合は,Fに対する置換え集合

とする。 

B) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

C) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iii) URがSET DEFAULTを指定するならば,次による。 

1) F中の各一致行MRは,MRを写して,その写し中の各参照列に,“11.5 <DEFAULT句>”の

773 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則で規定する既定値を設定することによって形成される候補置換行NMRと対にされ

る。MRは,F中でのNMRによる置換えのために識別される。(MR,NMR) 対の集合は,F

に対する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iv) URがRESTRICTを指定し,かつ,一致行が存在するならば,例外条件:整合性制約違反 − 

RESTRICT違反 が引き起こされる。 

注記510 URがNO ACTIONを指定するならば,参照更新動作は,実行されない。 

b) MがPARTIALを指定するならば,次による。 

場合: 

i) 

URがCASCADEを指定するならば,次による。 

1) 更新された被参照列C2に対応するF中の参照列C1にナルでない値を含むF中の各一意一

致行UMRは,UMRを写して,その写し中のC1に,C2の新しい値Vを設定することによっ

て形成される候補置換行NUMRと対にされる。ただし,最も内側の同じSQL文の同じ実行

中に,元々一致行として一意一致行をもっていた被参照表中の全ての更新された行中で,C2

中の値が全てVとは異ならない値に更新されたものとする。最後のこの条件を満たさないな

らば,例外条件:被トリガデータ変更違反 (triggered data change violation) が引き起こされる。

UMRは,F中でのNUMRによる置換えのために識別される。(UMR,NUMR) 対の集合は,

Fに対する置換え集合とする。 

注記511 

“異なる (distinct)”の定義が当てにする“8.2 <比較述語>”の規則のために,C2

中の値は,同一ではないが,異ならない値に更新されるかもしれない。これらの

異ならない値のどれが波及 (cascade) 操作のために用いられるかは,処理系依存

である。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

ii) URがSET NULLを指定するならば,次による。 

1) F中の参照列にナルでない値を含むF中の各一意一致行UMRは,UMRを写して,その写し

中の参照列にナル値を設定することによって形成される候補置換行NUMRと対にされる。

UMRは,F中でのNUMRによる置換えのために識別される。(UMR,NUMR) 対の集合は,

Fに対する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

iii) URがSET DEFAULTを指定するならば,次による。 

1) 更新された被参照列に対応するF中の参照列にナルでない値を含むF中の各一意一致行

UMRは,UMRを写して,その写し中のその参照列に,“11.5 <DEFAULT句>”の一般規則で

規定する既定値を設定することによって形成される候補置換行NUMRと対にされる。UMR

は,F中でのNUMRによる置換えのために識別される。(UMR,NUMR) 対の集合は,Fに

対する置換え集合とする。 

2) Fは,参照列に関して下位表ありでの置換え処理のために識別される。 

3) “15.13 実表中の行の置換えの効果”の一般規則を適用する。 

774 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iv) URがRESTRICTを指定し,かつ,一意一致行が存在するならば,例外条件:整合性制約違反 

− RESTRICT違反 が引き起こされる。 

注記512 URがNO ACTIONを指定するならば,参照更新動作は,実行されない。 

11) 実行している最も内側のSQL文をISSとする。 

12) ISSの実行中のこれらの一般規則の評価によって,いずれかの格納場所がISSの実行中に既に更新

された値とは異なる値に,その格納場所を更新することになるならば,例外条件:被トリガデータ

変更違反 が引き起こされる。 

13) ISSの実行中のこれらの一般規則の評価によって,行中での置換えのために識別される格納場所を

含む行を削除することになるならば,例外条件:被トリガデータ変更違反 が引き起こされる。 

14) ISSの実行中のこれらの一般規則の評価によって,開いているカーソルCRを識別する<DELETE文:

位置付け>・<動的DELETE文:位置付け>・<準備可能動的DELETE文:位置付け>によって削除さ

れた行若しくは開いているカーソルCRを識別する<UPDATE文:位置付け>・<動的UPDATE文:

位置付け>・<準備可能動的UPDATE文:位置付け>によって更新された行の,更新を試みることに

なるか,又はそのような行の削除のためのマーク付けを試みることになるかのいずれかならば,終

了条件:警告 (warning) − カーソル操作衝突 (cursor operation conflict) が引き起こされる。 

15) 現行SQLセション文脈の当該表制限フラグに真 が設定されていて,かつ,ISSの実行中のこれら

の一般規則の評価によって,現行SQLセション文脈に含まれる制限当該表名リストに名前が含まれ

る表で,いずれかの行の挿入,いずれかの行の更新又はいずれかの行の削除を行うことになるなら

ば,例外条件:被トリガデータ変更違反 − データ変更差分表によって修正される表を修正 (modify 

table modified by data change delta table) が引き起こされる。 

16) 削除のためにマーク付けされたどの行RMDに対しても,RMDの全ての下位行及びRMDの全ての

上位行が削除のためにマーク付けされる。 

17) いずれかの表が,この細分箇条の先行する一般規則の評価中に作成又は修正されたSSC中の状態変

更の当該表ならば,強制の参照制約であるどの参照制約記述子RC2に対しても,RC2を

CONSTRAINTとして,この細分箇条の一般規則を適用する。 

注記513 したがって,これらの規則は,遷移がこれ以上生成されなくなるまで,繰り返して評価

される。 

適合性規則 

なし。 

15.18 

AFTERトリガの実行 

細分箇条署名 

“AFTERトリガの実行” [構文規則] ( 

パラメタ: “SET OF STATE CHANGES” 

“AFTERトリガの実行” [一般規則] () 

機能 

AFTERトリガの実行 (Execution of AFTER triggers) は,AFTERトリガの実行を定義する。 

構文規則 

1) この細分箇条の構文規則の適用では,SET OF STATE CHANGESをSSCとする。 

2) SSC中の状態変更によって活性化されるAFTERトリガの集合をATとする。 

775 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記514 トリガの活性化は,“4.39 トリガ”で定義している。 

3) AT中のトリガの個数をNTとし,それらの実行順序に従って順序付けられたそのようなk番目のト

リガをTRkとする。TRkを活性化したSSC中の状態変更をSCkとする。 

注記515 トリガの順序付けは,“4.39 トリガ”で定義している。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則は,記号引数なしで適用する。 

2) 1からNTまでの範囲のkに対して,TRkをTRIGGERとして,SCkをSTATE CHANGEとして,

“15.19 トリガの実行”の一般規則を適用する。 

適合性規則 

なし。 

15.19 

トリガの実行 

細分箇条署名 

 “トリガの実行” [一般規則] ( 

パラメタ: “TRIGGER”, 

パラメタ: “STATE CHANGE” 

機能 

トリガの実行 (Execution of triggers) は,トリガの実行を定義する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,TRIGGERをTRとし,STATE CHANGEをSCとする。 

2) TRのトリガ記述子に含まれる被トリガ動作をTAとする。TAに含まれる<被トリガSQL文>をTSS

とする。SCのトリガ事象をTEとする。SC中の遷移の集合をSTとする。 

3) TRは,次のとおりに実行される。 

場合: 

a) TRが行レベルトリガならば,TRが実行されるとみなされないST中の各遷移Tに対して,TAが

呼び出され,TRは,Tに対して実行されるとみなされる。ST中の遷移が取られる順序は,処理

系依存とする。 

b) TRがSCに対して実行されるとみなされないならば,TAが1回呼び出され,TRは,SCに対し

て実行されるとみなされる。 

4) TAが呼び出されるとき,次による。 

a) 場合: 

i) 

TEがDELETEならば,TAの呼出しのための遷移旧表は,STとする。TRが行レベルトリガな

らば,TAの呼出しのための遷移旧変数の値は,Tとする。 

ii) TEがINSERTならば,TAの呼出しのための遷移新表は,STとする。TRが行レベルトリガな

776 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

らば,TAの呼出しのための遷移新変数の値は,Tとする。 

iii) TEがUPDATEならば,TAの呼出しのための遷移旧表は,ST中の遷移の古い行を取ることに

よって形成されるマルチ集合とし,TAの呼出しのための遷移新表は,ST中の遷移の新しい行

を取ることによって形成されるマルチ集合とする。TRが行レベルトリガならば,TAの呼出し

のための遷移旧変数の値は,Tの古い行とし,TAの呼出しのための遷移新変数の値は,Tの新

しい行とする。 

b) 場合: 

i) 

TAが<探索条件> TASCを含み,かつ,TASCの評価の結果が真 (True) ならば,TSSが実行さ

れる。 

ii) TAが<探索条件>を含まないならば,TSSが実行される。 

5) TSSが実行されるとき,次による。 

a) “PUSH”をOPERATIONとして,診断領域スタックをSTACKとして,“23.2 診断領域スタック

に対する押込み及び取出し”の一般規則を適用する。 

b) TRのトリガ記述子を含むスキーマの所有者の認可識別子が認可スタックに押し込まれる。 

c) 新しい保存点水準が確立される。 

d) TSSに単純に含まれる<SQL手続文>の個数をNとする。1からNまでの範囲のiに対して,次に

よる。 

i) 

そのようなi番目の<SQL手続文>をSiとする。 

ii) SiをEXECUTING STATEMENTとして,“13.4 <SQL手続文>”の一般規則を適用する。 

e) TSSに単純に含まれる<SQL手続文>が,TSS中に指定される順序で実効的に実行される。 

f) TSSに単純に含まれる<SQL手続文>の実行の完了前に,SQLスキーマ文,動的SQL文又はSQL

セション文の実行を試みるならば,例外条件:トリガ実行中に禁止されている文が現れた 

(prohibited statement encountered during trigger execution) が引き起こされる。 

g) TRがBEFOREトリガで,かつ,TSSに単純に含まれる<SQL手続文>の実行の完了前に,SQLデ

ータを潜在的に修正するSQL文の実行を試みるならば,例外条件:トリガ実行中に禁止されてい

る文が現れた が引き起こされる。 

h) TRがAFTERトリガで,現行SQLセション文脈の当該表制限フラグに真 が設定されていて,か

つ,TRの実行中に,現行SQLセション文脈に含まれる制限当該表名リストに名前が含まれる表

で,行の挿入,行の更新又は行の削除を試みるならば,例外条件:トリガ実行中に禁止されてい

る文が現れた − データ変更差分表によって修正される表を修正 (modify table modified by data 

change delta table) が引き起こされる。 

i) 

現行保存点水準が破壊される。 

注記516 保存点水準の破壊は,その水準で確立されている既存の全ての保存点を破壊する。 

j) 

“POP”をOPERATIONとして,RSC中の診断領域スタックをSTACKとして,“23.2 診断領域ス

タックに対する押込み及び取出し”の一般規則を適用する。 

k) 認可スタック中の最上部セルが取り除かれる。 

l) 

TSSの実行が成功でないならば,例外条件:被トリガ動作例外 (triggered action exception) が引き

起こされる。TSSを失敗させた例外条件が引き起こされる。 

注記517 TSSを失敗させた例外条件の引起しは,TSSの実行に先立って押し込まれた診断領域

に例外条件を入れる。 

777 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

なし。 

778 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

16 制御文 

この箇条は,ISO/IEC 9075-4の“14 制御文”によって修正される。 

16.1 <CALL文> 

この細分箇条は,ISO/IEC 9075-10の“11.22 <CALL文>”によって修正される。 

機能 

<CALL文> (<call statement>) は,SQL呼出しルーチンを呼び出す。 

形式 

<CALL文> ::= 

  CALL <ルーチン呼出し> 

構文規則 

1) <CALL文>に直に含まれる<ルーチン呼出し>をRIとする。 

2) RIをROUTINE INVOCATIONとして,“10.4 <ルーチン呼出し>”の構文規則を呼び出し,当該ルー

チンSR及び静的SQL引数リストSALを生成する。 

3) SRは,SQL呼出し手続でなければならない。 

アクセス規則 

なし。 

一般規則 

1) SRをROUTINE INVOCATIONとして,SALをSTATIC SQL ARG LISTとして,“10.4 <ルーチン呼

出し>”の一般規則を呼び出す。 

適合性規則 

なし。 

16.2 <RETURN文> 

機能 

<RETURN文> (<return statement>) は,SQL呼出し関数であるSQLルーチンから値を戻す。 

形式 

<RETURN文> ::= 

  RETURN <戻り値> 

<戻り値> ::= 

  <値式> 

| NULL 

構文規則 

1) <RETURN文>は,<SQL呼出し関数> Fの<ルーチン本体>に単純に含まれるSQLルーチン本体に含

まれなければならない。Fの<RETURNS句>の<戻りデータ型>をRDTとする。 

2) <戻り値>の<ナル指定>は,次の<値式>と等価とする。 

CAST (NULL AS RDT) 

3) <RETURN文>に直に含まれる<戻り値>の<値式>をVEとする。 

4) データ型RDTの項目をTARGETとして,VEの値をVALUEとして,“9.2 格納代入”の構文規則を

適用する。 

アクセス規則 

なし。 

779 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) VEの値は,FのSQLルーチン本体の実行の戻り値 (returned value) とする。 

2) FのSQLルーチン本体の実行が直ちに終了する。 

適合性規則 

なし。 

17 トランザクション管理 

17.1 <START TRANSACTION文> 

機能 

<START TRANSACTION文> (<start transaction statement>) は,SQLトランザクションを開始し,それの

特性を設定する。 

形式 

<START TRANSACTION文> ::= 

  START TRANSACTION [ <トランザクション特性> ] 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) SQLトランザクションが現在動作中ならば,例外条件:トランザクション状態が正しくない (invalid 

transaction state) − SQLトランザクションが動作中 (active SQL-transaction) が引き起こされる。 

2) 場合: 

a) <トランザクション特性>が省略されるならば,次の指定をTCとする。 

ECAM ISOLATION LEVEL ECIL DIAGNOSTICS SIZE ECNC 

ここで,ECAM,ECIL及びECNCは,それぞれ,現行SQLセションの持続トランザクション特

性のトランザクションアクセスモード,トランザクション隔離性水準及び条件数とする。 

b) そうでなければ,<トランザクション特性>をTCとする。 

3) <条件数>が指定され,1未満ならば,例外条件:条件数が正しくない (invalid condition number) が引

き起こされる。 

4) 次の<SET TRANSACTION文>が実効的に実行される。 

SET TRANSACTION TC 

注記518 <START TRANSACTION文>によって開始されたトランザクションの特性は,先行する

どの<SET TRANSACTION文>によって指定された特性にもかかわらず,ここで指定され

たとおりである。すなわち,一つ以上の特性が<START TRANSACTION文>によって省略

されたとしても,この細分箇条及び“17.3 <トランザクション特性>”の構文規則で規定

する既定値が実効的であり,同じSQLセション中の(先行する)どの<SET 

TRANSACTION文>による影響も受けない。 

5) SQLトランザクションが開始される。 

適合性規則 

1) 機能T241“START TRANSACTION文”なしでは,適合するSQL言語は,<START TRANSACTION

780 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

文>を含んではならない。 

17.2 <SET TRANSACTION文> 

この細分箇条は,ISO/IEC 9075-10の“11.21 <SET TRANSACTION文>”によって修正される。 

機能 

<SET TRANSACTION文> (<set transaction statement>) は,SQLエージェントに対する次のSQLトランザ

クションの特性を設定する。 

注記519 この文は,次のSQLトランザクションに続くどのSQLトランザクションにも,どんな効

果も与えない。 

形式 

<SET TRANSACTION文> ::= 

  SET [ LOCAL ] TRANSACTION <トランザクション特性> 

構文規則 

1) LOCALが指定されるならば,<トランザクション特性>は,<条件数>を含んではならない。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) LOCALを指定しない<SET TRANSACTION文>が実行されるならば,次による。 

場合: 

i) 

SQLトランザクションが現在動作中ならば,例外条件:トランザクション状態が正しくない 

(invalid transaction state) − SQLトランザクションが動作中 (active SQL-transaction) が引き起

こされる。 

ii) SQLトランザクションが現在動作中でないとき,前のSQLトランザクションから開いたまま

になっている保持可能カーソルが存在し,かつ,前のSQLトランザクションのトランザクショ

ン隔離性水準が<隔離性水準>によって決定されるトランザクション隔離性水準と同じでない

ならば,例外条件:トランザクション状態が正しくない − 保持されたカーソルには同じ隔離

性水準が必要 (held cursor requires same isolation level) が引き起こされる。 

b) LOCALを指定する<SET TRANSACTION文>が実行されるならば,次による。 

i) 

二つ以上のSQLサーバに影響を与えるSQLトランザクションをSQL処理系が提供しないなら

ば,例外条件:サポートされていない機能 (feature not supported) − 複数サーバトランザクシ

ョン (multiple server transactions) が引き起こされる。 

ii) 現在動作中のSQLトランザクションが存在しないならば,例外条件:トランザクション状態が

正しくない − 分岐トランザクションに対して動作中のSQLトランザクションがない (no 

active SQL-transaction for branch transaction) が引き起こされる。 

iii) 動作中のSQLトランザクションが存在し,かつ,動作中のSQLトランザクションの文脈中の

現行SQLコネクションでトランザクション開始SQL文が既に実行されていたならば,例外条

件:トランザクション状態が正しくない − 分岐トランザクションが既に動作中 (branch 

transaction already active) が引き起こされる。 

iv) SQLトランザクションのトランザクションアクセスモードが読込み専用で,かつ,<トランザ

クションアクセスモード>がREAD WRITEを指定するならば,例外条件:トランザクション状

781 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

態が正しくない − 分岐トランザクションに対してアクセスモードが適切でない 

(inappropriate access mode for branch transaction) が引き起こされる。 

v) SQLトランザクションのトランザクション隔離性水準がSERIALIZABLEで,かつ,<隔離性水

準>がSERIALIZABLE以外のものを指定するならば,例外条件:トランザクション状態が正し

くない − 分岐トランザクションに対して隔離性水準が適切でない (inappropriate isolation 

level for branch transaction) が引き起こされる。 

vi) SQLトランザクションのトランザクション隔離性水準がREPEATABLE READで,かつ,<隔離

性水準>がREPEATABLE READ又はSERIALIZABLE以外のものを指定するならば,例外条件:

トランザクション状態が正しくない − 分岐トランザクションに対して隔離性水準が適切で

ない が引き起こされる。 

vii) SQLトランザクションのトランザクション隔離性水準がREAD COMMITTEDで,かつ,<隔離

性水準>がREAD UNCOMMITTEDを指定するならば,例外条件:トランザクション状態が正し

くない − 分岐トランザクションに対して隔離性水準が適切でない が引き起こされる。 

注記520 SQLトランザクションのトランザクション隔離性水準がREAD UNCOMMITTEDな

らば,どの<隔離性水準>も許される。 

2) <条件数>が指定され,1未満ならば,例外条件:条件数が正しくない (invalid condition number) が引

き起こされる。 

3) <条件数>が指定され,<条件数> IDMVNCに対する処理系依存の最大値を超えるならば,暗に想定

される<条件数>は,IDMVNCとし,終了条件:警告 (warning) − 条件数が正しくない (invalid 

number of conditions) が引き起こされる。 

4) <トランザクション特性>をTCとする。現行SQLセション文脈をCSCとする。 

5) 陽に指定されるか又は暗に想定される<トランザクションアクセスモード>がREAD ONLYを含むな

らば,CSCの現行トランザクションアクセスモードには,読込み専用 (read-only) が設定される。そ

うでなければ,CSCの現行トランザクションアクセスモードには,読み書き可能 (read-write) が設

定される。 

6) CSCの現行トランザクション隔離性水準には,表8“SQLトランザクション隔離性水準及び三つの

現象”で規定するとおりに,TCに含まれる陽に指定されるか又は暗に想定される<隔離性水準>が

発生させない現象のどれも発生させない処理系定義のトランザクション隔離性水準が設定される。 

7) CSCの現行条件領域限界には,TCに含まれる陽に指定されるか又は暗に想定される<条件数>が設

定される。 

適合性規則 

1) 機能T251“SET TRANSACTION文:LOCAL選択肢”なしでは,適合するSQL言語は,LOCALを

直に含む<SET TRANSACTION文>を含んではならない。 

17.3 <トランザクション特性> 

機能 

<トランザクション特性> (<transaction characteristics>) は,トランザクションの特性を指定する。 

形式 

<トランザクション特性> ::= 

  [ <トランザクションモード> [ { <コンマ> <トランザクションモード> }... ] ] 

<トランザクションモード> ::= 

782 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <隔離性水準指定> 

| <トランザクションアクセスモード> 

| <診断領域サイズ> 

<トランザクションアクセスモード> ::= 

  READ ONLY 

| READ WRITE 

<隔離性水準指定> ::= 

  ISOLATION LEVEL <隔離性水準> 

<隔離性水準> ::= 

  READ UNCOMMITTED 

| READ COMMITTED 

| REPEATABLE READ 

| SERIALIZABLE 

<診断領域サイズ> ::= 

  DIAGNOSTICS SIZE <条件数> 

<条件数> ::= 

  <単純値指定> 

構文規則 

1) <トランザクション特性>をTCとする。 

2) TCは,高々一つの<隔離性水準指定>,高々一つの<トランザクションアクセスモード>及び高々一

つの<診断領域サイズ>を含まなければならない。 

3) TCが<隔離性水準指定>を含まないならば,ISOLATION LEVEL SERIALIZABLEが暗に想定される。 

4) <トランザクションアクセスモード>がREAD WRITEならば,<隔離性水準>は,READ 

UNCOMMITTEDであってはならない。 

5) TCが<トランザクションアクセスモード>を含まないならば,次による。 

場合: 

a) <隔離性水準指定>がREAD UNCOMMITTEDを含むならば,READ ONLYが暗に想定される。 

b) そうでなければ,READ WRITEが暗に想定される。 

6) <条件数>の宣言型は,位取り0の真数でなければならない。 

7) TCが<診断領域サイズ>を含まないならば,DIAGNOSTICS SIZE nが暗に想定される。ここで,nは,

1以上の処理系依存の値とする。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

1) 機能F111“SERIALIZABLE以外の隔離性水準”なしでは,適合するSQL言語は,SERIALIZABLE

以外の<隔離性水準>を含む<隔離性水準指定>を含んではならない。 

2) 機能F121“基本診断管理”なしでは,適合するSQL言語は,<診断領域サイズ>を含んではならな

い。 

783 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

17.4 <SET CONSTRAINTS MODE文> 

機能 

<SET CONSTRAINTS MODE文> (<set constraints mode statement>) は,SQLトランザクションが現在動作

中ならば,現行SQLセション中のそのSQLトランザクションのための制約モードを設定する。SQLトラ

ンザクションが現在動作中でないならば,SQLエージェントに対する現行SQLセション中の次のSQLト

ランザクションのための制約モードを設定する。 

注記521 この文は,このSQLトランザクションに続くどのSQLトランザクションにも,どんな効

果も与えない。 

形式 

<SET CONSTRAINTS MODE文> ::= 

  SET CONSTRAINTS <制約名リスト> { DEFERRED | IMMEDIATE } 

<制約名リスト> ::= 

  ALL 

| <制約名> [ { <コンマ> <制約名> }... ] 

構文規則 

1) <制約名>が指定されるならば,それは,制約を識別しなければならない。 

2) <制約名>によって識別される制約は,遅延可能でなければならない。 

アクセス規則 

なし。 

一般規則 

1) 現行SQLセション文脈をCSCとする。 

2) IMMEDIATEが指定されるならば,次による。 

場合: 

a) ALLが指定されるならば,遅延可能な全ての制約のCSC中の制約モードに,即時 (immediate) が

設定される。 

b) そうでなければ,<制約名リスト>中の<制約名>によって識別される制約に対するCSC中の制約

モードに,即時が設定される。 

3) DEFERREDが指定されるならば,次による。 

場合: 

a) ALLが指定されるならば,遅延可能な全ての制約のCSC中の制約モードに,遅延 (deferred) が設

定される。 

b) そうでなければ,<制約名リスト>中の<制約名>によって識別される制約に対するCSC中の制約

モードに,遅延が設定される。 

適合性規則 

1) 機能F721“遅延可能制約”なしでは,適合するSQL言語は,<SET CONSTRAINTS MODE文>を含

んではならない。 

17.5 <SAVEPOINT文> 

この細分箇条は,ISO/IEC 9075-10の“11.17 <SAVEPOINT文>”によって修正される。 

機能 

<SAVEPOINT文> (<savepoint statement>) は,保存点を確立する。 

784 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<SAVEPOINT文> ::= 

  SAVEPOINT <保存点指定子> 

<保存点指定子> ::= 

  <保存点名> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <保存点名>をSとする。 

2) 現行保存点水準内で確立された既存の保存点をSが識別するならば,その保存点は,破壊される。 

3) 現行SQLトランザクション内に今存在する保存点の個数が,SQLトランザクションごとの保存点

の処理系定義の最大個数と等しいならば,例外条件:保存点例外 (savepoint exception) − 多すぎる 

(too many) が引き起こされる。 

4) 現行保存点水準中で,かつ,現行トランザクション中の現在点で保存点が確立される。その保存点

の識別子としてSが割り当てられる。 

適合性規則 

1) 機能T271“保存点”なしでは,適合するSQL言語は,<SAVEPOINT文>を含んではならない。 

17.6 <RELEASE SAVEPOINT文> 

この細分箇条は,ISO/IEC 9075-10の“11.18 <RELEASE SAVEPOINT文>”によって修正される。 

機能 

<RELEASE SAVEPOINT文> (<release savepoint statement>) は,保存点を破壊する。 

形式 

<RELEASE SAVEPOINT文> ::= 

  RELEASE SAVEPOINT <保存点指定子> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <保存点名>をSとする。 

2) 現行保存点水準中で確立された保存点をSが識別しないならば,例外条件:保存点例外 (savepoint 

exception) − 指定が正しくない (invalid specification) が引き起こされる。 

3) Sによって識別される保存点,及びSの確立の後で現行保存点水準中で確立された全ての保存点が

破壊される。 

適合性規則 

1) 機能T271“保存点”なしでは,適合するSQL言語は,<RELEASE SAVEPOINT文>を含んではなら

ない。 

17.7 <COMMIT文> 

785 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

この細分箇条は,ISO/IEC 9075-10の“11.19 <COMMIT文>”によって修正される。 

機能 

<COMMIT文> (<commit statement>) は,コミットで現行SQLトランザクションを終了させる。 

形式 

<COMMIT文> ::= 

  COMMIT [ WORK ] [ AND [ NO ] CHAIN ] 

構文規則 

1) AND CHAINもAND NO CHAINも指定されないならば,AND NO CHAINが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) 現行SQLトランザクションが,SQLエージェント以外のエージェントによって制御される全体ト

ランザクションの部分ならば,例外条件:トランザクション終了が正しくない (invalid transaction 

termination) が引き起こされる。 

2) 基本単位の実行文脈が動作中ならば,例外条件:トランザクション終了が正しくない が引き起こさ

れる。 

3) 現行SQLセションの文脈のスタック中の保持可能カーソルでないどの開いているカーソルCRに対

しても,CRをCURSORとして,DESTROYをDISPOSITIONとして,“15.4 カーソルを閉じること

の効果”の一般規則を適用する。 

4) 現行SQLトランザクションに関連付けられたSQLクライアントモジュール中の,ON COMMIT 

DELETE選択肢を指定し,かつ,現行SQLトランザクションによって更新されたどの一時表に対し

ても,DELETE FROM Tを指定する<DELETE文:探索>の実行が<COMMIT文>の実行に実効的に

先行する。ここで,Tは,その一時表の<表名>とする。 

5) 動作中の各SQLコネクションに対してSET CONSTRAINTS ALL IMMEDIATE文が実行されたかの

ように,“17.4 <SET CONSTRAINTS MODE文>”の一般規則で規定する効果が生じる。 

6) 場合: 

a) いずれかの強制の制約が満たされないならば,現行SQLトランザクションによってなされたSQL

データ又はスキーマに対するどの変更も取り消され,例外条件:トランザクションロールバック 

(transaction rollback) − 整合性制約違反 (integrity constraint violation) が引き起こされる。 

b) SQLトランザクションのコミットを妨げる他のいずれかの誤りが発生するならば,現行SQLト

ランザクションによってなされたSQLデータ又はスキーマに対するどの変更も取り消され,処理

系定義のサブクラスコードをもつ例外条件:トランザクションロールバック が引き起こされる。 

c) そうでなければ,現行SQLトランザクションによってなされたSQLデータ又はスキーマに対す

るどの変更も,全ての並行及び後続SQLトランザクションによって知られることが適格とされ

る。 

7) 全ての保存点水準が破壊され,新しい保存点水準が確立される。 

注記522 保存点水準の破壊は,その水準で確立されている既存の全ての保存点を破壊する。 

8) 保持可能でない位置付け子の有効な,どの値も,無効とマーク付けされる。 

9) 現行SQLトランザクションを終了させる。 

10) 場合: 

786 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) <COMMIT文>がAND CHAINを含むならば,SQLトランザクションを開始させる。SQLトラン

ザクションのどの分岐トランザクションも,終了したばかりのSQLトランザクションの対応する

分岐と同じトランザクションアクセスモード,トランザクション隔離性水準及び診断領域限界で

開始させる。 

b) そうでなければ,次による。 

i) 

現行SQLセション文脈の現行トランザクションアクセスモード,現行トランザクション隔離性

水準及び現行条件領域限界には,それぞれ,現行SQLセションの持続トランザクション特性の

トランザクションアクセスモード,トランザクション隔離性水準及び条件領域限界が設定され

る。 

ii) どの制約Cに対しても,現行SQLセション文脈中のCの制約モードには,Cの制約記述子に

含まれる初期制約モードが設定される。 

11) 保持されたどのカーソルの被準備文も,存在したままとする。他の被準備文が解放されるかどうか

は,処理系定義とする。 

適合性規則 

1) 機能T261“連鎖トランザクション”なしでは,適合するSQL言語は,CHAINを直に含む<COMMIT

文>を含んではならない。 

17.8 <ROLLBACK文> 

この細分箇条は,ISO/IEC 9075-10の“11.20 <ROLLBACK文>”によって修正される。 

機能 

<ROLLBACK文> (<rollback statement>) は,ロールバックで現行SQLトランザクションを終了させるか,

又は保存点の確立以後に,SQLデータ及び/若しくはスキーマに影響を与えた全ての動作を取り消す。 

形式 

<ROLLBACK文> ::= 

  ROLLBACK [ WORK ] [ AND [ NO ] CHAIN ] [ <SAVEPOINT句> ] 

<SAVEPOINT句> ::= 

  TO SAVEPOINT <保存点指定子> 

構文規則 

1) AND CHAINが指定されるならば,<SAVEPOINT句>を指定してはならない。 

2) AND CHAINもAND NO CHAINも指定されないならば,AND NO CHAINが暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) 現行SQLトランザクションが,SQLエージェント以外のエージェントによって制御される全体ト

ランザクションの部分で,かつ,<ROLLBACK文>が暗に実行されていないならば,例外条件:トラ

ンザクション終了が正しくない (invalid transaction termination) が引き起こされる。 

2) <SAVEPOINT句>が指定されないならば,次による。 

a) 基本単位の実行文脈が動作中ならば,例外条件:トランザクション終了が正しくない が引き起こ

される。 

b) 現行SQLトランザクションによってなされたSQLデータ又はスキーマに対する全ての変更が取

り消される。 

787 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) 全ての保存点水準が破壊され,新しい保存点水準が確立される。 

注記523 保存点水準の破壊は,その水準で確立されている既存の全ての保存点を破壊する。 

d) 有効な,どの位置付け子も,無効とマーク付けされる。 

e) 現行SQLセションの文脈のスタック中の開いているどのカーソルCRに対しても,CRをCURSOR

として,DESTROYをDISPOSITIONとして,“15.4 カーソルを閉じることの効果”の一般規則を

適用する。 

f) 

被準備文が解放されるかどうかは,処理系定義とする。 

g) 現行SQLトランザクションを終了させる。 

h) 場合: 

i) 

<ROLLBACK文>がAND CHAINを含むならば,SQLトランザクションが開始させる。SQLト

ランザクションのどの分岐トランザクションも,終了したばかりのSQLトランザクションの対

応する分岐と同じトランザクションアクセスモード,トランザクション隔離性水準及び診断領

域限界で開始させる。 

ii) そうでなければ,次による。 

1) 現行SQLセション文脈の現行トランザクションアクセスモード,現行トランザクション隔離

性水準及び現行条件領域限界には,それぞれ,現行SQLセションの持続トランザクション特

性のトランザクションアクセスモード,トランザクション隔離性水準及び条件領域限界が設

定される。 

2) どの制約Cに対しても,現行SQLセション文脈中のCの制約モードには,Cの制約記述子

に含まれる初期制約モードが設定される。 

3) <SAVEPOINT句>が指定されるならば,次による。 

a) <保存点名>をSとする。 

b) 現行保存点水準内で確立された保存点をSが指定しないならば,例外条件:保存点例外 (savepoint 

exception) − 指定が正しくない (invalid specification) が引き起こされる。 

c) 基本単位の実行文脈が動作中で,かつ,最も新しい基本単位の実行文脈の開始前に確立された保

存点をSが指定するならば,例外条件:保存点例外 − 指定が正しくない が引き起こされる。 

d) Sの確立の後で現行SQLトランザクションによってなされたSQLデータ又はスキーマに対する

全ての変更が取り消される。 

e) Sの確立の後で現行SQLトランザクションによって確立された全ての保存点が破壊される。 

注記524 保存点水準の破壊は,その水準で確立されている既存の全ての保存点を破壊する。 

f) Sの確立の後で現行SQLトランザクション中で生成された有効な,どの位置付け子も,無効とマ

ーク付けされる。 

g) 現行SQLセションの文脈のスタック中の保持可能カーソルでない開いているどのカーソルに対

しても,CRをCURSORとして,DESTROYをDISPOSITIONとして,“15.4 カーソルを閉じるこ

との効果”の一般規則を適用する。 

h) Sの確立前に現行SQLトランザクションによって開かれた,現行SQLセションの文脈のスタッ

ク中の開いているカーソルの状態は,処理系定義とする。 

i) 

Sの確立前に準備された被準備文が解放されるかどうかは,処理系定義とする。 

j) Sの確立の後で準備された被準備文が解放されるかどうかは,処理系定義とする。 

注記525 現行SQLトランザクションは,終了しないし,SQLデータ又はスキーマに関する他の効

788 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

果はない。 

適合性規則 

1) 機能T271“保存点”なしでは,適合するSQL言語は,<SAVEPOINT句>を含んではならない。 

2) 機能T261“連鎖トランザクション”なしでは,適合するSQL言語は,CHAINを直に含む<ROLLBACK

文>を含んではならない。 

18 コネクション管理 

18.1 <CONNECT文> 

機能 

<CONNECT文> (<connect statement>) は,SQLセションを確立する。 

形式 

<CONNECT文> ::= 

  CONNECT TO <コネクション相手> 

<コネクション相手> ::= 

  <SQLサーバ名> [ AS <コネクション名> ] [ USER <コネクション利用者名> ] 

| DEFAULT 

構文規則 

1) <コネクション利用者名>が指定されないならば,SQLコネクションに対する処理系定義の<コネク

ション利用者名>が暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) 現行SQLトランザクションによって実行される最初のトランザクション開始SQL文の後で

<CONNECT文>が実行され,二つ以上のSQLサーバに影響を与えるトランザクションを,SQL処

理系が提供していないならば,例外条件:サポートされていない機能 (feature not supported) − 複

数サーバトランザクション (multiple server transactions) が引き起こされる。 

2) <コネクション利用者名>が指定されるならば,<コネクション利用者名>をSとし,次のTRIM関数

の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

3) <利用者識別子>の形式及び構文規則にVが適合しないならば,例外条件:認可指定が正しくない 

(invalid authorization specification) が引き起こされる。 

4) <CONNECT文>を含む<外部呼出し手続>を含むSQLクライアントモジュールが<モジュール認可識

別子>を指定するならば,<コネクション利用者名>の値に関する他の制限と同じように,<コネクシ

ョン利用者名>がその<モジュール認可識別子>と同一でなければならないかどうかは,処理系定義

とする。そうでなければ,<コネクション利用者名>の値に関する制限は,処理系定義とする。 

5) <コネクション利用者名>の値が処理系定義の制限に適合しないならば,例外条件:認可指定が正し

くない が引き起こされる。 

6) <コネクション名>が指定されたならば,<コネクション名>に直に含まれる<単純値指定>をCVとす

る。DEFAULTも,<コネクション名>も,指定されなかったならば,<SQLサーバ名>をCVとする。

次のTRIM関数の結果をCNとする。 

789 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

TRIM ( BOTH ' ' FROM CV ) 

<識別子>の形式及び構文規則にCNが適合しないならば,例外条件:コネクション名が正しくない 

(invalid connection name) が引き起こされる。 

7) 名前CNをもつSQLコネクションが現行のSQLエージェントによって既に確立されていて,切断

されていないか,又はDEFAULTが指定され,既定SQLコネクションが現行のSQLエージェント

によって既に確立されていて,切断されていないならば,例外条件:コネクション例外 (connection 

exception) − 使用中のコネクション名 (connection name in use) が引き起こされる。 

8) 場合: 

a) DEFAULTが指定されるならば,既定SQLセションが開始され,既定SQLサーバに関連付けられ

る。既定SQLサーバを決定する方法は,処理系定義とする。 

b) そうでなければ,SQLセションが開始され,<SQLサーバ名>によって識別されるSQLサーバに

関連付けられる。適切なSQLサーバを決定するために<SQLサーバ名>を用いる方法は,処理系

定義とする。 

9) <CONNECT文>がSQLセションの開始に成功するならば,次による。 

a) 現行SQLコネクションCC及び現行SQLセションがあるならば,それらは,それぞれ,休眠SQL

コネクション及び休眠SQLセションになる。CCに対するSQLセション文脈は,保存され,開始

されたSQLコネクション上で行われる操作によって,どのような影響も受けない。 

注記526 SQLセション文脈は,“4.38 SQLセション”で定義している。 

b) <CONNECT文>によって開始されたSQLセションは,現行SQLセションになり,そのSQLセシ

ョンに対して確立されたSQLコネクションは,現行SQLコネクションになる。 

c) 現行SQLセションの持続トランザクション特性のトランザクションアクセスモード,トランザク

ション隔離性水準及び条件領域限界は,それぞれ,読み書き可能,SERIALIZABLE,及び1以上

の処理系依存の値とする。 

注記527 <CONNECT文>がSQLセションの開始に失敗するならば,現行SQLコネクション及び

現行SQLセションがあるとき,それらは,変更されないままである。 

10) SQLクライアントがSQLコネクションを確立できないならば,例外条件:コネクション例外 − 

SQLクライアントがSQLコネクションを確立できない (SQL-client unable to establish SQL-connection) 

が引き起こされる。 

11) SQLサーバがSQLコネクションの確立を拒絶するならば,例外条件:コネクション例外 − SQLサ

ーバがSQLコネクションの確立を拒絶した (SQL-server rejected establishment of SQL-connection) が

引き起こされる。 

12) SQLエージェントに関連付けられたどのSQLクライアントモジュール中の<外部呼出し手続>の後

続する実行に対しても,SQLサーバには,<SQLサーバ名>によって識別されるSQLサーバが設定

される。 

13) 現行SQLセションの現行SQLセション文脈は,次のとおりに,初期化される。 

a) 認可スタックには,利用者識別子の<コネクション利用者名>を含む単一のセルが設定される。 

b) 現行トランザクションアクセスモード,現行トランザクション隔離性水準及び現行条件領域限界

には,それぞれ,現行SQLセションの持続トランザクション特性のトランザクションアクセスモ

ード,トランザクション隔離性水準及び条件領域限界が設定される。 

14) 新しい保存点水準が確立される。 

790 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能F771“コネクション管理”なしでは,適合するSQL言語は,<CONNECT文>を含んではなら

ない。 

18.2 <SET CONNECTION文> 

機能 

<SET CONNECTION文> (<set connection statement>) は,利用可能なSQLコネクションから一つのSQL

コネクションを選択する。 

形式 

<SET CONNECTION文> ::= 

  SET CONNECTION <コネクション対象> 

<コネクション対象> ::= 

  DEFAULT 

| <コネクション名> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 現行SQLトランザクションによって実行される最初のトランザクション開始SQL文の後で,<SET 

CONNECTION文>が実行され,二つ以上のSQLサーバに影響を与えるトランザクションを,SQL

処理系が提供していないならば,例外条件:サポートされていない機能 (feature not supported) − 複

数サーバトランザクション (multiple server transactions) が引き起こされる。 

2) 場合: 

a) DEFAULTが指定され,現行のSQLエージェントに対して現行又は休眠である既定SQLコネクシ

ョンが存在しないならば,例外条件:コネクション例外 (connection exception) − コネクションが

存在しない (connection does not exist) が引き起こされる。 

b) そうでなければ,現行のSQLエージェントに対して現行又は休眠であるSQLセションを<コネク

ション名>が識別しないならば,例外条件:コネクション例外 − コネクションが存在しない が

引き起こされる。 

3) <コネクション対象>によって識別されるSQLコネクションを選択できないならば,例外条件:コネ

クション例外 − コネクション失敗 (connection failure) が引き起こされる。 

4) 現行SQLコネクション及び現行SQLセションは,それぞれ,休眠SQLコネクション及び休眠SQL

セションになる。SQLセション文脈は,保存され,選択されたSQLコネクション上で行われる操作

によって,どのような影響も受けない。 

注記528 SQLセション文脈は,“4.38 SQLセション”で定義している。 

5) <コネクション対象>によって識別されるSQLコネクションは,現行SQLコネクションになり,そ

のSQLコネクションに関連付けられたSQLセションは,現行SQLセションになる。SQLコネクシ

ョンが休眠になった時点と同じ状態に,SQLセション文脈が復元される。 

注記529 SQLセション文脈は,“4.38 SQLセション”で定義している。 

6) SQLエージェントに関連付けられたどのSQLクライアントモジュール中の<外部呼出し手続>の後

791 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

続する実行に対しても,SQLサーバには,現行SQLコネクションのSQLサーバが設定される。 

適合性規則 

1) 機能F771“コネクション管理”なしでは,適合するSQL言語は,<SET CONNECTION文>を含んで

はならない。 

18.3 <DISCONNECT文> 

機能 

<DISCONNECT文> (<disconnect statement>) は,SQLコネクションを終了させる。 

形式 

<DISCONNECT文> ::= 

  DISCONNECT <切断対象> 

<切断対象> ::= 

  <コネクション対象> 

| ALL 

| CURRENT 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <コネクション名>が指定され,<コネクション名>が現行のSQLエージェントに対して現行又は休

眠であるSQLコネクションを識別しないならば,例外条件:コネクション例外 (connection exception) 

− コネクションが存在しない (connection does not exist) が引き起こされる。 

2) DEFAULTが指定され,現行のSQLエージェントに対して現行又は休眠である既定SQLコネクショ

ンが存在しないならば,例外条件:コネクション例外 − コネクションが存在しない が引き起こさ

れる。 

3) CURRENTが指定され,現行のSQLエージェントに対して現行SQLコネクションが存在しないな

らば,例外条件:コネクション例外 − コネクションが存在しない が引き起こされる。 

4) 現行SQLコネクションをCとする。 

5) SQLコネクションのリストをLとする。<コネクション名>が指定されるならば,Lは,そのSQLコ

ネクションとする。CURRENTが指定されるならば,Lは,現行SQLコネクションとする。ALLが

指定されるならば,Lは,現行のSQLエージェントに対して現行又は休眠である全てのSQLコネ

クションを,処理系依存の順序で表現するリストとする。DEFAULTが指定されるならば,Lは,既

定SQLコネクションとする。 

6) L中のいずれかのSQLコネクションが動作中ならば,例外条件:トランザクション状態が正しくな

い (invalid transaction state) − SQLトランザクションが動作中 (active SQL-transaction) が引き起こ

される。 

7) L中のどのSQLコネクションC1に対しても,C1によって識別されるSQLセションS1を現行SQL

セションとして扱って,SQLエージェントによる<外部呼出し手続>の最後の呼出しの後で必要とな

る動作の全てが,<ROLLBACK文>又は<COMMIT文>の実行を除いて,実行される。C1は,切断処

理中に引き起こされるかもしれない例外条件にかかわらず,終了する。 

792 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記530 SQLエージェントによる<外部呼出し手続>の最後の呼出しの後に実行される動作に関

しては,“13.1 <SQLクライアントモジュール定義>”の一般規則参照。 

8) <DISCONNECT文>の実行中に誤りが検知されるならば,終了条件:警告 (warning) − 切断誤り 

(disconnect error) が引き起こされる。 

9) CがLに含まれるならば,<DISCONNECT文>の実行に続く現行SQLコネクションは,存在しない。

そうでなければ,Cは,現行SQLコネクションのままとする。 

適合性規則 

1) 機能F771“コネクション管理”なしでは,適合するSQL言語は,<DISCONNECT文>を含んではな

らない。 

19 セション管理 

この箇条は,ISO/IEC 9075-9の“16 セション管理”によって修正される。 

この箇条は,ISO/IEC 9075-14の“16 セション管理”によって修正される。 

19.1 <SET SESSION CHARACTERISTICS文> 

機能 

<SET SESSION CHARACTERISTICS文> (<set session characteristics statement>) は,現行SQLセションの

一つ以上の特性を設定する。 

形式 

<SET SESSION CHARACTERISTICS文> ::= 

  SET SESSION CHARACTERISTICS AS <セション特性リスト> 

<セション特性リスト> ::= 

  <セション特性> [ { <コンマ> <セション特性> }... ] 

<セション特性> ::= 

  <セショントランザクション特性> 

<セショントランザクション特性> ::= 

  TRANSACTION <トランザクションモード> [ { <コンマ> <トランザクションモード> }... ] 

構文規則 

1) <セショントランザクション特性>は,高々一つの<隔離性水準指定>,高々一つの<トランザクショ

ンアクセスモード>及び高々一つの<診断領域サイズ>を含まなければならない。 

アクセス規則 

なし。 

一般規則 

1) <セショントランザクション特性>をSCLとする。現行SQLセションの持続セション特性をESCと

する。 

2) SCLが<隔離性水準指定> ILを含むならば,ESCのトランザクション隔離性水準には,ILに含まれ

る<隔離性水準>が設定される。 

3) SCLが<トランザクションアクセスモード> AMを含むならば,ESCのトランザクションアクセスモ

ードには,AMがREAD ONLYを含むか又はREAD WRITEを含むかに従って,それぞれ,読込み専

用又は読み書き可能が設定される。 

4) SCLが<診断領域サイズ> DSを含むならば,ESCの条件領域限界には,DSに含まれる<条件数>が

793 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

設定される。 

適合性規則 

1) 機能F761“セション管理”なしでは,適合するSQL言語は,<SET SESSION CHARACTERISTICS

文>を含んではならない。 

19.2 <セション利用者識別子設定文> 

機能 

<セション利用者識別子設定文> (<set session user identifier statement>) は,現行SQLセション文脈のSQL

セション利用者識別子及び現行利用者識別子を設定する。 

形式 

<セション利用者識別子設定文> ::= 

  SET SESSION AUTHORIZATION <値指定> 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <セション利用者識別子設定文>が実行され,SQLトランザクションが現在動作中ならば,例外条件:

トランザクション状態が正しくない (invalid transaction state) − SQLトランザクションが動作中 

(active SQL-transaction) が引き起こされる。 

2) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

3) <認可識別子>の形式及び構文規則にVが適合しないならば,例外条件:認可指定が正しくない 

(invalid authorization specification) が引き起こされる。 

4) Vが,現行SQLセション文脈のSQLセション利用者識別子の現在の値と等しくないならば,Vに

対して許される値に関する制限は,処理系定義とする。 

5) 利用者識別子にVを設定することを,現行利用者識別子及び現行役割名が制限されているならば,

例外条件:認可指定が正しくない が引き起こされる。 

6) 現行SQLセション文脈のSQLセション利用者識別子には,Vが設定される。 

7) 現行利用者識別子には,Vが設定される。 

8) 現行役割名は,取り除かれる。 

注記531 現行役割名は,SQLセション役割名でもある。 

適合性規則 

1) 機能F321“利用者認可”なしでは,適合するSQL言語は,<セション利用者識別子設定文>を含ん

ではならない。 

19.3 <SET ROLE文> 

機能 

<SET ROLE文> (<set role statement>) は,現行SQLセション文脈のSQLセション役割名及び現行役割名

を設定する。 

形式 

<SET ROLE文> ::= 

794 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  SET ROLE <役割指定> 

<役割指定> ::= 

  <値指定> 

| NONE 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <SET ROLE文>が実行され,SQLトランザクションが現在動作中ならば,例外条件:トランザクシ

ョン状態が正しくない (invalid transaction state) − SQLトランザクションが動作中 (active SQL-

transaction) が引き起こされる。 

2) 現行利用者識別子が存在しないならば,例外条件:役割指定が正しくない (invalid role specification) 

が引き起こされる。 

3) <役割指定>が<値指定>を含むならば,次による。 

a) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

b) <役割名>の形式及び構文規則にVが適合しないならば,例外条件:役割指定が正しくない が引

き起こされる。 

c) Vによって識別される役割が現行利用者識別子又はPUBLICのいずれかに付与されたことを示す

役割認可記述子が存在しないならば,例外条件:役割指定が正しくない が引き起こされる。 

d) SQLセション役割名及び現行役割名には,Vが設定される。 

4) NONEが指定されるならば,現行役割名が取り除かれる。 

適合性規則 

1) 機能T331“基本役割”なしでは,適合するSQL言語は,<SET ROLE文>を含んではならない。 

19.4 <地方時刻帯設定文> 

機能 

<地方時刻帯設定文> (<set local time zone statement>) は,現行SQLセションに対する現行既定時刻帯時

差を設定する。 

形式 

<地方時刻帯設定文> ::= 

  SET TIME ZONE <時刻帯値設定> 

<時刻帯値設定> ::= 

  <時間隔値式> 

| LOCAL 

構文規則 

1) <時刻帯値設定>に直に含まれる<時間隔値式>の宣言型は,INTERVAL HOUR TO MINUTEでなけれ

ばならない。 

アクセス規則 

なし。 

795 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

1) 場合: 

a) LOCALが指定されるならば,現行SQLセションの現行既定時刻帯時差には,現行SQLセション

の原時刻帯時差が設定される。 

b) そうでなければ,次による。 

場合: 

i) 

<時間隔値式>の値がナル値でなく,INTERVAL ‒'14:00' からINTERVAL +'14:00'までの範囲にあ

るならば,現行SQLセションの現行既定時刻帯時差には,<時間隔値式>の値が設定される。 

ii) そうでなければ,例外条件:データ例外 (data exception) − 時刻帯時差値が正しくない (invalid 

time zone displacement value) が引き起こされる。 

適合性規則 

1) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<地方時刻帯設定文>を含んではならな

い。 

19.5 <SET CATALOG文> 

機能 

<SET CATALOG文> (<set catalog statement>) は,<EXECUTE IMMEDIATE文>又は<PREPARE文>によっ

て現行SQLセション中で準備される<準備可能文>中,及び直接起動される<直接SQL文>中の修飾なし<

スキーマ名>の既定カタログ名を設定する。 

形式 

<SET CATALOG文> ::= 

  SET <カタログ名特性> 

<カタログ名特性> ::= 

  CATALOG <値指定> 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

2) <カタログ名>の形式及び構文規則にVが適合しないならば,例外条件:カタログ名が正しくない 

(invalid catalog name) が引き起こされる。 

3) 現行SQLセションの既定カタログ名には,Vが設定される。 

適合性規則 

1) 機能F651“カタログ名修飾子”なしでは,適合するSQL言語は,<SET CATALOG文>を含んでは

ならない。 

2) 機能F761“セション管理”なしでは,適合するSQL言語は,<SET CATALOG文>を含んではなら

ない。 

19.6 <SET SCHEMA文> 

機能 

796 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<SET SCHEMA文> (<set schema statement>) は,<EXECUTE IMMEDIATE文>又は<PREPARE文>によっ

て現行SQLセション中で準備される<準備可能文>中,及び直接起動される<直接SQL文>中の修飾なし<

スキーマ修飾付き名前>の既定スキーマ名を設定する。 

形式 

<SET SCHEMA文> ::= 

  SET <スキーマ名特性> 

<スキーマ名特性> ::= 

  SCHEMA <値指定> 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

2) <スキーマ名>の形式及び構文規則にVが適合しないならば,例外条件:スキーマ名が正しくない 

(invalid schema name) が引き起こされる。 

3) 場合: 

a) <カタログ名>を含む<スキーマ名>に対する形式及び構文規則にVが適合するならば,Vの<カタ

ログ名>の部分をXとし,<修飾なしスキーマ名>の部分をYとする。次の文が暗に実行され, 

SET CATALOG 'X' 

<SET SCHEMA文>は,次の文によって実効的に置き換えられる。 

SET SCHEMA 'Y' 

b) そうでなければ,現行SQLセションの既定修飾なしスキーマ名には,Vが設定される。 

適合性規則 

1) 機能F761“セション管理”なしでは,適合するSQL言語は,<SET SCHEMA文>を含んではならな

い。 

19.7 <SET NAMES文> 

機能 

<SET NAMES文> (<set names statement>) は,<EXECUTE IMMEDIATE文>又は<PREPARE文>によって

現行SQLセション中で準備される<準備可能文>中,及び直接起動される<直接SQL文>中の<文字列定数>

の既定文字集合名を設定する。 

形式 

<SET NAMES文> ::= 

  SET <文字集合名特性> 

<文字集合名特性> ::= 

  NAMES <値指定> 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

797 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

一般規則 

1) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

2) <文字集合名>の形式及び構文規則にVが適合しないならば,例外条件:文字集合名が正しくない 

(invalid character set name) が引き起こされる。 

3) 現行SQLセションの既定文字集合名には,Vが設定される。 

適合性規則 

1) 機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<SET NAMES文>を含んではなら

ない。 

2) 機能F761“セション管理”なしでは,適合するSQL言語は,<SET NAMES文>を含んではならな

い。 

19.8 <SET PATH文> 

機能 

<SET PATH文> (<set path statement>) は,<EXECUTE IMMEDIATE文>又は<PREPARE文>によって現行

SQLセション中で準備される<準備可能文>中,及び直接起動される<直接SQL文>中の,修飾なし<ルーチ

ン名>をもつ<ルーチン呼出し>の,当該ルーチンを決定するためのSQLパスを設定する。このSQLパス

は,別のSQLパスの設定が成功するまでは,SQLセションの現行SQLパスのままとする。 

形式 

<SET PATH文> ::= 

  SET <SQLパス特性> 

<SQLパス特性> ::= 

  PATH <値指定> 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

a) <スキーマ名リスト>の形式及び構文規則にVが適合しないならば,例外条件:スキーマ名リスト

の指定が正しくない (invalid schema name list specification) が引き起こされる。 

b) 現行SQLセションのSQLパスには,Vが設定される。 

注記532 <PREPARE文>と<EXECUTE文>との間に実行される<SET PATH文>は,被準備文に対し

てどんな効果も与えない。 

適合性規則 

1) 機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<SET PATH文

>を含んではならない。 

19.9 <SET TRANSFORM GROUP文> 

機能 

798 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<SET TRANSFORM GROUP文> (<set transform group statement>) は,利用者定義型の値を既定義データ

型に対応付けるための変換関数のグループを識別するグループ名を設定する。 

形式 

<SET TRANSFORM GROUP文> ::= 

  SET <変換グループ特性> 

<変換グループ特性> ::= 

  DEFAULT TRANSFORM GROUP <値指定> 

| TRANSFORM GROUP FOR TYPE <パス解決利用者定義型名> <値指定> 

構文規則 

1) <値指定>の宣言型は,文字列型でなければならない。 

2) <パス解決利用者定義型名>が指定されるならば,<パス解決利用者定義型名>によって識別される利

用者定義型をUDTとする。 

アクセス規則 

なし。 

一般規則 

1) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM( BOTH ' ' FROM S ) 

a) <グループ名>の形式及び構文規則にVが適合しないならば,例外条件:変換グループ名指定が正

しくない (invalid transform group name specification) が引き起こされる。 

b) 場合: 

i) 

<パス解決利用者定義型名>が指定されるならば,現行SQLセションに対する,UDTの全ての

下位型に対応する変換グループ名には,Vが設定される。 

ii) そうでなければ,現行SQLセションに対する既定変換グループ名には,Vが設定される。 

注記533 <PREPARE文>の後に実行される<SQL TRANSFORM GROUP文>は,被準備文に対して

どんな効果も与えない。 

適合性規則 

1) 機能S241“変換関数”なしでは,適合するSQL言語は,<SQL TRANSFORM GROUP文>を含んで

はならない。 

19.10 

<セション照合順設定文> 

機能 

<セション照合順設定文> (<set session collation statement>) は,一つ以上の文字集合に対するSQLセショ

ンのSQLセション照合順を設定する。SQLセション照合順は,同じ文字集合に対する別のSQLセション

照合順の設定が成功するまでは,実効的なままとする。 

形式 

<セション照合順設定文> ::= 

  SET COLLATION <照合順指定> [ FOR <文字集合指定リスト> ] 

| SET NO COLLATION [ FOR <文字集合指定リスト> ] 

<照合順指定>  ::= 

  <値指定> 

構文規則 

799 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <値指定>の宣言型は,文字列型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <値指定>をSとし,次のTRIM関数の値である文字列をVとする。 

TRIM( BOTH ' ' FROM S ) 

a) <照合順名>の形式及び構文規則にVが適合しないならば,例外条件:照合順名が正しくない 

(invalid collation name) が引き起こされる。 

b) Vに含まれる<照合順名>によって識別される照合順をCOとする。 

場合: 

i) 

<文字集合指定リスト>が指定されるならば,次による。 

場合: 

1) COによって識別される照合順が,<文字集合指定>によって識別されるいずれかの文字集合

に適用可能でないならば,例外条件:照合順名が正しくない が引き起こされる。 

2) そうでなければ,指定される各文字集合に対して,現行SQLセション中のその文字集合に対

するSQLセション照合順には,COが設定される。 

ii) そうでなければ,SQLセション照合順にCOが設定される文字集合は,処理系定義とする。 

2) SET NO COLLATIONが指定されるならば,次による。 

場合: 

a) <文字集合指定リスト>が指定されるならば,指定される各文字集合に対して,現行SQLセション

中のその文字集合に対するSQLセション照合順には,なし が設定される。 

b) そうでなければ,現行SQLセション中の全ての文字集合に対するSQLセション照合順に,なし 

が設定される。 

適合性規則 

1) 機能F693“SQLセション及びクライアントモジュールの照合順”なしでは,適合するSQL言語は,

<セション照合順設定文>を含んではならない。 

20 動的SQL 

20.1 SQL記述子領域の記述 

この細分箇条は,ISO/IEC 9075-9の“17.1 SQL記述子領域の記述”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“17.1 SQL記述子領域の記述”によって修正される。 

機能 

SQL記述子領域の記述 (Description of SQL descriptor areas) は,SQL項目記述子領域中で用いる識別子,

データ型及びコードを規定する。 

構文規則 

1) SQL項目記述子領域は,表24“SQL項目記述子領域中で用いる<キーワード>のデータ型”で規定す

る項目から成る。 

2) SQL記述子領域は,表23“SQL記述子領域のヘッダ中で用いる<キーワード>のデータ型”で規定す

る項目,及び一つ以上のSQL項目記述子領域から成る。 

3) LEVELの値がNのSQL項目記述子領域IDAが与えられると,IDAの直に下位にある記述子領域 

800 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(immediately subordinate descriptor area) は,LEVELの値がN+1で,かつ,SQL記述子領域中の位置

がIDAの位置の後に続き,LEVELの値がN+1未満のSQL項目記述子領域の位置より前にあるSQL

項目記述子領域とする。 

IDAの下位にある記述子領域 (subordinate descriptor area) は,IDAの直に下位にある記述子領域,

又はIDAの直に下位にあるSQL項目記述子領域の下位にある記述子領域とする。 

4) データ型DT及びそれの記述子DEが与えられると,DEの直に下位にある記述子 (immediately 

subordinate descriptor) が次のとおり定義される。 

場合: 

a) DTが行型ならば,DTのフィールドのフィールド記述子とする。i番目の直に下位にある記述子

は,DTのi番目のフィールドの記述子とする。 

b) DTが集まり型ならば,DTの関連する要素型の記述子とする。 

DEの下位にある記述子 (subordinate descriptor) は,DEの直に下位にある記述子か,又はDEの直

に下位にある記述子の下位にある記述子かのいずれかである記述子とする。 

5) 記述子DEが与えられると,それのj番目の直に下位にある記述子をSDEjで表現する。DEの下位

にある記述子には,暗に想定される次のような順序付けがある。 

a) SDE1は,1番目の順序位置にある。 

b) SDEj+1の順序位置は,K + NS +1である。ここで,Kは,SDEjの順序位置とし,NSは,SDEjの

下位にある記述子の個数とする。SDEjの暗に順序付けられた下位にある記述子は,K+1の位置か

ら始まる連続する順序位置を占める。 

6) 項目記述子領域IDAが正しいことは,表25“動的SQL中でSQLデータ型のために用いるコード”

で定義されるコードをTYPEが示し,かつ,次のうちの一つが真であることと同値とする。 

場合: 

a) TYPEがCHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECTを示し,

LENGTHが,TYPEに対して正しい長さの値で,かつ,CHARACTER̲SET̲CATALOG,

CHRACTER̲SET̲SCHEMA及びCHARACTER̲SET̲NAMEがTYPEに対して正しい文字集合の

完全修飾付きの名前である。 

b) TYPEがCHARACTER LARGE OBJECT LOCATORを示す。 

c) TYPEがBINARY,BINARY VARYING又はBINARY LARGE OBJECTを示し,かつ,LENGTHが

TYPEに対して正しい長さの値である。 

d) TYPEがBINARY LARGE OBJECT LOCATORを示す。 

e) TYPEがNUMERICを示し,かつ,PRECISION及びSCALEがNUMERICデータ型に対して正し

い精度及び位取りの値である。 

f) 

TYPEがDECIMALを示し,かつ,PRECISION及びSCALEがDECIMALデータ型に対して正し

い精度及び位取りの値である。 

g) TYPEがSMALLINT,INTEGER,BIGINT,REAL又はDOUBLE PRECISIONを示す。 

h) TYPEがFLOATを示し,かつ,PRECISIONがFLOATデータ型に対して正しい精度の値である。 

i) 

TYPEがBOOLEANを示す。 

j) 

TYPEが<日時型>を示し,DATETIME̲INTERVAL̲CODEが,表26“動的SQL中で日時データ型

に関連付けられるコード”で規定するコードで,かつ,PRECISIONが,示された日時データ型の

<時刻精度>又は<時刻印精度>に対して正しい値である。 

801 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

k) TYPEが<時間隔型>を示し,DATETIME̲INTERVAL̲CODEが,表27“動的SQL中で<時間隔修

飾子>のために用いるコード”で規定するコードで,かつ,DATETIME̲INTERVAL̲PRECISION及

びPRECISIONが,<時間隔修飾子>に対する<時間隔先行フィールド精度>及び<時間隔小数秒精度

>に対して正しい値である。 

l) 

TYPEがUSER-DEFINED TYPE LOCATORを示し,かつ,USER̲DEFINED̲TYPE̲CATALOG,

USER̲DEFINED̲TYPE̲SCHEMA及びUSER̲DEFINED̲TYPE̲NAMEが,正しい利用者定義型の

完全修飾付きの名前である。 

m) TYPEがREFを示し,LENGTHが,REF型に対するオクテット単位の長さで,

USER̲DEFINED̲TYPE̲CATALOG

USER̲DEFINED̲TYPE̲SCHEMA

USER̲DEFINED̲TYPE̲NAMEが,正しい完全修飾付き利用者定義型名で,かつ,

SCOPE̲CATALOG,SCOPE̲SCHEMA及びSCOPE̲NAMEが,正しい完全修飾付き表名である。 

n) TYPEがROWを示し,DEGREEの値Nが,行型の次数に対して正しい値で,IDAの直に下位に

ある記述子領域が正確にN個あり,かつ,それらのSQL項目記述子領域が正しい。 

o) TYPEがARRAY又はARRAY LOCATORを示し,CARDINALITYの値が,配列の基数に対して正

しい値で,IDAの直に下位にある記述子領域がただ一つあり,かつ,そのSQL項目記述子領域が

正しい。 

p) TYPEがMULTISET又はMULTISET LOCATORを示し,IDAの直に下位にある記述子領域がただ

一つあり,かつ,そのSQL項目記述子領域が正しい。 

q) 

09 TYPEが処理系定義のデータ型を示す。 

7) <単純値指定>又は<単純相手指定> SVTの宣言型Tが,正しい項目記述子領域IDAによって指定さ

れるデータ型と一致する (match) ということは,次の条件のうちの一つが真であることと同値とす

る。 

場合: 

a) TYPEがCHARACTERを示し,かつ,TがCHARACTER(L) によって指定され,かつ,

CHARACTER̲SET̲CATALOG,CHRACTER̲SET̲SCHEMA及びCHARACTER̲SET̲NAMEの値

によって形成される<文字集合指定>が,SVTの文字集合を識別する。ここで,Lは,LENGTHの

値とする。 

b) TYPEがCHARACTER VARYINGを示し,かつ,TがCHARACTER VARYING(L) によって指定さ

れるか,又はTYPEがCHARACTER LARGE OBJECTを示し,かつ,TがCHARACTER LARGE 

OBJECT(L) によって指定されるかのいずれかで,CHARACTER̲SET̲CATALOG,

CHRACTER̲SET̲SCHEMA及びCHARACTER̲SET̲NAMEの値によって形成される<文字集合

指定>がSVTの文字集合を識別し,かつ,次の条件が成り立つ。 

場合: 

i) 

SVTが<単純値指定>で,かつ,LがLENGTHの値である。 

ii) SVTが<単純相手指定>で,かつ,LがLENGTHの値以上である。 

c) TYPEがCHARACTER LARGE OBJECT LOCATORを示し,かつ,TがCHARACTER LARGE 

OBJECT LOCATORによって指定される。 

d) TYPEがBINARYを示し,かつ,TがBINARY (L) によって指定される。ここで,Lは,LENGTH

の値とする。 

e) TYPEがBINARY VARYINGを示し,かつ,TがBINARY VARYING(L) によって指定されるか,

802 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

又はTYPEがBINARY LARGE OBJECTを示し,かつ,TがBINARY LARGE OBJECT(L) によっ

て指定されるかのいずれかで,かつ,次の条件が成り立つ。 

場合: 

i) 

SVTが<単純値指定>で,かつ,LがLENGTHの値である。 

ii) SVTが<単純相手指定>で,かつ,LがLENGTHの値以上である。 

f) 

TYPEがBINARY LARGE OBJECT LOCATORを示し,かつ,TがBINARY LARGE OBJECT 

LOCATORによって指定される。 

g) TYPEがNUMERICを示し,かつ,TがNUMERIC(P,S) によって指定される。ここで,Pは,

PRECISIONの値とし,Sは,SCALEの値とする。 

h) TYPEがDECIMALを示し,かつ,TがDECIMAL(P,S) によって指定される。ここで,Pは,

PRECISIONの値とし,Sは,SCALEの値とする。 

i) 

TYPEがSMALLINTを示し,かつ,TがSMALLINTによって指定される。 

j) 

TYPEがINTEGERを示し,かつ,TがINTEGERによって指定される。 

k) TYPEがBIGINTを示し,かつ,TがBIGINTによって指定される。 

l) 

TYPEがFLOATを示し,かつ,TがFLOAT (P) によって指定される。ここで,Pは,PRECISION

の値とする。 

m) TYPEがREALを示し,かつ,TがREALによって指定される。 

n) TYPEがDOUBLE PRECISIONを示し,かつ,TがDOUBLE PRECISIONによって指定される。 

o) TYPEがBOOLEANを示し,かつ,TがBOOLEANによって指定される。 

p) TYPEがUSER-DEFINED TYPE LOCATORを示し,かつ,TがUSER-DEFINED TYPE LOCATOR

よって指定され,USER̲DEFINED̲TYPE̲CATALOG,USER̲DEFINED̲TYPE̲SCHEMA及び

USER̲DEFINED̲TYPE̲NAMEの値が,SVTの関連する利用者定義型の完全修飾付きの名前であ

る。 

q) TYPEがREFを示し,TがREFによって指定され,USER̲DEFINED̲TYPE̲CATALOG,

USER̲DEFINED̲TYPE̲SCHEMA及びUSER̲DEFINED̲TYPE̲NAMEの値によって形成される<

利用者定義型名>が,SVTの被参照型を識別し,かつ,SCOPE̲CATALOG,SCOPE̲SCHEMA及

びSCOPE̲NAMEが参照型の有効範囲を識別する。 

r) TYPEがROWを示し,Tが次数Dの行型で,かつ,SVTのi番目のフィールドのデータ型が,

IDAのi番目の直に下位にある記述子領域によって指定されるデータ型と一致する。ここで,D

は,DEGREEの値とする。 

s) TYPEがARRAYを示し,Tが最大基数Cの配列型で,Tの要素型のデータ型が,IDAの直に下位

にある記述子領域によって指定されるデータ型と一致し,かつ,次の条件が成り立つ。 

場合: 

i) 

SVTが<単純値指定>で,かつ,CがCARDINALITYの値である。 

ii) SVTが<単純相手指定>で,かつ,CがCARDINALITYの値以上である。 

t) 

TYPEがARRAY LOCATORを示し,Tが,最大基数Cの関連する配列型をもつ配列位置付け子型

で,Tの関連する配列型の要素型のデータ型が,IDAの直に下位にある記述子領域によって指定

されるデータ型と一致し,かつ,次の条件が成り立つ。 

場合: 

i) 

SVTが<単純値指定>で,かつ,CがCARDINALITYの値である。 

background image

803 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) SVTが<単純相手指定>で,かつ,CがCARDINALITYの値以上である。 

u) TYPEがMULTISETを示し,Tがマルチ集合型で,かつ,Tの要素型のデータ型が,IDAの直に

下位にある記述子領域によって指定されるデータ型と一致する。 

v) TYPEがMULTISET LOCATORを示し,Tがマルチ集合位置付け子型で,かつ,Tの要素型のデ

ータ型が,IDAの直に下位にある記述子領域によって指定されるデータ型と一致する。 

w) 表25“動的SQL中でSQLデータ型のために用いるコード”中の処理系定義のデータ型以外のデ

ータ型をTYPEが示し,かつ,そのデータ型との一致のための処理系定義の規則をTが満たす。 

x) 

09 TYPEが処理系定義のデータ型を示し,かつ,そのデータ型との一致のための処理系定義の規

則をTが満たす。 

8) データ型DTの<単純値指定>がSQL項目記述子領域と一致するならば,データ型DTは,SQL項目

記述子領域によって表現される (represented) という。 

表23−SQL記述子領域のヘッダ中で用いる<キーワード>のデータ型 

<キーワード> 

データ型 

COUNT 

位取り0の真数 

DYNAMIC̲FUNCTION 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

DYNAMIC̲FUNCTION̲CODE 

位取り0の真数 

KEY̲TYPE 

位取り0の真数 

TOP̲LEVEL̲COUNT 

位取り0の真数 

表24−SQL項目記述子領域中で用いる<キーワード>のデータ型 

<キーワード> 

データ型 

CARDINALITY 

位取り0の真数 

CHARACTER̲SET̲CATALOG 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

CHARACTER̲SET̲NAME 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

CHARACTER̲SET̲SCHEMA 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

COLLATION̲CATALOG 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

COLLATION̲NAME 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

COLLATION̲SCHEMA 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

DATA 

SQL項目記述子領域によって表現されるデータ型と一致する 

DATETIME̲INTERVAL̲CODE 

位取り0の真数 

DATETIME̲INTERVAL̲PRECISION 

位取り0の真数 

DEGREE 

位取り0の真数 

INDICATOR 

位取り0の真数 

KEY̲MEMBER 

位取り0の真数 

LENGTH 

位取り0の真数 

LEVEL 

位取り0の真数 

NAME 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

NULLABLE 

位取り0の真数 

OCTET̲LENGTH 

位取り0の真数 

PARAMETER̲MODE 

位取り0の真数 

PARAMETER̲ORDINAL̲POSITION 

位取り0の真数 

PARAMETER̲SPECIFIC̲CATALOG 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

PARAMETER̲SPECIFIC̲NAME 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

PARAMETER̲SPECIFIC̲SCHEMA 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

background image

804 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

PRECISION 

位取り0の真数 

RETURNED̲CARDINALITY 

位取り0の真数 

表24−SQL項目記述子領域中で用いる<キーワード>のデータ型(続き) 

<キーワード> 

データ型 

RETURNED̲LENGTH 

位取り0の真数 

RETURNED̲OCTET̲LENGTH 

位取り0の真数 

SCALE 

位取り0の真数 

SCOPE̲CATALOG 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

SCOPE̲NAME 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

SCOPE̲SCHEMA 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

TYPE 

位取り0の真数 

UNNAMED 

位取り0の真数 

USER̲DEFINED̲TYPE̲CATALOG 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

USER̲DEFINED̲TYPE̲NAME 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

USER̲DEFINED̲TYPE̲SCHEMA 

文字集合がSQL̲IDENTIFIERで,かつ,長さが128文字以上の文字列 

USER̲DEFINED̲TYPE̲CODE 

位取り0の真数 

注記534 データ型とSQL項目記述子領域との間の関係に対して適用される“一致する”及び“によって表現さ

れる”は,この細分箇条の構文規則で定義している。 

アクセス規則 

なし。 

一般規則 

1) 

09 14 表25“動的SQL中でSQLデータ型のために用いるコード”は,SQLデータ型に関連付けられ

るコードを規定する。 

09 14 表25−動的SQL中でSQLデータ型のために用いるコード 

データ型 

コード 

処理系定義のデータ型 

< 0 

ARRAY 

50 

ARRAY LOCATOR 

51 

BIGINT 

25 

BINARY 

60 

BINARY VARYING 

61 

BINARY LARGE OBJECT 

30 

BINARY LARGE OBJECT LOCATOR 

31 

BOOLEAN 

16 

CHARACTER 

CHARACTER VARYING 

12 

CHARACTER LARGE OBJECT 

40 

CHARACTER LARGE OBJECT LOCATOR 

41 

DATE,TIME WITHOUT TIME ZONE,TIME WITH TIME ZONE,
TIMESTAMP WITHOUT TIME ZONE又はTIMESTAMP WITH TIME ZONE 

DECIMAL 

DOUBLE PRECISION 

FLOAT 

INTEGER 

INTERVAL 

10 

MULTISET 

55 

background image

805 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

MULTISET LOCATOR 

56 

NUMERIC 

09 14 表25−動的SQL中でSQLデータ型のために用いるコード 

データ型 

コード 

REAL 

SMALLINT 

USER-DEFINED TYPE LOCATOR 

18 

ROW TYPE 

19 

REF 

20 

利用者定義型 

17 

2) 表26“動的SQL中で日時データ型に関連付けられるコード”は,日時データ型に関連付けられるコ

ードを規定する。 

表26−動的SQL中で日時データ型に関連付けられるコード 

日時データ型  

コード 

DATE 

TIME WITH TIME ZONE 

TIME WITHOUT TIME ZONE 

TIMESTAMP WITH TIME ZONE 

TIMESTAMP WITHOUT TIME ZONE 

3) 表27“動的SQL中で<時間隔修飾子>のために用いるコード”は,時間隔データ型の<時間隔修飾子

>に関連付けられるコードを規定する。 

11 表27−動的SQL中で<時間隔修飾子>のために用いるコード 

時間隔修飾子  

コード 

DAY 

DAY TO HOUR 

DAY TO MINUTE 

DAY TO SECOND 

10 

HOUR 

HOUR TO MINUTE 

11 

HOUR TO SECOND 

12 

MINUTE 

MINUTE TO SECOND 

13 

MONTH 

SECOND 

YEAR 

YEAR TO MONTH 

4) DYNAMIC̲FUNCTIONの値は,準備又は実行されたSQL文の種別を識別する文字列とする。表32

“SQL文のコード”がSQL文の識別子を規定する。 

5) DYNAMIC̲FUNCTION̲CODEの値は,準備又は実行されたSQL文の種別を識別する番号とする。

表32“SQL文のコード”がSQL文のコードを規定する。 

6) 表28“動的SQL中で入力/出力SQLパラメタモードのために用いるコード”は,<CALL文>を記

述するときにPARAMETER̲MODE項目記述子フィールドのために用いるコードを規定する。 

806 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

background image

807 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表28−動的SQL中で入力/出力SQLパラメタモードのために用いるコード 

パラメタモード 

コード 

PARAMETER̲MODE̲IN 

PARAMETER̲MODE̲INOUT 

PARAMETER̲MODE̲OUT 

7) 表29“動的SQL中で利用者定義型に関連付けられるコード”は,利用者定義型に関連付けられるコ

ードを規定する。 

表29−動的SQL中で利用者定義型に関連付けられるコード 

利用者定義型 

コード 

DISTINCT 

STRUCTURED 

適合性規則 

なし。 

20.2 <ALLOCATE DESCRIPTOR文> 

機能 

<ALLOCATE DESCRIPTOR文> (<allocate descriptor statement>) は,SQL記述子領域を割り当てる。 

形式 

<ALLOCATE DESCRIPTOR文> ::= 

  ALLOCATE [ SQL ] DESCRIPTOR <記述子名> [ WITH MAX <実現値> ] 

<実現値>  ::= 

  <単純値指定> 

構文規則 

1) <実現値>の宣言型は,位取り0の真数でなければならない。 

2) WITH MAX <実現値> が指定されないならば,<実現値>に対する0より大きい処理系定義の既定値

が暗に想定される。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) <記述子名>が<拡張記述子名>ならば,<拡張記述子名>に直に含まれる<単純値指定>をSとし,次

のTRIM関数の結果である文字列をVとする。 

TRIM( BOTH ' ' FROM S ) 

場合: 

i) 

<識別子>の形式及び構文規則にVが適合しないならば,例外条件:SQL記述子名が正しくない 

(invalid SQL descriptor name) が引き起こされる。 

ii) そうでなければ,<拡張記述子名>をDNとする。DNの値は,Vとする。 

b) そうでなければ,<非拡張記述子名>をDNとする。 

2) <実現値>が1未満か又は処理系定義の最大値を超えるならば,例外条件:動的SQL誤り (dynamic 

SQL error) − 記述子索引が正しくない  (invalid descriptor index) が引き起こされる。一度に割り当

808 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

てることができるSQL記述子領域の最大個数は,処理系定義とする。 

3) 場合: 

a) DNがSQL記述子領域を識別するならば,例外条件:SQL記述子名が正しくない が引き起こさ

れる。 

b) そうでなければ,DNによって識別されるSQL記述子領域が作成される。SQL記述子領域は,少

なくとも<実現値>の個数のSQL項目記述子領域をもつ。項目記述子領域のそれぞれのLEVELに

は,値0が設定される。SQL記述子領域中の他の全てのフィールドの値は,処理系依存とする。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<定数>でない<実現値>を含んではな

らない。 

2) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<ALLOCATE DESCRIPTOR文>を含

んではならない。 

20.3 <DEALLOCATE DESCRIPTOR文> 

機能 

<DEALLOCATE DESCRIPTOR文> (<deallocate descriptor statement>) は,SQL記述子領域を解放する。 

形式 

<DEALLOCATE DESCRIPTOR文> ::= 

  DEALLOCATE [ SQL ] DESCRIPTOR <記述子名> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 場合: 

a) <記述子名>がSQL記述子領域を識別しないならば,例外条件:SQL記述子名が正しくない (invalid 

SQL descriptor name) が引き起こされる。 

b) そうでなければ,<記述子名>によって識別されるSQL記述子領域が破壊される。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<DEALLOCATE DESCRIPTOR文>を

含んではならない。 

20.4 <GET DESCRIPTOR文> 

機能 

<GET DESCRIPTOR文> (<get descriptor statement>) は,SQL記述子領域から情報を取得する。 

形式 

<GET DESCRIPTOR文> ::= 

  GET [ SQL ] DESCRIPTOR <記述子名> <記述子取得情報> 

<記述子取得情報> ::= 

  <取得ヘッダ情報> [ { <コンマ> <取得ヘッダ情報> }... ] 

| VALUE <項目番号> <取得項目情報> 

      [ { <コンマ> <取得項目情報> }... ] 

809 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<取得ヘッダ情報> ::= 

  <単純相手指定1> <等号演算子> <ヘッダ項目名> 

<ヘッダ項目名> ::= 

  COUNT 

| KEY̲TYPE 

| DYNAMIC̲FUNCTION 

| DYNAMIC̲FUNCTION̲CODE 

| TOP̲LEVEL̲COUNT 

<取得項目情報> ::= 

  <単純相手指定2> <等号演算子> <記述子項目名> 

<項目番号> ::= 

  <単純値指定> 

<単純相手指定1> ::= 

  <単純相手指定> 

<単純相手指定2> ::= 

  <単純相手指定> 

<記述子項目名> ::= 

  CARDINALITY 

| CHARACTER̲SET̲CATALOG 

| CHARACTER̲SET̲NAME 

| CHARACTER̲SET̲SCHEMA 

| COLLATION̲CATALOG 

| COLLATION̲NAME 

| COLLATION̲SCHEMA 

| DATA 

| DATETIME̲INTERVAL̲CODE 

| DATETIME̲INTERVAL̲PRECISION 

| DEGREE 

| INDICATOR 

| KEY̲MEMBER 

| LENGTH 

| LEVEL 

| NAME 

| NULLABLE 

| OCTET̲LENGTH 

| PARAMETER̲MODE 

| PARAMETER̲ORDINAL̲POSITION 

| PARAMETER̲SPECIFIC̲CATALOG 

| PARAMETER̲SPECIFIC̲NAME 

| PARAMETER̲SPECIFIC̲SCHEMA 

810 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| PRECISION 

| RETURNED̲CARDINALITY 

| RETURNED̲LENGTH 

| RETURNED̲OCTET̲LENGTH 

| SCALE 

| SCOPE̲CATALOG 

| SCOPE̲NAME 

| SCOPE̲SCHEMA 

| TYPE 

| UNNAMED 

| USER̲DEFINED̲TYPE̲CATALOG 

| USER̲DEFINED̲TYPE̲NAME 

| USER̲DEFINED̲TYPE̲SCHEMA 

| USER̲DEFINED̲TYPE̲CODE 

構文規則 

1) <項目番号>の宣言型は,位取り0の真数でなければならない。 

2) 各<取得ヘッダ情報>に対して,<単純相手指定1>の宣言型は,表23“SQL記述子領域のヘッダ中で

用いる<キーワード>のデータ型”中で,<ヘッダ項目名>と等価な“<キーワード>”列値をもつ行の

“データ型”列中で示されるデータ型でなければならない。 

3) 各<取得項目情報>に対して,<単純相手指定2>の宣言型は,表24“SQL項目記述子領域中で用いる

<キーワード>のデータ型”中で,<記述子項目名>と等価な“<キーワード>”列値をもつ行の“デー

タ型”列中で示されるデータ型でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <記述子名>がSQL記述子領域を識別しないならば,例外条件:SQL記述子名が正しくない (invalid 

SQL descriptor name) が引き起こされる。 

2) <GET DESCRIPTOR文>中に指定される<項目番号>が,<記述子名>によって識別されるSQL記述子

領域が割り当てられたときに指定された<実現値>の値を超えるか又は1未満ならば,例外条件:動

的SQL誤り (dynamic SQL error) − 記述子索引が正しくない (invalid descriptor index) が引き起こ

される。 

3) <GET DESCRIPTOR文>中に指定される<項目番号>が,COUNTの値を超えるならば,終了条件:デ

ータなし (no data) が引き起こされる。 

4) キーワードDATAに関連付けられる<単純相手指定>の宣言型が,項目記述子領域によって表現され

るデータ型と一致しないならば,例外条件:データ例外 (data exception) − 代入中の誤り (error in 

assignment) が引き起こされる。 

注記535 “一致する”及び“によって表現される”は,“20.1 SQL記述子領域の記述”の構文規

則で定義している。 

5) <記述子取得情報>に含まれる<項目番号>の値をiとする。i番目の項目記述領域をIDAとする。<取

得項目情報>がDATAを指定するならば,次による。 

811 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) TYPEフィールドがARRAY,ARRAY LOCATOR,MULTISET又はMULTISET LOCATORを示す

項目記述子領域の下位に,IDAがあるならば,例外条件:動的SQL誤り − DATAの値が未定義  

(undefined DATA value) が引き起こされる。 

b) IDA中のTYPEがROWを示すならば,例外条件:動的SQL誤り − DATAの値が未定義 が引

き起こされる。 

c) INDICATORの値が負で,かつ,どの<取得項目情報>も,INDICATORを指定しないならば,例外

条件:データ例外 − ナル値,標識パラメタなし (null value, no indicator parameter) が引き起こさ

れる。 

6) <GET DESCRIPTOR文>中で例外条件が引き起こされるならば,<単純相手指定1>及び<単純相手指

定2>によって指定される全ての相手の値は,処理系依存とする。 

7) <GET DESCRIPTOR文>は,<記述子名>によって指定されるSQL記述子領域から値を取り出す。取

り出す値は,<記述子取得情報>によって指定する。<記述子取得情報>が一つ以上の<取得ヘッダ情

報>を指定するならば,取り出される値は,それらの<取得ヘッダ情報>に含まれる<ヘッダ項目名>

によって識別される値とする。<記述子取得情報>が一つ以上の<取得項目情報>を指定するならば,

取り出される値は,<項目番号>によって識別されるSQL項目記述子領域中の,それらの<取得項目

情報>に含まれる<記述子項目名>によって識別される値とする。各項目に対して,取り出される値

は,指定されたSQL記述子領域を参照する最も新しく実行された<ALLOCATE DESCRIPTOR文>,

<SET DESCRIPTOR文>又は<記述文>によって確立されたものとする。値が未定義のどのフィール

ドに対しても,<GET DESCRIPTOR文>によって取り出される値は,処理系依存とする。 

場合: 

a) <記述子取得情報>が一つ以上の<取得ヘッダ情報>を含むならば,指定される各<取得ヘッダ情報

>に対して,<単純相手指定1>をTARGETとして,<ヘッダ項目名>によって識別されるフィール

ドのSQL記述子領域中の値VをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

b) <記述子取得情報>が一つ以上の<取得項目情報>を含むならば,次による。 

i) 

<記述子取得情報>に含まれる<項目番号>の値をiとする。 

ii) 指定される各<取得項目情報>に対して,<単純相手指定2>をTARGETとして,<記述子項目名

>によって識別されるフィールドのi番目のSQL項目記述子領域中の値VをVALUEとして,

“9.2 格納代入”の一般規則を適用する。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<GET DESCRIPTOR文>を含んではな

らない。 

2) 機能T301“関数従属性”なしでは,適合するSQL言語は,KEY̲MEMBERを含む<記述子項目名>

を含んではならない。 

20.5 <SET DESCRIPTOR文> 

機能 

<SET DESCRIPTOR文> (<set descriptor statement>) は,SQL記述子領域中に情報を設定する。 

形式 

<SET DESCRIPTOR文> ::= 

  SET [ SQL ] DESCRIPTOR <記述子名> <記述子設定情報> 

<記述子設定情報> ::= 

812 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <設定ヘッダ情報> [ { <コンマ> <設定ヘッダ情報> }... ] 

| VALUE <項目番号> <設定項目情報> 

  [ { <コンマ> <設定項目情報> }... ] 

<設定ヘッダ情報> ::= 

  <ヘッダ項目名> <等号演算子> <単純値指定1> 

<設定項目情報> ::= 

  <記述子項目名> <等号演算子> <単純値指定2> 

<単純値指定1> ::= 

  <単純値指定> 

<単純値指定2> ::= 

  <単純値指定> 

構文規則 

1) 各<設定ヘッダ情報>に対して,<ヘッダ項目名>は,KEY̲TYPE,TOP̲LEVEL̲COUNT,

DYNAMIC̲FUNCTION又はDYNAMIC̲FUNCTION̲CODEであってはならず,かつ,<単純値指定

1>の宣言型は,表23“SQL記述子領域のヘッダ中で用いる<キーワード>のデータ型”中で,<ヘッ

ダ項目名>と等価な“<キーワード>”列値をもつ行の“データ型”列中で示されるデータ型でなけれ

ばならない。 

2) 各<設定項目情報>に対して,<記述子項目名>は,RETURNED̲LENGTH,

RETURNED̲OCTET̲LENGTH,RETURNED̲CARDINALITY,OCTET̲LENGTH,NULLABLE,

KEY̲MEMBER,COLLATION̲CATALOG,COLLATION̲SCHEMA,COLLATION̲NAME,NAME,

UNNAMED

PARAMETER̲MODE

PARAMETER̲ORDINAL̲POSITION

PARAMETER̲SPECIFIC̲CATALOG

PARAMETER̲SPECIFIC̲SCHEMA

PARAMETER̲SPECIFIC̲NAME又はUSER̲DEFINED̲TYPE̲CODEであってはならない。<記述子

項目名>の他の代替手段を,<SET DESCRIPTOR文>中に2回以上指定してはならない。<単純値指

定2>の宣言型は,表24“SQL項目記述子領域中で用いる<キーワード>のデータ型”中で,<記述子

項目名>と等価な“<キーワード>”列値をもつ行の“データ型”列中で示されるデータ型でなければ

ならない。 

3) <記述子項目名>がDATAを指定するならば,<単純値指定2>は,<定数>であってはならない。 

アクセス規則 

なし。 

一般規則 

1) <記述子名>がSQL記述子領域を識別しないならば,例外条件:SQL記述子名が正しくない (invalid 

SQL descriptor name) が引き起こされる。 

2) <SET DESCRIPTOR文>中に指定される<項目番号>が,<記述子名>によって識別されるSQL記述子

領域が割り当てられたときに指定された<実現値>の値を超えるか又は1未満ならば,例外条件:動

的SQL誤り (dynamic SQL error) − 記述子索引が正しくない (invalid descriptor index) が引き起こ

される。 

3) 単一の<SET DESCRIPTOR文>中で二つ以上の値が設定されるとき,それらの値は,次の順序で実効

的に代入される。LEVEL,TYPE,DATETIME̲INTERVAL̲CODE, 

DATETIME̲INTERVAL̲PRECISION,PRECISION,SCALE,CHARACTER̲SET̲CATALOG, 

813 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

CHARACTER̲SET̲SCHEMA,CHARACTER̲SET̲NAME,USER̲DEFINED̲TYPE̲CATALOG,

SER̲DEFINED̲TYPE̲SCHEMA,USER̲DEFINED̲TYPE̲NAME,SCOPE̲CATALOG, 

SCOPE̲SCHEMA,SCOPE̲NAME,LENGTH,INDICATOR,DEGREE,CARDINALITY,DATAの

順序。 

DATA以外のいずれかの値が設定されるとき,DATAの値は,未定義になる。 

4) 指定されるどの<設定項目情報>に対しても,<記述子項目名>をDINとし,<単純値指定2>の値をV

とし,<項目番号>の値をNとし,N番目の項目記述子領域をIDAとする。 

場合: 

a) DINがDATAならば,次による。 

i) 

TYPEフィールドがARRAY,ARRAY LOCATOR,MULTISET又はMULTISET LOCATORを示

す項目記述子領域の下位に,IDAがあるならば,例外条件:動的SQL誤り − DATAの相手が

正しくない (invalid data target) が引き起こされる。 

ii) IDA中のTYPEがROWを示すならば,例外条件:動的SQL誤り − DATAの相手が正しくな

い が引き起こされる。 

iii) Vの最特定型が,項目記述子領域によって指定されるデータ型と一致しないならば,例外条件:

データ例外 (data exception) − 代入中の誤り (error in assignment) が引き起こされる。 

注記536 “一致する”は,“20.1 SQL記述子領域の記述”の構文規則で定義している。 

iv) IDA中のDATAには,値Vが設定される。 

b) DINがLEVELならば,次による。 

i) 

Nが1で,かつ,Vが0でないならば,例外条件:動的SQL誤り − LEVEL値が正しくない 

(invalid LEVEL value) が引き起こされる。 

ii) Nが1より大きいならば,IDAの直に先行する項目記述子領域をPIDAとし,それのLEVEL値

をKとする。 

1) V = K + 1で,かつ,PIDA中のTYPEがROW,ARRAY,ARRAY LOCATOR,MULTISET,

MULTISET LOCATORを示さないならば,例外条件:動的SQL誤り − LEVEL値が正しく

ない が引き起こされる。 

2) V > K + 1ならば,例外条件:動的SQL誤り − LEVEL値が正しくない が引き起こされる。 

3) V < K + 1ならば,PIDAが下位にあり,かつ,TYPEフィールドがROWを示すi番目の項目

記述子領域をOIDAiとし,OIDAiとIDAとの間の,OIDAiの直に下位にある記述子領域の

個数をNSiとし,OIDAi中のDEGREEの値をDiとする。 

A) LEVEL値がVより大きい各OIDAiに対して,DiがNSiと等しくないならば,例外条件:

動的SQL誤り − LEVEL値が正しくない が引き起こされる。 

B) Kが0でないならば,LEVEL値がKであるOIDAiをOIDAjとする。そのようなOIDAjが

存在しないか,又はDjがNSj以下ならば,例外条件:動的SQL誤り − LEVEL値が正し

くない が引き起こされる。 

iii) IDA中のLEVELには,値Vが設定される。 

c) DINがTYPEならば,次による。 

i) 

IDA中のTYPEには,値Vが設定される。 

ii) IDA中のTYPE及びLEVEL以外の全てのフィールドには,処理系依存の値が設定される。 

iii) 場合: 

814 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) VがCHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECTを示すなら

ば,IDA中のCHARACTER̲SET̲CATALOG,CHARACTER̲SET̲SCHEMA及び

CHARACTER̲SET̲NAMEには,SQLセションの既定文字集合名の値が設定され,IDA中の

LENGTHには,1が設定される。 

2) VがCHARACTER LARGE OBJECT LOCATORを示すならば,IDA中のLENGTHには,1が

設定される。 

3) VがBINARY,BINARY VARYING又はBINARY LARGE OBJECTを示すならば,IDA中の

LENGTHには,1が設定される。 

4) VがBINARY LARGE OBJECT LOCATORを示すならば,IDA中のLENGTHには,1が設定

される。 

5) VがDATETIMEを示すならば,IDA中のPRECISIONには,0が設定される。 

6) VがINTERVALを示すならば,IDA中のDATETIME̲INTERVAL̲PRECISIONには,2が設定

される。 

7) VがNUMERIC又はDECIMALを示すならば,IDA中のSCALEには,0が設定され,IDA中

のPRECISIONには,それぞれ,NUMERIC又はDECIMALデータ型の精度に対する処理系定

義の既定値が設定される。 

8) VがFLOATを示すならば,IDA中のPRECISIONには,FLOATデータ型の精度に対する処

理系定義の既定値が設定される。 

d) DINがDATETIME̲INTERVAL̲CODEならば,次による。 

場合: 

i) 

IDA中のTYPEがDATETIMEを示すならば,次による。 

場合: 

1) VがDATE,TIME又はTIME WITH TIME ZONEを示すならば,IDA中のPRECISIONには,

0が設定され,IDA中のDATETIME̲INTERVAL̲CODEには,Vが設定される。 

2) VがTIMESTAMP又はTIMESTAMP WITH TIME ZONEを示すならば,IDA中のPRECISION

には,6が設定され,IDA中のDATETIME̲INTERVAL̲CODEには,Vが設定される。 

3) そうでなければ,例外条件:動的SQL誤り − DATETIME̲INTERVAL̲CODEが正しくない 

(invalid DATETIME̲INTERVAL̲CODE) が引き起こされる。 

ii) IDA中のTYPEがINTERVALを示すならば,次による。 

場合: 

1) VがDAY TO SECOND,HOUR TO SECOND,MINUTE TO SECOND又はSECONDを示すな

らば,IDA中のPRECISIONには,6が設定され,IDA中のDATETIME̲INTERVAL̲PRECISION

には,2が設定され,IDA中のDATETIME̲INTERVAL̲CODEには,Vが設定される。 

2) VがYEAR,MONTH,DAY,HOUR,MINUTE,YEAR TO MONTH,DAY TO HOUR,DAY 

TO MINUTE又はHOUR TO MINUTEを示すならば,IDA中のPRECISIONには,0が設定さ

れ,IDA中のDATETIME̲INTERVAL̲PRECISIONには,2が設定され,IDA中の

DATETIME̲INTERVAL̲CODEには,Vが設定される。 

3) そうでなければ,例外条件:動的SQL誤り − DATETIME̲INTERVAL̲CODEが正しくない 

が引き起こされる。 

iii) そうでなければ,例外条件:動的SQL誤り − DATETIME̲INTERVAL̲CODEが正しくない 

815 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

が引き起こされる。 

e) そうでなければ,DINによって識別されるIDAのフィールドをTARGETとして,VをVALUEと

して,“9.2 格納代入”の一般規則を適用する。 

5) 指定された各<設定ヘッダ情報>に対して,<ヘッダ項目名>によって識別されるフィールドを

TARGETとして,<単純値指定1>の値VをVALUEとして,“9.2 格納代入”の一般規則を適用する。 

6) <SET DESCRIPTOR文>中で例外条件が引き起こされるならば,<SET DESCRIPTOR文>中で指定さ

れる項目記述子領域の全ての要素の値は,処理系依存とする。 

7) <記述文>の実行の結果として得られるTYPE,LENGTH,PRECISION,SCALE,

DATETIME̲INTERVAL̲CODE,DATETIME̲INTERVAL̲PRECISION,CHARACTER̲SET̲CATALOG,

CHARACTER̲SET̲SCHEMA,CHARACTER̲SET̲NAME,USER̲DEFINED̲TYPE̲CATALOG,

USER̲DEFINED̲TYPE̲SCHEMA,USER̲DEFINED̲TYPE̲NAME,SCOPE̲CATALOG,

SCOPE̲SCHEMA及びSCOPE̲NAMEの値を,<EXECUTE文>,<動的OPEN文>又は<動的FETCH

文>の実行前に変更することに関する制限は,処理系定義とする。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<SET DESCRIPTOR文>を含んではな

らない。 

20.6 <PREPARE文> 

この細分箇条は,ISO/IEC 9075-4の“15.1 <PREPARE文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“17.2 <PREPARE文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“17.4 <PREPARE文>”によって修正される。 

機能 

<PREPARE文> (<prepare statement>) は,実行のために文を準備する。 

形式 

<PREPARE文> ::= 

  PREPARE <SQL文名> [ <ATTRIBUTES指定> ] 

      FROM <SQL文変数> 

<ATTRIBUTES指定> ::= 

  ATTRIBUTES <属性変数> 

<属性変数> ::= 

  <単純値指定> 

<SQL文変数> ::= 

  <単純値指定> 

<準備可能文> ::= 

  <準備可能SQLデータ文> 

| <準備可能SQLスキーマ文> 

| <準備可能SQLトランザクション文> 

| <準備可能SQL制御文> 

| <準備可能SQLセション文> 

| <準備可能処理系定義文> 

<準備可能SQLデータ文> ::= 

816 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <DELETE文:探索> 

| <動的単一行SELECT文> 

| <INSERT文> 

| <動的SELECT文> 

| <UPDATE文:探索> 

| <TRUNCATE TABLE文> 

| <MERGE文> 

| <準備可能動的DELETE文:位置付け> 

| <準備可能動的UPDATE文:位置付け> 

| <HOLD LOCATOR文> 

| <FREE LOCATOR文> 

<準備可能SQLスキーマ文> ::= 

  <SQLスキーマ文> 

<準備可能SQLトランザクション文> ::= 

  <SQLトランザクション文> 

<準備可能SQL制御文> ::= 

  <SQL制御文> 

<準備可能SQLセション文> ::= 

  <SQLセション文> 

<動的SELECT文> ::= 

  <カーソル指定> 

<準備可能処理系定義文> ::= 

  !! 構文規則参照。 

構文規則 

1) <SQL文変数>の<単純値指定>は,<定数>であってはならない。 

2) <SQL文変数>及び<属性変数>のそれぞれの宣言型は,文字列でなければならない。 

3) <準備可能処理系定義文>の形式及び構文規則は,処理系定義とする。 

4) <準備可能SQL制御文>は,<準備可能文>でない<SQL手続文>を含んではならず,<動的単一行

SELECT文>又は<動的SELECT文>も,含んではならない。 

アクセス規則 

なし。 

一般規則 

1) 

09 <SQL文変数>の内容をPとする。Pが<SQL制御文>ならば,Pに含まれる<SQL手続文>をPSと

する。 

2) 行型RT1及びRT2の二つの下位フィールドSF1及びSF2が,それぞれ,RT1及びRT2の,位置で

対応するフィールドであるか,又はRT1SF1及びRT2SF2が,それぞれ,RT1及びRT2の対応する

下位フィールドの宣言型で,かつ,SF1及びSF2が,RT1SF1及びRT2SF2の,位置で対応するフ

ィールドであるかのいずれかならば,SF1及びSF2は,対応する下位フィールド (corresponding 

subfield) とする。 

3) 既定変換グループ名をDTGNとし,P中で参照される全ての利用者定義型に対する変換関数のグル

817 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ープを識別するために用いる { 利用者定義型名 − 変換グループ名 } の対のリストをTFLとす

る。DTGN及びTFLは,Pが準備された後の<SET TRANSFORM GROUP文>の実行によって影響を

受けない。 

4) <動的パラメタ指定>,又は任意の個数の<左括弧><右括弧>の対に直に含まれる<動的パラメタ指定

>のいずれかである<値式>をDPVとする。最初は,このような<値式>の宣言型は,定義によって,

未定義とする。データ型は,この規格中で定義されるデータ型でも処理系によって定義されるデー

タ型でもないならば,未定義 (undefined) とする。 

5) 

04 NUMERICデータ型に対する<精度>の処理系定義の最大値をMPとする。可変長文字列の処理系

定義の最大長をMLとする。DPVに対する基準を満たす,P又はPS中の各<値式> DPに対して,

それの宣言型をDTで示す。<動的パラメタ指定>のデータ型がこの一般規則によって決定されるま

で,“14.15 <設定句リスト>”で規定する構文上の置換えを適用してはならない。 

a) 場合: 

i) 

DPの直後に<時間隔修飾子> IQが続くならば,DTは,INTERVAL IQとする。 

ii) DPが<配列要素参照>に単純に含まれる<数値式>ならば,DTは,NUMERIC (MP, 0) とする。 

iii) DPが,<CHAR̲LENGTH式>又は<OCTET̲LENGTH式>に単純に含まれる<データ列値式>なら

ば,DTは,処理系定義の文字集合のCHARACTER VARYING (ML) とする。 

iv) DPが,<剰余式>に単純に含まれる<数値式被除数> X1又は<数値式除数> X2のいずれかなら

ば,DTは,それぞれ,X2の宣言型又はX1の宣言型とする。 

v) DPが,“POSITION ( X1 IN X2 )”という形式の<POSITION式>中のX1又はX2のいずれかなら

ば,次による。 

場合: 

1) X2の宣言型又はX1の宣言型が,文字集合CSのCHARACTER又はCHARACTER VARYING

ならば,DTは,文字集合CSのCHARACTER VARYING (ML) とする。 

2) そうでなければ,DTは,それぞれ,X2又はX1の宣言型とする。 

vi) DPが,“SUBSTRING ( X1 FROM X2 FOR X3 )”又は“SUBSTRING ( X1 FROM X2 )”という形

式の<データ列値関数>中のX2又はX3のいずれかならば,DTは,NUMERIC (MP, 0) とする。 

vii) DPが,“SUBSTRING ( X1 SIMILAR X2 ESCAPE X3 )”という形式の<データ列値関数>中のX1,

X2又はX3のいずれかならば,次による。 

1) 場合: 

A) X1の宣言型がCHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECT

ならば,X1の文字集合をCSとする。 

B) X2の宣言型がCHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECT

ならば,X1の文字集合をCSとする。 

C) X3の宣言型がCHARACTER,CHARACTER VARYING又はCHARACTER LARGE OBJECT

ならば,X1の文字集合をCSとする。 

D) そうでなければ,CSの文字集合は,未定義とする。 

2) CSが定義されるならば,次による。 

A) DPがX1又はX2ならば,DTは,文字集合CSのCHARACTER VARYING (ML) とする。 

B) DPがX3ならば,DTは,文字集合CSのCHARACTER (1) とする。 

viii) DPが,“OVERLAY ( X1 PLACING X2 FROM X3 FOR X4 )”又は“OVERLAY ( X1 PLACING X2 

818 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

FROM X3 )”という形式の<データ列値関数>中のX1,X2,X3又はX4のいずれかならば,次に

よる。 

場合: 

1) DPがX1又はX2ならば,次による。 

場合: 

A) それぞれ,X2又はX1の宣言型が,文字集合CSのCHARACTER又はCHARACTER 

VARYINGならば,DTは,文字集合CSのCHARACTER VARYING (ML) とする。 

B) そうでなければ,DTは,それぞれ,X2又はX1の宣言型とする。 

2) そうでなければ,DTは,NUMERIC (MP, 0) とする。 

ix) DPが,“X1 || X2”という形式の<値式>中のX1又はX2のいずれかならば,次による。 

場合: 

1) それぞれ,X2又はX1の宣言型が,文字集合CSのCHARACTER又はCHARACTER VARYING

ならば,DTは,文字集合CSのCHARACTER VARYING (ML) とする。 

2) そうでなければ,DTは,それぞれ,X2又はX1の宣言型とする。 

x) DPが,“X1 * X2”又は“X1 / X2”という形式の<値式>中のX1又はX2のいずれかならば,次

による。 

場合: 

1) DPがX1ならば,DTは,X2の宣言型とする。 

2) そうでなければ,次による。 

場合: 

A) X1の宣言型が時間隔型ならば,DTは,NUMERIC (MP, 0) とする。 

B) そうでなければ,DTは,それぞれ,X2又はX1の宣言型とする。 

xi) DPが,“X1 + X2”又は“X1−X2”という形式の<値式>中のX1又はX2のいずれかならば,次

による。 

場合: 

1) DPが,“X1−X2”という形式の式中のX1ならば,DTは,X2の宣言型とする。 

2) そうでなければ,次による。 

場合: 

A) それぞれ,X2又はX1の宣言型が日付ならば,DTは,INTERVAL YEAR (PR) TO MONTH

とする。ここで,PRは,処理系定義の最大<時間隔先行フィールド精度>とする。 

B) それぞれ,X2又はX1の宣言型が時刻又は時刻印ならば,DTは,INTERVAL DAY (PR) TO 

SECOND (FR) とする。ここで,PR及びFRは,それぞれ,処理系定義の最大<時間隔先行

フィールド精度>及び最大<時間隔小数秒精度>とする。 

C) そうでなければ,DTは,それぞれ,X2又はX1の宣言型とする。 

xii) DPが,<ブール一次子>に単純に含まれる<値式一次子>ならば,DTは,BOOLEANとする。 

xiii) DPが,<配列要素リスト> AELに単純に含まれる<配列要素>であるか,又は<配列要素リスト

> AELに単純に含まれる<配列要素>の宣言型の下位フィールドSFの値をDPが表現するなら

ば,AELに単純に含まれる<配列要素>の宣言型をDTSETとして,“9.5 データ型組合せの結果”

の構文規則を適用する。これらの構文規則の適用によって戻されるRESTYPEをETとする。 

場合: 

819 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) DPが,AELの<配列要素>ならば,DTは,ETとする。 

2) そうでなければ,DTは,SFに対応するETの下位フィールドの宣言型とする。 

xiv) DPが,<マルチ集合要素リスト> MELに単純に含まれる<マルチ集合要素>であるか,又は<マ

ルチ集合要素リスト> MELに単純に含まれる<マルチ集合要素>の宣言型の下位フィールドSF

の値をDPが表現するならば,MELに単純に含まれる<マルチ集合要素>の宣言型をDTSETと

して,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって

戻されるRESTYPEをETとする。 

場合: 

1) DPが,MELの<マルチ集合要素>ならば,DTは,ETとする。 

2) そうでなければ,DTは,SFに対応するETの下位フィールドの宣言型とする。 

xv) DPが,<CAST指定> CSに単純に含まれる<CASTオペランド>であるか,又は<CAST指定> CS

に単純に含まれる<CASTオペランド>の宣言型の下位フィールドSFの値をDPが表現するな

らば,CSの単純に含まれる<CAST相手>をCTとする。 

1) 次のとおりに決定されるデータ型をRTとする。 

場合: 

A) CTがARRAY又はMULTISETを直に含むならば,RTは,未定義とする。 

B) CTが<データ型>を直に含むならば,RTは,そのデータ型とする。 

C) CTが<定義域名> Dを単純に含むならば,RTは,Dによって識別される定義域の宣言型と

する。 

2) 場合: 

A) DPがCSの<CASTオペランド>ならば,DTは,RTとする。 

B) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xvi) DPが,<CASE略式> CAに単純に含まれる<値式>であるか,又はそのような<値式>の宣言型

の下位フィールドSFの値をDPが表現するならば,CAに単純に含まれる<値式>の宣言型を

DTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用

によって戻されるRESTYPEをRTとする。 

場合: 

1) DPが,CAに単純に含まれる<値式>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xvii) DPが,<CASE指定> CEに単純に含まれる<結果式>であるか,又はそのような<結果式>の宣

言型の下位フィールドSFの値をDPが表現するならば,CEに単純に含まれる<結果式>の宣

言型をDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文

規則の適用によって戻されるRESTYPEをRTとする。 

場合: 

1) DPが,CEに単純に含まれる<結果式>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xviii) DPが,<単純CASE> CEに単純に含まれる<CASEオペランド>又は<WHENオペランド>で

あるか,又はそのような<CASEオペランド>又は<WHENオペランド>の宣言型の下位フィー

ルドSFの値をDPが表現するならば,次による。 

1) 次の宣言型の集合の和集合をSDTとする。 

820 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

A) <CASEオペランド>の宣言型から成る集合。 

B) <行値述語オペランド>であるCEの<WHENオペランド>の宣言型から成る集合。 

C) CEに単純に含まれる<比較述語部分2>,<BETWEEN述語部分2>,<文字LIKE述語部分

2>,<オクテットLIKE述語部分2>,<SIMILAR述語部分2>,<LIKE̲REGEX述語部分2>,

<OVERLAPS述語部分2>,<DISTINCT述語部分2>又は<MEMBER述語部分2>に単純に含

まれる<行値述語オペランド>の宣言型から成る集合。 

D) CEに単純に含まれる<IN述語部分2>,<MATCH述語部分2>又は<限定比較述語部分2>に

単純に含まれる<表副問合せ>の宣言行型から成る集合。 

E) CEに単純に含まれる<IN述語部分2>に単純に含まれる<IN値リスト>に単純に含まれる<

行値式>の宣言型から成る集合。 

14 注記537 次の述語“部分2”は,宣言型情報をもつどんな値式ももたない。<NULL述語

部分2>,<NORMALIZED述語部分2>,<SET述語部分2>,<型述語部分2>。 

2) SDTをDTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文

規則の適用によって戻されるRESTYPEをRTとする。 

3) 場合: 

A) DPが,CEに単純に含まれる<CASEオペランド>又は<WHENオペランド>ならば,DTは,

RTとする。 

B) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xix) 

DPが,<表値構成子>若しくは<文脈型付き表値構成子> TVCに単純に含まれる<行値式>若し

くは<文脈型付き行値式>であるか,又はそのような<行値式>若しくは<文脈型付き行値式>の

宣言型の下位フィールドSFの値をDPが表現するならば,次による。 

場合: 

1) 次のとおりに決定されるデータ型をRTとする。 

場合: 

A) <INSERT文> ISに単純に含まれる<問合せ式>にTVCが単純に含まれるか,又は<INSERT

文> ISの<挿入列及び挿入元>にTVCが直に含まれるならば,RTは,i番目のフィールド

の宣言型が,ISの陽に指定されるか又は暗に想定される<挿入列リスト>中のi番目の列の

宣言型である行型とし,RTの次数は,ISの陽に指定されるか又は暗に想定される<挿入列

リスト>の列の個数と等しい。 

B) そうでなければ,TVCに単純に含まれる<行値式>又は<文脈型付き行値式>の宣言型を

DTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。RTは,これらの構

文規則の適用によって戻されるRESTYPEとする。 

2) 場合: 

A) DPが,TVCに単純に含まれる<行値式>又は<文脈型付き行値式>ならば,DTは,RTとす

る。 

B) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xx) 

DPが,<MERGE文>の<併合挿入指定> MISの<併合挿入値リスト>に単純に含まれる<値式>

であるか,又はそのような<値式>の宣言型の下位フィールドSFの値をDPが表現するなら

ば,MISに含まれる陽に指定されるか又は暗に想定される<挿入列リスト>中の位置で対応す

る列の列記述子中で示されるデータ型をRTとする。 

821 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

1) DPが,MISに単純に含まれる<値式>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxi) 

DPが,<比較述語>,<DISTINCT述語>又は<BETWEEN述語> PRに単純に含まれる<行値述

語オペランド>であるか,又はそのような<行値述語オペランド>の宣言型の下位フィールド

SFの値をDPが表現するならば,PRに単純に含まれる<行値述語オペランド>の宣言型を

DTSETとして,“9.5 データ型組合せの結果”の構文規則を適用する。これらの構文規則の適

用によって戻されるRESTYPEをRTとする。 

場合: 

1) DPが,PRに単純に含まれる<行値述語オペランド>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxii) DPが,<限定比較述語>又は<MATCH述語> PRに単純に含まれる<行値述語オペランド>であ

るか,又はそのような<行値述語オペランド>の宣言型の下位フィールドSFの値をDPが表

現するならば,PRに単純に含まれる<表副問合せ>の宣言型をRTとする。 

場合: 

1) DPが,PRに単純に含まれる<行値述語オペランド>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxiii) DPが,<IN述語> PRに単純に含まれる<行値述語オペランド>であるか,又はそのような<行

値述語オペランド>の宣言型の下位フィールドSFの値をDPが表現するならば,PRに単純

に含まれる<行値述語オペランド>の宣言型及びPRに単純に含まれる<表副問合せ>(がある

ならば,その<表副問合せ>)の宣言行型をDTSETとして,“9.5 データ型組合せの結果”の

構文規則を適用する。これらの構文規則の適用によって戻されるRESTYPEをRTとする。 

場合: 

1) DPが,PRに単純に含まれる<行値述語オペランド>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxiv) DPが,<OVERLAPS述語> PR中の<行値述語オペランド1> RV1又は<行値述語オペランド

2> RV2のいずれかに単純に含まれる1番目の<行値構成子要素>ならば,次による。 

場合: 

1) DPVに対する基準を1番目の<行値構成子要素>が満たす<行値構成子述語オペランド>を,

RV1及びRV2の両方が単純に含むならば,DTは,TIMESTAMP WITH TIME ZONEとする。 

2) そうでなければ,DPがRV1又はRV2に単純に含まれるならば,DTは,それぞれ,RV2又

はRV1の1番目のフィールドの宣言型とする。 

xxv) DPが<文字LIKE述語>,<オクテットLIKE述語>又は<SIMILAR述語> PRに単純に含まれ

るならば,PRに直に含まれる<行値述語オペランド>をX1で表現し,<文字パターン>,<オ

クテットパターン>又は<類似パターン>をX2で表現し,<エスケープ文字>又は<エスケープ

オクテット>をX3で表現する。 

場合: 

1) DPVに対する基準を全てのX1,X2及びX3が満たすならば,DTは,処理系定義の文字集合

のCHARACTER VARYING (ML) とする。 

2) そうでなければ,X1,X2及びX3の宣言型をDTSETとして,“9.5 データ型組合せの結果”

822 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の構文規則を適用する。これらの構文規則の適用によって戻されるRESTYPEをRTとする。 

場合: 

A) RTが,文字集合CSのCHARACTER又はCHARACTER VARYINGならば,DTは,文字集

合CSのCHARACTER VARYING (ML) とする。 

B) そうでなければ,DTは,RTとする。 

xxvi) DPが,<設定句> SCの<更新元>に単純に含まれる<値式>であるか,又はそのような<値式>

の宣言型の下位フィールドSFの値をDPが表現するならば,SC中に指定された<更新相手>

又は<変異設定句>の宣言型をRTとする。 

場合: 

1) DPが,SCに単純に含まれる<値式>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxvii) 04 DPが,<設定句> SCの<複数列代入> MCAに単純に含まれる<文脈型付き行値式>である

か,又はそのような<文脈型付き行値式>の宣言型の下位フィールドSFの値をDPが表現す

るならば,i番目のフィールドの宣言型が,MCAの<設定相手リスト>に含まれるi番目の<設

定相手>に直に含まれる<更新相手>又は<変異設定句>の宣言型である行型をRTとする。 

場合: 

1) DPが,MCAに単純に含まれる<文脈型付き行値式>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxviii) DPが,<カタログ名特性>,<スキーマ名特性>,<文字集合名特性>,<SQLパス特性>,<変換

グループ特性>,<役割指定>又は<セション利用者識別子設定文>に直に含まれる<値指定>な

らば,DTは,処理系定義の文字集合のCHARACTER VARYING (ML) とする。 

xxix) DPが,<地方時刻帯設定文>に直に含まれる<時間隔値式>ならば,DTは,INTERVAL HOUR 

TO MINUTEとする。 

xxx) <ルーチン呼出し> RIをROUTINE INVOCATIONとして,“10.4 ルーチン呼出し”の構文規

則を呼び出して,当該ルーチンSRを生成する。 

xxxi) 

04 DPがRIの<SQL引数>であるか又はそのような<SQL引数>に直に含まれる<値式>の宣言

型の下位フィールドSFの値をDPが表現し,かつ,DPがRIのi番目の<SQL引数>である

か又はRIのi番目の<SQL引数>に含まれるならば,SRのi番目のSQLパラメタの宣言型を

RTで示す。 

場合: 

1) DPがRIのi番目の<SQL引数>ならば,DTは,RTとする。 

2) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。 

xxxii) <ウィンドウ指定> WSに含まれる<ウィンドウ枠PRECEDING>又は<ウィンドウ枠

FOLLOWING>にDPが含まれるならば,次による。 

場合: 

1) WSがROWS又はGROUPSを指定するならば,DTは,NUMERIC (MP, 0) とする。 

2) そうでなければ,WSに含まれる単一の<ソートキー>の宣言型をSDTとする。 

場合: 

A) SDTが数型ならば,DTは,SDTとする。 

B) SDTがDATEならば,DTは,INTERVAL DAYとする。 

823 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

C) SDTがTIME(P) WITHOUT TIME ZONE又はTIME(P) WITH TIME ZONEならば,DTは,

INTERVAL HOUR TO SECOND (P) とする。 

D) SDTがTIMESTAMP(P) WITHOUT TIME ZONE又はTIMESTAMP(P) WITH TIME ZONEな

らば,DTは,INTERVAL DAY TO SECOND (P) とする。 

E) SDTが時間隔型ならば,DTは,SDTとする。 

xxxiii) DPが,<NTILE関数>に単純に含まれる<タイル数>か又は<NTH̲VALUE関数>に単純に含ま

れる<n番目の行>ならば,DTは,INTEGERとする。 

xxxiv) DPが<行マーカ変位>ならば,DTは,NUMERIC (MP, 0) とする。 

xxxv) DPが,<VALUE̲OF式AT行> VOFに単純に含まれる<VALUE̲OFの既定値>ならば,DTは,

VOFに直に含まれる<値式>の宣言型とする。 

xxxvi) DPが,<HOLD LOCATOR文>又は<FREE LOCATOR文>に単純に含まれる<位置付け子参照

>ならば,DTは,INTEGERとする。 

xxxvii) DPが,<OCCURRENCES̲REGEX関数>,<POSITION̲REGEX式>,<SUBSTRING̲REGEX

関数>,<TRANSLATE̲REGEX関数>又は<LIKE̲REGEX述語> FUNに直に含まれる<XQuery

パターン>,<XQueryオプションフラグ>,<REGEX当該文字列>又は<XQuery置換文字列>で

あり,かつ,FUNに直に含まれる<XQueryパターン>,<XQueryオプションフラグ>,<REGEX

当該文字列>又は<XQuery置換文字列>が存在するならば,<動的パラメタ指定>でない

<XQueryパターン>,<XQueryオプションフラグ>,<REGEX当該文字列>又は<XQuery置換

文字列>の文字集合をCSとする。DTは,CHARACTER VARYING(ML) CHARACTER SET CS

とする。 

xxxviii) 

14 DPが,<OCCURRENCES̲REGEX関数>,<POSITION̲REGEX式>,

<SUBSTRING̲REGEX関数>又は<TRANSLATE̲REGEX関数>に直に含まれる<開始位置>,

<REGEX出現回数>又は<REGEXキャプチャグループ>ならば,DTは,NUMERIC(MP) とす

る。 

b) DTが未定義ならば,例外条件:構文誤り又はアクセス規則違反 (syntax error or access rule violation) 

が引き起こされる。 

6) <準備可能文>の形式,構文規則及びアクセス規則にPが適合しないか,又はPが<単純注釈>を含む

ならば,次による。 

場合: 

a) 曖昧な<準備可能動的カーソル名>をPが含むならば,例外条件:曖昧なカーソル名 (ambiguous 

cursor name) が引き起こされる。 

b) 正しくない<準備可能動的カーソル名>をPが含むならば,例外条件:カーソル名が正しくない 

(invalid cursor name) が引き起こされる。 

c) そうでなければ,例外条件:構文誤り又はアクセス規則違反 が引き起こされる。 

7) <動的パラメタ指定>が入力引数か,出力引数か,又は入出力引数(入力引数で,かつ,出力引数)

かは,次のとおりに決定される。 

場合: 

a) Pが<CALL文>ならば,次による。 

i) 

Pに直に含まれる<ルーチン呼出し> RIの当該ルーチンをSRとする。RIに直に含まれる<SQL

引数リスト>中の<SQL引数>の個数をnとする。 

824 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) RIに直に含まれる<SQL引数リスト>のy番目の<SQL引数>をAy,1 ≤ y ≤ nとする。 

iii) <SQL引数> Ak,1 ≤ k ≤ nに含まれる各<動的パラメタ指定> Dに対して,次による。 

1) SRのk番目のSQLパラメタの<パラメタモード>がIN又はINOUTならば,Dは,入力<動

的パラメタ指定>とする。 

2) SRのk番目のSQLパラメタの<パラメタモード>がOUT又はINOUTならば,Dは,出力<

動的パラメタ指定>とする。 

b) そうでなければ,次による。 

i) 

<動的パラメタ指定>が<相手指定>に含まれるならば,それは,出力<動的パラメタ指定>とする。 

ii) <動的パラメタ指定>が<値指定>に含まれるならば,それは,入力<動的パラメタ指定>とする。 

8) <SQL文名>に対して<拡張文名>が指定されるならば,<単純値指定>をSとし,次のTRIM関数の

結果である文字列をVとする。 

TRIM ( BOTH ' ' FROM S ) 

場合: 

a) <識別子>の形式及び構文規則にVが適合しないならば,例外条件:SQL文識別子が正しくない 

(invalid SQL statement identifier) が引き起こされる。 

b) そうでなければ,<拡張文名>をESNとする。ESNの値は,Vとする。 

9) <SQL文名>が被準備文PSを識別するならば,暗に想定される次の文が実行される。 

DEALLOCATE PREPARE SSN 

ここで,SSNは,PSを識別する<SQL文名>とする。 

10) Pは,実行のために準備され,被準備文PRPになる。 

場合: 

a) <PREPARE文>が<SQL呼出しルーチン> Rに含まれるならば,次による。 

場合: 

i) 

Rの安全保護特性がDEFINERならば,PRPの所有者には,Rの所有者が設定される。 

ii) そうでなければ,PRPには,所有者はない。 

b) <PREPARE文>が被トリガ動作に含まれるならば,PRPの所有者には,トリガの所有者が設定さ

れる。 

c) そうでなければ,次による。 

注記538 <PREPARE文>が上記のどちらでもないならば,それは,必然的に,外部呼出し手続に

直に含まれるはずである。 

場合: 

i) 

<PREPARE文>を含むSQLクライアントモジュールが<モジュール認可識別子> MAIをもち,

かつ,<SQLクライアントモジュール定義>中でFOR STATIC ONLYが指定されなかったならば,

PRPの所有者は,MAIとする。 

ii) そうでなければ,PRPには,所有者はない。 

11) <ATTRIBUTES指定>が指定されるならば,<属性変数>の内容をATVとする。ATVが長さ0の文字

列でなく,かつ,“20.7 <カーソル属性の並び>”の形式及び構文規則にATVが適合しないならば,

例外条件:構文誤り又はアクセス規則違反 が引き起こされる。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<PREPARE文>を含んではならない。 

825 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 機能B034“カーソル属性の動的指定”なしでは,適合するSQL言語は,<ATTRIBUTES指定>を含

んではならない。 

20.7 <カーソル属性の並び> 

機能 

<カーソル属性の並び> (<cursor attributes>) は,カーソル属性のリストを指定する。 

形式 

<カーソル属性の並び> ::= 

  <カーソル属性>... 

<カーソル属性> ::= 

  <カーソル感度> 

| <カーソルスクロール可能性> 

| <カーソル保持可能性> 

| <カーソル戻り可能性> 

構文規則 

1) <カーソル感度>,<カーソルスクロール可能性>,<カーソル保持可能性>及び<カーソル戻り可能性

>のそれぞれを,高々1回指定しなければならない。 

アクセス規則 

なし。 

一般規則 

なし。 

適合性規則 

なし。 

20.8 <DEALLOCATE PREPARE文> 

この細分箇条は,ISO/IEC 9075-9の“17.3 <DEALLOCATE PREPARE文>”によって修正される。 

機能 

<DEALLOCATE PREPARE文> (<deallocate prepared statement>) は,<PREPARE文>で準備されたSQL文

を解放する。 

形式 

<DEALLOCATE PREPARE文> ::= 

  DEALLOCATE PREPARE <SQL文名> 

構文規則 

1) <SQL文名>が<文名>ならば,次による。 

場合: 

a) <DEALLOCATE PREPARE文>が<SQL呼出しルーチン>に含まれるならば,<DEALLOCATE 

PREPARE文>を含む最も内側の<SQL呼出しルーチン>は,<DEALLOCATE PREPARE文>の<文名

>と等価な<文名>をもつ<PREPARE文>を含まなければならない。 

b) そうでなければ,<DEALLOCATE PREPARE文>を含む<SQLクライアントモジュール定義>は,

<DEALLOCATE PREPARE文>の<文名>と等価な<文名>をもつ<PREPARE文>を含まなければな

らない。 

アクセス規則 

826 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

なし。 

一般規則 

1) 

09 <SQL文名>が被準備文を識別しないならば,例外条件:SQL文名が正しくない (invalid SQL 

statement name) が引き起こされる。 

2) <SQL文名>が,開いているカーソルの<カーソル指定>である被準備文を識別するならば,例外条

件:カーソル状態が正しくない (invalid cursor state) が引き起こされる。 

3) <SQL文名>によって識別される被準備文が破壊される。被準備文に関連付けられているどの宣言動

的カーソルのカーソル実現値記述子も,破壊される。<SQL文名>によって識別される被準備文に関

連付けられているどの拡張動的カーソルのカーソル宣言記述子及びカーソル実現値記述子も,破壊

される。<SQL文名>の値が,<カーソル指定>である既存の被準備文を識別するならば,そのカーソ

ルを参照するどの被準備文も,破壊される。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<DEALLOCATE PREPARE文>を含ん

ではならない。 

20.9 <記述文> 

この細分箇条は,ISO/IEC 9075-9の“17.4 <記述文>”によって修正される。 

機能 

<記述文> (<describe statement>) は,被準備文に含まれる<選択リスト>の列若しくは<動的パラメタ指定

>についての情報,又はカーソルに関連付けられた結果集合の列についての情報を得る。 

形式 

<記述文> ::= 

  <入力DESCRIBE文> 

| <出力DESCRIBE文> 

<入力DESCRIBE文> ::= 

  DESCRIBE INPUT <SQL文名> <USING記述子> [ <入れ子選択肢> ] 

<出力DESCRIBE文> ::= 

  DESCRIBE [ OUTPUT ] <記述対象> <USING記述子> [ <入れ子選択肢> ] 

<入れ子選択肢> ::= 

  WITH NESTING 

| WITHOUT NESTING 

<USING記述子> ::= 

  USING [ SQL ] DESCRIPTOR <記述子名> 

<記述対象> ::= 

  <SQL文名> 

| CURSOR <カーソル名> STRUCTURE 

構文規則 

1) <SQL文名>が<文名>ならば,次による。 

場合: 

a) <記述文>が<SQL呼出しルーチン>に含まれるならば,<記述文>を含む最も内側の<SQL呼出しル

ーチン>は,<記述文>の<文名>と等価な<文名>をもつ<PREPARE文>を含まなければならない。 

827 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) そうでなければ,<記述文>を含む<SQLクライアントモジュール定義>は,<記述文>の<文名>と

等価な<文名>をもつ<PREPARE文>を含まなければならない。 

2) <入れ子選択肢>が指定されないならば,WITHOUT NESTINGが暗に想定される。 

3) <記述対象>が<カーソル名> CNを単純に含むならば,CNは,受取りカーソルを識別しなければな

らない。 

アクセス規則 

なし。 

一般規則 

1) 

09 <SQL文名>が指定され,かつ,被準備文PSを識別しないならば,例外条件:SQL文名が正しく

ない (invalid SQL statement name) が引き起こされる。 

2) <カーソル名> CNが指定されるならば,次による。 

a) CNによって識別される受取りカーソルをCRとする。CRが開いている状態でないならば,例外

条件:カーソル状態が正しくない (invalid cursor state) が引き起こされる。 

b) CRの結果集合記述子に含まれる<カーソル指定>をCSとする。SQLセション中の他のどの<SQL

文名>とも異なる処理系依存の<SQL文名>をISSNとする。次の文が実行され,結果として被準備

文PSをもたらす。 

PREPARE ISSN FROM CS 

3) <記述子名>がSQL記述子領域を識別しないならば,例外条件:SQL記述子名が正しくない (invalid 

SQL descriptor name) が引き起こされる。 

4) <記述子名>によって識別される記述子領域をDAとする。DAが割り当てられたときに指定された<

実現値>をNとする。 

5) 場合: 

a) 実行されている文が<入力DESCRIBE文>ならば,PSの入力<動的パラメタ指定>のための記述子

がDAに格納される。この規格群のこの規格又は他の規格の構文規則で規定するどの構文上の変

換よりも前のPS中の入力<動的パラメタ指定>の個数をDとする。WITH NESTINGが指定される

ならば,i番目の入力動的パラメタのための記述子の下位にある記述子の個数をNSi,1 ≤ i ≤ Dと

する。そうでなければ,0をNSiとする。 

注記539 構文上の変換が,<動的パラメタ指定>を複製するという明確な影響を与えるならば,

<動的パラメタ指定>の各複製が同じ動的パラメタを表現し,新しい動的パラメタを構

成しないことが分かっている。例えば,次のBETWEEN述語 

? BETWEEN 1 AND 3 

は,“8.3 <BETWEEN述語>”の構文規則によって,次の探索条件に変換されるが,こ

の変換の結果として,動的パラメタは,二つではなく,一つだけのままである。 

(? >= 1 AND ? <= 3) 

b) 実行されている文が<出力DESCRIBE文>で,かつ,PSが<動的SELECT文>又は<動的単一行

SELECT文>ならば,PSの<選択リスト>の列のための記述子がDAに格納される。PSによって定

義される表をTとし,Tの次数をDとする。WITH NESTINGが指定されるならば,Tのi番目の

列のための記述子の下位にある記述子の個数をNSi,1 ≤ i ≤ Dとする。そうでなければ,0をNSi

とする。 

c) そうでなければ,PSの出力<動的パラメタ指定>のための記述子がDAに格納される。PS中の出

828 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

力<動的パラメタ指定>の個数をDとする。WITH NESTINGが指定されるならば,i番目の出力動

的パラメタのための記述子の下位にある記述子の個数をNSi,1 ≤ i ≤ Dとする。そうでなければ,

0をNSiとする。 

6) DAは,次のとおりに設定される。 

a) D + NS1 + NS2 + ... + NSDの値をTDとする。COUNTには,TDが設定される。 

b) TOP̲LEVEL̲COUNTには,Dが設定される。 

c) DYNAMIC̲FUNCTION及びDYNAMIC̲FUNCTION̲CODEには,それぞれ,表32“SQL文のコ

ード”で示すとおりの,PSに対する識別子及びコードが設定される。準備されたが,まだ動的に

実行されていない<動的SELECT文>又は<動的単一行SELECT文>を記述するために,<動的

SELECT文>又は<動的単一行SELECT文>に対する表32“SQL文のコード”の識別子及びコード

が用いられるかどうかは,処理系定義とする。 

d) 実行されている文が<出力DESCRIBE文>で,かつ,PSが<動的SELECT文>又は<動的単一行

SELECT文>ならば,次による。 

場合: 

i) 

Tの列の部分集合がTの主キーならば,KEY̲TYPEには,1が設定される。 

ii) Tの列の部分集合がTの優先候補キーならば,KEY̲TYPEには,2が設定される。 

iii) そうでなければ,KEY̲TYPEには,0が設定される。 

注記540 主キー及び優先候補キーは,“4.19 関数従属性”で定義している。 

e) TDがNを超えるならば,終了条件:警告 (warning) − 不十分な項目記述子領域 (insufficient item 

descriptor areas) が引き起こされる。 

f) TDが0か又はTDがNを超えるならば,どの項目記述子領域にも設定されない。そうでなけれ

ば,次による。 

i) 

最初のTD個の項目記述子領域には,次の項目に対する記述子からの値,及び選択的に,下位

にある記述子からの値が設定される。 

場合: 

1) 実行されている文が<入力DESCRIBE文>ならば,入力<動的パラメタ指定>。 

2) 実行されている文が<出力DESCRIBE文>で,かつ,記述されている文が<動的SELECT文>

又は<動的単一行SELECT文>ならば,Tの列。 

3) そうでなければ,出力<動的パラメタ指定>。 

ii) そのような1番目の列又は<動的パラメタ指定>のための記述子は,1番目の項目記述子領域に

代入される。 

iii) j番目の列又は<動的パラメタ指定>のための記述子がk番目の項目記述子領域に代入されるな

らば,次による。 

1) (j+1)番目の列又は<動的パラメタ指定>のための記述子は,(k+NSj+1) 番目の項目記述子領域

に代入される。 

2) WITH NESTINGが指定されるならば,j番目の列又は<動的パラメタ指定>のための,暗に順

序付けられた下位にある記述子が,(k+1) 番目の項目記述子領域から始まる連続する項目記

述子領域に代入される。 

7) SQL項目記述子領域が設定されるならば,それは,LEVEL,TYPE,NULLABLE,NAME,UNNAMED,

PARAMETER̲ORDINAL̲POSITION,PARAMETER̲SPECIFIC̲CATALOG, 

829 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

PARAMETER̲SPECIFIC̲SCHEMA,PARAMETER̲SPECIFIC̲NAME,及び下記に記述するとおりに

TYPEの値に依存する他のフィールドの値から成る。DATA及びINDICATORフィールドは,関係し

ない。これらのフィールド及びTYPEの特定の値に対して適用可能でないフィールドには,処理系

依存の値が設定される。 

a) SQL項目記述子領域に,LEVEL値がKである別の記述子の直に下位にある記述子が設定される

ならば,LEVELには,K+1が設定される。そうでなければ,LEVELには,0が設定される。 

b) TYPEには,列,<動的パラメタ指定>又は下位にある記述子の宣言型を示すための,表25“動的

SQL中でSQLデータ型のために用いるコード”で規定するとおりのコードが設定される。 

c) 場合: 

i) 

LEVEL値が0で,かつ,項目記述子領域が列を記述するならば,次による。 

1) 列が潜在的にナル可能ならば,NULLABLEには,1が設定される。そうでなければ,

NULLABLEには,0が設定される。 

2) 列名が処理系依存ならば,NAMEには,列の処理系依存の名前が設定され,UNNAMEDには,

1が設定される。そうでなければ,NAMEには,列に対する<導出列>の名前が設定され,

UNNAMEDには,0が設定される。 

3) 列がTの主キーの要素で,かつ,KEY̲TYPEに1が設定されたか,又は列がTの優先候補キ

ーの要素で,かつ,KEY̲TYPEに2が設定されたならば,KEY̲MEMBERには,1が設定さ

れる。そうでなければ,KEY̲MEMBERには,0が設定される。 

ii) LEVELの値が0で,かつ,項目記述子領域が<動的パラメタ指定>を記述するならば,次によ

る。 

1) NULLABLEには,1が設定される。 

注記541 これは,<動的パラメタ指定>がナル値をもつことができることを示す。 

2) UNNAMEDには,1が設定され,NAMEには,処理系依存の名前が設定される。 

3) KEY̲MEMBERには,0が設定される。 

iii) そうでなければ,次による。 

1) NULLABLEには,1が設定される。 

2) 場合: 

A) 項目記述子領域が行のフィールドを記述するならば,次による。 

場合: 

I) 

フィールドの名前が処理系依存ならば,NAMEには,フィールドの処理系依存の名前が

設定され,UNNAMEDには,1が設定される。 

II) そうでなければ,NAMEには,フィールドの名前が設定され,UNNAMEDには,0が設

定される。 

B) そうでなければ,UNNAMEDには,1が設定され,NAMEには,処理系依存の名前が設定

される。 

3) KEY̲MEMBERには,0が設定される。 

d) 場合: 

i) 

TYPEが<文字列型>を示すならば,次による。 

1) LENGTHには,文字列型の文字単位での長さ又は最大長が設定される。 

2) OCTET̲LENGTHには,文字列型のオクテット単位での可能な最大長が設定される。 

830 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

3) CHARACTER̲SET̲CATALOG,CHARACTER̲SET̲SCHEMA及びCHARACTER̲SET̲NAME

には,文字列型の文字集合の完全修飾付きの名前が設定される。 

4) COLLATION̲CATALOG,COLLATION̲SCHEMA及びCOLLATION̲NAMEには,文字列型

の宣言型照合順があるならば,その宣言型照合順の完全修飾付きの名前が設定され,そうで

なければ,長さ0の文字列が設定される。 

当該<LANGUAGE句>がCを指定するならば,LENGTH及びOCTET̲LENGTH中で指定

される長さは,C文字列を終了させる処理系定義のナル文字を含まない。 

ii) TYPEが<2進オクテット列型>を示すならば,LENGTH及びOCTET̲LENGTHには,2進オク

テット列のオクテット単位での長さ又は最大長が設定される。 

iii) TYPEが<真数型>を示すならば,PRECISION及びSCALEには,真数の精度及び位取りが設定

される。 

iv) TYPEが<概数型>を示すならば,PRECISIONには,概数の精度が設定される。 

v) TYPEが<日時型>を示すならば,LENGTHには,日時型の位置単位での長さが設定され,

DATETIME̲INTERVAL̲CODEには,特定の日時データ型を示すための,表26“動的SQL中で

日時データ型に関連付けられるコード”で規定するとおりのコードが設定され,PRECISIONに

は,<時刻精度>又は<時刻印精度>のいずれかが,適用可能ならば,設定される。 

vi) TYPEが<時間隔型>を示すならば,LENGTHには,時間隔型の位置単位での長さが設定され,

DATETIME̲INTERVAL̲CODEには,時間隔データ型の<時間隔修飾子>を示すための,表27“動

的SQL中で<時間隔修飾子>のために用いるコード”で規定するとおりのコードが設定され,

DATETIME̲INTERVAL̲PRECISIONには,<時間隔先行フィールド精度>が設定され,

PRECISIONには,適用可能ならば,<時間隔小数秒精度>が設定される。 

vii) TYPE

が利用者定義型を示すならば,USER̲DEFINED̲TYPE̲CATALOG,

USER̲DEFINED̲TYPE̲SCHEMA及びUSER̲DEFINED̲TYPE̲NAMEには,利用者定義型の完

全修飾付きの名前が設定され,USER̲DEFINED̲TYPE̲CODEには,利用者定義型のカテゴリ

を示すための,表29“動的SQL中で利用者定義型に関連付けられるコード”で規定するとおり

のコードが設定される。 

viii) TYPEが<参照型>を示すならば,次による。 

1) USER̲DEFINED̲TYPE̲CATALOG,USER̲DEFINED̲TYPE̲SCHEMA及び 

USER̲DEFINED̲TYPE̲NAMEには,被参照型の完全修飾付きの名前が設定される。 

2) SCOPE̲CATALOG,SCOPE̲SCHEMA及びSCOPE̲NAMEには,参照可能表の完全修飾付き

の名前が設定される。 

3) LENGTH及びOCTET̲LENGTHには,<参照型>のオクテット単位での長さが設定される。 

ix) TYPEがROWを示すならば,DEGREEには,行型の次数が設定される。 

x) 

09 TYPEがARRAYを示すならば,CARDINALITYには,配列型の最大基数が設定される。 

e) LEVELが0で,かつ,PSが<CALL文>ならば,次による。 

i) 

<CALL文>の<ルーチン呼出し>の当該ルーチンをSRとする。 

ii) <CALL文>のSQL引数Ayに単純に含まれるx番目の<動的パラメタ指定>をDxとする。 

iii) SRのy番目のSQLパラメタをPyとする。 

注記542 INである<パラメタモード>をもつPは,0個又は1個以上の<動的パラメタ指定>を

含む<値式>の可能性がある。したがって,次のとおりである。 

831 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− どのDxも,一つの,かつ,唯一のPyに対応する。 

− 幾つかのDxの実現値が同じPyに対応する可能性がある。 

− 対応するDxの実現値をもたないPyの実現値が存在する可能性がある。 

iv) 各Dxに対する記述子中のPARAMETER̲MODEの値には,表28“動的SQL中で入力/出力

SQLパラメタのために用いるコード”中の,Pyの<パラメタモード>を示す値が設定される。 

v) 各Dxに対する記述子中のPARAMETER̲ORDINAL̲POSITIONには,Pyの順序位置が設定さ

れる。 

vi) 各Dxに対する記述子中のPARAMETER̲SPECIFIC̲CATALOG, 

PARAMETER̲SPECIFIC̲SCHEMA及びPARAMETER̲SPECIFIC̲NAMEには,SRのカタログ

名,スキーマ名及び特定名を識別する値が設定される。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<入力DESCRIBE文>を含んではなら

ない。 

2) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<SQL文名>である<記述対象>を含む

<出力DESCRIBE文>を含んではならない。 

3) 機能T472“DESCRIBE CURSOR”なしでは,適合するSQL言語は,<カーソル名>を含む<記述対象

>を含む<出力DESCRIBE文>を含んではならない。 

20.10 

<入力USING句> 

この細分箇条は,ISO/IEC 9075-4の“15.2 <入力USING句>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“17.5 <入力USING句>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“17.2 <入力USING句>”によって修正される。 

機能 

<入力USING句> (<input using clause>) は,<動的SQL文>に対して入力値を与える。 

形式 

<入力USING句> ::= 

  <USING引数> 

| <USING入力記述子> 

<USING引数> ::= 

  USING <USING句の引数> [ { <コンマ> <USING句の引数> }... ] 

<USING句の引数> ::= 

  <一般値指定> 

<USING入力記述子> ::= 

  <USING記述子> 

構文規則 

1) 

04 <USING句の引数>に直に含まれる<一般値指定>は,<ホストパラメタ指定>,<SQLパラメタ参照

>又は<埋込み変数指定>のいずれかでなければならない。 

アクセス規則 

なし。 

一般規則 

1) 

09 <記述子名>がSQL記述子領域を識別しないならば,例外条件:SQL記述子名が正しくない (invalid 

832 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SQL descriptor name) が引き起こされる。 

2) <入力USING句>が<動的OPEN文>中で用いられるとき又は<EXECUTE文>中の<パラメタUSING

句>として用いられるとき,<入力USING句>は,それぞれ,<動的OPEN文>又は<EXECUTE文>に

対する入力<動的パラメタ指定>の値を記述する。<動的OPEN文>によって参照される被準備<動的

SELECT文>,又は<EXECUTE文>によって参照される被準備文を,PSとする。 

3) この規格群の構文規則で規定するどの構文上の変換よりも前のPS中の入力<動的パラメタ指定>の

個数をDとする。 

4) <USING引数>が指定され,かつ,<USING句の引数>の個数がDでないならば,例外条件:動的SQL

誤り (dynamic SQL error) − USING句が動的パラメタ指定と一致しない (using clause does not match 

dynamic parameter specifications) が引き起こされる。 

5) <USING入力記述子>が指定されるならば,次による。 

a) COUNTの値をNとする。 

b) Nが,<記述子名>によって識別されるSQL記述子領域が割り当てられたときに指定された<実現

値>の値を超えるか又は0未満ならば,例外条件:動的SQL誤り − 記述子数が正しくない 

(invalid descriptor count) が引き起こされる。 

c) 最初のN個の項目記述子領域が,“20.1 SQL記述子領域の記述”で規定するとおりに正しくない

ならば,例外条件:動的SQL誤り − USING句が動的パラメタ指定と一致しない が引き起こさ

れる。 

d) 最初のN個の項目記述子領域中で,次による。 

i) 

LEVELの値が0である項目記述子領域の個数がDでないならば,例外条件:動的SQL誤り − 

USING句が動的パラメタ指定と一致しない が引き起こされる。 

ii) INDICATORの値が負ではなく,TYPEがROWを示さず,その項目記述子領域が,INDICATOR

の値が負であるか又はTYPEフィールドがARRAY,ARRAY LOCATOR,MULTISET又は

MULTISET LOCATORを示す項目記述子領域の下位にはなく,かつ,DATAの値が,項目記述

子領域によって表現されるデータ型の正しい値でないならば,例外条件:動的SQL誤り − 

USING句が動的パラメタ指定と一致しない が引き起こされる。 

6) 1 ≤ i ≤ Dに対して,次による。 

a) PSのi番目の入力<動的パラメタ指定>の記述を反映するために<入力DESCRIBE文>によって設

定される項目記述子領域及びそれの下位にある記述子領域によって表現される型として定義され

るi番目の入力<動的パラメタ指定>の実効的な宣言型を,TDTとする。 

注記543 “20.9 <記述文>”の一般規則参照。 

注記544 データ型と項目記述子領域との間の関係に適用される“によって表現される”は,“20.1 

SQL記述子領域の記述”の構文規則で定義している。 

b) 場合: 

i) 

<USING入力記述子>が指定されるならば,次による。 

1) LEVELの値が0であるi番目の項目記述子領域をIDAとする。 

2) IDAによって表現される実効的な宣言型をSDTとする。 

注記545 データ型と項目記述子領域との間の関係に適用される“によって表現される”は,

“20.1 SQL記述子領域の記述”の構文規則で定義している。 

3) IDAの関連する値 (associated value) をSVとする。 

833 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

場合: 

A) INDICATORの値が負ならば,SVは,ナル値とする。 

B) そうでなければ,次による。 

場合: 

I) 

TYPEがROWを示すならば,SVは,型がSDTで,かつ,フィールド値が,IDAの直に

下位にある記述子領域の関連する値である行とする。 

II) そうでなければ,SVは,データ型SDTをもつDATAの値とする。 

ii) <USING引数>が指定されるならば,i番目の<USING句の引数>の宣言型及び値を,それぞれ,

SDT及びSVとする。 

c) 場合: 

i) 

SDTが位置付け子型ならば,次による。 

場合: 

1) SVがナル値でないならば,SVの値をi番目の動的パラメタの値とする。 

2) そうでなければ,ナル値をi番目の動的パラメタの値とする。 

ii) 

14 SDT及びTDTが既定義データ型ならば,次による。 

場合: 

1) 次の<CAST指定>が“6.13 <CAST指定>”の構文規則に適合しないで,かつ,型STDから型

TDTへの処理系定義の変換が存在するならば,その処理系定義の変換が実効的に実行されて,

SVが型TDTに変換され,その結果は,i番目の入力動的パラメタの値TVとする。 

CAST ( SV AS TDT ) 

2) そうでなければ,次による。 

A) 次の<CAST指定>が“6.13 <CAST指定>”の構文規則に適合しないならば,例外条件:動

的SQL誤り − 制限されたデータ型属性違反 (restricted data type attribute violation) が引き

起こされる。 

CAST ( SV AS TDT ) 

B) 次の<CAST指定>が実効的に実行され,それは,i番目の入力動的パラメタの値とする。 

CAST ( SV AS TDT ) 

iii) SDTが既定義データ型で,かつ,TDTが利用者定義型ならば,次による。 

1) TDTによって識別されるデータ型をDTとする。 

2) DTの利用者定義型名に対応するグループ名を現行SQLセションがもつならば,そのグルー

プ名をGNとする。そうでなければ,現行SQLセションに関連付けられた既定変換グループ

名をGNとする。 

3) DTをTYPE,GNをGROUPとして,“9.23 TO-SQL関数の決定”の構文規則を適用する。 

場合: 

A) 適用可能なTO-SQL関数が存在するならば,そのTO-SQL関数をTSFとする。TSFがSQL

呼出しメソッドならば,TSFの2番目のSQLパラメタの宣言型をTSFPTとする。そうで

なければ,TSFの1番目のSQLパラメタの宣言型をTSFPTとする。 

場合: 

I) TSFPTがSDTと互換であるならば,次による。 

場合: 

834 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) TSFがSQL呼出しメソッドならば,次の関数呼出しによって戻される値を1番目のパ

ラメタとして,SVを第2番目のパラメタとして,TSFが実効的に呼び出される。 

DT() 

<戻り値>は,i番目の入力動的パラメタの値とする。 

2) そうでなければ,SVを1番目のパラメタとして,TSFが実効的に呼び出される。<戻

り値>は,i番目の入力動的パラメタの値とする。 

II) そうでなければ,例外条件:動的SQL誤り − 制限されたデータ型属性違反 が引き起

こされる。 

B) そうでなければ,例外条件:動的SQL誤り − データ型の変換関数違反 (data type transform 

function violation) が引き起こされる。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<入力USING句>を含んではならな

い。 

20.11 

<出力USING句> 

この細分箇条は,ISO/IEC 9075-4の“15.3 <出力USING句>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“17.6 <出力USING句>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“17.3 <出力USING句>”によって修正される。 

機能 

<出力USING句> (<output using clause>) は,<動的SQL文>に対して出力変数を与える。 

形式 

<出力USING句> ::= 

  <INTO引数> 

| <INTO記述子> 

<INTO引数> ::= 

  INTO <INTO句の引数> [ { <コンマ> <INTO句の引数> }... ] 

<INTO句の引数> ::= 

  <相手指定> 

<INTO記述子> ::= 

  INTO [ SQL ] DESCRIPTOR <記述子名> 

構文規則 

1) 

04 <INTO句の引数>に直に含まれる<相手指定>は,<ホストパラメタ指定>,<SQLパラメタ参照>又

は<埋込み変数指定>のいずれかでなければならない。 

アクセス規則 

なし。 

一般規則 

1) 

09 <出力USING句>が<動的FETCH文>中で用いられるとき又は<EXECUTE文>の<結果USING句>

として用いられるとき,それぞれ,<動的FETCH文>によって参照される被準備<動的SELECT文

>,又は<EXECUTE文>によって参照される被準備<動的単一行SELECT文>を,PSとする。 

2) 場合: 

a) PSが<動的SELECT文>又は<動的単一行SELECT文>ならば,PSによって指定される表の次数を

835 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

Dとする。 

b) そうでなければ,PSに含まれる出力<動的パラメタ指定>の個数をDとする。 

3) <INTO引数>が指定され,かつ,<INTO句の引数>の個数がDでないならば,例外条件:動的SQL

誤り (dynamic SQL error) − USING句が相手指定と一致しない (using clause does not match target 

specifications) が引き起こされる。 

4) <INTO記述子>が指定されるならば,次による。 

a) <記述子名>がSQL記述子領域を識別しないならば,例外条件:SQL記述子名が正しくない (invalid 

SQL descriptor name) が引き起こされる。 

b) COUNTの値をNとする。 

c) Nが,<記述子名>によって識別されるSQL記述子領域が割り当てられたときに指定された<実現

値>の値を超えるか又は0未満ならば,例外条件:動的SQL誤り − 記述子数が正しくない 

(invalid descriptor count) が引き起こされる。 

d) 最初のN個の項目記述子領域が,“20.1 SQL記述子領域の記述”で規定するとおりに正しくない

ならば,例外条件:動的SQL誤り − USING句が相手指定と一致しない が引き起こされる。 

e) 最初のN個の項目記述子領域中で,LEVELの値が0である項目記述子領域の個数がDでないな

らば,例外条件:動的SQL誤り − USING句が相手指定と一致しない が引き起こされる。 

5) 1 ≤ i ≤ Dに対して,次による。 

a) 次の<出力DESCRIBE文>によって設定された項目記述子領域及びそれの下位にある記述子領域

によって表現される型として定義されるi番目の<選択リスト>列又は出力<動的パラメタ指定>の

実効的な宣言型をSDTとする。 

場合: 

i) 

PSが<動的SELECT文>又は<動的単一行SELECT文>ならば,i番目の<選択リスト>列の記述

を反映する<出力DESCRIBE文>。データ型SDTをもつその<選択リスト>列の値をSVとする。 

ii) そうでなければ,i番目の出力<動的パラメタ指定>の記述を反映する<出力DESCRIBE文>。デ

ータ型SDTをもつその<動的パラメタ指定>の値をSVとする。 

注記546 データ型と項目記述子領域との間の関係に適用される“によって表現される”は,“20.1 

SQL記述子領域の記述”の構文規則で定義している。 

b) 場合: 

i) 

<INTO記述子>が指定されるならば,LEVELの値が0であるi番目の項目記述子領域IDAによ

って表現されるとおりのi番目の<相手指定>の宣言型をTDTとする。 

注記547 データ型と項目記述子領域との間の関係に適用される“によって表現される”は,

“20.1 SQL記述子領域の記述”の構文規則で定義している。 

ii) <INTO引数>が指定されるならば,i番目の<INTO句の引数>の宣言型をTDTとする。 

c) <出力USING句>が<動的FETCH文>に直接含まれるならば,<動的FETCH文>によって識別され

る動的カーソルをCRとし,カーソルCRに対して,現在の実行に先立って最も新しく実行され

た<動的FETCH文>があるならば,それのi番目の<相手指定>又は<INTO句の引数>の最特定型を

LTDTとする。次のいずれかが真ならば,例外条件:動的SQL誤り − 制限されたデータ型属性

違反 (restricted data type attribute violation) が引き起こされるかどうかは,処理系定義とする。 

i) 

LTDT及びTDTの両方が2進オクテット長大オブジェクト型を識別し,かつ,LTDT及びTDT

のうちの一方だけが2進オクテット長大オブジェクト位置付け子である。 

836 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) LTDT及びTDTの両方が文字長大オブジェクト型を識別し,かつ,LTDT及びTDTのうちの一

方だけが文字長大オブジェクト位置付け子である。 

iii) LTDT及びTDTの両方が配列型を識別し,かつ,LTDT及びTDTのうちの一方だけが配列位置

付け子である。 

iv) LTDT及びTDTの両方がマルチ集合型を識別し,かつ,LTDT及びTDTのうちの一方だけがマ

ルチ集合位置付け子である。 

v) LTDT及びTDTの両方が利用者定義型を識別し,かつ,LTDT及びTDTのうちの一方だけが利

用者定義型位置付け子である。 

d) 場合: 

i) 

TDTが位置付け子型ならば,次による。 

場合: 

1) SVがナル値でないならば,SVを一意に識別する位置付け子Lが生成され,それは,i番目の

<相手指定>の値TVとする。 

2) そうでなければ,i番目の<相手指定>の値TVは,ナル値とする。 

ii) 

14 STD及びTDTが既定義データ型ならば,次による。 

場合: 

1) 次の<CAST指定>が“6.13 <CAST指定>”の構文規則に適合しないで,かつ,型STDから型

TDTへの処理系定義の変換が存在するならば,その処理系定義の変換が実効的に実行されて,

SVが型TDTに変換され,その結果は,i番目の<相手指定>の値TVとする。 

CAST ( SV AS TDT ) 

2) そうでなければ,次による。 

A) 次の<CAST指定>が“6.13 <CAST指定>”の構文規則に適合しないならば,例外条件:動

的SQL誤り − 制限されたデータ型属性違反 が引き起こされる。 

CAST ( SV AS TDT ) 

B) 次の<CAST指定>が実効的に実行され,それは,i番目の<相手指定>の値TVとする。 

CAST ( SV AS TDT ) 

iii) SDTが利用者定義型で,かつ,TDTが既定義データ型ならば,次による。 

1) SDTによって識別されるデータ型をDTとする。 

2) DTの利用者定義型名に対応するグループ名を現行SQLセションがもつならば,そのグルー

プ名をGNとする。そうでなければ,現行SQLセションに関連付けられた既定変換グループ

名をGNとする。 

3) DTをTYPEとして,GNをGROUPとして,“9.21 FROM-SQL関数の決定”の構文規則を適

用する。 

場合: 

A) 適用可能なFROM-SQL関数が存在するならば,そのFROM-SQL関数をFSFとする。FSF

の<戻りデータ型>をFSFRTとする。 

場合: 

I) FSFRTがTDTと互換であるならば,FROM-SQL関数FSFが,SVをそれの入力SQLパ

ラメタとして実効的に呼び出され,<戻り値>は,i番目の<相手指定>の値TVとする。 

II) そうでなければ,例外条件:動的SQL誤り − 制限されたデータ型属性違反 が引き起

837 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

こされる。 

B) そうでなければ,例外条件:動的SQL誤り − データ型の変換関数違反 (data type transform 

function violation) が引き起こされる。 

e) 場合: 

i) 

<INTO記述子>が指定されるならば,IDAには,次のとおりにTVの値を反映するように設定され

る。 

場合: 

1) TYPEがROWを示すならば,次による。 

場合: 

A) TVがナル値ならば,IDA中のINDICATOR,及びTYPEがARRAY,ARRAY LOCATOR,

MULTISET又はMULTISET LOCATORを示す項目記述子領域の下位にはない,IDAの下位に

ある全ての記述子領域中のINDICATORには,-1の値が設定される。 

B) そうでなければ,IDAのi番目の下位にある記述子領域には,IDAのi番目の下位にある記

述子領域をIDAとして,TVのi番目のフィールドの値をTVとして,SVのi番目のフィー

ルドの値をSVとして,SVのi番目のフィールドのデータ型をSDTとして,(最も外側の“場

合”で始まる)この部分規則を適用することによって,TVのi番目のフィールドの値を反映

するように設定される。 

2) そうでなければ,次による。 

場合: 

A) TVがナル値ならば,INDICATORには,-1が設定される。 

B) TVがナル値でないならば,次による。 

I) INDICATORには,0が設定される。 

II) 場合: 

1) TYPEが位置付け子型を示すならば,TVを一意に識別する位置付け子Lが生成され,

DATAには,Lを表現する処理系依存の4オクテットの整数値が設定される。 

2) そうでなければ,DATAには,TVが設定される。 

III) 場合: 

1) TYPEがCHARACTER VARYING,CHARACTER LARGE OBJECT,BINARY VARYING

又はBINARY LARGE OBJECTを示すならば,RETURNED̲LENGTHには,それぞれ,

TVの文字単位又はオクテット単位での長さが設定され,RETURNED̲OCTET̲LENGTH

には,TVのオクテット単位での長さが設定される。 

2) SDTがCHARACTER VARYING,CHARACTER LARGE OBJECT,BINARY VARYING又

はBINARY LARGE OBJECTならば,RETURNED̲LENGTHには,それぞれ,SVの文字

単位又はオクテット単位での長さが設定され,RETURNED̲OCTET̲LENGTHには,SV

のオクテット単位での長さが設定される。 

3) TYPEがARRAY,ARRAY LOCATOR,MULTISET又はMULTISET LOCATORを示すな

らば,RETURNED̲CARDINALITYには,TVの基数が設定される。 

ii) <INTO引数>が指定されるならば,i番目の<INTO句の引数>をTARGETとして,TVをVALUE

として,“9.1取出し代入”の一般規則を適用する。 

注記548 SQL記述子領域の他の全ての値は,変更されない。 

838 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<出力USING句>を含んではならな

い。 

20.12 

<EXECUTE文> 

この細分箇条は,ISO/IEC 9075-9の“17.7 <EXECUTE文>”によって修正される。 

機能 

<EXECUTE文> (<execute statement>) は,入力SQLパラメタ及び出力相手を被準備文に関連付けて,文

を実行する。 

形式 

<EXECUTE文> ::= 

  EXECUTE <SQL文名> [ <結果USING句> ] [ <パラメタUSING句> ] 

<結果USING句> ::= 

  <出力USING句> 

<パラメタUSING句> ::= 

  <入力USING句> 

構文規則 

1) <SQL文名>が<文名>ならば,次による。 

場合: 

a) <EXECUTE文>が<SQL呼出しルーチン>に含まれるならば,<EXECUTE文>を含む最も内側の

<SQL呼出しルーチン>は,<EXECUTE文>の<文名>と等価な<文名>をもつ<PREPARE文>を含ま

なければならない。 

b) そうでなければ,<EXECUTE文>を含む<SQLクライアントモジュール定義>は,<EXECUTE文>

の<文名>と等価な<文名>をもつ<PREPARE文>を含まなければならない。 

アクセス規則 

なし。 

一般規則 

1) 

09 <SQL文名>が被準備文Pを識別しないならば,例外条件:SQL文名が正しくない (invalid SQL 

statement name) が引き起こされる。 

2) <SQL文名>を用いてあらかじめ準備される文をPSとする。 

3) PSが<動的SELECT文>ならば,次による。 

a) <動的単一行SELECT文>の形式及び構文規則にPSが適合しないならば,例外条件:動的SQL誤

り (dynamic SQL error) − カーソル指定が実行できない (cursor specification cannot be executed) 

が引き起こされる。 

b) そうでなければ,PSは,<動的単一行SELECT文>として扱われる。 

4) 作成局所一時表又は宣言局所一時表の<表名>をPSが含み,被準備文を準備した<PREPARE文>と同

じ<SQLクライアントモジュール定義>中に<EXECUTE文>がないならば,例外条件:構文誤り又は

アクセス規則違反 (syntax error or access rule violation) が引き起こされる。 

5) PSが入力<動的パラメタ指定>を含み,<パラメタUSING句>が指定されないならば,例外条件:動

的SQL誤り − 動的パラメタに対するUSING句が必要 (using clause required for dynamic parameters) 

が引き起こされる。 

839 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) PSが<動的単一行SELECT文>であるか又はそれが出力<動的パラメタ指定>を含み,<結果USING

句>が指定されないならば,例外条件:動的SQL誤り − 結果フィールドに対するUSING句が必

要 (using clause required for result fields) が引き起こされる。 

7) <パラメタUSING句>が指定されるならば,<EXECUTE文>中の<パラメタUSING句>に対して,

“20.10 <入力USING句>”で規定する一般規則を適用する。 

8) 最上部セルの写しが認可スタックに押し込まれる。PSが所有者をもつならば,認可スタックの最上

部セルには,PSの所有者の認可識別子だけが含まれるように設定される。 

9) PSをEXECUTING STATEMENTとして,“13.4 <SQL手続文>”の一般規則を適用する。この評価

の間に,元のSQL文に含まれる各<動的パラメタ指定> DPSに対して,元のSQL文中の<動的パラ

メタ指定>の集まり内でのDPSの順序位置をIとする。この規格群中の構文規則で規定するいずれ

かの構文上の変換の結果としてDPSが複製されるならば,複製されたこのような全ての入力動的パ

ラメタには,I番目の入力動的パラメタの同一の値が設定される。 

10) <結果USING句>が指定されるならば,<EXECUTE文>中の<結果USING句>に対して,“20.11 <出

力USING句>”で規定する一般規則を適用する。 

11) 実行の完了時点に,認可スタック中の最上部セルが取り除かれる。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<結果USING句>を含んではならな

い。 

2) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<EXECUTE文>を含んではならない。 

20.13 

<EXECUTE IMMEDIATE文> 

機能 

<EXECUTE IMMEDIATE文> (<execute immediate statement>) は,準備可能文を動的に準備し,実行する。 

形式 

<EXECUTE IMMEDIATE文> ::= 

  EXECUTE IMMEDIATE <SQL文変数> 

構文規則 

1) <SQL文変数>の宣言型は,文字列でなければならない。 

アクセス規則 

なし。 

一般規則 

1) <SQL文変数>の内容をPとする。 

2) 次のうちの一つ以上が真ならば,例外条件:構文誤り又はアクセス規則違反 (syntax error or access 

rule violation) が引き起こされる。 

a) Pが<動的SELECT文>又は<動的単一行SELECT文>である。 

b) Pが<動的パラメタ指定>を含む。 

3) <SQL文変数>をSVとする。<EXECUTE IMMEDIATE文>は,次と等価とする。 

PREPARE IMMEDIATE̲STMT FROM SV ; 

EXECUTE IMMEDIATE̲STMT ; 

DEALLOCATE PREPARE IMMEDIATE̲STMT ; 

ここで,IMMEDIATE̲STMTは,既存のどの被準備文も識別しない処理系依存の<文名>とする。 

840 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記549 PREPARE又はEXECUTEの結果として生じる例外条件又は終了条件の情報は,診断領

域中に反映される。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<EXECUTE IMMEDIATE文>を含ん

ではならない。 

20.14 

<動的カーソル宣言> 

この細分箇条は,ISO/IEC 9075-9の“17.8 <動的カーソル宣言>”によって修正される。 

機能 

<動的カーソル宣言> (<dynamic declare cursor>) は,次々に<カーソル指定>に関連付けられてもよい<文

名>に関連付けられる宣言動的カーソルを宣言する。 

形式 

<動的カーソル宣言> ::= 

  DECLARE <カーソル名> 

      <カーソル特性> 

      FOR <文名> 

構文規則 

1) <カーソル名>は,同じ<SQLクライアントモジュール定義> M中の他のどの<カーソル宣言>,<動的

カーソル宣言>又は<受取りカーソル割当て文>中で指定される<カーソル名>とも同一であってはな

らない。<カーソル名>の有効範囲は,Mに含まれる<SQLスキーマ文>を除くMとする。 

2) <動的カーソル宣言>に単純に含まれる<文名>をSNとする。<動的カーソル宣言>を含む<SQLクラ

イアントモジュール定義>は,<SQLスキーマ文>を介在しないで,SNと等価な<文名>をもつ

<PREPARE文>を含まなければならない。 

アクセス規則 

なし。 

一般規則 

1) 

09 カーソル宣言記述子CDDが作成される。CDDは,次のことを示す標識を含む。 

a) カーソルの種類が宣言動的カーソルであること。 

b) カーソルの出所が,<動的カーソル宣言>を含む<SQLクライアントモジュール定義>をもつSQL

クライアントモジュールを示す標識であること。 

c) カーソルの名前が<カーソル名>であること。 

d) カーソルの起源がSNであること。 

e) カーソルの宣言特性が,<カーソル特性>によって決定されるとおりであること。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的カーソル宣言>を含んではなら

ない。 

20.15 <拡張動的カーソル割当て文> 

この細分箇条は,ISO/IEC 9075-9の“17.9 <ALLOCATE CURSOR文>”によって修正される。 

機能 

<拡張動的カーソル割当て文> (<allocate extended dynamic cursor statement>) は,<カーソル指定>に対して

被準備文を基にするカーソルを定義する。 

841 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<拡張動的カーソル割当て文> ::= 

  ALLOCATE <拡張カーソル名>  

      <カーソル特性> 

      FOR <拡張文名> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) 

09 <拡張カーソル名>に直に含まれる<単純値指定>をSとする。次のTRIM関数の結果の文字列をV

とする。 

TRIM ( BOTH ' ' FROM S ) 

場合: 

a) <識別子>の形式及び構文規則にVが適合しないならば,例外条件:カーソル名が正しくない 

(invalid cursor name) が引き起こされる。 

b) そうでなければ,<拡張カーソル名>をECNとする。ECNの値は,Vとする。 

2) ECNがカーソルを識別するならば,例外条件:カーソル名が正しくない が引き起こされる。 

3) <拡張文名>が被準備文を識別しないならば,例外条件:SQL文名が正しくない (invalid SQL statement 

name) が引き起こされる。 

4) <拡張文名>によって識別される被準備文Pが<カーソル指定>でないならば,例外条件:動的SQL

誤り (dynamic SQL error) − 準備された文がカーソル指定ではない (prepared statement not a cursor 

specification) が引き起こされる。 

5) Pが次のとおりに再準備される。“14.3 <カーソル指定>”の構文規則にPが適合しないならば,例外

条件:構文誤り又はアクセス規則違反 (syntax error or access rule violation) が引き起こされる。 

6) カーソル宣言記述子CDDが作成される。CDDは,次のことを示す標識を含む。 

a) カーソルの種類が拡張動的カーソルであること。 

b) カーソルの出所が次のとおりであること。 

場合: 

i) 

<拡張カーソル名>に含まれる<有効範囲選択肢>がGLOBALならば,現行SQLセション識別子。 

ii) そうでなければ,<拡張動的カーソル割当て文>を含む<SQLクライアントモジュール定義>をも

つSQLクライアントモジュールを示す標識。 

c) カーソルの名前が拡張名Vであること,及び<拡張カーソル名>の陽に指定されるか又は暗に想定

される<有効範囲選択肢>。 

d) カーソルの起源がPであること。 

e) カーソルの宣言特性が,<カーソル特性>によって決定されるとおりであること。 

7) カーソル実現値記述子CIDが作成される。CIDは,次のことを示す標識を含む。 

a) カーソル宣言記述子がCDDであること。 

b) SQLセション識別子が現行SQLセション識別子であること。 

c) カーソルの状態が閉じていること。 

842 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

8) <拡張カーソル名>の値と<拡張カーソル名>の有効範囲中の被準備文との間に関連付けが行われる。

その関連付けは,被準備文が破壊されるまで保持され,その時点で,<拡張カーソル名>によって識

別されるカーソルのカーソル宣言記述子及びカーソル実現値記述子も,破壊される。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<拡張動的カーソル割当て文>を含ん

ではならない。 

20.16 <受取りカーソル割当て文> 

機能 

<受取りカーソル割当て文> (<allocate received cursor statement>) は,SQL呼出し手続から戻される結果集

合並びにカーソルを割り当てる。 

形式 

<受取りカーソル割当て文> ::= 

  ALLOCATE <カーソル名> 

  [ CURSOR ] FOR PROCEDURE <特定ルーチン指示子> 

構文規則 

1) <カーソル名>は,同じ<SQLクライアントモジュール定義> M中の他のどの<カーソル宣言>,<動的

カーソル宣言>又は<受取りカーソル割当て文>中で指定される<カーソル名>とも同一であってはな

らない。<カーソル名>の有効範囲は,Mに含まれる<SQLスキーマ文>を除くMとする。 

2) <特定ルーチン指示子>によって識別されるSQL呼出しルーチンは,SQL呼出し手続でなければな

らない。 

アクセス規則 

なし。 

一般規則 

1) <特定ルーチン指示子>によって識別されるSQL呼出し手続をSIPとする。現行ルーチン実行文脈

の動作中SQL呼出ルーチンをINVとする。 

2) 現行SQLセションのSQLセション文脈が,INVによるSIPの呼出しによって生じる結果集合並び

RSSを含まないならば,例外条件:SQL呼出し手続参照が正しくない (invalid SQL-invoked procedure 

reference) が引き起こされる。 

3) RSSが空ならば,例外条件:データなし (no data) − これ以上の結果集合は戻されない (no 

additional result sets returned) が引き起こされる。 

4) カーソル宣言記述子CDDが作成される。CDDは,次のことを示す標識を含む。 

a) カーソルの種類が受取りカーソルであること。 

b) カーソルの出所が<受取りカーソル割当て文>を含む<SQLクライアントモジュール定義>をもつ

SQLクライアントモジュールを示す標識であること。 

c) カーソルの名前が<カーソル名>であること。 

d) カーソルの起源が<特定ルーチン指示子>であること。 

e) カーソルの宣言特性が次のとおりであること。 

i) 

カーソルの宣言感度は,ASENSITIVE。 

ii) カーソルの宣言スクロール可能性は,NO SCROLL。 

iii) カーソルの宣言保持可能性は,WITHOUT HOLD。 

843 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iv) カーソルの宣言戻り可能性は,WITHOUT RETURN。 

5) カーソル実現値記述子CIDが作成される。CIDは,次のことを示す標識を含む。 

a) カーソル宣言記述子がCDDであること。 

b) SQLセション識別子が現行SQLセション識別子であること。 

c) カーソルの状態が開いていること。 

6) CIDをCURSORとして,RSSをRESULT SET SEQUENCEとして,“15.2 結果集合を受け取ることの

効果”の一般規則を適用する。 

適合性規則 

1) 機能T471“結果集合戻り値”なしでは,適合するSQL言語は,<受取りカーソル割当て文>を含ん

ではならない。 

20.17 

<動的OPEN文> 

この細分箇条は,ISO/IEC 9075-9の“17.10 <動的OPEN文>”によって修正される。 

機能 

<動的OPEN文> (<dynamic open statement>) は,入力動的パラメタを<カーソル指定>に関連付けて,動

的カーソルを開く。 

形式 

<動的OPEN文> ::= 

  OPEN <動的カーソル名> [ <入力USING句> ] 

構文規則 

1) <動的カーソル名> DCNが<カーソル名> CNならば,CNは,CNと等価な<カーソル名>の有効範囲

内に含まれなければならない。CNは,宣言動的カーソルを識別しなければならない。CNによって

識別されるカーソル宣言記述子をCDDとする。 

アクセス規則 

1) <動的カーソル名>に関連付けられる被準備文に単純に含まれる<問合せ式>のアクセス規則を適用

する。 

一般規則 

1) 場合: 

a) 

09 DCNが<カーソル名> CNならば,次による。 

場合: 

i) 

CDDに含まれる<文名> SNが被準備文を識別しないならば,例外条件:SQL文名が正しくない 

(invalid SQL statement name) が引き起こされる。 

ii) <カーソル指定>である被準備文をSNが識別しないならば,例外条件:動的SQL誤り (dynamic 

SQL error) − 準備された文がカーソル指定ではない (prepared statement not a cursor 

specification) が引き起こされる。 

b) そうでなければ,DCNが拡張動的カーソルを識別しないならば,例外条件:カーソル名が正しく

ない (invalid cursor name) が引き起こされる。 

2) DCNによって識別されるカーソルをCRとする。 

3) <動的カーソル名>に関連付けられる被準備文Pが<動的パラメタ指定>を含み,<入力USING句>が

指定されないならば,例外条件:動的SQL誤り − 動的パラメタに対するUSING句が必要 (using 

clause required for dynamic parameters) が引き起こされる。 

844 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) <動的カーソル名>が<カーソル名>ならば,Pは,次のとおりに再準備される。“14.3 <カーソル指定

>”の構文規則にPが適合しないならば,例外条件:構文誤り又はアクセス規則違反 (syntax error or 

access rule violation) が引き起こされる。 

5) CRが更新可能であることは,CRの結果集合記述子に含まれる<カーソル指定>が更新可能であるこ

とと同値とする。 

6) <入力USING句>が指定されるならば,<動的OPEN文>に対して,“20.10 <入力USING句>”で規定

する一般規則を適用する。 

7) CRをCURSORとして,“15.1 カーソルを開くことの効果”の一般規則を適用する。元のSQL文に

含まれる各<動的パラメタ指定> DPSに対して,元のSQL文中の<動的パラメタ指定>の集まり内で

のDPSの順序位置をIとする。この規格群中の構文規則で規定するいずれかの構文上の変換の結果

としてDPSが複製されるならば,複製されたこのような全ての入力動的パラメタには,I番目の入

力動的パラメタの同一の値が設定される。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的OPEN文>を含んではならない。 

20.18 

<動的FETCH文> 

この細分箇条は,ISO/IEC 9075-9の“17.11 <動的FETCH文>”によって修正される。 

機能 

<動的FETCH文> (<dynamic fetch statement>) は,動的カーソルの行を取り出す。 

形式 

<動的FETCH文> ::= 

  FETCH [ [ <取出し方向> ] FROM ] <動的カーソル名> <出力USING句> 

構文規則 

1) <取出し方向>が省略されるならば,NEXTが暗に想定される。 

2) <動的カーソル名> DCNが<カーソル名> CNならば,CNは,CNと等価な<カーソル名>の有効範囲

内に含まれなければならない。CNは,宣言動的カーソルを識別しなければならない。 

アクセス規則 

なし。 

一般規則 

1) 

09 DCNがカーソルを識別しないならば,例外条件:カーソル名が正しくない (invalid cursor name) 

が引き起こされる。 

2) DCNによって識別されるカーソルをCRとする。 

3) CRをCURSORとして,<取出し方向>をFETCH ORIENTATIONとして,“15.3 カーソルの現在行

の決定”の一般規則を適用する。 

4) 終了条件:データなし (no data) が引き起こされるならば,この細分箇条の一般規則は,これ以上適

用しない。 

5) <動的FETCH文>中の<出力USING句>に対して,“20.11 <出力USING句>”で規定する一般規則を

適用する。 

6) 相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とする。 

注記550 <導出列>の導出中に例外条件が引き起こされるとき,CRが現在行に位置付けられたま

まかどうかは,処理系依存である。 

845 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的FETCH文>を含んではならな

い。 

20.19 

<動的単一行SELECT文> 

機能 

<動的単一行SELECT文> (<dynamic single row select statement>) は,動的に指定された表の行から値を取

り出す。 

形式 

<動的単一行SELECT文> ::= 

  <問合せ指定> 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) <問合せ指定>の結果をQとする。 

2) 場合: 

a) Qの基数が1を超えるならば,例外条件:基数違反 (cardinality violation) が引き起こされる。 

b) Qが空ならば,終了条件:データなし (no data) が引き起こされる。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的単一行SELECT文>を含んでは

ならない。 

20.20 

<動的CLOSE文> 

この細分箇条は,ISO/IEC 9075-9の“17.12 <動的CLOSE文>”によって修正される。 

機能 

<動的CLOSE文> (<dynamic close statement>) は,動的カーソルを閉じる。 

形式 

<動的CLOSE文> ::= 

  CLOSE <動的カーソル名> 

構文規則 

1) <動的カーソル名> DCNが<カーソル名> CNならば,CNは,CNと等価な<カーソル名>の有効範囲

内に含まれなければならない。CNは,宣言動的カーソルを識別しなければならない。 

アクセス規則 

なし。 

一般規則 

1) DCNがカーソルを識別しないならば,例外条件:カーソル名が正しくない (invalid cursor name) が

引き起こされる。 

2) DCNによって識別されるカーソルをCRとする。 

3) CRをCURSORとして,DESTROYをDISPOSITIONとして,“15.4 カーソルを閉じることの効果”

の一般規則を適用する。 

846 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的CLOSE文>を含んではならな

い。 

20.21 

<動的DELETE文:位置付け> 

機能 

<動的DELETE文:位置付け> (<dynamic delete statement: positioned>) は,表の行を削除する。 

形式 

<動的DELETE文:位置付け> ::= 

  DELETE FROM <相手表> WHERE CURRENT OF <動的カーソル名> 

構文規則 

1) <動的DELETE文:位置付け>をDDSPとする。<相手表>をTTとし,<動的カーソル名>をDCNと

する。 

2) DCNが<カーソル名> CNならば,CNは,CNと等価な<カーソル名>の有効範囲内に含まれなけれ

ばならない。CNは,宣言動的カーソルを識別しなければならない。 

3) TTに含まれる<表名>をTNとする。 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,DDSPが<SQLスキ

ーマ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。Aに適用可能な

権限は,TNに関するDELETEを含まなければならない。 

b) そうでなければ,現行の権限は,TNに関するDELETEを含まなければならない。 

一般規則 

1) DCNが動的カーソルを識別しないならば,例外条件:カーソル名が正しくない (invalid cursor name) 

が引き起こされる。 

2) DCNによって識別されるカーソルをCRとする。 

3) CRが更新可能カーソルでないならば,例外条件:カーソル名が正しくない が引き起こされる。 

4) CRの単純に基となる表をTとする。TがLUTに関して1対1対応であるようなTの末端で基とな

る表をLUTとする。 

5) TNがLUTを識別しないか,又はONLYが指定され,かつ,LUTを参照するT中の<表参照>がONLY

を指定しないか,又はONLYが指定されないで,かつ,LUTを参照するT中の<表参照>がONLY

を指定するならば,例外条件:相手表がカーソル指定と一致しない (target table disagrees with cursor 

specification) が引き起こされる。 

6) CRをCURSORとして,DDSPをSTATEMENTとして,TTをTARGETとして,“15.5 位置付け削

除の効果”の一般規則を適用する。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的DELETE文:位置付け>を含ん

ではならない。 

20.22 

<動的UPDATE文:位置付け> 

機能 

<動的UPDATE文:位置付け> (<dynamic update statement: positioned>) は,表の行を更新する。 

847 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

形式 

<動的UPDATE文:位置付け> ::= 

  UPDATE <相手表> SET <設定句リスト> 

      WHERE CURRENT OF <動的カーソル名> 

構文規則 

1) <動的UPDATE文:位置付け>をDUSPとする。<相手表>をTTとし,<設定句リスト>をSCLとし,

<動的カーソル名>をDCNとする。 

2) DCNが<カーソル名> CNならば,CNは,CNと等価な<カーソル名>の有効範囲内に含まれなけれ

ばならない。CNは,宣言動的カーソルを識別しなければならない。 

3) TTに含まれる<表名>をTNとする。 

4) TNの有効範囲は,DUSPとする。 

アクセス規則 

1) 場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,DUSPが<SQLスキ

ーマ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。Aに適用可能な

権限は,各<対象列>に関するUPDATEを含まなければならない。 

b) そうでなければ,現行の権限は,各<対象列>に関するUPDATEを含まなければならない。 

一般規則 

1) DCNが動的カーソルを識別しないならば,例外条件:カーソル名が正しくない (invalid cursor name) 

が引き起こされる。 

2) DCNによって識別されるカーソルをCRとする。 

3) CRが更新可能カーソルでないならば,例外条件:カーソル名が正しくない が引き起こされる。 

4) CRの単純に基となる表をTとする。TがLUTに関して1対1対応であるようなTの末端で基とな

る表をLUTとする。 

5) TNがLUTを識別しないか,又はONLYが指定され,かつ,LUTを参照するT中の<表参照>がONLY

を指定しないか,又はONLYが指定されないで,かつ,LUTを参照するT中の<表参照>がONLY

を指定するならば,例外条件:相手表がカーソル指定と一致しない (target table disagrees with cursor 

specification) が引き起こされる。 

6) CRに対する<カーソル指定>に単純に含まれる<ORDER BY句>中で,いずれかの対象列が直接又は

間接的に参照されるならば,例外条件:順序付け列への代入を試みた (attempt to assign to ordering 

column) が引き起こされる。 

7) CRの結果集合記述子に含まれる<カーソル指定>の陽に指定されるか又は暗に想定される<更新可

能性句>の陽に指定されるか又は暗に想定される<列名リスト>に含まれる<列名>によって識別され

ない列を,いずれかの対象列が識別するならば,例外条件:更新可能でない列への代入を試みた 

(attempt to assign to non-updatable column) が引き起こされる。 

8) CRをCURSORとして,SCLをSET CLAUSE LISTとして,DUSPをSTATEMENTとして,TTを

TARGETとして,“15.6 位置付け更新の効果”の一般規則を適用する。 

適合性規則 

1) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的UPDATE文:位置付け>を含ん

ではならない。 

848 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

20.23 

<準備可能動的DELETE文:位置付け> 

機能 

<準備可能動的DELETE文:位置付け> (<preparable dynamic delete statement: positioned>) は,動的カーソ

ルを通して表の行を削除する。 

形式 

<準備可能動的DELETE文:位置付け> ::= 

  DELETE [ FROM <相手表> ] 

      WHERE CURRENT OF <準備可能動的カーソル名> 

構文規則 

1) <準備可能動的DELETE文:位置付け>をPDDSPとする。<準備可能動的カーソル名>をPDCNとす

る。 

2) PDCNが曖昧又は不正でないならば,次による。 

a) PDCNによって識別されるカーソルをCRとする。CRは,更新可能カーソルでなければならな

い。 

b) CRの結果集合記述子の<カーソル指定>に単純に含まれる<問合せ式>をQEとする。QEがLUT

に関して1対1対応であるようなQEの末端で基となる表をLUTとする。 

c) 場合: 

i) 

<相手表>が指定されないならば,LUTの名前をTNとする。 

場合: 

1) LUTを参照する<表参照>がONLYを指定するならば,次の<相手表>が暗に想定される。 

ONLY ( TN ) 

2) そうでなければ,次の<相手表>が暗に想定される。 

TN 

ii) そうでなければ,<相手表>に含まれる<表名>をTNとする。TNは,LUTを識別しなければな

らない。 

d) 陽に指定されるか又は暗に想定される<相手表>をTTとする。 

e) LUTは,遷移旧表又は遷移新表であってはならない。 

f) TTがONLYを直に含み,LUTが型付き表でないならば,TTは,TNと等価とする。 

g) <相手表>がONLYを指定しなければならないことは,LUTを参照するTに含まれる<表参照>が

ONLYを指定することと同値とする。 

h) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUT

の記述子を含んでいなければならない。 

アクセス規則 

1) PDCNが曖昧又は不正でないならば,次による。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,PDDSPが<SQLスキ

ーマ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。Aに適用可能な

権限は,TNに関するDELETEを含まなければならない。 

b) そうでなければ,現行の権限は,TNに関するDELETEを含まなければならない。 

一般規則 

849 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) CRをCURSORとして,PDDSPをSTATEMENTとして,TTをTARGETとして,“15.5 位置付け削

除の効果”の一般規則を適用する。 

注記551 一般規則に達するならば,PDCNが曖昧又は不正である可能性はない。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<準備可能動的DELETE文:位置付

け>を含んではならない。 

20.24 

<準備可能動的カーソル名> 

この細分箇条は,ISO/IEC 9075-3の“8.1 <準備可能動的カーソル名>”によって修正される。 

機能 

<準備可能動的カーソル名> (<preparable dynamic cursor name>) は,<準備可能動的DELETE文:位置付け

>又は<準備可能動的UPDATE文:位置付け>のカーソルを指定する。 

形式 

<準備可能動的カーソル名> ::= 

  [ <有効範囲選択肢> ] <カーソル名> 

構文規則 

1) <準備可能動的カーソル名>をPDCNとし,PDCNに含まれる<カーソル名>をCNとし,PDCNを含

む<準備可能動的DELETE文:位置付け>又は<準備可能動的UPDATE文:位置付け>をPとする。 

場合: 

a) GLOBALを指定する<有効範囲選択肢>をPDCNが含むならば,次による。 

場合: 

i) 

大域有効範囲及びCNと等価な<カーソル名>をもつ<拡張カーソル名>をもつ拡張動的カーソル

EDCが現行SQLセション文脈中に存在するならば,EDCは,PDCNによって参照されるカー

ソルとする。 

ii) そうでなければ,PDCNは,正しくない (invalid) という。 

b) LOCALを指定する<有効範囲選択肢>をPDCNが含むか,又は<有効範囲選択肢>が指定されない

ならば,次による。 

i) 

03 PDCNの潜在的に参照されるカーソル (potentially referenced cursor) は,CNと等価な<カーソ

ル名>をもち,かつ,(SQLクライアントモジュールに含まれるどの<SQLスキーマ文>も除い

て,)<準備可能動的カーソル名>を含むSQLクライアントモジュールである有効範囲をもつ全

ての宣言動的カーソル,及び(SQLクライアントモジュールに含まれるどの<SQLスキーマ文>

も除いて,)<準備可能動的カーソル名>を含むSQLクライアントモジュールである有効範囲を

もつ<拡張カーソル名>をもち,かつ,CNと等価な<カーソル名>をもつ全ての拡張動的カーソ

ルを含む。 

ii) 場合: 

1) 潜在的に参照されるカーソルの個数が1より大きいならば,PDCNは,曖昧 (ambiguous) と

いう。 

2) 潜在的に参照されるカーソルの個数が1未満ならば,PDCNは,正しくない という。 

3) そうでなければ,PDCNは,Pの単一の潜在的に参照されるカーソルを参照する。 

アクセス規則 

なし。 

850 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

一般規則 

なし。 

適合性規則 

なし。 

20.25 

<準備可能動的UPDATE文:位置付け> 

機能 

<準備可能動的UPDATE文:位置付け> (<preparable dynamic update statement: positioned>) は,動的カー

ソルを通して表の行を更新する。 

形式 

<準備可能動的UPDATE文:位置付け> ::= 

  UPDATE [ <相手表> ] SET <設定句リスト> 

      WHERE CURRENT OF <準備可能動的カーソル名> 

構文規則 

1) <準備可能動的UPDATE文:位置付け>をPDUSPとする。<設定句リスト>をSCLとする。<準備可

能動的カーソル名>をPDCNとする。 

2) PDCNが曖昧又は不正でないならば,次による。 

a) PDCNによって識別されるカーソルをCRとする。CRは,更新可能カーソルでなければならな

い。 

b) CRの結果集合記述子の<カーソル指定>に単純に含まれる<問合せ式>をQEとする。QEがLUT

に関して1対1対応であるようなQEの末端で基となる表をLUTとする。 

c) 場合: 

i) 

<相手表>が指定されないならば,LUTの名前をTNとする。 

場合: 

1) LUTを参照する<表参照>がONLYを指定するならば,次の<相手表>が暗に想定される。 

ONLY ( TN ) 

2) そうでなければ,次の<相手表>が暗に想定される。 

TN 

ii) そうでなければ,<相手表>に含まれる<表名>をTNとする。TNは,LUTを識別しなければな

らない。 

d) 陽に指定されるか又は暗に想定される<相手表>をTTとする。 

e) LUTは,遷移旧表又は遷移新表であってはならない。 

f) TTがONLYを直に含み,LUTが型付き表でないならば,TTは,TNと等価とする。 

g) TTがONLYを指定しなければならないことは,LUTを参照するTUに含まれる<表参照>がONLY

を指定することと同値とする。 

h) TNの陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUT

の記述子を含んでいなければならない。 

i) 

TNをCNとする。CNは,露出する<表名又は問合せ名>とする。 

j) CNの有効範囲は,SCLとする。 

k) CRが順序付けられたカーソルならば,SCLに含まれる各<対象列> OCに対して,CRの<カーソ

ル指定>の<問合せ式>に単純に含まれる<ORDER BY句>中の<ソートキー>の一般に基となる列

851 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

は,OC又はOCの一般に基となる列であってはならない。 

l) 

<対象列>として指定される各<列名>は,CRの結果集合記述子に含まれる<カーソル指定>の陽に

指定されるか又は暗に想定される<更新可能性句>に含まれる陽に指定されるか又は暗に想定さ

れる<列名リスト>中の列を識別しなければならない。 

アクセス規則 

1) PDCNが曖昧又は不正でないならば,次による。 

場合: 

a) SQL SECURITY INVOKERを指定する<SQLルーチン指定>を介在しないで,PDUSPが<SQLスキ

ーマ文>に含まれるならば,そのスキーマを所有する<認可識別子>をAとする。Aに適用可能な

権限は,各<対象列>に関するUPDATEを含まなければならない。 

b) そうでなければ,現行の権限は,各<対象列>に関するUPDATEを含まなければならない。 

一般規則 

1) CRをCURSORとして,SCLをSET CLAUSE LISTとして,PDUSPをSTATEMENTとして,TTを

TARGETとして,“15.6 位置付け更新の効果”の一般規則を適用する。 

注記552 一般規則に達するならば,PDCNが曖昧又は不正である可能性はない。 

適合性規則 

1) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<準備可能動的UPDATE文:位置付

け>を含んではならない。 

21 埋込みSQL 

21.1 <SQL埋込みホストプログラム> 

この細分箇条は,ISO/IEC 9075-4の“16.1 <SQL埋込みホストプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“8.1 <SQL埋込みホストプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.1 <SQL埋込みホストプログラム>”によって修正される。 

機能 

<SQL埋込みホストプログラム> (<embedded SQL host program>) は,<SQL埋込みホストプログラム>を

指定する。 

形式 

10 <SQL埋込みホストプログラム> ::= 

  <SQL埋込みAdaプログラム> 

| <SQL埋込みCプログラム> 

| <SQL埋込みCOBOLプログラム> 

| <SQL埋込みFortranプログラム> 

| <SQL埋込みMUMPSプログラム> 

| <SQL埋込みPascalプログラム> 

| <SQL埋込みPL/Iプログラム> 

<埋込みSQL文> := 

  <SQL先頭子> <文又は宣言> [ <SQL終了子> ] 

10 <文又は宣言> ::= 

  <カーソル宣言> 

852 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <動的カーソル宣言> 

| <一時表宣言> 

| <埋込み認可宣言> 

| <埋込みパス指定> 

| <埋込み変換グループ指定> 

| <埋込み照合順指定> 

| <埋込み例外宣言> 

| <SQL手続文> 

10 <SQL先頭子> ::= 

  EXEC SQL 

| <アンパサンド>SQL<左括弧> 

<SQL終了子> ::= 

  END-EXEC 

| <セミコロン> 

| <右括弧> 

<埋込み認可宣言> ::= 

  DECLARE <埋込み認可句> 

<埋込み認可句> ::= 

  SCHEMA <スキーマ名> 

| AUTHORIZATION <埋込み認可識別子> 

      [ FOR STATIC { ONLY | AND DYNAMIC } ] 

| SCHEMA <スキーマ名> AUTHORIZATION <埋込み認可識別子> 

      [ FOR STATIC { ONLY | AND DYNAMIC } ] 

<埋込み認可識別子> ::= 

  <モジュール認可識別子> 

<埋込みパス指定> ::= 

  <パス指定> 

<埋込み変換グループ指定> ::= 

  <変換グループ指定> 

<埋込み照合順指定> ::= 

  <モジュール照合順> 

<埋込みSQL宣言節> ::= 

  <埋込みSQL開始宣言> 

      [ <埋込み文字集合宣言> ] 

      [ <ホスト変数定義>... ] 

      <埋込みSQL終了宣言> 

| <埋込みSQL MUMPS宣言> 

<埋込み文字集合宣言> ::= 

  SQL NAMES ARE <文字集合指定> 

<埋込みSQL開始宣言> ::= 

853 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

  <SQL先頭子> BEGIN DECLARE SECTION [ <SQL終了子> ] 

<埋込みSQL終了宣言> ::= 

  <SQL先頭子> END DECLARE SECTION [ <SQL終了子> ] 

<埋込みSQL MUMPS宣言> ::= 

  <SQL先頭子> 

      BEGIN DECLARE SECTION 

      [ <埋込み文字集合宣言> ] 

      [ <ホスト変数定義>... ] 

      END DECLARE SECTION 

      <SQL終了子> 

<ホスト変数定義> ::= 

  <Ada変数定義> 

| <C変数定義> 

| <COBOL変数定義> 

| <Fortran変数定義> 

| <MUMPS変数定義> 

| <Pascal変数定義> 

| <PL/I変数定義> 

10 <埋込み変数名> ::= 

  <コロン><ホスト識別子> 

<ホスト識別子> ::= 

  <Adaホスト識別子> 

| <Cホスト識別子> 

| <COBOLホスト識別子> 

| <Fortranホスト識別子> 

| <MUMPSホスト識別子> 

| <Pascalホスト識別子> 

| <PL/Iホスト識別子> 

構文規則 

1) <SQL埋込みホストプログラム>は,プログラム言語テキスト及びSQLテキストから成る翻訳単位

とする。SQLテキストは,この規格群で定義するとおりの,一つ以上の<埋込みSQL文>,及び省略

可能な一つ以上の<埋込みSQL宣言節>から成らなければならない。プログラム言語テキストは,特

定のプログラム言語,すなわち,ホスト言語 (host language) の要件に適合しなければならない。

<SQL埋込みAdaプログラム>,<SQL埋込みCプログラム>,<SQL埋込みCOBOLプログラム>,

<SQL埋込みFortranプログラム>,<SQL埋込みMUMPSプログラム>,<SQL埋込みPascalプログ

ラム>又は<SQL埋込みPL/Iプログラム>が指定されるとき,それぞれ,ホスト言語は,Ada,C,

COBOL,Fortran,M,Pascal又はPL/Iとする。 

注記553 “翻訳単位”は,“4.23 SQLクライアントモジュール”で定義している。 

2) 

10 場合: 

a) <SQL埋込みMUMPSプログラム>に含まれる<埋込みSQL文>又は<埋込みSQL MUMPS宣言>

854 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

は,“<アンパサンド> SQL <左括弧>”である<SQL先頭子>を含まなければならない。<アンパサ

ンド>と“SQL”との間にも,“SQL”と<左括弧>との間にも,<分離符号>があってはならない。 

b) <SQL埋込みMUMPSプログラム>に含まれない<埋込みSQL文>,<埋込みSQL開始宣言>又は<

埋込みSQL終了宣言>は,“EXEC SQL”である<SQL先頭子>を含まなければならない。 

3) 場合: 

a) <SQL埋込みCOBOLプログラム>に含まれる<埋込みSQL文>,<埋込みSQL開始宣言>又は<埋

込みSQL終了宣言>は,“END-EXEC”である<SQL終了子>を含まなければならない。 

b) <SQL埋込みFortranプログラム>に含まれる<埋込みSQL文>,<埋込みSQL開始宣言>又は<埋込

みSQL終了宣言>は,<SQL終了子>を含んではならない。 

c) 

10 <SQL埋込みAdaプログラム>,<SQL埋込みCプログラム>,<SQL埋込みPascalプログラム>

又は<SQL埋込みPL/Iプログラム>に含まれる<埋込みSQL文>,<埋込みSQL開始宣言>又は<埋

込みSQL終了宣言>は,<セミコロン>である<SQL終了子> を含まなければならない。 

d) <SQL埋込みMUMPSプログラム>に含まれる<埋込みSQL文>又は<埋込みSQL MUMPS宣言>

は,<右括弧>である<SQL終了子>を含まなければならない。 

4) 場合: 

a) <SQL埋込みMUMPSプログラム>に含まれる<埋込みSQL宣言節>は,<埋込みSQL MUMPS宣

言>でなければならない。 

b) <SQL埋込みMUMPSプログラム>に含まれない<埋込みSQL宣言節>は,<埋込みSQL MUMPS

宣言>であってはならない。 

10 注記554 <SQL埋込みホストプログラム>に含まれてもよい<埋込みSQL宣言節>の個数に関す

る制限はない。 

5) <SQL先頭子>,<埋込みSQL開始宣言>又は<埋込みSQL終了宣言>を構成する<トークン>は,<空

白>文字によって区切らなければならず,一つの行に指定しなければならない。そうでなければ,あ

る行から次の行への行及びトークンの継続に関する規則,並びにホスト言語の注釈の配置に関する

規則は,<トークン>を含む<SQL埋込みホストプログラム>のプログラム言語の規則に従う。 

6) <SQL埋込みホストプログラム>中に<埋込み認可宣言>が現れるならば,それは,その<SQL埋込み

ホストプログラム>の最初の<埋込みSQL文>に含まれなければならない。 

7) <SQL埋込みホストプログラム>は,二つ以上の<埋込みパス指定>を含んではならない。 

8) <SQL埋込みホストプログラム>は,二つ以上の<埋込み変換グループ指定>を含んではならない。 

9) <SQL埋込みホストプログラム>は,二つ以上の<埋込み照合順指定>を含んではならない。 

10) 場合: 

a) <埋込み変換グループ指定>が指定されないならば,関連する利用者定義型UDTをもつが,利用

者定義型位置付け子変数ではない各<ホスト変数定義>に対して,<グループ指定> GSをもつ<複

数グループ指定>を含む<埋込み変換グループ指定>が暗に想定される。GSの<グループ名>は,処

理系定義とし,それの<パス解決利用者定義型名>は,UDTの<利用者定義型名>とする。 

b) <グループ名> GNをもつ<単一グループ指定>を<埋込み変換グループ指定>が含むならば,関連す

る利用者定義型UDTをもつが,利用者定義型位置付け子変数ではない各<ホスト変数定義>に対

して,<グループ指定> GSをもつ<複数グループ指定>を含む<埋込み変換グループ指定>が暗に想

定される。GSの<グループ名>は,GNとし,それの<パス解決利用者定義型名>は,UDTの<利用

者定義型名>とする。 

855 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) <複数グループ指定> MGSを<埋込み変換グループ指定>が含むならば,関連する利用者定義型

UDTをもつが,利用者定義型位置付け子変数ではなく,かつ,MGSに含まれるどの<グループ指

定>にもUDTと等価な型が含まれない各<ホスト変数定義>に対して,<グループ指定> GSで拡張

したMGSを含む<複数グループ指定>を含む<埋込み変換グループ指定>が暗に想定される。GSの

<グループ名>は,処理系定義とし,それの<パス解決利用者定義型名>は,UDTの<利用者定義型

名>とする。 

11) <SQL埋込みホストプログラム>のテキスト中では,暗に想定されるか又は陽に指定される<埋込み

変換グループ指定>は,どの<ホスト変数定義>よりも先行しなければならない。 

12) <SQL埋込みホストプログラム>は,二つ以上の<埋込み文字集合宣言>を含んではならない。<埋込

み文字集合宣言>が指定されないならば,少なくとも<SQL言語文字>中の全ての文字を含む処理系

定義の文字集合を指定する<埋込み文字集合宣言>が暗に想定される。 

13) <SQL埋込みホストプログラム>に含まれる<一時表宣言>は,<一時表宣言>の<表名>を参照するど

のSQL文又は<カーソル宣言>よりも,その<SQL埋込みホストプログラム>のテキスト中で先行し

なければならない。 

14) <SQL埋込みホストプログラム>に含まれる<カーソル宣言>は,<カーソル宣言>の<カーソル名>を

参照するどのSQL文よりも,<SQL埋込みホストプログラム>のテキスト中で先行しなければなら

ない。 

15) <SQL埋込みホストプログラム>に含まれる<動的カーソル宣言>は,<動的カーソル宣言>の<カーソ

ル名>を参照するどのSQL文よりも,<SQL埋込みホストプログラム>のテキスト中で先行していな

ければならない。 

16) 10 <SQL埋込みホストプログラム>中の<埋込みSQL文>に含まれるどの<ホスト識別子>も,その

<SQL埋込みホストプログラム>に含まれるただ一つの<ホスト変数定義>で定義しなければならな

い。サブプログラム中での<ホスト変数定義>をサポートするプログラム言語では,ホスト言語中で

互いに重ならない異なる有効範囲をもつ二つの<ホスト変数定義>は,それらが同じ変数名を指定し

たとしても,異なるホスト変数を定義しているものとみなされる。<ホスト変数定義>は,<SQL埋

込みホストプログラム>のテキスト中で,<ホスト識別子>を参照するどの<埋込みSQL文>よりも前

に現れなければならない。<ホスト変数定義>は,<ホスト識別子>を含むどの<埋込みSQL文>でも,

<ホスト識別子>へのホスト言語参照が正しいようなものでなければならない。 

17) 適用埋込み言語細分箇条 (operative embedded language Subclause) は,次のとおりとする。 

場合: 

a) ホスト言語がAdaならば,“21.3 <SQL埋込みAdaプログラム>”。 

b) ホスト言語がCならば,“21.4 <SQL埋込みCプログラム>”。 

c) ホスト言語がCOBOLならば,“21.5 <SQL埋込みCOBOLプログラム>”。 

d) ホスト言語がFortranならば,“21.6 <SQL埋込みFortranプログラム>”。 

e) ホスト言語がMならば,“21.7 <SQL埋込みMUMPSプログラム>”。 

f) 

ホスト言語がPascalならば,“21.8 <SQL埋込みPascalプログラム>”。 

g) ホスト言語がPL/Iならば,“21.9 <SQL埋込みPL/Iプログラム>”。 

18) 10 <ホスト変数定義>は,<ホスト識別子>のホスト言語データ型,及び適用埋込み言語細分箇条で規

定する等価な<ホストパラメタデータ型>を定義する。 

19) 10 <SQL埋込みホストプログラム>は,<ホスト識別子>としてSQLSTATEを指定する<ホスト変数定

856 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

義>を含まなければならない。 

注記555 SQLSTATEホスト変数のホスト言語データ型は,“13.3 <外部呼出し手続>” の構文規則

を満たさなければならない。 

20) SQLSTATEを指定する一つ以上の<ホスト変数定義>が<SQL埋込みホストプログラム>中に現れる

ならば,<ホスト変数定義>は,その<SQL埋込みホストプログラム>に含まれるサブプログラム中に

現れる<埋込みSQL文>を含めて,どの<埋込みSQL文>でも,SQLSTATEへのホスト言語参照が正

しいようなものでなければならない。SQLSTATEのそのような最初の<ホスト変数定義>は,<SQL

埋込みホストプログラム>のテキスト中で,どの<埋込みSQL文>よりも前に現れなければならない。 

21) 10 <SQL埋込みホストプログラム> Hが与えられると,規格に適合する<SQLクライアントモジュー

ル定義> M,及びホストプログラムPが,Hから導出されて,暗に想定される。<SQL埋込みホスト

プログラム> Hの,暗に想定されるプログラムP及び暗に想定される<SQLクライアントモジュー

ル定義> Mの導出は,テキストの取込み (inclusion or copying) のような,ホスト言語プログラムの

どのテキスト操作コマンドの処理よりも,実効的に先行する。 

注記556 SQLクライアントモジュールを生成するための処理系定義の機構によってMが処理さ

れた後に,Hが実行可能になる。SQL処理系は,この機構を<SQL埋込みホストプログ

ラム>の処理と組み合わせてもよく,そこでは,Mの存在が純粋に仮想であってもよい。 

上記のとおりに定義された,暗に想定される<SQLクライアントモジュール定義> M及び暗に想定

されるプログラムPをもつ<SQL埋込みホストプログラム> Hが与えられると,次による。 

a) Hの暗に想定される<SQLクライアントモジュール定義> Mは,規格に適合する<SQLクライアン

トモジュール定義>でなければならない。 

b) 暗に想定されるプログラムPは,ホスト言語の仕様に適合しなければならない。 

22) 10 Mは,次のとおりにHから導出される。 

a) Mは,<SQLクライアントモジュール名>が処理系依存であるか又は省略されているかのいずれか

である<モジュール名句>を含む。 

b) Mは,陽に指定されるか又は暗に想定される<埋込み文字集合宣言>からキーワード“SQL”を取

り除いたものと同一の<モジュール文字集合指定>を含む。 

c) Mは,ADA,C,COBOL,FORTRAN,M,PASCAL又はPLIのいずれかを指定する<LANGUAGE

句>を含む。ここで,Hは,それぞれ,<SQL埋込みAdaプログラム>,<SQL埋込みCプログラ

ム>,<SQL埋込みCOBOLプログラム>,<SQL埋込みFortranプログラム>,<SQL埋込みMUMPS

プログラム>,<SQL埋込みPascalプログラム>又は<SQL埋込みPL/Iプログラム>とする。 

d) 場合: 

i) 

Hが<埋込み認可宣言> EADを含むならば,EADに含まれる<埋込み認可句>をEACとする。

Mは,EACを指定する<モジュール認可句>を含む。 

ii) そうでなければ,処理系定義の<スキーマ名>をSNとする。Mは,“SCHEMA SN”を指定する

<モジュール認可句>を含む。 

e) 場合: 

i) 

Hが<埋込みパス指定> EPSを含むならば,Mは,<モジュールパス指定> EPSを含む。 

ii) そうでなければ,Mは,処理系定義の<モジュールパス指定>を含む。 

f) Mは,陽に指定されるか又は暗に想定される<埋込み変換グループ指定>と同一の<モジュール変

換グループ指定>を含む。 

857 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) <埋込み照合順指定> ECSが指定されるならば,Mは,ECSに含まれる<モジュール照合順>と同

一の<モジュール照合順>を含む。 

h) Hに含まれるどの<カーソル宣言> ECに対しても,Mは,一つの<カーソル宣言> PC,及びPCを

参照する<OPEN文>を含む一つの<外部呼出し手続> PSを含む。 

i) 

PSの<手続名>は,処理系依存とする。PSは,PCに含まれる互いに異なる各<埋込み変数名> 

EVNに対する<ホストパラメタ宣言> PDを含み,それは,処理系依存の<ホストパラメタ名> 

PN,及び適用埋込み言語細分箇条の構文規則によって決定される<ホストパラメタデータ型> 

PTをもつ。 

ii) PSは,SQLSTATEを指定する<ホストパラメタ宣言>を含む。PS中の<ホストパラメタ宣言>の

順序は,処理系依存とする。PCは,各EVNが次のとおりに置き換えられたECの写しとする。 

場合: 

1) EVNが,利用者定義型位置付け子変数を識別しないが,関連する利用者定義型UTをもつホ

スト変数を識別するならば,次による。 

A) <埋込み変換グループ指定>に含まれる<グループ指定>に含まれるUTの<利用者定義型名>

に対応する<グループ名>をGNとする。 

B) DTをTYPEとして,GNをGROUPとして,“9.23 TO-SQL関数の決定”の構文規則を適用

する。適用可能なTO-SQL関数TSFが存在しなければならない。 

C) TSFの単一SQLパラメタの宣言型をTPTとする。PTは,TPTに代入可能でなければなら

ない。 

D) EVNは,次の指定によって置き換えられる。 

TSFN(CAST(PN AS TPT)) 

2) 

14 そうでなければ,EVNは,次の指定によって置き換えられる。 

PN 

i) 

H中のどの<動的カーソル宣言> ECに対しても,Mは,ECの写しである一つの<動的カーソル宣

言> PCを含む。 

j) Hに含まれる各<一時表宣言>に対して,Mは,一つの<一時表宣言>を含む。Mの各<一時表宣言

>は,Hの対応する<一時表宣言>の写しとする。 

k) 

04 Hに含まれる各<埋込み例外宣言>に対して,Mは,一つの<埋込み例外宣言>を含む。Mの各<

埋込み例外宣言>は,Hの対応する<埋込み例外宣言>の写しとする。 

l) 

04 Hに含まれる各<SQL手続文>に対して,Mは,<外部呼出し手続>を含む。Hの<SQL手続文> 

ESに対応するMの<外部呼出し手続> PSは,次のとおりに定義される。 

場合: 

i) 

ESが<OPEN文>でないならば,次による。 

1) PSの<手続名>は,処理系依存とする。 

2) ESに含まれる互いに異なる<埋込み変数名>の個数をnとする。そのようなi番目の<埋込み

変数名>をHVNi,1 ≤ i ≤ nとし,HVNiによって識別されるホスト変数をHViとする。 

3) 各HVNi,1 ≤ i ≤ nに対して,PSは,次のようなホストパラメタPiを定義する<ホストパラ

メタ宣言> PDiを含む。 

A) PDiの<ホストパラメタ名> PNiが処理系依存である。 

B) PDiの<ホストパラメタデータ型> PTiが適用埋込み言語細分箇条の構文規則によって決定

858 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

される。 

4) PSは,SQLSTATEを指定する<ホストパラメタ宣言>を含む。 

5) <ホストパラメタ宣言> PDi,1 ≤ i ≤ nの順序は,処理系依存とする。 

6) 関連する利用者定義型をもつが,利用者定義型位置付け子変数ではないHViを識別する各

HVNi,1 ≤ i ≤ nに対して,対応するPiが入力ホストパラメタか,出力ホストパラメタか,又

は入出力ホストパラメタかを決定するために,HVNiに対応するPDiをHOST PARAM DECL

として,ESをSQL PROC STMTとして,“9.8 ホストパラメタモード決定”の構文規則を適

用する。 

A) Pi,1 ≤ i ≤ nの中で,入力ホストパラメタの個数をaとし,出力ホストパラメタの個数をb

とし,入出力ホストパラメタの個数をcとする。 

B) Pi,1 ≤ i ≤ nの中で,入力ホストパラメタをPIj,1 ≤ j ≤ aとし,出力ホストパラメタをPOk,

1 ≤ k ≤ bとし,入出力ホストパラメタをPIOl,1 ≤ l ≤ cとする。 

C) PIjの<ホストパラメタ名>をPNIj,1 ≤ j ≤ aとする。POkの<ホストパラメタ名>をPNOk,

1 ≤ k ≤ bとする。PIOlの<ホストパラメタ名>をPNIOl,1 ≤ l ≤ cとする。 

D) PIjに対応するホスト変数をHVIj,1 ≤ j ≤ aとする。POkに対応するホスト変数をHVOk,

1 ≤ k ≤ bとする。PIOlに対応するホスト変数をHVIOl,1 ≤ l ≤ cとする。 

E) HVIjの関連するSQLデータ型をTSIj,1 ≤ j ≤ aとする。HVOkの関連するSQLデータ型

をTSOk,1 ≤ k ≤ bとする。HVIOlの関連するSQLデータ型をTSIOl,1 ≤ l ≤ cとする。 

F) HVIjの関連する利用者定義型をTUIj,1 ≤ j ≤ aとする。HVOkの関連する利用者定義型を

TUOk,1 ≤ k ≤ bとする。HVIOlの関連する利用者定義型をTUIOl,1 ≤ l ≤ cとする。 

G) <埋込み変換グループ指定>に含まれる<グループ指定>に含まれるTUIjの<利用者定義型

名>に対応する<グループ名>をGNIj,1 ≤ j ≤ aとする。<埋込み変換グループ指定>に含ま

れる<グループ指定>に含まれるTUOkの<利用者定義型名>に対応する<グループ名>を

GNOk,1 ≤ k ≤ bとする。<埋込み変換グループ指定>に含まれる<グループ指定>に含まれ

るTUIOlの<利用者定義型名>に対応する<グループ名>をGNIOl,1 ≤ l ≤ cとする。 

H) どのj,1 ≤ j ≤ aに対しても,TUIjをTYPEとして,GNIjをGROUPとして,“9.23 TO-SQL

関数の決定”の構文規則を適用する。<ルーチン名> TSINjによって識別される適用可能な

TO-SQL関数TSFIjが存在しなければならない。TSFIjの単一SQLパラメタのデータ型を

TTIjとする。TSIjは,TTIjに代入可能でなければならない。 

I) どのl,1 ≤ l ≤ cに対しても,TUIOlをTYPEとして,GNIOlをGROUPとして,“9.23 TO-

SQL関数の決定”の構文規則を適用する。<ルーチン名> TSIONlによって識別される適用

可能なTO-SQL関数TSFIOlが存在しなければならない。TSFIOlの単一SQLパラメタの

データ型をTTIOlとする。TSIOlは,TTIOlに代入可能でなければならない。 

J) どのk,1 ≤ k ≤ bに対しても,TUOkをTYPEとして,GNOkをGROUPとして,“9.21 FROM-

SQL関数の決定”の構文規則を適用する。<ルーチン名> FSONkによって識別される適用

可能なFROM-SQL関数FSFOkが存在しなければならない。FSFOkの結果データ型をTROk

とする。TSOkは,TROkに代入可能でなければならない。 

K) どのl,1 ≤ l ≤ cに対しても,TUIOlをTYPEとして,GNIOlをGROUPとして,“9.21 FROM-

SQL関数の決定”の構文規則を適用する。<ルーチン名> FSIONlによって識別される適用

可能なFROM-SQL関数FSFIOlが存在しなければならない。FSFIOlの結果データ型を

859 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

TRIOlとする。TSIOlは,TRIOlに代入可能でなければならない。 

L) <SQL変数名>のそれぞれが,ESに含まれる他のどの<SQL変数名>とも,ESに含まれるど

の<SQLパラメタ名>とも,又はESに含まれるどの<列名>とも,等価でない処理系依存の

<SQL変数名>を,SVIj,1 ≤ j ≤ a,SVOk,1 ≤ k ≤ b及びSVIOl,1 ≤ l ≤ cとする。 

7) 

14 ESの写し中のどのHVNi,1 ≤ i ≤ nも,次のとおりに置き換えた写しである<SQL手続文>

をNESとする。 

場合: 

A) HViが,関連する利用者定義型をもつが,利用者定義型位置付け子変数でないならば,次

による。 

場合: 

I) Piが入力ホストパラメタならば,Piに対応する入力ホストパラメタをPIj,1 ≤ j ≤ aとす

る。HVNiは,SVIjによって置き換えられる。 

II) Piが出力ホストパラメタならば,Piに対応する出力ホストパラメタをPOk,1 ≤ k ≤ bと

する。HVNiは,SVOkによって置き換えられる。 

III) そうでなければ,Piに対応する入出力ホストパラメタをPIOl,1 ≤ l ≤ cとする。HVNi

は,SVIOlによって置き換えられる。 

B) 

14 そうでなければ,HVNiは,PNiによって置き換えられる。 

8) 

14 PSの<SQL手続文>は,次とする。 

BEGIN ATOMIC 

    DECLARE SVI1 TUI1; 

    ... 

    DECLARE SVIa TUIa; 

    DECLARE SVO1 TUO1; 

    ... 

    DECLARE SVOb TUOb; 

    DECLARE SVIO1 TUIO1; 

    ... 

    DECLARE SVIOc TUIOc; 

    SET SVI1 = TSIN1 (CAST (PNI1 AS TTI1)); 

    ... 

    SET SVIa = TSINa (CAST (PNIa AS TTIa)); 

    SET SVIO1 = TSION1 (CAST (PNIO1 AS TTIO1)); 

    ... 

    SET SVIOc = TSIONc (CAST (PNIOc AS TTIOc)); 

    NES; 

    SET PNO1 = CAST ( FSON1 (SVO1) AS TSO1); 

    ... 

    SET PNOb = CAST ( FSONb (SVOb) AS TSOb); 

    SET PNIO1 = CAST ( FSION1 (SVIO1) AS TSIO1); 

    ... 

860 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

    SET PNIOc = CAST ( FSIONc (SVIOc) AS TSIOc); 

END; 

9) Mの一つの<外部呼出し手続>を,Hの二つ以上の<SQL手続文>に対応させることができる

かどうかは,処理系依存とする。 

ii) ESが<OPEN文>ならば,次による。 

1) ESによって参照されるH中の<カーソル宣言>をECとする。 

2) PSは,ECに対応するM中の<カーソル宣言>を参照する<OPEN文>を含むM中の<外部呼出

し手続>とする。 

23) 10 Pは,次のとおりにHから導出される。 

a) 各<埋込みSQL開始宣言>,<埋込みSQL終了宣言>及び<埋込み文字集合宣言>が削除される。埋

込みホスト言語がMならば,各<埋込みSQL MUMPS宣言>が削除される。 

b) <埋込みSQL宣言節>中の各<ホスト変数定義>は,適用埋込み言語細分箇条の構文規則に従って,

相手ホスト言語中での正しいデータ定義によって置き換えられる。 

c) 

04 <カーソル宣言>,<動的カーソル宣言>,<SQL呼出しルーチン>又は<一時表宣言>を含む各<埋

込みSQL文>が削除され,<埋込み例外宣言>を含むどの<埋込みSQL文>も,“21.2 <埋込み例外

宣言>”の一般規則で規定する効果をもつホスト言語の幾つかの文によって置き換えられる。 

d) <SQL手続文>を含む各<埋込みSQL文>は,次の動作を実行するホスト言語の幾つかの文によっ

て置き換えられる。 

i) 

<SQL手続文>に対応する,Hの暗に想定される<SQLクライアントモジュール定義> Mの<外

部呼出し手続>の,ホスト言語の手続又はサブルーチンの呼出し。 

<SQL手続文>が<OPEN文>でないならば,呼出しの引数は,SQLSTATE <ホスト識別子>とと

もに,<SQL手続文>に含まれる互いに異なるそれぞれの<ホスト識別子>を含む。<SQL手続文

>が<OPEN文>ならば,呼出しの引数は,SQLSTATE <ホスト識別子>とともに,Hの対応する<

カーソル宣言>に含まれる互いに異なるそれぞれの<ホスト識別子>を含む。 

呼出し中の引数の順序は,対応する<外部呼出し手続>中の対応する<ホストパラメタ宣言>の

順序と対応する。 

注記557 <SQL埋込みFortranプログラム>中では,“SQLSTATE”変数は,“SQLSTA”と略

してもよい(“21.6 <SQL埋込みFortranプログラム>”の構文規則参照)。 

ii) “21.2 <埋込み例外宣言>”で規定するとおりの例外動作。 

e) <埋込み認可宣言>を含む各<文又は宣言>が削除される。 

アクセス規則 

1) <文又は宣言>に含まれる<埋込み変数名>をもち,かつ,関連する利用者定義型をもつどのホスト変

数に対しても,現行の権限は,対応するSQLクライアントモジュール中で参照される(FROM SQL

関数があるならば,)全てのFROM SQL関数及び(TO SQL関数があるならば,)全てのTO SQL関

数に関するEXECUTE権限を含まなければならない。 

一般規則 

1) <SQL埋込みホストプログラム> Hの解釈は,Hの暗に想定されるプログラムP及びHの暗に想定

される<SQLクライアントモジュール定義> Mの解釈と等価であると定義される。 

適合性規則 

1) 機能B051“拡張実行権”なしでは,適合するSQL言語は,<埋込み認可宣言>を含んではならない。 

861 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) 機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<埋込み文字集合宣言>を含んで

はならない。 

3) 機能F361“サブプログラム提供”なしでは,適合するSQL言語は,同じ変数名を指定する二つの<

ホスト変数定義>を含んではならない。 

4) 機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<埋込みパス指

定>を含んではならない。 

5) 機能S241“変換関数”なしでは,適合するSQL言語は,<埋込み変換グループ指定>を含んではな

らない。 

21.2 <埋込み例外宣言> 

機能 

<埋込み例外宣言> (<embedded exception declaration>) は,SQL文が特定のクラスの条件を引き起こした

ときにとるべき動作を指定する。 

形式 

<埋込み例外宣言> ::= 

  WHENEVER <条件> <例外動作> 

<条件> ::= 

  <SQL条件> 

<SQL条件> ::= 

  <主要カテゴリ> 

| SQLSTATE ( <SQLSTATEクラスコード> [ , <SQLSTATEサブクラスコード> ] ) 

| CONSTRAINT <制約名> 

<主要カテゴリ> ::= 

  SQLEXCEPTION 

| SQLWARNING 

| NOT FOUND 

<SQLSTATEクラスコード> ::= 

  <SQLSTATE文字><SQLSTATE文字> !! 構文規則参照。 

<SQLSTATEサブクラスコード> ::= 

  <SQLSTATE文字><SQLSTATE文字><SQLSTATE文字> !! 構文規則参照。 

<SQLSTATE文字> ::= 

  <単純ラテン大文字> 

| <数字> 

<例外動作> ::= 

  CONTINUE 

| <GO TO> 

<GO TO> ::= 

  { GOTO | GO TO } <GOTO相手> 

<GOTO相手> ::= 

  <ホストラベル識別子> 

| <符号なし整数> 

862 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <ホストPL/Iラベル変数> 

<ホストラベル識別子> ::= 

  !! 構文規則参照。 

<ホストPL/Iラベル変数> ::= 

  !! 構文規則参照。 

構文規則 

1) SQLWARNING,NOT FOUND及びSQLEXCEPTIONは,それぞれ,表33“SQLSTATEのクラス及

びサブクラスのコード”中のカテゴリW,N及びXに対応するSQLSTATEクラスコードに対応す

る。 

2) <SQL埋込みホストプログラム>に含まれる<埋込み例外宣言>が,その<SQL埋込みホストプログラ

ム>に含まれる<SQL手続文>に適用されるということは,<SQL埋込みホストプログラム>のテキス

トの並び中で,条件Cをもつ<埋込み例外宣言>の後に<SQL手続文>が現れ,<SQL埋込みホストプ

ログラム>のテキストの並び中で,その<埋込み例外宣言>と<SQL手続文>との間に,次の条件のう

ちの一つを満たす他のどの<埋込み例外宣言> Eも,現れないことと同値とする。 

Eに含まれる<条件>をDとする。 

a) DがCと同じである。 

b) Dが<主要カテゴリ>で,かつ,Cが属するクラスと同じクラスに属する。 

c) Dが<SQLSTATEクラスコード>を含むが,<SQLSTATEサブクラスコード>を含まず,かつ,Cが

含むものと同じ<SQLSTATEクラスコード>をEが含む。 

d) 整合性制約違反 (integrity constraint violation) に対応する<SQLSTATEクラスコード>をDが含み,

かつ,CがCONSTRAINTを含む。 

3) <SQLSTATEクラスコード>及び<SQLSTATEサブクラスコード>の値中で,<SQLSTATE文字>の間

に<分離符号>が存在してはならない。 

4) <SQLSTATEクラスコード>及び<SQLSTATEサブクラスコード>の値は,それぞれ,表33“SQLSTATE

のクラス及びサブクラスのコード”で規定するクラスコード及びサブクラスコードに対応しなけれ

ばならない。 

5) <埋込み例外宣言>が<GO TO>を指定するならば,<GO TO>の<ホストラベル識別子>,<ホストPL/I

ラベル変数>又は<符号なし整数>は,その<ホストラベル識別子>,<ホストPL/Iラベル変数>又は<

符号なし整数>を指定するホスト言語のGO TO文が,<埋込み例外宣言>が適用されるどの<SQL手

続文>においても正しいようなものでなければならない。 

注記558 <埋込み例外宣言>が<SQL埋込みAdaプログラム>に含まれるならば,<GO TO>の<GOTO

相手>は,<埋込み例外宣言>を含む<SQL埋込みAdaプログラム>のラベル名 (label̲name) 

である<ホストラベル識別子>を指定することが望ましい。 

<埋込み例外宣言>が<SQL埋込みCプログラム>に含まれるならば,<GO TO>の<GOTO

相手>は,<埋込み例外宣言>を含む<SQL埋込みCプログラム>のラベル (label) である<

ホストラベル識別子>を指定することが望ましい。 

<埋込み例外宣言>が<SQL埋込みCOBOLプログラム>に含まれるならば,<GO TO>の

<GOTO相手>は,<埋込み例外宣言>を含む<SQL埋込みCOBOLプログラム>の節名 

(section-name) 又は修飾なしの段落名 (paragraph-name) である<ホストラベル識別子>を

指定することが望ましい。 

863 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<埋込み例外宣言>が<SQL埋込みFortranプログラム>に含まれるならば,<GO TO>の

<GOTO相手>は,<GO TO>と同じプログラム単位 (program unit) 中に現れる実行可能文

の文ラベル (statement label) である<符号なし整数>であることが望ましい。 

<埋込み例外宣言>が<SQL埋込みMUMPSプログラム>に含まれるならば,<GO TO>

の<GOTO相手>は,同じ<SQL埋込みMUMPSプログラム>中に現れる実行可能文の文ラ

ベル (statement label) であるGOTO引数 (gotoargument) であることが望ましい。 

<埋込み例外宣言>が<SQL埋込みPascalプログラム>に含まれるならば,<GO TO>の

<GOTO相手>は,ラベル (label) である<符号なし整数>であることが望ましい。 

<埋込み例外宣言>が<SQL埋込みPL/Iプログラム>に含まれるならば,<GO TO>の

<GOTO相手>は,<ホストラベル識別子>又は<ホストPL/Iラベル変数>のいずれかを指

定することが望ましい。 

場合: 

− <ホストラベル識別子>が指定されるならば,<ホストラベル識別子>は,それを含む

<SQL埋込みPL/Iプログラム>中のラベル定数 (label constant) であることが望ましい。 

− <ホストPL/Iラベル変数>が指定されるならば,<ホストPL/Iラベル変数>は,それを

含む<SQL埋込みPL/Iプログラム>中で宣言されたPL/Iラベル変数 (PL/I label variable) 

であることが望ましい。 

アクセス規則 

なし。 

一般規則 

1) 成功終了 (successful completion) 以外のSQLSTATE値を戻す<SQL埋込みホストプログラム>中の

<SQL手続文> STMTの実行の直後は,次による。 

a) STMTを含む<SQL埋込みホストプログラム>に含まれ,STMTに適用され,かつ,<GO TO>であ

る<例外動作>を指定する<埋込み例外宣言>の集合をEとする。 

b) <SQL手続文>の結果を示すSQLSTATE値のクラス及びサブクラスの値を,それぞれ,CV及び

SCVとする。 

c) <SQL手続文>の実行が一つ以上の制約又は表明の違反を引き起こしたならば,次による。 

i) 

CONSTRAINTと,STMTの実行によって違反した制約の<制約名>とを指定するE中の<埋込み

例外宣言>の集合をECNとする。 

ii) ECNが二つ以上の<埋込み例外宣言>を含むならば,処理系依存の<埋込み例外宣言>が,ECN

から選択される。そうでなければ,ECN中の単一の<埋込み例外宣言>が選択される。 

iii) ECNから選択される<埋込み例外宣言>中で指定される<GO TO>の<ホストラベル識別子>,<ホ

ストPL/Iラベル変数>又は<符号なし整数>を指定するホスト言語のGO TO文が実行される。 

d) そうでなければ,次による。 

i) 

SQLSTATE,<SQLSTATEクラスコード>及び<SQLSTATEサブクラスコード>を指定するE中の

<埋込み例外宣言>の集合をECSとする。 

ii) CVと同一の<SQLSTATEクラスコード>,及びSCVと同一の<SQLSTATEサブクラスコード>を

指定する<埋込み例外宣言> EYをECSが含むならば,<埋込み例外宣言> EY中で指定される

<GO TO>の<ホストラベル識別子>,<ホストPL/Iラベル変数>又は<符号なし整数>を指定する

ホスト言語のGO TO文が実行される。 

864 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) そうでなければ,次による。 

1) <SQLSTATEサブクラスコード>なしで,SQLSTATE及び<SQLSTATEクラスコード>を指定す

るE中の<埋込み例外宣言>の集合をECとする。 

2) CVと同一の<SQLSTATEクラスコード>を指定する<埋込み例外宣言> EYをECが含むなら

ば,<埋込み例外宣言> EY中で指定される<GO TO>の<ホストラベル識別子>,<ホストPL/I

ラベル変数>又は<符号なし整数>を指定するホスト言語のGO TO文が実行される。 

3) そうでなければ,次による。 

A) SQLEXCEPTIONを指定するE中の<埋込み例外宣言>の集合をEXとする。 

B) EXが<埋込み例外宣言> EYを含み,かつ,CVが表33“SQLSTATEのクラス及びサブクラ

スのコード”中のカテゴリXに属するならば,<埋込み例外宣言> EY中で指定される<GO 

TO>の<ホストラベル識別子>,<ホストPL/Iラベル変数>又は<符号なし整数>を指定する

ホスト言語のGO TO文が実行される。 

C) そうでなければ,次による。 

I) 

SQLWARNINGを指定するE中の<埋込み例外宣言>の集合をEWとする。 

II) EWが<埋込み例外宣言> EYを含み,かつ,CVが表33“SQLSTATEのクラス及びサブク

ラスのコード”中のカテゴリWに属するならば,<埋込み例外宣言> EY中で指定される

<GO TO>の<ホストラベル識別子>,<ホストPL/Iラベル変数>又は<符号なし整数>を指

定するホスト言語のGO TO文が実行される。 

III) そうでなければ,NOT FOUNDを指定するE中の<埋込み例外宣言>の集合をENFとす

る。ENFが<埋込み例外宣言> EYを含み,かつ,CVが表33“SQLSTATEのクラス及び

サブクラスのコード”中のカテゴリNに属するならば,<埋込み例外宣言> EY中で指定

される<GO TO>の<ホストラベル識別子>,<ホストPL/Iラベル変数>又は<符号なし整数

>を指定するホスト言語のGO TO文が実行される。 

適合性規則 

1) 機能B041“埋込みSQL例外宣言の拡張”なしでは,適合するSQL言語は,SQLSTATE又は

CONSTRAINTのいずれかを含む<SQL条件>を含んではならない。 

2) 機能F491“制約管理”なしでは,適合するSQL言語は,<制約名>を含む<SQL条件>を含んではな

らない。 

21.3 <SQL埋込みAdaプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.1 <SQL埋込みAdaプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.2 <SQL埋込みAdaプログラム>”によって修正される。 

機能 

<SQL埋込みAdaプログラム> (<embedded SQL Ada program>) は,<SQL埋込みAdaプログラム>を指定

する。 

形式 

<SQL埋込みAdaプログラム> ::= 

  !! 構文規則参照。 

<Ada変数定義> ::= 

  <Adaホスト識別子> [ { <コンマ> <Adaホスト識別子> }... ] <コロン> 

      <Ada型指定> [<Ada初期値> ] 

865 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<Ada初期値> ::= 

  <Ada代入演算子> <文字表現>... 

<Ada代入演算子> ::= 

  <コロン> <等号演算子> 

<Adaホスト識別子> ::= 

  !! 構文規則参照。 

<Ada型指定> ::= 

  <Ada修飾付き型指定> 

| <Ada修飾なし型指定> 

| <Ada導出型指定> 

<Ada修飾付き型指定> ::= 

  Interfaces.SQL.CHAR 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <左括弧> 1 <2重ピリオド> <文字長> <右括弧> 

| Interfaces.SQL.SMALLINT 

| Interfaces.SQL.INT 

| Interfaces.SQL.BIGINT 

| Interfaces.SQL.REAL 

| Interfaces.SQL.DOUBLE̲PRECISION 

| Interfaces.SQL.BOOLEAN 

| Interfaces.SQL.SQLSTATE̲TYPE 

| Interfaces.SQL.INDICATOR̲TYPE 

<Ada修飾なし型指定> ::= 

  CHAR <左括弧> 1 <2重ピリオド> <文字長> <右括弧> 

| SMALLINT 

| INT 

| BIGINT 

| REAL 

| DOUBLE̲PRECISION 

| BOOLEAN 

| SQLSTATE̲TYPE 

| INDICATOR̲TYPE 

09 14 <Ada導出型指定> ::= 

  <Ada CLOB変数> 

| <Ada CLOB位置付け子変数> 

| <Ada BINARY変数> 

| <Ada VARBINARY変数> 

| <Ada BLOB変数> 

| <Ada BLOB位置付け子変数> 

| <Ada利用者定義型変数> 

866 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <Ada利用者定義型位置付け子変数> 

| <Ada REF変数> 

| <Ada配列位置付け子変数> 

| <Adaマルチ集合位置付け子変数> 

<Ada CLOB変数> ::= 

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<Ada CLOB位置付け子変数> ::= 

  SQL TYPE IS CLOB AS LOCATOR 

<Ada BINARY変数> ::= 

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧> 

<Ada VARBINARY変数> ::= 

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧> 

<Ada BLOB変数> ::= 

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧> 

<Ada BLOB位置付け子変数> ::= 

  SQL TYPE IS BLOB AS LOCATOR 

<Ada利用者定義型変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型> 

<Ada利用者定義型位置付け子変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

<Ada REF変数> ::= 

  SQL TYPE IS <参照型> 

<Ada配列位置付け子変数> ::= 

  SQL TYPE IS <配列型> AS LOCATOR 

<Adaマルチ集合位置付け子変数> ::= 

  SQL TYPE IS <マルチ集合型> AS LOCATOR 

構文規則 

1) <SQL埋込みAdaプログラム>は,Adaテキスト及びSQLテキストから成る翻訳単位とする。Adaテ

キストは,[ISO8652] に適合しなければならない。SQLテキストは,一つ以上の<埋込みSQL文>,

及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなければならない。 

2) <埋込みSQL文>は,Adaの文を指定してもよいところには,どこに指定してもよい。<埋込みSQL

文>の前にAdaのラベルを付けてもよい。 

3) <Adaホスト識別子>は,任意の正しいAda識別子 (Ada identifier) とする。<Adaホスト識別子>は,

<SQL埋込みAdaプログラム>に含まれていなければならない。 

4) <Ada変数定義>は,一つ以上のホスト変数を定義する。<Ada変数定義>をAVDとする。AVDに含

まれる<Adaホスト識別子>をAHIとし,AVDに含まれる<Ada型指定>をATSとする。AHIに関連

付けられるホスト変数をHVとする。 

場合: 

a) ATSが<Ada修飾なし型指定>ならば,次による。 

867 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

CHARは,Interfaces.SQL.CHARと等価とする。 

ii) SMALLINTは,Interfaces.SQL.SMALLINTと等価とする。 

iii) INTは,Interfaces.SQL.INTと等価とする。 

iv) BIGINTは,Interfaces.SQL.BIGINTと等価とする。 

v) REALは,Interfaces.SQL.REALと等価とする。 

vi) DOUBLE̲PRECISIONは,Interfaces.SQL.DOUBLE̲PRECISIONと等価とする。 

vii) BOOLEANは,Interfaces.SQL.BOOLEANと等価とする。 

viii) SQLSTATE̲TYPEは,Interfaces.SQL.SQLSTATE̲TYPEと等価とする。 

ix) INDICATOR̲TYPEは,Interfaces.SQL.INDICATOR̲TYPEと等価とする。 

b) ATSが<Ada修飾付き型指定>ならば,次による。 

場合: 

i) 

Interfaces.SQL.CHARが指定されるならば,HVの<ホストパラメタデータ型>は,<文字長>によ

って指定される長さ及び<文字集合指定>によって指定される文字集合をもつCHARACTERと

する。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想定される。 

ii) Interfaces.SQL.SMALLINT,Interfaces.SQL.INT又はInterfaces.SQL.BIGINTが指定されるならば,

HVの<ホストパラメタデータ型>は,それぞれ,SMALLINT,INTEGER又はBIGINTとする。 

iii) Interfaces.SQL.REAL又はInterfaces.SQL.DOUBLE̲PRECISIONが指定されるならば,HVの<ホ

ストパラメタデータ型>は,それぞれ,REAL又はDOUBLE PRECISIONとする。 

iv) Interfaces.SQL.BOOLEANが指定されるならば,HVの<ホストパラメタデータ型>は,BOOLEAN

とする。 

v) Interfaces.SQL.SQLSTATE̲TYPEが指定されるならば,HVの<ホストパラメタデータ型>は,長

さ5文字及び“24.1 SQLSTATE”で定義するとおりの文字集合をもつCHARACTERとする。 

vi) Interfaces.SQL.INDICATOR̲TYPEが指定されるならば,HVの<ホストパラメタデータ型>は,

位取り0の処理系定義の真数とする。 

c) ATSが<Ada導出型指定>ならば,次による。 

i) 

ATSが<Ada CLOB変数>ならば,HVの<ホストパラメタデータ型>は,<文字長大オブジェクト

長>によって指定される最大長及び<文字集合指定>によって指定される文字集合をもつ

CHARACTER LARGE OBJECTとする。<文字集合指定>が省略されるならば,<文字集合指定>

は,処理系定義とする。 

ii) ATSが<Ada CLOB位置付け子変数>ならば,HVの<ホストパラメタデータ型>は,CLOB AS 

LOCATORとする。 

iii) ATSが<Ada BINARY変数>ならば,HVの<ホストパラメタデータ型>は,<長さ>によって指定

される長さをもつBINARYとする。 

iv) ATSが<Ada VARBINARY変数>ならば,HVの<ホストパラメタデータ型>は,<長さ>によって

指定される最大長をもつBINARY VARYINGとする。 

v) ATSが<Ada BLOB変数>ならば,HVの<ホストパラメタデータ型>は,<長大オブジェクト長>

によって指定される最大長をもつBINARY LARGE OBJECTとする。 

vi) ATSが<Ada BLOB位置付け子変数>ならば,HVの<ホストパラメタデータ型>は,BLOB AS 

LOCATORとする。 

vii) ATSが<Ada利用者定義型変数>ならば,HVの<ホストパラメタデータ型>は,ATSに含まれる

868 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<既定義型>とする。 

viii) ATSが<Ada利用者定義型位置付け子変数>ならば,<パス解決利用者定義型名>をUDTNとす

る。HVの<ホストパラメタデータ型>は,UDTN AS LOCATORとする。 

ix) ATSが<Ada  REF変数>ならば,HVの<ホストパラメタデータ型>は,ATSに含まれる<参照型

>とする。 

x) ATSが<Ada配列位置付け子変数>ならば,HVの<ホストパラメタデータ型>は,AT AS LOCATOR

とする。ここで,ATは,ATSに含まれる<配列型>とする。 

xi) 

14 ATSが<Adaマルチ集合位置付け子変数>ならば,HVの<ホストパラメタデータ型>は,MT AS 

LOCATORとする。ここで,MTは,ATSに含まれる<マルチ集合型>とする。 

5) <Ada変数定義>は,<SQL埋込みAdaプログラム>から導出されるプログラムにそれが配置される前

に,次のとおりに修正されなければならない(“21.1 <SQL埋込みホストプログラム>”の構文規則

参照)。 

a) 省略可能などのCHARACTER SET指定も,<Ada修飾付き型指定>及び<Ada導出型指定>から取

り除かれなければならない。 

次の値をkとする。 

場合: 

i) 

OCTETSが指定されるならば,1。 

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。 

iii) そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。 

b) 省略可能などの<文字長単位>も,<Ada修飾付き型指定>及び<Ada導出型指定>から取り除かれな

ければならない。 

c) どの<Ada修飾付き型指定>のCHAR宣言中で指定される<文字長> CLも,値がL*kと等しい長さ

によって置き換えられなければならない。ここで,Lは,CLに含まれる<長さ>の値とする。 

d) 与えられた<Adaホスト識別子> HVNに対して,どの<Ada BINARY変数>中でも,構文 

SQL TYPE IS BINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

HVN : Interfaces.SQL.CHAR(1..L) 

e) 与えられた<Adaホスト識別子> HVNに対して,どの<Ada VARBINARY変数>中でも,構文 

SQL TYPE IS VARBINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

TYPE HVN IS RECORD 

HVN̲RESERVED : Interfaces.SQL.INT; 
HVN̲LENGTH : Interfaces.SQL.INT; 
HVN̲DATA : Interfaces.SQL.CHAR( 1..L ); 

END RECORD; 

f) 

14 与えられた<Adaホスト識別子> HVNに対して,どの<Ada CLOB変数>中でも,構文 

SQL TYPE IS CLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

TYPE HVN IS RECORD 

HVN̲RESERVED : Interfaces.SQL.INT; 

869 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

HVN̲LENGTH : Interfaces.SQL.INT; 
HVN̲DATA : Interfaces.SQL.CHAR(1..LL); 

END RECORD;; 

ここで,LLの値は,NV*kとし,NVは,“6.1 <データ型>”で規定するとおりのLの値とする。 

g) 与えられた<Adaホスト識別子> HVNに対して,どの<Ada BLOB変数>中でも,構文 

SQL TYPE IS BLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

TYPE HVN IS RECORD 

HVN̲RESERVED : Interfaces.SQL.INT; 
HVN̲LENGTH : Interfaces.SQL.INT; 
HVN̲DATA : Interfaces.SQL.CHAR( 1..LL ); 

END RECORD; 

ここで,LLの値は,“6.1 <データ型>”で規定するとおりのLの数値とする。 

h) どの<Ada利用者定義型変数>中でも,構文 

SQL TYPE IS UDTN AS PDT 

は,次の指定によって置き換えられなければならない。 

ADT 

ここで,ADTは,表16“Adaのためのデータ型対応”のSQLデータ型PDTに対する行に対応す

る“Adaデータ型”列中に記載されたデータ型とする。ADTは,“なし”であってはならない。

UDTNによって識別されるデータ型を,ホスト変数の関連する利用者定義型 (associated user-

defined type) と呼び,PDTによって識別されるデータ型を,ホスト変数の関連するSQLデータ型 

(associated SQL data type) と呼ぶ。 

i) 

どの<Ada BLOB位置付け子変数>中でも,構文 

SQL TYPE IS BLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

Interfaces.SQL.INT 

<Ada BLOB位置付け子変数>によって定義されるホスト変数を,2進オクテット長大オブジェク

ト位置付け子変数 (binary large object locator variable) と呼ぶ。 

j) 

どの<Ada CLOB位置付け子変数>中でも,構文 

SQL TYPE IS CLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

Interfaces.SQL.INT 

<Ada CLOB位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付け

子変数 (character large object locator variable) と呼ぶ。 

k) どの<Ada利用者定義型位置付け子変数>中でも,構文 

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

Interfaces.SQL.INT 

<Ada利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け子

変数 (user-defined type locator variable) と呼ぶ。<パス解決利用者定義型名>によって識別されるデ

ータ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) と呼ぶ。 

870 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

l) 

どの<Ada配列位置付け子変数>中でも,構文 

SQL TYPE IS <配列型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

Interfaces.SQL.INT 

<Ada配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数 (array locator 

variable) と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型 

(associated array type) と呼ぶ。 

m) どの<Adaマルチ集合位置付け子変数>中でも,構文 

SQL TYPE IS <マルチ集合型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

Interfaces.SQL.INT 

<Adaマルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変数 

(multiset locator variable) と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数の

関連するマルチ集合型 (associated multiset type) と呼ぶ。 

n) 

09 与えられた<Adaホスト識別子> RTVに対して,どの<Ada REF変数>中でも,構文 

SQL TYPE IS <参照型> 

は,次の指定によって置き換えられなければならない。 

RTV : Interfaces.SQL.CHAR(1..RL) 

ここで,RLの値は,参照型のオクテット単位での長さとする。 

修正された<Ada変数定義>は,<SQL埋込みAdaプログラム>から導出されるプログラム中で,正し

いAdaオブジェクト宣言 (object-declaration) でなければならない。 

6) <Ada REF変数>に含まれる<参照型>に含まれる<被参照型>によって識別される被参照型を,その参

照の被参照型 (referenced type) と呼ぶ。 

7) <Ada変数定義>は,次の内容を指定するAdaのwith及びuse句の有効範囲内で指定しなければな

らない。 

with Interfaces.SQL; 

use Interfaces.SQL; 

use Interfaces.SQL.CHARACTER̲SET; 

8) <Ada初期値>中の<文字表現>の並びは,Ada変数に代入する初期値を指定する。それは,初期値の

ためのAdaの正しい指定でなければならない。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

1) 機能B011“埋込みAda”なしでは,適合するSQL言語は,<SQL埋込みAdaプログラム>を含んで

はならない。 

2) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada BLOB変数>を含んで

はならない。 

3) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada CLOB変数>を含んで

871 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

はならない。 

4) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada BLOB位置付け子変

数>を含んではならない。 

5) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada CLOB位置付け子変

数>を含んではならない。 

6) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,Interfaces.SQL.BIGINTを含む<Ada

修飾付き型指定>を含んではならない。 

7) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,BIGINTを含む<Ada修飾なし型指

定>を含んではならない。 

8) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Ada BINARY

変数>を含んではならない。 

9) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Ada VARBINARY

変数>を含んではならない。 

10) 機能S241“変換関数”なしでは,適合するSQL言語は,<Ada利用者定義型変数>を含んではなら

ない。 

11) 機能S041“基本参照型”なしでは,適合するSQL言語は,<Ada REF変数>を含んではならない。 

12) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<Ada配列位置付け子変数>を含ん

ではならない。 

13) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Adaマルチ集合位置付け子

変数>を含んではならない。 

14) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<Ada利用者定

義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

21.4 

<SQL埋込みCプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.2 <SQL埋込みCプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.3 <SQL埋込みCプログラム>”によって修正される。 

機能 

<SQL埋込みCプログラム> (<embedded SQL C program>) は,<SQL埋込みCプログラム>を指定する。 

形式 

<SQL埋込みCプログラム> ::= 

  !! 構文規則参照。 

<C変数定義> ::= 

  [ <C記憶クラス> ] [ <Cクラス修飾子> ] 

      <C変数指定> <セミコロン> 

<C変数指定> ::= 

  <C数値変数> 

| <C文字変数> 

| <C導出変数> 

<C記憶クラス> ::= 

  auto 

| extern 

872 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| static 

<Cクラス修飾子> ::= 

  const 

| volatile 

<C数値変数> ::= 

  { long long | long | short | float | double } 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> [ <C初期値> ] }... ] 

<C文字変数> ::= 

  <C文字型> [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <Cホスト識別子> <C配列指定> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> <C配列指定> 

      [ <C初期値> ] }... ] 

<C文字型> ::= 

  char 

| unsigned char 

| unsigned short 

<C配列指定> ::= 

  <左角括弧> <文字長> <右角括弧> 

<Cホスト識別子> ::= 

  !! 構文規則参照。 

09 14 <C導出変数> ::= 

  <C VARCHAR変数> 

| <C NCHAR変数> 

| <C NCHAR VARYING変数> 

| <C CLOB変数> 

| <C NCLOB変数> 

| <C BINARY変数> 

| <C VARBINARY変数> 

| <C BLOB変数> 

| <C利用者定義型変数> 

| <C CLOB位置付け子変数> 

| <C BLOB位置付け子変数> 

| <C配列位置付け子変数> 

| <Cマルチ集合位置付け子変数> 

| <C利用者定義型位置付け子変数> 

| <C REF変数> 

<C VARCHAR変数> ::= 

  VARCHAR [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <Cホスト識別子> <C配列指定> [ <C初期値> ] 

873 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

      [ { <コンマ> <Cホスト識別子> <C配列指定> 

      [ <C初期値> ] }... ] 

<C NCHAR変数> ::= 

  NCHAR [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <Cホスト識別子> <C配列指定> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> <C配列指定> 

      [ <C初期値> ] }... ] 

<C NCHAR VARYING変数> ::= 

  NCHAR VARYING [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <Cホスト識別子> <C配列指定> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> <C配列指定> 

      [ <C初期値> ] }... ] 

<C CLOB変数> ::= 

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <Cホスト識別子> [ <C初期値> ]  [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C NCLOB変数> ::= 

  SQL TYPE IS NCLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

      <Cホスト識別子> [ <C初期値> ]  [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C利用者定義型変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型> 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C BINARY変数> ::= 

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧> 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> [ <C初期値> ] }... ] 

<C VARBINARY変数> ::= 

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧> 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> [ <C初期値> ] }... ] 

<C BLOB変数> ::= 

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧> 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

874 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<C CLOB位置付け子変数> ::= 

  SQL TYPE IS CLOB AS LOCATOR 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C BLOB位置付け子変数> ::= 

  SQL TYPE IS BLOB AS LOCATOR 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C配列位置付け子変数> ::= 

  SQL TYPE IS <配列型> AS LOCATOR 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<Cマルチ集合位置付け子変数> ::= 

  SQL TYPE IS <マルチ集合型> AS LOCATOR 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C利用者定義型位置付け子変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

      <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> 

      [ <C初期値> ] }... ] 

<C REF変数> ::= 

  SQL TYPE IS <参照型> <Cホスト識別子> [ <C初期値> ] 

      [ { <コンマ> <Cホスト識別子> [ <C初期値> ] }... ] 

<C初期値> ::= 

  <等号演算子> <文字表現>... 

構文規則 

1) <SQL埋込みCプログラム>は,Cテキスト及びSQLテキストから成る翻訳単位とする。Cテキス

トは,JIS X 3010 [ISO9899] に適合しなければならない。SQLテキストは,一つ以上の<埋込みSQL

文>,及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなければならない。 

2) <埋込みSQL文>は,関数ブロック (function block) 内で,Cの文を指定してもよいところには,ど

こに指定してもよい。Cの文がラベル先頭子 (label prefix) を含むことができるならば,<埋込みSQL

文>の直前にラベル先頭子を付けてもよい。 

3) <Cホスト識別子>は,任意の正しいC変数識別子 (variable identifier) とする。<Cホスト識別子>は,

<SQL埋込みCプログラム>に含まれていなければならない。 

4) <C変数定義> CVDは,一つ以上のホスト変数を定義する。CVDに含まれる<Cホスト識別子>をCHI

875 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

とし,CVDに含まれる<C変数指定>をCVSとする。CHIに関連付けられるホスト変数をHVとす

る。 

場合: 

a) CVSが<C数値変数>ならば,次による。 

場合: 

i) 

“long long”が指定されるならば,HVの<ホストパラメタデータ型>は,BIGINTとする。 

ii) “long”が指定されるならば,HVの<ホストパラメタデータ型>は,INTEGERとする。 

iii) “short”が指定されるならば,HVの<ホストパラメタデータ型>は,SMALLINTとする。 

iv) “float”が指定されるならば,HVの<ホストパラメタデータ型>は,REALとする。 

v) “double”が指定されるならば,HVの<ホストパラメタデータ型>は,DOUBLE PRECISIONと

する。 

b) CVSが<C文字変数>,又はCVSが<C VARCHAR変数>,<C NCHAR変数>,<C NCHAR VARYING

変数>,<C CLOB変数>若しくは<C NCLOB変数>を単純に含む<C導出変数>ならば,次による。 

i) 

<C文字変数>,<C VARCHAR変数>又は<C CLOB変数>が指定されるならば,HVの<ホストパ

ラメタデータ型>は,それぞれ,CHARACTER,CHARACTER VARYING又はCHARACTER 

LARGE OBJECTとする。<C NCHAR変数>,<C NCHAR VARYING変数>又は<C NCLOB変数

>が指定されるならば,HVの<ホストパラメタデータ型>は,それぞれ,NATIONAL CHARACTER,

NATIONAL CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTとする。<

文字集合指定>が指定されるならば,HVの文字集合は,<文字集合指定>によって指定される文

字集合と同じとする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が

暗に想定される。 

ii) <C文字変数>又は<C NCHAR変数>が指定されるならば,HVは,固定長文字列とする。長さ

は,<C配列指定>の<文字長>によって指定され,暗に想定されるか又は陽に指定される<文字

長単位>によって指定される単位で測られる。HV中の値は,ナル文字によって終了し,このナ

ル文字によって占められる位置は,HVの長さに含まれる。HVの<ホストパラメタデータ型>

は,それぞれ,<C配列指定>の<文字長>より1小さい長さをもつCHARCTER又はNATIONAL 

CHARCTERとし,その値は,終端ナル文字を含まない。<文字長>は,2以上でなければならな

い。 

iii) <C VARCHAR変数>又は<C NCHAR VARYING変数>が指定されるならば,HVは,可変長文字

列を記述する。最大長は,<C配列指定>の<文字長>によって指定され,暗に想定されるか又は

陽に指定される<文字長単位>によって指定される単位で測られる。HV中の値は,ナル文字に

よって終了し,このナル文字によって占められる位置は,HVの最大長に含まれる。HVの<ホ

ストパラメタデータ型>は,それぞれ,<C配列指定>の<文字長>より1小さい最大長をもつ

CHARCTER VARYING又はNATIONAL CHARCTER VARYINGとし,その値は,終端ナル文字

を含まない。<文字長>は2以上でなければならない。 

iv) <C CLOB変数>又は<C NCLOB変数>が指定されるならば,HVの<ホストパラメタデータ型>

は,それぞれ,<文字長大オブジェクト長>によって指定される最大長をもつCHARACTER 

LARGE OBJECT又はNATIONAL CHARACTER LARGE OBJECTとする。 

c) CVSが<C導出変数>ならば,次による。 

場合: 

876 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

CVSが<C BINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>によって

指定される長さをもつBINARYとする。 

ii) CVSが<C VARBINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>によ

って指定される最大長をもつBINARY VARYINGとする。 

iii) CVSが<C BLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<長大オブジェクト

長>によって指定される最大長をもつBINARY LARGE OBJECTとする。 

iv) CVSが<C利用者定義型変数>を含むならば,HVの<ホストパラメタデータ型>は,CVSに含ま

れる<既定義型>とする。 

v) CVSが<C CLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATORとする。 

vi) CVSが<C BLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,BINARY 

LARGE OBJECT AS LOCATORとする。 

vii) CVSが<C配列位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,AT AS 

LOCATORとする。ここで,ATは,<配列型>とする。 

viii) CVSが<Cマルチ集合位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,MT 

AS LOCATORとする。ここで,MTは,<マルチ集合型>とする。 

ix) CVSが<C利用者定義型位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

UDT AS LOCATORとする。ここで,UDTは,<パス解決利用者定義型名>とする。 

x) 

14 CVSが<C REF変数>を含むならば,HVの<ホストパラメタデータ型>は,RTとする。ここ

で,RTは,<参照型>とする。RTに含まれる<被参照型>によって識別される被参照型を,その

参照の被参照型 (referenced type) と呼ぶ。 

5) <C変数定義>は,<SQL埋込みCプログラム>から導出されるプログラムにそれが配置される前に,

次のとおりに修正されなければならない(“21.1 <SQL埋込みホストプログラム>”の構文規則参照)。 

a) 

14 省略可能などのCHARACTER SET指定も,<C VARCHAR変数>,<C文字変数>,<C CLOB変

数>,<C NCHAR変数>,<C NCHAR VARYING変数>又は<C NCLOB変数>から取り除かれなけれ

ばならない。 

次の値をkとする。 

場合: 

i) 

OCTETSが指定されるならば,1。 

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。 

iii) そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。 

b) 省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。 

c) どの<C VARCHAR変数>中でも,構文“VARCHAR”は,“char”によって置き換えられなければ

ならない。 

d) <C文字型>が“char”若しくは“unsigned char”を指定する任意の<C文字変数>,任意の<C 

VARCHAR変数>,任意の<C NCHAR変数>又は任意の<C NCHAR VARYING変数>中の<C配列指

定>中で指定される<文字長> CLは,値がNV*kと等しい長さによって置き換えられなければなら

ない。ここで,NVは,CLに含まれる<長さ>の数値とする。 

877 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記559 <文字長>の単位は,基となる文字集合によって用いられる単位と既に同じであると仮

定されているので,<文字長>は,“unsigned short”を指定する<C文字型>に対し

ては調整されない。 

e) 任意の<C NCHAR変数>中の構文“NCHAR”,及び任意の<C NCHAR VARYING変数>中の構文

“NCHAR VARYING”は,“char”によって置き換えられなければならない。 

f) 

14 与えられた<Cホスト識別子> hvnに対して,どの<C CLOB変数>又は<C NCLOB変数>中でも,

構文 

SQL TYPE IS CLOB ( L ) 

及び構文 

SQL TYPE IS NCLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

struct {   

    long             hvn̲reserved ; 

    unsigned long  hvn̲length ; 

    char             hvn̲data [LL]; 

} hvn 

ここで,LLの値は,NV*kとし,NVは,“6.1 <データ型>”で規定するとおりのLの数値とする。 

g) 与えられた<Cホスト識別子> hvnに対して,どの<C BLOB変数>中でも,構文 

SQL TYPE IS BLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

struct {   

    long             hvn̲reserved ; 

    unsigned long  hvn̲length ; 

    char             hvn̲data [LL]; 

} hvn 

ここで,LLの値は,“6.1 <データ型>”で規定するとおりのLの数値とする。 

h) 与えられた<Cホスト識別子> hvnに対して,どの<C BINARY変数>中でも,構文 

SQL TYPE IS BINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

unsigned char hvn [L] 

i) 

与えられた<Cホスト識別子> hvnに対して,どの<C VARBINARY変数>中でも,構文 

SQL TYPE IS VARBINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

struct {    

    long             hvn̲reserved ; 

    unsigned long  hvn̲length ; 

    char             hvn̲data [L]; 

} hvn 

j) 

どの<C利用者定義型変数>中でも,構文 

SQL TYPE IS UDTN AS PDT 

878 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

は,次の指定によって置き換えられなければならない。 

ADT 

ここで,ADTは,表17“Cのためのデータ型対応”のSQLデータ型PDTに対する行に対応する

“Cデータ型”列中に記載されたデータ型とする。ADTは,“なし”であってはならない。UDTN

によって識別されるデータ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) 

と呼び,PDTによって識別されるデータ型を,ホスト変数の関連するSQLデータ型 (associated 

SQL data type) と呼ぶ。 

k) どの<C BLOB位置付け子変数>中でも,構文 

SQL TYPE IS BLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

unsigned long 

<C BLOB位置付け子変数>によって定義されるホスト変数を,2進オクテット長大オブジェクト

位置付け子変数 (binary large object locator variable) と呼ぶ。 

l) 

どの<C CLOB位置付け子変数>中でも,構文 

SQL TYPE IS CLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

unsigned long 

<C CLOB位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付け子

変数 (character large object locator variable) と呼ぶ。 

m) どの<C配列位置付け子変数>中でも,構文 

SQL TYPE IS <配列型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

unsigned long 

<C配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数 (array locator 

variable) と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型 

(associated array type) と呼ぶ。 

n) どの<Cマルチ集合位置付け子変数>中でも,構文 

SQL TYPE IS <マルチ集合型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

unsigned long 

<Cマルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変数 

(multiset locator variable) と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数の

関連するマルチ集合型 (associated multiset type) と呼ぶ。 

o) どの<C利用者定義型位置付け子変数>中でも,構文 

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

unsigned long 

<C利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け子変

数 (user-defined type locator variable) と呼ぶ。<パス解決利用者定義型名>によって識別されるデー

タ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) と呼ぶ。 

879 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

p) 

09 与えられた<Cホスト識別子> hvnに対して,どの<C REF変数>中でも,構文 

SQL TYPE IS <参照型> 

は,次の指定によって置き換えられなければならない。 

unsigned char hvn [L] 

ここで,Lの値は,参照型のオクテット単位での長さとする。 

修正された<C変数定義>は,<SQL埋込みCプログラム>から導出されるプログラム中で,正しいC

データ宣言 (data declaration) でなければならない。 

6) <C初期値>に含まれる<文字表現>の並びは,C変数に代入する初期値を指定する。それは,初期値

のためのCの正しい指定でなければならない。 

7) 文字列のための配列指定を除いて,<C変数定義>は,スカラ型 (scalar type) を指定しなければなら

ない。 

8) 

14 <C変数定義>中で,“VARCHAR”,“CHARACTER”,“SET”,“IS”,“VARYING”,“BINARY”,

“VARBINARY”,“BLOB”,“CLOB”,“NCHAR”,“NCLOB”,“AS”,“LOCATOR”及び“REF”と

いう語は,大文字及び小文字のどんな組合せで指定してもよい(“5.2 <トークン>及び<分離符号>”

の構文規則参照)。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

1) 機能B012“埋込みC”なしでは,適合するSQL言語は,<SQL埋込みCプログラム>を含んではな

らない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<C REF変数>を含んではならない。 

3) 機能S241“変換関数”なしでは,適合するSQL言語は,<C利用者定義型変数>を含んではならな

い。 

4) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<C配列位置付け子変数>を含んで

はならない。 

5) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Cマルチ集合位置付け子変

数>を含んではならない。 

6) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<C利用者定義

型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

7) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C BLOB変数>を含んでは

ならない。 

8) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C CLOB変数>を含んでは

ならない。 

9) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C BLOB位置付け子変数>

を含んではならない。 

10) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C CLOB位置付け子変数>

を含んではならない。 

11) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,long longを含む<C数値変数>

880 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

を含んではならない。 

12) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<C BINARY変

数>を含んではならない。 

13) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<C VARBINARY

変数>を含んではならない。 

21.5 <SQL埋込みCOBOLプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.3 <SQL埋込みCOBOLプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.4 <SQL埋込みCOBOLプログラム>”によって修正される。 

機能 

<SQL埋込みCOBOLプログラム> (<embedded SQL COBOL program>) は,<SQL埋込みCOBOLプログ

ラム>を指定する。 

形式 

<SQL埋込みCOBOLプログラム> ::= 

  !! 構文規則参照。 

<COBOL変数定義> ::= 

  { 01 |77 } <COBOLホスト識別子> 

      <COBOL型指定> [ <文字表現>... ] <ピリオド> 

<COBOLホスト識別子> ::= 

  !! 構文規則参照。 

<COBOL型指定> ::= 

  <COBOL文字型> 

| <COBOL各国文字型> 

| <COBOL数値型> 

| <COBOL整数型> 

| <COBOL導出型指定> 

09 14 <COBOL導出型指定> ::= 

  <COBOL CLOB変数> 

| <COBOL NCLOB変数> 

| <COBOL BINARY変数> 

| <COBOL BLOB変数> 

| <COBOL利用者定義型変数> 

| <COBOL CLOB位置付け子変数> 

| <COBOL BLOB位置付け子変数> 

| <COBOL配列位置付け子変数> 

| <COBOLマルチ集合位置付け子変数> 

| <COBOL利用者定義型位置付け子変数> 

| <COBOL REF変数> 

<COBOL文字型> ::= 

  [ CHARACTER SET [ IS ] <文字集合指定> ] 

      { PIC | PICTURE } [ IS ] { X [ <左括弧> <文字長> <右括弧> ] }... 

881 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<COBOL各国文字型> ::= 

  [ CHARACTER SET [ IS ] <文字集合指定> ] 

      { PIC | PICTURE } [ IS ] { N [ <左括弧> <文字長> <右括弧> ] }... 

<COBOL CLOB変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<COBOL NCLOB変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS NCLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<COBOL BINARY変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS BINARY <左括弧> <長さ> <右括弧> 

<COBOL BLOB変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧> 

<COBOL利用者定義型変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS <パス解決利用者定義型名> 

      AS <既定義型> 

<COBOL CLOB位置付け子変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS CLOB AS LOCATOR 

<COBOL BLOB位置付け子変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS BLOB AS LOCATOR 

<COBOL配列位置付け子変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS <配列型> AS LOCATOR 

<COBOLマルチ集合位置付け子変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS <マルチ集合型> AS LOCATOR 

<COBOL利用者定義型位置付け子変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

<COBOL REF変数> ::= 

  [ USAGE [ IS ] ] SQL TYPE IS <参照型> 

<COBOL数値型> ::= 

  { PIC | PICTURE } [ IS ] S <COBOL 9指定> 

      [ USAGE [ IS ] ] DISPLAY SIGN LEADING SEPARATE 

<COBOL 9指定> ::= 

  <COBOL 9> [ V [ <COBOL 9> ] ] 

| V <COBOL 9> 

<COBOL整数型> ::= 

  { PIC | PICTURE } [ IS ] S<COBOL 9> 

      [ USAGE [ IS ] ] BINARY 

<COBOL 9> ::= 

  { 9 [ <左括弧> <長さ> <右括弧> ] }... 

構文規則 

882 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) <SQL埋込みCOBOLプログラム>は,COBOLテキスト及びSQLテキストから成る翻訳単位とす

る。COBOLテキストは,JIS X 3002 [ISO1989] に適合しなければならない。SQLテキストは,一つ

以上の<埋込みSQL文>,及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなければならな

い。 

2) <SQL埋込みCOBOLプログラム>中の<埋込みSQL文>は,<SQL埋込みCOBOLプログラム>の手

続部 (Procedure Division) 中でCOBOL文を指定してもよいところには,どこに指定してもよい。

COBOL文の直前に段落名 (paragraph-name) を付けることができるならば,<埋込みSQL文>の直前

に段落名を付けてもよい。 

3) <COBOLホスト識別子>は,任意の正しいCOBOLデータ名 (data-name) とする。<COBOLホスト

識別子>は,<SQL埋込みCOBOLプログラム>に含まれていなければならない。 

4) <COBOL変数定義> CVDは,ホスト変数を定義するCOBOLデータ記述項 (data description entry) の

制限された形式とする。CVDに含まれる<COBOLホスト識別子>をCHIとし,CVDに含まれる

<COBOL型指定>をCTSとする。CHIに関連付けられるホスト変数をHVとする。 

場合: 

a) CTSが<COBOL文字型>又は<COBOL各国文字型>ならば,HVの<ホストパラメタデータ型>は,

それぞれ,<文字長>によって指定される長さ及び<文字集合指定>によって指定される文字集合を

もつCHARACTER又はNATIONAL CHARACTERとする。<文字長>が指定されないならば,長さ

は,1とする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想定

される。 

b) CTSが<COBOL数値型>ならば,HVの<ホストパラメタデータ型>は,NUMERICとする。ここ

で,精度は,<COBOL 9指定>に含まれる一つ又は二つの<長さ>の値の合計とし,位取りは,“V”

に後続する<長さ>があるならば,その値とし,そうでなければ,0とする。 

c) CTSが<COBOL整数型>ならば,HVの<ホストパラメタデータ型>がSMALLINTか,INTEGER

か又はBIGINTかは,処理系定義とする。 

d) CTSが<COBOL導出型指定>ならば,次による。 

場合: 

i) 

CTSが<COBOL CLOB変数>又は<COBOL NCLOB変数>を含むならば,HVの<ホストパラメタ

データ型>は,それぞれ,<文字長大オブジェクト長>によって指定される最大長及び<文字集合

指定>によって指定される文字集合をもつCHARACTER LARGE OBJECT又はNATIONAL 

CHARACTER LARGE OBJECTとする。<文字集合指定>が指定されないならば,文字集合は,

処理系定義とする。 

ii) CTSが<COBOL BINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>に

よって指定される長さをもつBINARYとする。 

iii) CTSが<COBOL BLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<長大オブジ

ェクト長>によって指定される最大長をもつBINARY LARGE OBJECTとする。 

iv) CTSが<COBOL利用者定義型変数>を含むならば,HVの<ホストパラメタデータ型>は,CTSに

含まれる<既定義型>とする。 

v) CTSが<COBOL CLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATORとする。 

vi) CTSが<COBOL BLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

883 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

BINARY LARGE OBJECT AS LOCATORとする。 

vii) CTSが<COBOL配列位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,AT 

AS LOCATORとする。ここで,ATは,<配列型>とする。 

viii) CTSが<COBOLマルチ集合位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>

は,MT AS LOCATORとする。ここで,MTは,<マルチ集合型>とする。 

ix) CTSが<COBOL利用者定義型位置付け子変数>を含むならば,HVの<ホストパラメタデータ型

>は,UDT AS LOCATORとする。ここで,UDTは,<パス解決利用者定義型名>とする。 

x) 

14 CTSが<COBOL REF変数>を含むならば,HVの<ホストパラメタデータ型>は,CTSに含ま

れる<参照型> RTとする。RTに含まれる<被参照型>によって識別される被参照型を,その参照

の被参照型 (referenced type) と呼ぶ。 

5) <COBOL変数定義>は,<SQL埋込みCOBOLプログラム>から導出されるプログラムにそれが配置

される前に,次のとおりに修正されなければならない(“21.1 <SQL埋込みホストプログラム>”の

構文規則参照)。 

a) 省略可能などのCHARACTER SET指定も,<COBOL文字型>,<COBOL各国文字型>,<COBOL 

CLOB変数>及び<COBOL NCLOB変数>から取り除かれなければならない。 

次の値をkとする。 

場合: 

i) 

OCTETSが指定されるならば,1。 

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。 

iii) そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。 

b) 省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。 

c) <COBOL文字型>中で指定される<文字長> CLは,値がNV*kと等しい長さによって置き換えら

れなければならない。ここで,NVは,CLに含まれる<長さ>の数値とする。 

注記560 <文字長>の単位は,基となる文字集合によって用いられる単位と既に同じであると仮

定されているので,<COBOL各国文字型>中で指定される<文字長>は,調整されない。 

d) 

14 与えられた<COBOLホスト識別子> HVNに対して,どの<COBOL CLOB変数>又は<COBOL 

NCLOB変数>中でも,構文 

SQL TYPE IS CLOB ( L ) 

又は構文 

SQL TYPE IS NCLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

49 HVN-RESERVED PIC S9(9) USAGE IS BINARY. 

49 HVN-LENGTH PIC S9(9) USAGE IS BINARY. 

49 HVN-DATA PIC X(LL). 

ここで,LLの値は,NV*kとし,NVは,“6.1 <データ型>”で規定するとおりのLの数値とする。 

e) 与えられた<COBOLホスト識別子> HVNに対して,どの<COBOL BLOB変数>中でも,構文 

SQL TYPE IS BLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

884 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

49 HVN-RESERVED PIC S9(9) USAGE IS BINARY. 

49 HVN-LENGTH PIC S9(9) USAGE IS BINARY. 

49 HVN-DATA PIC X(LL). 

ここで,LLの値は,“6.1 <データ型>”で規定するとおりのLの数値とする。 

f) 

どの<COBOL BINARY変数>中でも,構文 

SQL TYPE IS BINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

PICTURE X (L) 

g) どの<COBOL利用者定義型変数>中でも,構文 

SQL TYPE IS UDTN AS PDT 

は,次の指定によって置き換えられなければならない。 

ADT 

ここで,ADTは,表18“COBOLのためのデータ型対応”のSQLデータ型PDTに対する行に対

応する“COBOLデータ型”列中に記載されたデータ型とする。ADTは,“なし”であってはなら

ない。UDTNによって識別されるデータ型を,ホスト変数の関連する利用者定義型 (associated 

user-defined type) と呼び,PDTによって識別されるデータ型を,ホスト変数の関連するSQLデー

タ型 (associated SQL data type) と呼ぶ。 

h) どの<COBOL BLOB位置付け子変数>中でも,構文 

SQL TYPE IS BLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

PIC S9(9) USAGE IS BINARY 

<COBOL BLOB位置付け子変数>によって定義されるホスト変数を,2進オクテット長大オブジェ

クト位置付け子変数 (binary large object locator variable) と呼ぶ。 

i) 

どの<COBOL CLOB位置付け子変数>中でも,構文 

SQL TYPE IS CLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

PIC S9(9) USAGE IS BINARY 

<COBOL CLOB位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置

付け子変数 (character large object locator variable) と呼ぶ。 

j) 

どの<COBOL配列位置付け子変数>中でも,構文 

SQL TYPE IS <配列型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

PIC S9(9) USAGE IS BINARY 

<COBOL配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数 (array 

locator variable) と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型 

(associated array type) と呼ぶ。 

k) どの<COBOLマルチ集合位置付け子変数>中でも,構文 

SQL TYPE IS <マルチ集合型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

PIC S9(9) USAGE IS BINARY 

885 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<COBOLマルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子

変数 (multiset locator variable) と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変

数の関連するマルチ集合型 (associated multiset type) と呼ぶ。 

l) 

どの<COBOL利用者定義型位置付け子変数>中でも,構文 

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

PIC S9(9) USAGE IS BINARY 

<COBOL利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付

け子変数 (user-defined type locator variable) と呼ぶ。<パス解決利用者定義型名>によって識別され

るデータ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) と呼ぶ。 

m) 09 与えられた<COBOLホスト識別子> HVNに対して,どの<COBOL REF変数>中でも,構文 

SQL TYPE IS <参照型> 

は,次の指定によって置き換えられなければならない。 

01  HVN PICTURE X(RL) 

ここで,RLの値は,参照型のオクテット単位での長さとする。 

修正された<COBOL変数定義>は,<SQL埋込みCOBOLプログラム>から導出されるプログラムの

データ部 (Data Division) 中で,正しいデータ記述項でなければならない。 

6) <COBOL変数定義>中の省略可能な<文字表現>の並びは,VALUE句を指定してもよい。他の句を指

定してもよいかどうかは,処理系定義とする。<文字表現>の並びは,<COBOL変数定義>が,正し

いCOBOLデータ記述項であるようなものでなければならない。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

1) 機能B013“埋込みCOBOL”なしでは,適合するSQL言語は,<SQL埋込みCOBOLプログラム>を

含んではならない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<COBOL REF変数>を含んではならな

い。 

3) 機能S241“変換関数”なしでは,適合するSQL言語は,<COBOL利用者定義型変数>を含んではな

らない。 

4) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<COBOL配列位置付け子変数>を含

んではならない。 

5) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<COBOLマルチ集合位置付

け子変数>を含んではならない。 

6) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<COBOL利用

者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

7) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL BLOB変数>を含

んではならない。 

8) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL CLOB変数>を含

886 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

んではならない。 

9) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL BLOB位置付け子

変数>を含んではならない。 

10) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL CLOB位置付け子

変数>を含んではならない。 

11) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<COBOL BINARY

変数>を含んではならない。 

12) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語中で,<COBOL整数型>と等価な<ホ

ストパラメタデータ型>は,BIGINTであってはならない。 

21.6 <SQL埋込みFortranプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.4 <SQL埋込みFortranプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.5 <SQL埋込みFortranプログラム>”によって修正される。 

機能 

<SQL埋込みFortranプログラム> (<embedded SQL Fortran program>) は,<SQL埋込みFortranプログラム

>を指定する。 

形式 

<SQL埋込みFortranプログラム> ::= 

  !! 構文規則参照。 

<Fortran変数定義> ::= 

  <Fortran型指定> <Fortranホスト識別子> 

      [ { <コンマ> <Fortranホスト識別子> }... ] 

<Fortranホスト識別子> ::= 

  !! 構文規則参照。 

<Fortran型指定> ::= 

  CHARACTER [ <アスタリスク> <文字長> ] [ CHARACTER SET 

      [ IS ] <文字集合指定> ] 

| CHARACTER KIND = n [ <アスタリスク> <文字長> ] 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

| INTEGER 

| REAL 

| DOUBLE PRECISION 

| LOGICAL 

| <Fortran導出型指定> 

09 14 <Fortran導出型指定> ::= 

  <Fortran CLOB変数> 

| <Fortran BINARY変数> 

| <Fortran VARBINARY変数> 

| <Fortran BLOB変数> 

| <Fortran利用者定義型変数> 

| <Fortran CLOB位置付け子変数> 

887 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <Fortran BLOB位置付け子変数> 

| <Fortran利用者定義型位置付け子変数> 

| <Fortran配列位置付け子変数> 

| <Fortranマルチ集合位置付け子変数> 

| <Fortran REF変数> 

<Fortran CLOB変数> ::= 

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<Fortran BINARY変数> ::= 

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧> 

<Fortran VARBINARY変数> ::= 

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧> 

<Fortran BLOB変数> ::= 

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧> 

<Fortran利用者定義型変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型> 

<Fortran CLOB位置付け子変数> ::= 

  SQL TYPE IS CLOB AS LOCATOR 

<Fortran BLOB位置付け子変数> ::= 

  SQL TYPE IS BLOB AS LOCATOR 

<Fortran利用者定義型位置付け子変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

<Fortran配列位置付け子変数> ::= 

  SQL TYPE IS <配列型> AS LOCATOR 

<Fortranマルチ集合位置付け子変数> ::= 

  SQL TYPE IS <マルチ集合型> AS LOCATOR 

<Fortran REF変数> ::= 

  SQL TYPE IS <参照型> 

構文規則 

1) <SQL埋込みFortranプログラム>は,Fortranテキスト及びSQLテキストから成る翻訳単位とする。

Fortranテキストは,JIS X 3001-1 [ISO1539] に適合しなければならない。SQLテキストは,一つ以

上の<埋込みSQL文>,及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなければならない。 

2) <埋込みSQL文>は,実行可能なFortran文を指定してもよいところには,どこに指定してもよい。

<埋込みSQL文>を含む<SQL埋込みFortranプログラム>中で,実行可能などのFortran文よりも前

にある<埋込みSQL文>は,Fortran文番号 (statement number) をもってはならない。そうでなけれ

ば,Fortran文が文番号をもってもよいならば,<埋込みSQL文>は,文番号をもってもよい。 

3) 空白 (Blanks) は,<埋込みSQL文>中で意味がある。<埋込みSQL文>中の<分離符号>に対する規

則は,“5.2 <トークン>及び<分離符号>”で規定するとおりとする。 

4) <Fortranホスト識別子>は,全ての<空白>文字を取り除いた任意の正しいFortran変数名とする。

<Fortranホスト識別子>は,<SQL埋込みFortranプログラム>に含まれなければならない。 

888 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) <Fortran変数定義> FVDは,一つ以上のホスト変数を定義するFortran型宣言文 (type-statement) の

制限された形式とする。FVDに含まれる<Fortran型指定>をFTSとし,FVDに含まれる<Fortranホ

スト識別子>をFHIとする。FHIに関連付けられるホスト変数をHVとする。 

場合: 

a) FTSが“KIND=n”なしのCHARACTERを指定するならば,HVの<ホストパラメタデータ型>は,

<文字長>によって指定される長さ及び<文字集合指定>によって指定される文字集合をもつ

CHARACTERとする。<文字長>が指定されないならば,長さは,1とする。<文字集合指定>が指

定されないならば,処理系定義の<文字集合指定>が暗に想定される。 

b) FTSがCHARACTER KIND=nを指定するならば,HVの<ホストパラメタデータ型>が,<文字長

>によって指定される長さ及び<文字集合指定>によって指定される文字集合をもつCHARACTER

か又はNATIONAL CHARACTERかは,処理系定義とする。<文字長>が指定されないならば,長

さは,1とする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想

定される。nの値は,Fortran変数の処理系定義の特性を決定する。nの値は,処理系定義とする。 

c) FTSがINTEGERを指定するならば,HVの<ホストパラメタデータ型>は,INTEGERとする。 

d) FTSがREALを指定するならば,HVの<ホストパラメタデータ型>は,REALとする。 

e) FTSがDOUBLE PRECISIONを指定するならば,HVの<ホストパラメタデータ型>は,DOUBLE 

PRECISIONとする。 

f) FTSがLOGICALを指定するならば,HVの<ホストパラメタデータ型>は,BOOLEANとする。 

g) FTSが<Fortran導出型指定>ならば,次による。 

場合: 

i) 

FTSが<Fortran CLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<文字長大オ

ブジェクト長>によって指定される最大長及び<文字集合指定>によって指定される文字集合を

もつCHARACTER LARGE OBJECTとする。<文字集合指定>がないならば,文字集合は,処理

系定義とする。 

ii) FTSが<Fortran BINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>によ

って指定される長さをもつBINARYとする。 

iii) FTSが<Fortran VARBINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>

によって指定される最大長をもつBINARY VARYINGとする。 

iv) FTSが<Fortran BLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<長大オブジ

ェクト長>によって指定される最大長をもつBINARY LARGE OBJECTとする。 

v) FTSが<Fortran利用者定義型変数>を含むならば,HVの<ホストパラメタデータ型>は,FTSに

含まれる<既定義型>とする。 

vi) FTSが<Fortran CLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATORとする。 

vii) FTSが<Fortran BLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATORとする。 

viii) FTSが<Fortran利用者定義型位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>

は,UDT AS LOCATORとする。ここで,UDTは,FTSに含まれる<パス解決利用者定義型名>

とする。 

ix) FTSが<Fortran配列位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,AT 

889 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

AS LOCATORとする。ここで,ATは,FTSに含まれる<配列型>とする。 

x) FTSが<Fortranマルチ集合位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

MT AS LOCATORとする。ここで,MTは,FTSに含まれる<マルチ集合型>とする。 

xi) 

14 FTSが<Fortran REF変数>を含むならば,HVの<ホストパラメタデータ型>は,RTとする。

ここで,RTは,FTSに含まれる<参照型>とする。RTに含まれる<被参照型>によって識別され

る被参照型を,その参照の被参照型 (referenced type) と呼ぶ。 

6) <Fortran変数定義>は,<SQL埋込みFortranプログラム>から導出されるプログラムにそれが配置さ

れる前に,次のとおりに修正されなければならない(“21.1 <SQL埋込みホストプログラム>”の構

文規則参照)。 

a) 省略可能などのCHARACTER SET指定も,<Fortran型指定>中のCHARACTER及びCHARACTER 

KIND=nの代替手段から取り除かれなければならない。 

次の値をkとする。 

場合: 

i) 

OCTETSが指定されるならば,1。 

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。 

iii) そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。 

b) 省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。 

c) <Fortran型指定>のCHARATER代替手段中で指定される<文字長> CLは,値がNV*kと等しい長

さによって置き換えられなければならない。ここで,NVは,CLに含まれる<長さ>の数値とする。 

注記561 <文字長>の単位は,基となる文字集合によって用いられる単位と既に同じであると仮

定されているので,<文字長>は,<Fortran型指定>のCHARACTER KIND= nの代替手

段に対して調整されない。 

d) 

14 与えられた<Fortranホスト識別子> HVNに対して,どの<Fortran CLOB変数>中でも,構文 

SQL TYPE IS CLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

CHARACTER HVN (L+8) 

INTEGER*4 HVN̲RESERVED 

INTEGER*4 HVN̲LENGTH 

CHARACTER HVN̲DATA * LL 

EQUIVALENCE (HVN(1), HVN̲RESERVED) 

EQUIVALENCE (HVN(5), HVN̲LENGTH) 

EQUIVALENCE (HVN(9), HVN̲DATA) 

ここで,LLの値は,NV*kとし,NVは,“6.1 <データ型>”で規定するとおりのLの数値とする。 

e) 与えられた<Fortranホスト識別子> HVNに対して,どの<Fortran BLOB変数>中でも,構文 

SQL TYPE IS BLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

CHARACTER HVN (L+8) 

INTEGER*4 HVN̲RESERVED 

890 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

INTEGER*4 HVN̲LENGTH 

CHARACTER HVN̲DATA * LL 

EQUIVALENCE (HVN(1), HVN̲RESERVED) 

EQUIVALENCE (HVN(5), HVN̲LENGTH) 

EQUIVALENCE (HVN(9), HVN̲DATA) 

ここで,LLの値は,“6.1 <データ型>”で規定するとおりのLの数値とする。 

f) 

与えられた<Fortranホスト識別子> HVNに対して,どの<Fortran BINARY変数>中でも,構文 

SQL TYPE IS BINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

CHARACTER HVN * L 

g) 与えられた<Fortranホスト識別子> HVNに対して,どの<Fortran VARBINARY変数>中でも,構文 

SQL TYPE IS VARBINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

INTEGER HVN̲RESERVED 

INTEGER HVN̲LENGTH 

CHARACTER HVN̲DATA * L 

h) どの<Fortran利用者定義型変数>中でも,構文 

SQL TYPE IS UDTN AS PDT 

は,次の指定によって置き換えられなければならない。 

ADT 

ここで,ADTは,表19“Fortranのためのデータ型対応”のSQLデータ型PDTに対する行に対応

する“Fortranデータ型”列中に記載されたデータ型とする。ADTは,“なし”であってはならな

い。UDTNによって識別されるデータ型を,ホスト変数の関連する利用者定義型 (associated user-

defined type) と呼び,PDTによって識別されるデータ型を,ホスト変数の関連するSQLデータ型 

(associated SQL data type) と呼ぶ。 

i) 

どの<Fortran BLOB位置付け子変数>中でも,構文 

SQL TYPE IS BLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Fortran BLOB位置付け子変数>によって定義されるホスト変数を,2進オクテット長大オブジェ

クト位置付け子変数 (binary large object locator variable) と呼ぶ。 

j) 

どの<Fortran CLOB位置付け子変数>中でも,構文 

SQL TYPE IS CLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Fortran CLOB位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付

け子変数 (character large object locator variable) と呼ぶ。 

k) どの<Fortran利用者定義型位置付け子変数>中でも,構文 

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

891 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

INTEGER 

<Fortran利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け

子変数 (user-defined type locator variable) と呼ぶ。<パス解決利用者定義型名>によって識別される

データ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) と呼ぶ。 

l) 

どの<Fortran配列位置付け子変数>中でも,構文 

SQL TYPE IS <配列型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Fortran配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数 (array 

locator variable) と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型 

(associated array type) と呼ぶ。 

m) どの<Fortranマルチ集合位置付け子変数>中でも,構文 

SQL TYPE IS <マルチ集合型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Fortranマルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変

数 (multiset locator variable) と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数

の関連するマルチ集合型 (associated multiset type) と呼ぶ。 

n) 

09 与えられた<Fortranホスト識別子> HVNに対して,どの<Fortran REF変数>中でも,構文 

SQL TYPE IS <参照型> 

は,次の指定によって置き換えられなければならない。 

CHARACTER HVN * RL 

ここで,RLの値は,参照型のオクテット単位での長さとする。 

修正された<Fortran変数定義>は,<SQL埋込みFortranプログラム>から導出されるプログラム中で,

正しいFortran型宣言文でなければならない。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

1) 機能B014“埋込みFortran”なしでは,適合するSQL言語は,<SQL埋込みFortranプログラム>を

含んではならない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<Fortran REF変数>を含んではならない。 

3) 機能S241“変換関数”なしでは,適合するSQL言語は,<Fortran利用者定義型変数>を含んではな

らない。 

4) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<Fortran配列位置付け子変数>を含

んではならない。 

5) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Fortranマルチ集合位置付け

子変数>を含んではならない。 

6) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<Fortran利用者

892 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

7) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran BLOB変数>を含ん

ではならない。 

8) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran CLOB変数>を含ん

ではならない。 

9) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran BLOB位置付け子

変数>を含んではならない。 

10) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran CLOB位置付け子

変数>を含んではならない。 

11) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Fortran BINARY

変数>を含んではならない。 

12) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Fortran 

VARBINARY変数>を含んではならない。 

21.7 <SQL埋込みMUMPSプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.5 <SQL埋込みMUMPSプログラム>”によって修正される。 

機能 

<SQL埋込みMUMPSプログラム> (<embedded SQL MUMPS program>) は,<SQL埋込みMUMPSプログ

ラム>を指定する。 

形式 

<SQL埋込みMUMPSプログラム> ::= 

  !! 構文規則参照。 

<MUMPS変数定義> ::= 

  <MUMPS数値変数> <セミコロン> 

| <MUMPS文字変数> <セミコロン> 

| <MUMPS導出型指定> <MUMPSホスト識別子> <セミコロン> 

<MUMPS文字変数> ::= 

  VARCHAR <MUMPS文字変数指定子> 

      [ { <コンマ> <MUMPS文字変数指定子> }... ] 

<MUMPS文字変数指定子> ::= 

  <MUMPSホスト識別子> <MUMPS長さ指定> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<MUMPSホスト識別子> ::= 

  !! 構文規則参照。 

<MUMPS長さ指定> ::= 

  <左括弧> <文字長> <右括弧> 

<MUMPS数値変数> ::= 

  <MUMPS型指定> <MUMPSホスト識別子> 

      [ { <コンマ> <MUMPSホスト識別子> }... ] 

<MUMPS型指定> ::= 

  INT 

893 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| DEC [ <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧> ] 

| REAL 

09 14 <MUMPS導出型指定> ::= 

  <MUMPS利用者定義型変数> 

| <MUMPS CLOB位置付け子変数> 

| <MUMPS BLOB位置付け子変数> 

| <MUMPS利用者定義型位置付け子変数> 

| <MUMPS配列位置付け子変数> 

| <MUMPSマルチ集合位置付け子変数> 

| <MUMPS REF変数> 

<MUMPS利用者定義型変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型> 

<MUMPS CLOB位置付け子変数> ::= 

  SQL TYPE IS CLOB AS LOCATOR 

<MUMPS BLOB位置付け子変数> ::= 

  SQL TYPE IS BLOB AS LOCATOR 

<MUMPS利用者定義型位置付け子変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

<MUMPS配列位置付け子変数> ::= 

  SQL TYPE IS <配列型> AS LOCATOR 

<MUMPSマルチ集合位置付け子変数> ::= 

  SQL TYPE IS <マルチ集合型> AS LOCATOR 

<MUMPS REF変数> ::= 

  SQL TYPE IS <参照型> 

構文規則 

1) <SQL埋込みMUMPSプログラム>は,Mテキスト及びSQLテキストから成る翻訳単位とする。M

テキストは,[ISO11756] に適合しなければならない。SQLテキストは,一つ以上の<埋込みSQL文

>,及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなければならない。 

2) <MUMPSホスト識別子>は,任意の正しいM変数名とする。<MUMPSホスト識別子>は,<SQL埋

込みMUMPSプログラム>に含まれなければならない。 

3) <埋込みSQL文>は,Mの命令 (command) を指定してもよいところには,どこに指定してもよい。 

4) <MUMPS変数定義> MVDは,一つ以上のホスト変数を定義する。MVDに単純に含まれる<MUMPS

ホスト識別子>をMHIとし,MHIに対応するホスト変数をHVとする。 

場合: 

a) MVDが<MUMPS数値変数>ならば,MVDに含まれる<MUMPS型指定>をMTSとする。 

場合: 

i) 

MTSがINTならば,HVの<ホストパラメタデータ型>は,INTEGERとする。 

ii) MTSがDECならば,HVの<ホストパラメタデータ型>は,同じ<精度>及び<位取り>のDECIMAL

とする。<位取り>の値は,<精度>の値を超えてはならない。 

iii) MTSがREALならば,HVの<ホストパラメタデータ型>は,REALとする。 

894 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) MVDが<MUMPS文字変数>ならば,MHIを含む<MUMPS文字変数指定子>をMCVSとする。HV

の<ホストパラメタデータ型>は,最大長がMCVSに含まれる<文字長>であるCHARACTER 

VARYINGとし,文字集合は,MCVSに含まれる<文字集合指定>があるならば,その<文字集合指

定>によって識別され,そうでなければ,処理系定義とする。 

c) MVDが<MUMPS導出型指定>ならば,次による。 

i) 

MVDが<MUMPS利用者定義型変数>を含むならば,MVDに含まれる<パス解決利用者定義型

名>をUDTとし,MVDに含まれる<既定義型>をPTとする。表20“Mのためのデータ型対応”

中のSQLデータ型PTの行に対応する“Mデータ型”列中のデータ型は,“なし”であっては

ならない。UDTによって識別されるデータ型を,HVの関連する利用者定義型 (associated user-

defined type) と呼び,PTによって識別されるデータ型を,HVの関連するSQLデータ型 

(associated SQL data type) と呼ぶ。HVの<ホストパラメタデータ型>は,PTとする。 

ii) MVDが<MUMPS CLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

CLOB AS LOCATORとする。HVを文字長大オブジェクト位置付け子変数 (character large object 

locator variable) と呼ぶ。 

iii) MVDが<MUMPS BLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

BLOB AS LOCATORとする。HVを2進オクテット長大オブジェクト位置付け子変数 (binary 

large object locator variable) と呼ぶ。 

iv) MVDが<MUMPS利用者定義型位置付け子変数>を含むならば,MVDに含まれる<パス解決利

用者定義型名>をUDTとする。HVの<ホストパラメタデータ型>は,UDT AS LOCATORとす

る。UDTによって識別されるデータ型を,HVの関連する利用者定義型 (associated user-defined 

type) と呼ぶ。HVを利用者定義型位置付け子変数 (user-defined type locator variable) と呼ぶ。 

v) MVDが<MUMPS配列位置付け子変数>を含むならば,MVDに含まれる<配列型>をATとする。

HVの<ホストパラメタデータ型>は,AT AS LOCATORとする。ATによって識別されるデータ

型を,HVの関連する配列型 (associated array type) と呼ぶ。HVを配列位置付け子変数 (array 

locator variable) と呼ぶ。 

vi) MVDが<MUMPSマルチ集合位置付け子変数>を含むならば,MVDに含まれる<マルチ集合型>

をMTとする。HVの<ホストパラメタデータ型>は,MT AS LOCATORとする。MTによって

識別されるデータ型を,HVの関連するマルチ集合型 (associated multiset type) と呼ぶ。HVを

マルチ集合位置付け子変数 (multiset locator variable) と呼ぶ。 

vii) MVDが<MUMPS REF変数>を含むならば,MVDに含まれる<参照型>をRTとする。HVの<ホ

ストパラメタデータ型>は,RTとする。RTに含まれる<被参照型>によって識別される被参照

型を,その参照の被参照型 (referenced type) と呼ぶ。 

5) <MUMPS変数定義>は,削除されなければならず,<SQL埋込みMUMPSプログラム>から導出され

るプログラムに配置されてはならない(“21.1 <SQL埋込みホストプログラム>”の構文規則参照)。 

注記562 Mには,宣言がない。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

895 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) 機能B015“埋込みMUMPS”なしでは,適合するSQL言語は,<SQL埋込みMUMPSプログラム>

を含んではならない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<MUMPS REF変数>を含んではならな

い。 

3) 機能S241“変換関数”なしでは,適合するSQL言語は,<MUMPS利用者定義型変数>を含んではな

らない。 

4) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<MUMPS配列位置付け子変数>を含

んではならない。 

5) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<MUMPSマルチ集合位置付

け子変数>を含んではならない。 

6) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<MUMPS利用

者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

7) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<MUMPS BLOB位置付け子

変数>を含んではならない。 

8) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<MUMPS CLOB位置付け子

変数>を含んではならない。 

21.8 <SQL埋込みPascalプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.6 <SQL埋込みPascalプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.6 <SQL埋込みPascalプログラム>”によって修正される。 

機能 

<SQL埋込みPascalプログラム> (<embedded SQL Pascal program>) は,<SQL埋込みPascalプログラム>

を指定する。 

形式 

<SQL埋込みPascalプログラム> ::= 

  !! 構文規則参照。 

<Pascal変数定義> ::= 

  <Pascalホスト識別子> [ { <コンマ> <Pascalホスト識別子> }... ] <コロン> 

      <Pascal型指定> <セミコロン> 

<Pascalホスト識別子> ::= 

  !! 構文規則参照。 

<Pascal型指定> ::= 

  PACKED ARRAY <左角括弧> 1 <2重ピリオド> <文字長> <右角括弧> 

      OF CHAR [ CHARACTER SET [ IS ] <文字集合指定> ] 

| INTEGER 

| REAL 

| CHAR [ CHARACTER SET [ IS ] <文字集合指定> ] 

| BOOLEAN 

| <Pascal導出型指定> 

09 14 <Pascal導出型指定> ::= 

  <Pascal CLOB変数> 

896 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| <Pascal BINARY変数> 

| <Pascal BLOB変数> 

| <Pascal利用者定義型変数> 

| <Pascal CLOB位置付け子変数> 

| <Pascal BLOB位置付け子変数> 

| <Pascal利用者定義型位置付け子変数> 

| <Pascal配列位置付け子変数> 

| <Pascalマルチ集合位置付け子変数> 

| <Pascal REF変数> 

<Pascal CLOB変数> ::= 

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<Pascal BINARY変数> ::= 

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧> 

<Pascal BLOB変数> ::= 

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧> 

<Pascal CLOB位置付け子変数> ::= 

  SQL TYPE IS CLOB AS LOCATOR 

<Pascal利用者定義型変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型> 

<Pascal BLOB位置付け子変数> ::= 

  SQL TYPE IS BLOB AS LOCATOR 

<Pascal利用者定義型位置付け子変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

<Pascal配列位置付け子変数> ::= 

  SQL TYPE IS <配列型> AS LOCATOR 

<Pascalマルチ集合位置付け子変数> ::= 

  SQL TYPE IS <マルチ集合型> AS LOCATOR 

<Pascal REF変数> ::= 

  SQL TYPE IS <参照型> 

構文規則 

1) <SQL埋込みPascalプログラム>は,Pascalテキスト及びSQLテキストから成る翻訳単位とする。

Pascalテキストは,JIS X 3008 [ISO7185] 又は [ISO10206] のうちの一つに適合しなければならな

い。SQLテキストは,一つ以上の<埋込みSQL文>,及び省略可能な一つ以上の<埋込みSQL宣言節

>から成らなければならない。 

2) <埋込みSQL文>は,Pascalの文 (statement) を指定してもよいところには,どこに指定してもよい。

<埋込みSQL文>の前にPascalのラベル (label) を付けてもよい。 

3) <Pascalホスト識別子>は,<埋込みSQL開始宣言>と<埋込みSQL終了宣言>との範囲内で実現値を

定義していることを,適用される実現値が示すPascal変数識別子 (variable-identifier) とする。 

4) <Pascal変数定義> PVDは,一つ以上の<Pascalホスト識別子>を定義する。PVDに含まれる<Pascal

897 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

型指定>をPTSとし,PVDに含まれる<Pascalホスト識別子>をPHIとする。PHIに対応するホスト

変数をHVとする。 

場合: 

a) PTSがPACKED ARRAY [1..<文字長>] OF CHARを指定するならば,HVの<ホストパラメタデー

タ型>は,(<文字長単位>によって指定される文字単位又はオクテット単位のいずれかで測られる)

<文字長>によって指定される長さ及び<文字集合指定>によって指定される文字集合をもつ

CHARACTERとする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗

に想定される。 

b) PTSがINTEGERを指定するならば,HVの<ホストパラメタデータ型>は,INTEGERとする。 

c) PTSがREALを指定するならば,HVの<ホストパラメタデータ型>は,REALとする。 

d) PTSがCHARを指定するならば,HVの<ホストパラメタデータ型>が,長さ1及び<文字集合指

定>によって識別される文字集合をもつCHARACTERとする。<文字集合指定>がないならば,文

字集合は,処理系定義とする。 

e) PTSがBOOLEANを指定するならば,HVの<ホストパラメタデータ型>は,BOOLEANとする。 

f) PTSが<Pascal導出型指定>ならば,次による。 

場合: 

i) 

PTSが<Pascal CLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<文字長大オブ

ジェクト長>によって指定される最大長及び<文字集合指定>によって指定される文字集合をも

つCHARACTER LARGE OBJECTとする。<文字集合指定>が指定されないならば,文字集合は,

処理系定義とする。 

ii) PTSが<Pascal BINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>によ

って指定される長さをもつBINARYとする。 

iii) PTSが<Pascal BLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<長大オブジェ

クト長>によって指定される最大長をもつBINARY LARGE OBJECTとする。 

iv) PTSが<Pascal利用者定義型変数>を含むならば,HVの<ホストパラメタデータ型>は,PTSに

含まれる<既定義型>とする。 

v) PTSが<Pascal CLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATORとする。 

vi) PTSが<Pascal BLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATORとする。 

vii) PTSが<Pascal利用者定義型位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>

は,UDT AS LOCATORとする。ここで,UDTは,PTSに含まれる<パス解決利用者定義型名>

とする。 

viii) PTSが<Pascal配列位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,AT AS 

LOCATORとする。ここで,ATは,PTSに含まれる<配列型>とする。 

ix) PTSが<Pascalマルチ集合位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

MT AS LOCATORとする。ここで,MTは,PTSに含まれる<マルチ集合型>とする。 

x) 

14 PTSが<Pascal REF変数>を含むならば,HVの<ホストパラメタデータ型>は,PTSに含まれ

る<参照型> RTとする。RTに含まれる<被参照型>によって識別される被参照型を,その参照の

被参照型 (referenced type) と呼ぶ。 

898 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) <Pascal変数定義>は,<SQL埋込みPascalプログラム>から導出されるプログラムにそれが配置され

る前に,次のとおりに修正されなければならない(“21.1 <SQL埋込みホストプログラム>”の構文

規則参照)。 

a) 

14 省略可能などのCHARACTER SET指定も,<Pascal型指定>のPACKED ARRAY OF CHAR又は

CHARの代替手段,及び<Pascal CLOB変数>から取り除かれなければならない。 

次の値をkとする。 

場合: 

i) 

OCTETSが指定されるならば,1。 

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。 

iii) そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。 

b) 省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。 

c) どの<Pascal型指定>のPACKED ARRAY OF CHAR代替手段中で指定される<文字長> CLも,NV*k

と等しい長さによって置き換えられなければならない。ここで,NVは,CLに含まれる<長さ>の

数値とする。 

d) <Pascal型指定>が構文“CHAR”を指定し,かつ,kが1より大きいならば,“CHAR”は,“PACKED 

ARRAY [1..k] OF CHAR”によって置き換えられなければならない。 

e) 与えられた<Pascalホスト識別子> HVNに対して,どの<Pascal CLOB変数>中でも,構文 

SQL TYPE IS CLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

VAR HVN = RECORD 

    HVN̲RESERVED : INTEGER; 

    HVN̲LENGTH : INTEGER; 

    HVN̲DATA : PACKED ARRAY [ 1..LL ] OF CHAR; 

END; 

ここで,LLの値は,NV*kとし,NVは,“6.1 <データ型>”で規定するとおりのLの数値とする。 

f) 

14 与えられた<Pascalホスト識別子> HVNに対して,どの<Pascal BLOB変数>中でも,構文 

SQL TYPE IS BLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

VAR HVN = RECORD 

    HVN̲RESERVED : INTEGER; 

    HVN̲LENGTH : INTEGER; 

    HVN̲DATA : PACKED ARRAY [ 1..LL ] OF CHAR; 

END; 

ここで,LLの値は,“6.1 <データ型>”で規定するとおりのLの数値とする。 

g) 与えられた<Pascalホスト識別子> HVNに対して,どの<Pascal BINARY変数>中でも,構文 

SQL TYPE IS BINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

HVN : PACKED ARRAY [1..L] OF CHAR 

899 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ここで,Lは,“5.2 <トークン>及び<分離符号>”で規定するとおりの<長さ>の数値とする。 

h) どの<Pascal利用者定義型変数>中でも,構文 

SQL TYPE IS UDTN AS PDT 

は,次の指定によって置き換えられなければならない。 

ADT 

ここで,ADTは,表21“Pascalのためのデータ型対応”のSQLデータ型PDTに対する行に対応

する“Pascalデータ型”列中に記載されたデータ型とする。ADTは,“なし”であってはならない。

UDTNによって識別されるデータ型を,ホスト変数の関連する利用者定義型 (associated user-

defined type) と呼び,PDTによって識別されるデータ型を,ホスト変数の関連するSQLデータ型 

(associated SQL data type) と呼ぶ。 

i) 

どの<Pascal BLOB位置付け子変数>中でも,構文 

SQL TYPE IS BLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Pascal BLOB位置付け子変数>によって定義されるホスト変数を,2進オクテット長大オブジェ

クト位置付け子変数 (binary large object locator variable) と呼ぶ。 

j) 

どの<Pascal CLOB位置付け子変数>中でも,構文 

SQL TYPE IS CLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Pascal CLOB位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付

け子変数 (character large object locator variable) と呼ぶ。 

k) どの<Pascal利用者定義型位置付け子変数>中でも,構文 

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Pascal利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け

子変数 (user-defined type locator variable) と呼ぶ。<パス解決利用者定義型名>によって識別される

データ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) と呼ぶ。 

l) 

どの<Pascal配列位置付け子変数>中でも,構文 

SQL TYPE IS <配列型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

<Pascal配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数 (array 

locator variable) と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型 

(associated array type) と呼ぶ。 

m) どの<Pascalマルチ集合位置付け子変数>中でも,構文 

SQL TYPE IS <マルチ集合型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

INTEGER 

900 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<Pascalマルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変

数 (multiset locator variable) と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数

の関連するマルチ集合型 (associated multiset type) と呼ぶ。 

n) 

09 与えられた<Pascalホスト識別子> HVNに対して,どの<Pascal REF変数>中でも,構文 

SQL TYPE IS <参照型> 

は,次の指定によって置き換えられなければならない。 

HVN : PACKED ARRAY [1..RL] OF CHAR 

ここで,RLの値は,参照型のオクテット単位での長さとする。. 

修正された<Pascal変数定義>は,<SQL埋込みPascalプログラム>から導出されるプログラム中で,

正しいPascal変数宣言 (variable-declaration) でなければならない。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

1) 機能B016“埋込みPascal”なしでは,適合するSQL言語は,<SQL埋込みPascalプログラム>を含

んではならない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<Pascal REF変数>を含んではならない。 

3) 機能S241“変換関数”なしでは,適合するSQL言語は,<Pascal利用者定義型変数>を含んではなら

ない。 

4) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<Pascal配列位置付け子変数>を含ん

ではならない。 

5) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Pascalマルチ集合位置付け

子変数>を含んではならない。 

6) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<Pascal利用者

定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

7) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal BLOB変数>を含ん

ではならない。 

8) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal CLOB変数>を含ん

ではならない。 

9) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal BLOB位置付け子変

数>を含んではならない。 

10) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal CLOB位置付け子変

数>を含んではならない。 

11) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Pascal BINARY

変数>を含んではならない。 

21.9 <SQL埋込みPL/Iプログラム> 

この細分箇条は,ISO/IEC 9075-9の“18.7 <SQL埋込みPL/Iプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“18.7 <SQL埋込みPL/Iプログラム>”によって修正される。 

機能 

901 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<SQL埋込みPL/Iプログラム> (<embedded SQL PL/I program>) は,<SQL埋込みPL/Iプログラム>を指

定する。 

形式 

<SQL埋込みPL/Iプログラム> ::= 

  !! 構文規則参照。 

<PL/I変数定義> ::= 

  { DCL | DECLARE } <PL/I型指定> [ <文字表現>... ] <セミコロン> 

| { <PL/Iホスト識別子> | <左括弧> <PL/Iホスト識別子> 

      [ { <コンマ> <PL/Iホスト識別子> }... ] <右括弧> } 

      <PL/I型指定> [ <文字表現>... ] <セミコロン> 

<PL/Iホスト識別子> ::= 

  !! 構文規則参照。 

<PL/I型指定> ::= 

  { CHAR | CHARACTER } [ VARYING ] <左括弧> <文字長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

| <PL/I型FIXED DECIMAL> <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧> 

| <PL/I型FIXED BINARY> [ <左括弧> <精度> <右括弧> ] 

| <PL/I型FLOAT BINARY> <左括弧> <精度> <右括弧> 

| <PL/I導出型指定> 

09 14 <PL/I導出型指定> ::= 

  <PL/I CLOB変数> 

| <PL/I BINARY変数> 

| <PL/I VARBINARY変数> 

| <PL/I BLOB変数> 

| <PL/I利用者定義型変数> 

| <PL/I CLOB位置付け子変数> 

| <PL/I BLOB位置付け子変数> 

| <PL/I利用者定義型位置付け子変数> 

| <PL/I配列位置付け子変数> 

| <PL/Iマルチ集合位置付け子変数> 

| <PL/I REF変数> 

<PL/I CLOB変数> ::= 

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧> 

      [ CHARACTER SET [ IS ] <文字集合指定> ] 

<PL/I BINARY変数> ::= 

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧> 

<PL/I VARBINARY変数> ::= 

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧> 

<PL/I BLOB変数> ::= 

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧> 

902 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<PL/I利用者定義型変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型> 

<PL/I CLOB位置付け子変数> ::= 

  SQL TYPE IS CLOB AS LOCATOR 

<PL/I BLOB位置付け子変数> ::= 

  SQL TYPE IS BLOB AS LOCATOR 

<PL/I利用者定義型位置付け子変数> ::= 

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

<PL/I配列位置付け子変数> ::= 

  SQL TYPE IS <配列型> AS LOCATOR 

<PL/Iマルチ集合位置付け子変数> ::= 

  SQL TYPE IS <マルチ集合型> AS LOCATOR 

<PL/I REF変数> ::= 

  SQL TYPE IS <参照型> 

<PL/I型FIXED DECIMAL> ::= 

  { DEC | DECIMAL } FIXED 

| FIXED { DEC | DECIMAL } 

<PL/I型FIXED BINARY> ::= 

  { BIN | BINARY } FIXED 

| FIXED { BIN | BINARY } 

<PL/I型FLOAT BINARY> ::= 

  { BIN | BINARY } FLOAT 

| FLOAT { BIN | BINARY } 

構文規則 

1) <SQL埋込みPL/Iプログラム>は,PL/Iテキスト及びSQLテキストから成る翻訳単位とする。PL/I

テキストは,[ISO6160] に適合しなければならない。SQLテキストは,一つ以上の<埋込みSQL文

>,及び省略可能な一つ以上の<埋込みSQL宣言節>から成らなければならない。 

2) <埋込みSQL文>は,手続ブロック (procedure block) 内で,PL/Iの文を指定してもよいところには,

どこに指定してもよい。PL/Iの文がラベル先頭子 (label prefix) を含むことができるならば,<埋込

みSQL文>の直前にラベル先頭子を付けてもよい。 

3) <PL/Iホスト識別子>は,任意の正しいPL/I変数識別子 (variable identifier) とする。<PL/Iホスト識

別子>は,<SQL埋込みPL/Iプログラム>に含まれなければならない。 

4) <PL/I変数定義> PVDは,一つ以上のホスト変数を定義する。PVDに含まれる<PL/Iホスト識別子>

をPHIとし,PHIに関連付けられるホスト変数をHVとし,PVDに含まれる<PL/I型指定>をPTS

とする。 

場合: 

a) PTSがCHAR又はCHARACTERを指定するならば,HVの<ホストパラメタデータ型>は,<文字

集合指定>によって指定される文字集合をもつCHARACTER又はCHARACTER VARYINGとす

る。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想定される。 

場合: 

903 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

VARYINGが指定されないならば,HVの<ホストパラメタデータ型>は,<文字長単位>によって

指定される単位で測られ,<文字長>によって指定される長さをもつCHARACTERとする。 

ii) VARYINGが指定されるならば,HVの<ホストパラメタデータ型>は,<文字長単位>によって指

定される単位で測られ,<文字長>によって指定される最大長をもつCHARACTER VARYINGと

する。 

b) PTSが<PL/I型FIXED DECIMAL>ならば,<位取り>が指定されるとき,それの値は,<精度>の値

を超えてはならない。<位取り>が指定されないならば,0が暗に想定される。HVの<ホストパラ

メタデータ型>は,同じ<精度>及び<位取り>のDECIMALとする。 

c) PTSが<PL/I型FIXED BINARY>ならば,HVの<ホストパラメタデータ型>が,SMALLINTか,

INTEGERか又はBIGINTかは,処理系定義とする。 

d) PTSが<PL/I型FLOAT BINARY>ならば,HVの<ホストパラメタデータ型>は,同じ<精度>の

FLOATとする。 

e) PTSが<PL/I導出型指定>ならば,次による。 

場合: 

i) 

PTSが<PL/I CLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<文字長大オブジ

ェクト長>によって指定される最大長及び<文字集合指定>によって指定される文字集合をもつ

CHARACTER LARGE OBJECTとする。<文字集合指定>が指定されないならば,文字集合は,

処理系定義とする。 

ii) PTSが<PL/I BINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>によっ

て指定される長さをもつBINARYとする。 

iii) PTSが<PL/I VARBINARY変数>を含むならば,HVの<ホストパラメタデータ型>は,<長さ>に

よって指定される最大長をもつBINARY VARYINGとする。 

iv) PTSが<PL/I BLOB変数>を含むならば,HVの<ホストパラメタデータ型>は,<長大オブジェク

ト長>によって指定される最大長をもつBINARY LARGE OBJECTとする。 

v) PTSが<PL/I利用者定義型変数>を含むならば,HVの<ホストパラメタデータ型>は,PTSに含

まれる<既定義型>とする。 

vi) PTSが<PL/I CLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATORとする。 

vii) PTSが<PL/I BLOB位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATORとする。 

viii) PTSが<PL/I利用者定義型位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

UDT AS LOCATORとする。ここで,UDTは,PTSに含まれる<パス解決利用者定義型名>とす

る。 

ix) PTSが<PL/I配列位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,AT AS 

LOCATORとする。ここで,ATは,PTSに含まれる<配列型>とする。 

x) PTSが<PL/Iマルチ集合位置付け子変数>を含むならば,HVの<ホストパラメタデータ型>は,

MT AS LOCATORとする。ここで,MTは,PTSに含まれる<マルチ集合型>とする。 

xi) 

14 PTSが<PL/I REF変数>を含むならば,HVの<ホストパラメタデータ型>は,PTSに含まれる

<参照型> RTとする。RTに含まれる<被参照型>によって識別される被参照型を,その参照の被

参照型 (referenced type) と呼ぶ。 

904 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

5) <PL/I変数定義>は,<SQL埋込みPL/Iプログラム>から導出されるプログラムにそれが配置される

前に,次のとおりに修正されなければならない(“21.1 <SQL埋込みホストプログラム>”の構文規

則参照)。 

a) 省略可能などのCHARACTER SET指定も,<PL/I型指定>のCHARACTER又はCHARACTER 

VARYINGの代替手段,及び<PL/I CLOB変数>から取り除かれなければならない。 

次の値をkとする。 

場合: 

i) 

OCTETSが指定されるならば,1。 

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。 

iii) そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。 

b) 省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。 

c) どの<PL/I型指定>のCHARACTER又はCHARACTER VARYINGの代替手段中で指定される<文

字長> CLも,NV*kと等しい長さによって置き換えられなければならない。ここで,NVは,CL

に含まれる<長さ>の数値とする。 

d) 

14 与えられた<PL/Iホスト識別子> HVNに対して,どの<PL/I CLOB変数>中でも,構文 

SQL TYPE IS CLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

DCL 1 HVN 

       2 HVN̲RESERVED FIXED BINARY(31), 

       2 HVN̲LENGTH    FIXED BINARY(31), 

       2 HVN̲DATA      CHARACTER(LL); 

ここで,LLの値は,NV*kとし,NVは,“6.1 <データ型>”で規定するとおりのLの数値とする。 

e) 与えられた<PL/Iホスト識別子> HVNに対して,どの<PL/I BLOB変数>中でも,構文 

SQL TYPE IS BLOB ( L ) 

は,次の指定によって置き換えられなければならない。 

DCL 1 HVN 

       2 HVN̲RESERVED FIXED BINARY(31), 

       2 HVN̲LENGTH    FIXED BINARY(31), 

       2 HVN̲DATA      CHARACTER(LL); 

ここで,LLの値は,“6.1 <データ型>”で規定するとおりのLの数値とする。 

f) 

与えられた<PL/Iホスト識別子> HVNに対して,どの<PL/I BINARY変数>中でも,構文 

SQL TYPE IS BINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

DCL HVN CHARACTER(L) 

g) 与えられた<PL/Iホスト識別子> HVNに対して,どの<PL/I VARBINARY変数>中でも,構文 

SQL TYPE IS VARBINARY ( L ) 

は,次の指定によって置き換えられなければならない。 

DCL HVN CHARACTER(L) VARYING 

905 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

h) どの<PL/I利用者定義型変数>中でも,構文 

SQL TYPE IS UDTN AS PDT 

は,次の指定によって置き換えられなければならない。 

ADT 

ここで,ADTは,表22“PL/Iのためのデータ型対応”のSQLデータ型PDTに対する行に対応す

る“PL/Iデータ型”列中に記載されたデータ型とする。ADTは,“なし”であってはならない。

UDTNによって識別されるデータ型を,ホスト変数の関連する利用者定義型 (associated user-

defined type) と呼び,PDTによって識別されるデータ型を,ホスト変数の関連するSQLデータ型 

(associated SQL data type) と呼ぶ。 

i) 

どの<PL/I BLOB位置付け子変数>中でも,構文 

SQL TYPE IS BLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

FIXED BINARY(31) 

<PL/I BLOB位置付け子変数>によって定義されるホスト変数を,2進オクテット長大オブジェク

ト位置付け子変数 (binary large object locator variable) と呼ぶ。 

j) 

どの<PL/I CLOB位置付け子変数>中でも,構文 

SQL TYPE IS CLOB AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

FIXED BINARY(31) 

<PL/I CLOB位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付け

子変数 (character large object locator variable) と呼ぶ。 

k) どの<PL/I利用者定義型位置付け子変数>中でも,構文 

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

FIXED BINARY(31) 

<PL/I利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け子

変数 (user-defined type locator variable) と呼ぶ。<パス解決利用者定義型名>によって識別されるデ

ータ型を,ホスト変数の関連する利用者定義型 (associated user-defined type) と呼ぶ。 

l) 

どの<PL/I配列位置付け子変数>中でも,構文 

SQL TYPE IS <配列型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

FIXED BINARY(31) 

<PL/I配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数 (array locator 

variable) と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型 

(associated array type) と呼ぶ。 

m) どの<PL/Iマルチ集合位置付け子変数>中でも,構文 

SQL TYPE IS <マルチ集合型> AS LOCATOR 

は,次の指定によって置き換えられなければならない。 

FIXED BINARY(31) 

<PL/Iマルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変数 

906 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(multiset locator variable) と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数の

関連するマルチ集合型 (associated multiset type) と呼ぶ。 

n) 

09 与えられた<PL/Iホスト識別子> HVNに対して,どの<PL/I REF変数>中でも,構文 

SQL TYPE IS <参照型> 

は,次の指定によって置き換えられなければならない。 

DCL HVN CHARACTER(RL) VARYING 

ここで,RLの値は,参照型のオクテット単位での長さとする。 

修正された<PL/I変数定義>は,<SQL埋込みPL/Iプログラム>から導出されるプログラム中で,正

しいPL/Iデータ宣言 (data declaration) でなければならない。 

6) <PL/I変数定義>は,配列 (array) 又は構造体 (structure) ではなく,スカラ変数 (scalar variable) を指

定しなければならない。 

7) <PL/I変数定義>中の省略可能な<文字表現>の並びは,INITIAL句 (INITIAL clause) を指定してもよ

い。他の句を指定してもよいかどうかは,処理系定義とする。<文字表現>の並びは,<PL/I変数定義

>が,PL/Iの正しいDECLARE文 (DECLARE statement) であるようなものでなければならない。 

アクセス規則 

なし。 

一般規則 

1) “21.1 <SQL埋込みホストプログラム>”参照。 

適合性規則 

1) 機能B017“埋込みPL/I”なしでは,適合するSQL言語は,<SQL埋込みPL/Iプログラム>を含んで

はならない。 

2) 機能S041“基本参照型”なしでは,適合するSQL言語は,<PL/I REF変数>を含んではならない。 

3) 機能S241“変換関数”なしでは,適合するSQL言語は,<PL/I利用者定義型変数>を含んではなら

ない。 

4) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<PL/I配列位置付け子変数>を含ん

ではならない。 

5) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<PL/Iマルチ集合位置付け子

変数>を含んではならない。 

6) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<PL/I利用者定

義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

7) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I BLOB変数>を含んで

はならない。 

8) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I CLOB変数>を含んで

はならない。 

9) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I BLOB位置付け子変

数>を含んではならない。 

10) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I CLOB位置付け子変

数>を含んではならない。 

11) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<PL/I BINARY

変数>を含んではならない。 

907 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

12) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<PL/I VARBINARY

変数>を含んではならない。 

13) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語中で,<PL/I型FIXED BINARY>と等

価な<ホストパラメタデータ型>は,BIGINTであってはならない。 

908 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

22 SQLの直接起動 

22.1 <直接SQL文> 

機能 

<直接SQL文> (<direct SQL statement>) は,SQLの直接実行を指定する。 

形式 

<直接SQL文> ::= 

  <直接実行可能文> <セミコロン> 

<直接実行可能文> ::= 

  <直接SQLデータ文> 

| <SQLスキーマ文> 

| <SQLトランザクション文> 

| <SQLコネクション文> 

| <SQLセション文> 

| <直接処理系定義文> 

<直接SQLデータ文> ::= 

  <DELETE文:探索> 

| <直接SELECT文:複数行> 

| <INSERT文> 

| <UPDATE文:探索> 

| <TRUNCATE TABLE文> 

| <MERGE文> 

| <一時表宣言> 

<直接処理系定義文> ::= 

  !! 構文規則参照。 

構文規則 

1) <直接SQLデータ文>は,SQLパラメタ参照,SQL変数参照,<動的パラメタ指定>又は<埋込み変数

指定>を含んではならない。 

2) ナルを表現する<値指定>は,処理系定義とする。 

3) <直接処理系定義文>の形式及び構文規則は,処理系定義とする。 

アクセス規則 

1) <直接処理系定義文>のアクセス規則は,処理系定義とする。 

一般規則 

1) 次の<直接SQL文>は,トランザクション開始<直接SQL文>とする。 

a) トランザクション開始<SQL手続文>である<直接SQL文>。 

b) <直接SELECT文:複数行>。 

c) トランザクションを開始する<直接処理系定義文>。 

2) SQLセション中でのSQLエージェントによるSQL文の最後の呼出し後は,次による。 

a) <ROLLBACK文>又は<COMMIT文>が実効的に実行される。回復不可能な誤りが発生したか,SQL

の直接起動が不意に終了したか,又はいずれかの強制の制約が満たされないならば,<ROLLBACK

文>が実行される。そうでなければ,これらのSQL文のどちらが実行されるかの選択は,処理系

909 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

依存とする。SQLの直接起動が不意に終了したかどうかの決定は,処理系依存とする。 

b) 現行SQLセション内で現在割り当てられているSQL記述子領域の<記述子名>をDとする。次の

とおりに指定する<DEALLOCATE DESCRIPTOR文>が実効的に実行される。 

DEALLOCATE DESCRIPTOR D 

c) SQLエージェントに関連付けられた全てのSQLセションが終了する。 

3) 認可スタックの最上部セルの写しが,認可スタックに押し込まれる。 

4) <直接SQL文>をSとする。 

5) <直接SQL文>の形式,構文規則及びアクセス規則にSが適合しないならば,例外条件:構文誤り又

はアクセス規則違反 (syntax error or access violation) が引き起こされる。 

6) SがSQLエージェントに呼び出されるとき,次による。 

場合: 

a) Sが<SQLコネクション文>ならば,次による。 

i) 

1番目の診断領域が空にされる。 

ii) Sが実行される。 

iii) SがSQLセションを正常に開始又は再開始したならば,SQLエージェントによる<直接SQL文

>の後続する呼出しは,SQLエージェントがSQLセションを終了させるか又は休眠させるまで,

SQLセションに関連付けられる。 

b) そうでなければ,次による。 

i) 

SQLエージェントに対して,どのSQLセションも現行でないならば,次による。 

場合: 

1) SQLエージェントが<SQLコネクション文>を実行しておらず,かつ,SQLエージェントに関

連付けられた既定SQLセションが存在しないならば,次の<CONNECT文>が実効的に実行さ

れる。 

CONNECT TO DEFAULT 

2) SQLエージェントが<SQLコネクション文>を実行しておらず,かつ,SQLエージェントに関

連付けられた既定SQLセションが存在するならば,次の<SET CONNECTION文>が実効的に

実行される。 

SET CONNECTION DEFAULT 

3) そうでなければ,例外条件:コネクション例外 (connection exception) − コネクションが存在

しない (connection does not exist) が引き起こされる。 

SQLエージェントによる<外部呼出し手続>の後続する呼出し又は<直接SQL文>の後続する起

動は,SQLエージェントがSQLセションを終了させるか又は休眠させるまで,SQLセション

に関連付けられる。 

ii) SQLエージェントに対してSQLトランザクションが動作中ならば,Sは,そのSQLトランザ

クションに関連付けられる。Sが<直接処理系定義文>ならば,動作中のSQLトランザクション

にSが関連付けられてもよいかどうかは,処理系定義とする。関連付けられないならば,例外

条件:トランザクション状態が正しくない (invakid transaction state) − SQLトランザクション

が動作中 (active SQL-transaction) が引き起こされる。 

iii) SQLエージェントに対してどのSQLトランザクションも動作中でないならば,次による。 

1) 場合: 

910 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

A) Sがトランザクション開始<直接SQL文>ならば,SQLトランザクションが開始される。 

B) Sが<直接処理系定義文>ならば,SがSQLトランザクションを開始するかどうかは,処理

系定義とする。処理系がSをトランザクション開始文として定義するならば,SQLトラン

ザクションが開始される。 

2) SがSQLトランザクションを開始するならば,次による。 

A) Sによって開始されるSQLトランザクションをTとする。 

B) SQLエージェントがTを終了させるまで,Tは,この呼出し及びSQLエージェントによる

<直接SQL文>の後続する起動又は<外部呼出し手続>の後続する呼出しに関連付けられる。 

C) Sが<START TRANSACTION文>でないならば,次による。 

場合: 

I) 

SQLセション中の最後のSQLトランザクションの終了以降に,<SET TRANSACTION文

>が実行されたならば,(又はSQLセション中に,先行するSQLトランザクションがな

く,<SET TRANSACTION文>が実行されたならば,)Tのトランザクションアクセスモ

ード,制約モード及びトランザクション隔離性水準は,<SET TRANSACTION文>によっ

て指定されたとおりに設定される。 

II) そうでなければ,Tのトランザクションアクセスモード,全ての制約に対する制約モー

ド,及びトランザクション隔離性水準は,それぞれ,読み書き可能 (read-write),即時 

(immediate) 及びSERIALIZABLEとする。 

D) TがSQLセションに関連付けられる。 

iv) Sが<SQLスキーマ文>を含み,かつ,現行SQLトランザクションのトランザクションアクセス

モードが読込み専用 (read-only) ならば,例外条件:トランザクション状態が正しくない − 読

込み専用SQLトランザクション (read-only SQL-transaction) が引き起こされ,この一般規則の

部分規則は,これ以上評価しないで,次の一般規則の評価を続ける。 

v) 1番目の診断領域が空にされる。 

vi) Sが実行される。 

7) 実行の完了時点に,認可スタック中の最上部セルが取り除かれる。 

8) SQLスキーマ文の実行と同じSQLトランザクション内で<直接SQLデータ文>の実行が行われ,こ

れがSQL処理系によって許されないならば,例外条件:トランザクション状態が正しくない − ス

キーマ文とデータ文との混在は提供されない (schema and data statement mixing not supported) が引

き起こされる。 

9) 場合: 

a) Sが成功実行したならば,終了条件:成功終了 (successful completion) が引き起こされるか,終了

条件:警告 (warning) が引き起こされるか,又は終了条件:データなし (no data) が引き起こされ

るかのいずれかとする。 

b) Sが成功実行しなかったならば,Sの実行によってSQLデータ又はスキーマになされた全ての変

更が取り消され,例外条件が引き起こされる。 

注記563 条件を引き起こす方法は,処理系定義である。 

10) Sの実行の結果として生じる診断情報が,1番目の診断領域中に格納され,1番目の診断領域中の1

番目の条件領域が占有になる。 

注記564 診断情報にアクセスする方法は,処理系定義であるが,診断領域の内容は変更しない。 

911 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

適合性規則 

1) 機能B021“直接SQL”なしでは,適合するSQL言語は,<直接SQL文>を含んではならない。 

22.2 <直接SELECT文:複数行> 

機能 

<直接SELECT文:複数行> (<direct select statement: multiple rows>) は,指定された表から複数行を取り

出す文を指定する。 

形式 

<直接SELECT文:複数行> ::= 

  <カーソル指定> 

構文規則 

1) <直接SELECT文:複数行>の<問合せ式>は,<定数>,CURRENT̲USER,CURRENT̲ROLE,

SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG,CURRENT̲SCHEMA,CURRENT̲PATH,

CURRENT̲DEFAULT̲TRANSFORM̲GROUP又はCURRENT̲TRANSFORM̲GROUP̲FOR̲TYPE以

外の<値指定>を含んではならない。 

2) <カーソル指定>は,<更新可能性句>を含んではならない。 

アクセス規則 

なし。 

一般規則 

1) <カーソル指定>の結果をQとする。 

場合: 

a) Qが空ならば,終了条件:データなし (no data) が引き起こされる。 

b) そうでなければ,Qは,空ではなく,Qが戻される。Qを戻す方法は,処理系定義とする。 

適合性規則 

なし。 

23 診断管理 

23.1 <GET DIAGNOSTICS文> 

この細分箇条は,ISO/IEC 9075-4の“17.1 <GET DIAGNOSTICS文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“23.1 <GET DIAGNOSTICS文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“19.1 <GET DIAGNOSTICS文>”によって修正される。 

機能 

<GET DIAGNOSTICS文> (<get diagnostics statement>) は,診断領域から例外条件情報又は終了条件情報

を取得する。 

形式 

04 <GET DIAGNOSTICS文> ::= 

  GET DIAGNOSTICS <SQL診断情報> 

<SQL診断情報> ::= 

  <文情報> 

| <条件情報> 

| <全情報> 

912 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<文情報> ::= 

  <文情報項目> [ { <コンマ> <文情報項目> }... ] 

<文情報項目> ::= 

  <単純相手指定> <等号演算子> <文情報項目名> 

<文情報項目名> ::= 

  NUMBER 

| MORE 

| COMMAND̲FUNCTION 

| COMMAND̲FUNCTION̲CODE 

| DYNAMIC̲FUNCTION 

| DYNAMIC̲FUNCTION̲CODE 

| ROW̲COUNT 

| TRANSACTIONS̲COMMITTED 

| TRANSACTIONS̲ROLLED̲BACK 

| TRANSACTION̲ACTIVE 

<条件情報> ::= 

  CONDITION <条件番号> <条件情報項目> 

      [ { <コンマ> <条件情報項目> }... ] 

<条件情報項目> ::= 

  <単純相手指定> <等号演算子> <条件情報項目名> 

04 <条件情報項目名> ::= 

  CATALOG̲NAME 

| CLASS̲ORIGIN 

| COLUMN̲NAME 

| CONDITION̲NUMBER 

| CONNECTION̲NAME 

| CONSTRAINT̲CATALOG 

| CONSTRAINT̲NAME 

| CONSTRAINT̲SCHEMA 

| CURSOR̲NAME 

| MESSAGE̲LENGTH 

| MESSAGE̲OCTET̲LENGTH 

| MESSAGE̲TEXT 

| PARAMETER̲MODE 

| PARAMETER̲NAME 

| PARAMETER̲ORDINAL̲POSITION 

| RETURNED̲SQLSTATE 

| ROUTINE̲CATALOG 

| ROUTINE̲NAME 

| ROUTINE̲SCHEMA 

background image

913 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

| SCHEMA̲NAME 

| SERVER̲NAME 

| SPECIFIC̲NAME 

| SUBCLASS̲ORIGIN 

| TABLE̲NAME 

| TRIGGER̲CATALOG 

| TRIGGER̲NAME 

| TRIGGER̲SCHEMA 

<全情報> ::= 

  <全情報相手> <等号演算子> ALL [<ALLの修飾子> ] 

<全情報相手> ::= 

  <単純相手指定> 

<ALLの修飾子> ::= 

  STATEMENT 

| CONDITION [<条件番号> ] 

<条件番号> ::= 

  <単純値指定> 

構文規則 

1) <文情報項目>又は<条件情報項目>に含まれる<単純相手指定>をSTSとする。対応する<文情報項目

名>に対しては,表30“<GET DIAGNOSTICS文>で用いるための<文情報項目名>”で規定する宣言

型,又は対応する<条件情報項目名>に対しては,表31“<GET DIAGNOSTICS文>で用いるための<

条件情報項目名>”で規定する宣言型をIDDTとする。次の式をIDとする。 

CAST ( '' AS IDDT ) 

STSをTARGETとして,IDをVALUEとして,“9.1 取出し代入”の構文規則を適用する。 

2) <全情報相手>の宣言型は,文字列型でなければならない。 

3) <条件番号>の宣言型は,位取り0の真数でなければならない。 

04 表30−<GET DIAGNOSTICS文>で用いるための<文情報項目名> 

<識別子>  

宣言型 

COMMAND̲FUNCTION 

処理系定義の最大長をもつ可変長文字列 

COMMAND̲FUNCTION̲CODE 

位取り0の真数 

DYNAMIC̲FUNCTION 

処理系定義の最大長をもつ可変長文字列 

DYNAMIC̲FUNCTION̲CODE 

位取り0の真数 

MORE 

長さ1の固定長文字列 

NUMBER 

位取り0の真数 

ROW̲COUNT 

位取り0の真数 

TRANSACTION̲ACTIVE 

位取り0の真数 

TRANSACTIONS̲COMMITTED 

位取り0の真数 

TRANSACTIONS̲ROLLED̲BACK 

位取り0の真数 

background image

914 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表31−<GET DIAGNOSTICS文>で用いるための<条件情報項目名> 

<識別子>  

宣言型 

CATALOG̲NAME 

処理系定義の最大長をもつ可変長文字列 

CLASS̲ORIGIN 

処理系定義の最大長をもつ可変長文字列 

COLUMN̲NAME 

処理系定義の最大長をもつ可変長文字列 

CONDITION̲NUMBER 

位取り0の真数 

CONNECTION̲NAME 

処理系定義の最大長をもつ可変長文字列 

CONSTRAINT̲CATALOG 

処理系定義の最大長をもつ可変長文字列 

CONSTRAINT̲NAME 

処理系定義の最大長をもつ可変長文字列 

CONSTRAINT̲SCHEMA 

処理系定義の最大長をもつ可変長文字列 

CURSOR̲NAME 

処理系定義の最大長をもつ可変長文字列 

MESSAGE̲LENGTH 

位取り0の真数 

MESSAGE̲OCTET̲LENGTH 

位取り0の真数 

MESSAGE̲TEXT 

処理系定義の最大長をもつ可変長文字列 

PARAMETER̲MODE 

最大長が5の可変長文字列 

PARAMETER̲NAME 

処理系定義の最大長をもつ可変長文字列 

PARAMETER̲ORDINAL̲POSITION 

位取り0の真数 

RETURNED̲SQLSTATE 

長さ5の固定長文字列 

ROUTINE̲CATALOG 

処理系定義の最大長をもつ可変長文字列 

ROUTINE̲NAME 

処理系定義の最大長をもつ可変長文字列 

ROUTINE̲SCHEMA 

処理系定義の最大長をもつ可変長文字列 

SCHEMA̲NAME 

処理系定義の最大長をもつ可変長文字列 

SERVER̲NAME 

処理系定義の最大長をもつ可変長文字列 

SPECIFIC̲NAME 

処理系定義の最大長をもつ可変長文字列 

SUBCLASS̲ORIGIN 

処理系定義の最大長をもつ可変長文字列 

TABLE̲NAME 

処理系定義の最大長をもつ可変長文字列 

TRIGGER̲CATALOG 

処理系定義の最大長をもつ可変長文字列 

TRIGGER̲NAME 

処理系定義の最大長をもつ可変長文字列 

TRIGGER̲SCHEMA 

処理系定義の最大長をもつ可変長文字列 

アクセス規則 

なし。 

一般規則 

1) 

04 1番目の診断領域をDAとする。 

2) <文情報項目>の指定は,DA中の指定された文情報項目の値を<単純相手指定>に代入する。 

a) NUMBERの値は,<GET DIAGNOSTICS文>以外の前のSQL文の実行の結果としてDA中に格納

された例外条件又は終了条件の個数とする。 

注記565 <GET DIAGNOSTICS文>自体は,SQLSTATEパラメタによって情報を戻してもよいが,

DAの前の内容を修正しない。 

b) MOREの値は,次による。 

DA中にある条件領域よりも多くの条件がSQL文の実行中に引き起こされた。 

SQL文の実行中に引き起こされた全ての条件がDA中に格納されている。 

c) COMMAND̲FUNCTIONの値は,実行されたSQL文の識別とする。表32“SQL文のコード”が,

SQL文の識別子を規定する。 

background image

915 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) COMMAND̲FUNCTION̲CODEの値は,実行されたSQL文を識別する番号とする。表32“SQL

文のコード”が,SQL文のコードを規定する。正の値は,この規格群によって定義されるSQL文

のために予約される。負の値は,処理系定義のSQL文のために予約される。 

e) DYNAMIC̲FUNCTION及びDYNAMIC̲FUNCTION̲CODEの値は,それぞれ,文字列及び数と

し,それらのそれぞれは,準備されているか又は動的に実行されているSQL文の種別を識別する。

表32“SQL文のコード”が,SQL文の識別子及びコードを規定する。正のコードの値は,この規

格群によって定義されるSQL文のために予約される。負のコードの値は,処理系定義のSQL文

のために予約される。表32“SQL文のコード”の,<動的SELECT文>又は<動的単一行SELECT

文>に対する識別子及びコードを,準備されたがまだ動的に実行されていない<動的SELECT文>

又は<動的単一行SELECT文>を記述するために用いるかどうかは,処理系定義とする。 

04 09 14 表32−SQL文のコード 

SQL文 

識別子 

コード 

<拡張動的カーソル割当て文>及び<受取りカ
ーソル割当て文> 

ALLOCATE CURSOR 

<ALLOCATE DESCRIPTOR文> 

ALLOCATE DESCRIPTOR 

<定義域変更文> 

ALTER DOMAIN 

<ルーチン変更文> 

ALTER ROUTINE 

17 

<順序数生成子変更文> 

ALTER SEQUENCE 

134 

<型変更文> 

ALTER TYPE 

60 

<表変更文> 

ALTER TABLE 

<変換変更文> 

ALTER TRANSFORM 

127 

<表明定義> 

CREATE ASSERTION 

<CALL文> 

CALL 

<文字集合定義> 

CREATE CHARACTER SET 

<CLOSE文> 

CLOSE CURSOR 

<照合順定義> 

CREATE COLLATION 

10 

<COMMIT文> 

COMMIT WORK 

11 

<CONNECT文> 

CONNECT 

13 

<DEALLOCATE DESCRIPTOR文> 

DEALLOCATE DESCRIPTOR 

15 

<DEALLOCATE PREPARE文> 

DEALLOCATE PREPARE 

16 

<DELETE文:位置付け> 

DELETE CURSOR 

18 

<DELETE文:探索> 

DELETE WHERE 

19 

<記述文> 

DESCRIBE 

20 

<直接SELECT文:複数行> 

SELECT 

21 

<DISCONNECT文> 

DISCONNECT 

22 

<定義域定義> 

CREATE DOMAIN 

23 

<表明削除文> 

DROP ASSERTION 

24 

<文字集合削除文> 

DROP CHARACTER SET 

25 

<照合順削除文> 

DROP COLLATION 

26 

<データ型削除文> 

DROP TYPE 

35 

<定義域削除文> 

DROP DOMAIN 

27 

<役割削除文> 

DROP ROLE 

29 

<ルーチン削除文> 

DROP ROUTINE 

30 

<スキーマ削除文> 

DROP SCHEMA 

31 

<順序数生成子削除文> 

DROP SEQUENCE 

135 

background image

916 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

04 09 14 表32−SQL文のコード(続き) 

SQL文 

識別子 

コード 

<表削除文> 

DROP TABLE 

32 

<変換削除文> 

DROP TRANSFORM 

116 

<文字変換削除文> 

DROP TRANSLATION 

33 

<トリガ削除文> 

DROP TRIGGER 

34 

<利用者定義型変換削除文> 

DROP CAST 

78 

<利用者定義順序付け削除文> 

DROP ORDERING 

115 

<ビュー削除文> 

DROP VIEW 

36 

<動的CLOSE文> 

DYNAMIC CLOSE 

37 

<動的DELETE文:位置付け> 

DYNAMIC DELETE CURSOR 

38 

<動的FETCH文> 

DYNAMIC FETCH 

39 

<動的OPEN文> 

DYNAMIC OPEN 

40 

<動的SELECT文> 

SELECT CURSOR 

85 

<動的単一行SELECT文> 

SELECT 

41 

<動的UPDATE文:位置付け> 

DYNAMIC UPDATE CURSOR 

42 

<EXECUTE IMMEDIATE文> 

EXECUTE IMMEDIATE 

43 

<EXECUTE文> 

EXECUTE 

44 

<FETCH文> 

FETCH 

45 

<FREE LOCATOR文> 

FREE LOCATOR 

98 

<GET DESCRIPTOR文> 

GET DESCRIPTOR 

47 

<HOLD LOCATOR文> 

HOLD LOCATOR 

99 

<GRANT権限文> 

GRANT 

48 

<GRANT役割文> 

GRANT ROLE 

49 

<INSERT文> 

INSERT 

50 

<MERGE文> 

MERGE 

128 

<OPEN文> 

OPEN 

53 

<準備可能動的DELETE文:位置付け> 

PREPARABLE DYNAMIC DELETE CURSOR 

54 

<準備可能動的UPDATE文:位置付け> 

PREPARABLE DYNAMIC UPDATE CURSOR 

55 

<PREPARE文> 

PREPARE 

56 

<RELEASE SAVEPOINT文> 

RELEASE SAVEPOINT 

57 

<RETURN文> 

RETURN 

58 

<REVOKE権限文> 

REVOKE 

59 

<REVOKE役割文> 

REVOKE ROLE 

129 

<役割定義> 

CREATE ROLE 

61 

<ROLLBACK文> 

ROLLBACK WORK 

62 

<SAVEPOINT文> 

SAVEPOINT 

63 

<スキーマ定義> 

CREATE SCHEMA 

64 

<スキーマルーチン> 

CREATE ROUTINE 

14 

<SELECT文:単一行> 

SELECT 

65 

<順序数生成子定義> 

CREATE SEQUENCE 

133 

<SET CATALOG文> 

SET CATALOG 

66 

<SET CONNECTION文> 

SET CONNECTION 

67 

<SET CONSTRAINTS MODE文> 

SET CONSTRAINT 

68 

<SET DESCRIPTOR文> 

SET DESCRIPTOR 

70 

<地方時刻帯設定文> 

SET TIME ZONE 

71 

<SET NAMES文> 

SET NAMES 

72 

<SET PATH文> 

SET PATH 

69 

background image

917 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

04 09 14 表32−SQL文のコード(続き) 

SQL文 

識別子 

コード 

<SET ROLE文> 

SET ROLE 

73 

<SET SCHEMA文> 

SET SCHEMA 

74 

<セション利用者識別子設定文> 

SET SESSION AUTHORIZATION 

76 

<SET SESSION CHARACTERISTICS文> 

SET SESSION CHARACTERISTICS 

109 

<セション照合順設定文> 

SET COLLATION 

136 

<SET TRANSFORM GROUP文> 

SET TRANSFORM GROUP 

118 

<SET TRANSACTION文> 

SET TRANSACTION 

75 

<START TRANSACTION文> 

START TRANSACTION 

111 

<表定義> 

CREATE TABLE 

77 

<変換定義> 

CREATE TRANSFORM 

117 

<文字変換定義> 

CREATE TRANSLATION 

79 

<トリガ定義> 

CREATE TRIGGER 

80 

<TRUNCATE TABLE文> 

TRUNCATE TABLE 

139 

<UPDATE文:位置付け> 

UPDATE CURSOR 

81 

<UPDATE文:探索> 

UPDATE WHERE 

82 

<利用者定義型変換定義> 

CREATE CAST 

52 

<利用者定義型定義> 

CREATE TYPE 

83 

<利用者定義順序付け定義> 

CREATE ORDERING 

114 

<ビュー定義> 

CREATE VIEW 

84 

処理系定義の文 

他のどのSQL文に関連付けられた値とも異なる処理系定
義の文字列値 

x 1) 

認識されない文 

長さ0の文字列 

注1) 他のどのSQL文に関連付けられた値とも異なる処理系定義の負の数 

注記566 この規格群の他の規格で,他の値が追加され,用いられる(詳しい情報は,この規格

群の他の規格中の対応する表を参照)。 

f) 

ROW̲COUNTの値は,<DELETE文:探索>,<INSERT文>,<MERGE文>若しくは<UPDATE文:

探索>の実行の結果として,又は前のSQL文の実行の直接の結果として,影響を受けた行の個数

とする。<DELETE文:探索>,<INSERT文>,<MERGE文>又は<UPDATE文:探索>をSとする。 

場合: 

i) 

Sが<INSERT文>ならば,ROW̲COUNTの値は,Sに単純に含まれる<挿入相手>に単純に含ま

れる<表名>によって識別される表に挿入された行の個数とする。 

ii) Sが<MERGE文>ならば,Sに直に含まれる<相手表>をTR1とし,Sに直に含まれる<表参照>

をTR2とし,Sに直に含まれる<探索条件>をSCとする。<併合相関名>が指定されるならば,

“AS <併合相関名>”をMCNとする。そうでなければ,長さ0の文字列をMCNとする。 

場合: 

1) Sが<併合WHEN MATCHED句>を含み,<併合WHEN NOT MATCHED句>を含まないなら

ば,ROW̲COUNTの値は,Sの実行前に,次の文を実行することによって実効的に導出され

る。 

SELECT COUNT (*) 

FROM TR1 MCN, TR2 

WHERE SC 

918 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

2) Sが<併合WHEN NOT MATCHED句>を含み,<併合WHEN MATCHED句>を含まないなら

ば,ROW̲COUNTの値は,Sの実行前に,次の文を実行することによって実効的に導出され

る。 

( SELECT COUNT(*) 

  FROM TR1 MCN 

    RIGHT OUTER JOIN 

        TR2 

      ON SC ) 

( SELECT COUNT (*) 

  FROM TR1 MCN, TR2 

  WHERE SC ) 

3) Sが<併合WHEN MATCHED句>及び<併合WHEN NOT MATCHED句>の両方を含むならば,

ROW̲COUNTの値は,Sの実行前に,次の文を実行することによって実効的に導出される。 

SELECT COUNT(*) 

FROM TR1 MCN 

  RIGHT OUTER JOIN 

      TR2 

    ON SC 

iii) そうでなければ,(Sが<DELETE文:探索>又は<UPDATE文:探索>ならば,)Sに単純に含ま

れる<挿入相手>に単純に含まれる<表名>によって識別される表をTとする。 

場合: 

1) Sが<探索条件>を含まないならば,ROW̲COUNTの値は,Sの実行前のTの基数とする。 

2) そうでなければ,Sに直接含まれる<探索条件>をSCとする。<相関名>が指定されるならば,

“AS <相関名>”をMCNとする。そうでなければ,長さ0の文字列をMCNとする。

ROW̲COUNTの値は,Sの実行前に,次の文を実行することによって実効的に導出される。 

SELECT COUNT(*) 

FROM T MCN 

WHERE SC 

g) 直接の結果として,<DELETE文:探索>,<INSERT文>,<MERGE文>又は<UPDATE文:探索>

の実行にならないSQL文の実行の後のROW̲COUNTの値は,処理系依存とする。 

h) TRANSACTIONS̲COMMITTEDの値は,DAが空にされた最も新しい時刻以後にコミットされた

SQLトランザクションの個数とする。 

注記567 “13.3 <外部呼出し手続>”の一般規則参照。TRANSACTIONS̲COMMITTEDは,外部

ルーチンの呼出し中にコミットされたSQLトランザクションの個数を示す。 

i) 

TRANSACTIONS̲ROLLED̲BACKの値は,DAが空にされた最も新しい時刻以後にロールバック

されたSQLトランザクションの個数とする。 

注記568 “13.3 <外部呼出し手続>”の一般規則参照。TRANSACTIONS̲ROLLED̲BACKは,外

部ルーチンの呼出し中にロールバックされたSQLトランザクションの個数を示す。 

j) 

TRANSACTION̲ACTIVEの値は,SQLトランザクションが現在動作中ならば,1とし,SQLトラ

919 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ンザクションが現在動作中でないならば,0とする。 

注記569 TRANSACTION̲ACTIVEは,外部ルーチンから戻るときに,SQLトランザクションが

動作中かどうかを示す。 

3) <条件情報>が指定されるならば,<条件番号>の値をNとする。Nが1未満か,又はDA中の占有条

件領域の個数を超えるならば,例外条件:条件数が正しくない (invalid condition number) が引き起

こされる。<条件番号>の値が1ならば,取り出される診断情報は,<GET DIAGNOSTICS文>以外の

前のSQL文の実行によって実際に戻されたSQLSTATEの値によって示される条件に対応する。そ

うでなければ,<条件番号>の値と,その<SQL文>に対する一般規則の評価中に引き起こされた特定

の条件との間の関連付けは,処理系依存とする。 

4) <条件情報項目>の指定は,DA中のN番目の条件領域中の指定された条件情報項目の値を<単純相

手指定>に代入する。 

a) CONDITION̲NUMBERの値は,<条件番号>の値とする。 

b) CLASS̲ORIGINの値は,RETURNED̲SQLSTATEのクラスコードを定義した命名機関の識別とす

る。“24.1 SQLSTATE”で完全に定義されたクラスコードをもつどのRETURNED̲SQLSTATEに対

しても,その値は,“ISO 9075”でなければならず,処理系定義クラスコードであるクラスコード

をもつどのRETURNED̲SQLSTATEに対しても,その値は,“ISO 9075”以外の処理系定義の文字

列でなければならない。 

c) SUBCLASS̲ORIGINの値は,RETURNED̲SQLSTATEのサブクラスコードを定義した命名機関の

識別とする。“24.1 SQLSTATE”で完全に定義されたサブクラスコードをもつどの

RETURNED̲SQLSTATEに対しても,その値は,“ISO 9075”でなければならず,処理系定義サブ

クラスコードであるサブクラスコードをもつどのRETURNED̲SQLSTATEに対しても,その値は,

“ISO 9075”以外の処理系定義の文字列でなければならない。 

d) RETURNED̲SQLSTATEの値は,あり得る唯一の終了条件又は例外条件であったならば,戻され

たであろうSQLSTATEパラメタとする。 

e) RETURNED̲SQLSTATEの値がカーソル操作衝突 (cursor operation conflict) のサブクラスをもつ

警告 (warning) に対応するならば,CURSOR̲NAMEの値は,終了条件を引き起こしたカーソルの

名前とする。 

f) 

RETURNED̲SQLSTATEの値が,整合性制約違反 (integrity constraint violation),トランザクション

ロールバック (transaction rollback) − 整合性制約違反,又は参照制約違反に起因する被トリガデ

ータ変更違反 (triggered data change violation) に対応するならば,次による。 

i) 

CONSTRAINT̲CATALOG及びCONSTRAINT̲SCHEMAの値は,制約又は表明を含むスキーマ

の<スキーマ名>の<カタログ名>及び<修飾なしスキーマ名>とする。CONSTRAINT̲NAMEの値

は,制約又は表明の<被修飾識別子>とする。 

ii) 場合: 

1) 違反した整合性制約が表制約ならば,CATALOG̲NAME,SCHEMA̲NAME及び

TABLE̲NAMEの値は,それぞれ,表制約が含まれる表の,<スキーマ名>の<カタログ名>及

び<修飾なしスキーマ名>,並びに<被修飾識別子>とする。 

2) 違反した整合性制約が表明で,かつ,表明によって参照される一つの表だけが,SQL文の実

行の結果として修正されたならば,CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAME

の値は,それぞれ,修正された表の,<スキーマ名>の<カタログ名>及び<修飾なしスキーマ

920 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

名>,並びに<被修飾識別子>とする。 

3) そうでなければ,CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAMEの値は,長さ0

の文字列とする。 

TABLE̲NAMEが宣言局所一時表を識別するならば,CATALOG̲NAMEは,長さ0の文字列と

し,SCHEMA̲NAMEは“MODULE”とする。 

g) RETURNED̲SQLSTATEの値が,被トリガ動作例外 (triggered action exception),トランザクション

ロールバック − 被トリガ動作例外,又はトリガに起因する被トリガデータ変更違反 に対応す

るならば,次による。 

i) 

TRIGGER̲CATALOG及びTRIGGER̲SCHEMAの値は,トリガを含むスキーマの<スキーマ名>

の<カタログ名>及び<修飾なしスキーマ名>とする。TRIGGER̲NAMEの値は,トリガの<トリ

ガ名>の<被修飾識別子>とする。 

ii) CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAMEの値は,それぞれ,トリガが定義さ

れている表の<表名>の,<スキーマ名>の<カタログ名>及び<修飾なしスキーマ名>,並びに<被

修飾識別子>とする。 

h) RETURNED̲SQLSTATEの値が,構文誤り又はアクセス規則違反 (syntax error or access rule 

violation) に対応するならば,次による。 

i) 

場合: 

1) 構文誤り又はアクセス規則違反が特定の表の参照によって引き起こされたならば,

CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAMEの値は,次による。 

場合: 

A) 参照される特定の表が,宣言局所一時表でなかったならば,それぞれ,構文誤り又はアク

セス規則違反を引き起こした表を含むスキーマの<スキーマ名>の<カタログ名>及び<修飾

なしスキーマ名>,並びにその表の<被修飾識別子>とする。 

B) そうでなければ,それぞれ,長さ0の文字列,“MODULE”及び<被修飾識別子>とする。 

2) そうでなければ,CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAMEは,長さ0の文

字列を含む。 

ii) 構文誤り又はアクセス規則違反が,アクセスできない列に対するものであったならば,

COLUMN̲NAMEの値は,その列の<列名>とする。そうでなければ,COLUMN̲NAMEの値は,

長さ0の文字列とする。 

i) 

RETURNED̲SQLSTATEの値が,カーソル状態が正しくない (invalid cursor state) に対応するなら

ば,CURSOR̲NAMEの値は,正しくない状態にあるカーソルの名前とする。 

j) 

RETURNED̲SQLSTATEの値が,WITH CHECK OPTION違反 (with check option violation) に対応

するならば,CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAMEの値は,それぞれ,WITH 

CHECK OPTIONの違反を引き起こしたビューを含むスキーマの<スキーマ名>の<カタログ名>及

び<修飾なしスキーマ名>,並びにそのビューの<被修飾識別子>とする。 

k) RETURNED̲SQLSTATEの値が,構文誤り又はアクセス規則違反 に対応しないならば,次による。 

i) 

CATALOG̲NAME,SCHEMA̲NAME,TABLE̲NAME及びCOLUMN̲NAMEの値が,与えられ

た認可識別子にどの権限も付与されていない列を識別するならば,COLUMN̲NAMEの値は,

長さ0の文字列によって置き換えられる。 

ii) CATALOG̲NAME,SCHEMA̲NAME及びTABLE̲NAMEの値が,与えられた認可識別子にど

921 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の権限も付与されていない表を識別するならば,CATALOG̲NAME,SCHEMA̲NAME及び

TABLE̲NAMEの値は,長さ0の文字列によって置き換えられる。 

iii) CONSTRAINT̲CATALOG,CONSTRAINT̲SCHEMA及びCONSTRAINT̲NAMEの値が,ある

表Tの<表制約>を識別し,かつ,与えられた認可識別子に表Tに関するどの権限も付与されて

いないならば,CONSTRAINT̲CATALOG,CONSTRAINT̲SCHEMA及びCONSTRAINT̲NAME

の値は,長さ0の文字列によって置き換えられる。 

iv) CONSTRAINT̲CATALOG,CONSTRAINT̲SCHEMA及びCONSTRAINT̲NAMEの値が,ある

スキーマSに含まれる表明を識別し,かつ,与えられた認可識別子の集合にSの所有者が含ま

れないならば,CONSTRAINT̲CATALOG,CONSTRAINT̲SCHEMA及びCONSTRAINT̲NAME

の値は,長さ0の文字列によって置き換えられる。 

l) 

RETURNED̲SQLSTATEの値が,外部ルーチン呼出し例外 (external routine invocation exception),

外部ルーチン例外 (external routine exception),SQLルーチン例外 (SQL routine exception) 又は警告 

(warning) に対応し,かつ,SQL呼出しルーチンの呼出し中に条件が引き起こされたならば,次に

よる。 

i) 

ROUTINE̲CATALOG及びROUTINE̲SCHEMAの値は,それぞれ,SQL呼出しルーチンを含む

スキーマの<スキーマ名>の,<カタログ名>及び<修飾なしスキーマ名>とする。 

ii) ROUTINE̲NAME及びSPECIFIC̲NAMEの値は,それぞれ,SQL呼出しルーチンの,<ルーチ

ン名>の<識別子>及び<特定名>の<識別子>とする。 

iii) 場合: 

1) 条件がSQL呼出しルーチンのパラメタPiに関連するならば,次による。 

A) PARAMETER̲MODEの値は,Piの<パラメタモード>とする。 

B) PARAMETER̲ORDINAL̲POSITIONの値は,iの値とする。 

C) SQL呼出しルーチンが作成されたときSQLパラメタに対して<SQLパラメタ名>が指定さ

れていたならば,PARAMETER̲NAMEの値は,Piの<SQLパラメタ名>とする。そうでな

ければ,PARAMETER̲NAMEの値は,長さ0の文字列とする。 

2) そうでなければ,次による。 

A) PARAMETER̲MODEの値は,長さ0の文字列とする。 

B) PARAMETER̲ORDINAL̲POSITIONの値は,0とする。 

C) PARAMETER̲NAMEの値は,長さ0の文字列とする。 

m) RETURNED̲SQLSTATEの値が,外部ルーチン呼出し例外,外部ルーチン例外,SQLルーチン例

外 又は警告 に対応し,かつ,SQL呼出しルーチンの呼出し中に条件が引き起こされたならば,

MESSAGE̲TEXTの値は,例外を引き起こしたSQL呼出しルーチンのメッセージテキスト項目と

する。そうでなければ,MESSAGE̲TEXTの値は,処理系定義の文字列とする。 

注記570 SQL処理系は,これに,<空白>の並び,長さ0の文字列,又はRETURNED̲SQLSTATE

によって示される条件を記述する文字列を設定してよい。 

n) 

04 MESSAGE̲LENGTHの値は,MESSAGE̲TEXT中の文字列値の文字単位での長さとする。 

o) MESSAGE̲OCTET̲LENGTHの値は,MESSAGE̲TEXT中の文字列値のオクテット単位での長さ

とする。 

p) 

04 CONNECTION̲NAME及びSERVER̲NAMEの値は,それぞれ,次の値とする。 

場合: 

922 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

COMMAND̲FUNCTION又はDYNAMIC̲FUNCTIONが<SQLコネクション文>を識別するなら

ば,<SQLコネクション文>によって指定されるか又は暗に想定される<コネクション名>及び

<SQLサーバ名>。 

ii) そうでなければ,条件が引き起こされたSQLセションの<コネクション名>及び<SQLサーバ名

>。 

q) RETURNED̲SQLSTATEの値が,データ例外 (data exception) − 数値範囲外 (numeric value out of 

range),データ例外 − 型変換での文字値が正しくない (invalid character value for cast),データ例

外 − データ列データ,右切捨て (string data, right truncation) データ例外 − 時間隔フィールド

あふれ (interval field overflow),整合性制約違反 又は警告 − データ列データ,右切捨て に対応

し,かつ,SQL呼出しルーチンの呼出しの間に,SQLパラメタへの代入の結果として条件が引き

起こされたならば,次による。 

i) 

ROUTINE̲CATALOG及びROUTINE̲SCHEMAの値は,それぞれ,ルーチンを含むスキーマの

<スキーマ名>の,<カタログ名>及び<修飾なしスキーマ名>とする。 

ii) ROUTINE̲NAME及びSPECIFIC̲NAMEの値は,それぞれ,ルーチンの,<ルーチン名>の<識

別子>及び<特定名>の<識別子>とする。 

iii) 条件がSQL呼出しルーチンのパラメタPiに関連するならば,次による。 

1) PARAMETER̲MODEの値は,Piの<パラメタモード>とする。 

2) PARAMETER̲ORDINAL̲POSITIONの値は,iの値とする。 

3) SQL呼出しルーチンが作成されたときに,SQLパラメタに対して<SQLパラメタ名>が指定

されたならば,PARAMETER̲NAMEの値は,Piの<SQLパラメタ名>とする。そうでなけれ

ば,PARAMETER̲NAMEの値は,長さ0の文字列とする。 

5) 上記の規則によって規定されない他の場合の文字列項目の値には,長さ0の文字列が設定される。 

注記571 これらの規則によって設定されない数値項目は存在しない。 

6) 場合: 

a) <SQL診断情報>が<全情報>を含むならば,DA中の占有条件領域の個数をNとする。<定数>' '

をSとする。Xが,DA中の文情報項目の<文情報項目名>,DAの占有条件領域中の条件情報項目

の<条件情報項目名>,又は(値が占有条件領域の順序位置である)CONDITION̲NUMBERのいず

れかであるような各Xに対して,次の<値式>をCHARFORM( X ) で示す。 

CAST ( LX AS CHARACTER VARYING ( M ) ) 

ここで,LXは,Xの値を示す<定数>とし,Mは,可変長文字列の処理系定義の最大長とする。次

の<値式>をPRESENTATION ( X ) で示す。 

'X = ' || CHARFORM ( X ) 

次のCASE式と等価なものをSEMICOLONCAT ( str, din ) とする。 

CASE 

  WHEN CHARFORM ( din ) = '' THEN str ; 

  WHEN str = '' THEN PRESENTATION ( din ) ; 

  ELSE str || ';' || PRESENTATION ( din ) ; 

END CASE 

i) 

<ALLの修飾子>が省略されるか又はSTATEMENTを含むならば,処理系依存の順序でとられ

るDA中の各文情報項目SIIに対して,次の値式をSとする。 

923 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SEMICOLONCAT ( S , SIN ) 

ここで,SINは,SIIの<文情報項目名>とする。 

ii) <ALLの修飾子>が省略されるか又はCONDITIONを含み,かつ,<条件番号>を含まないなら

ば,処理系定義の順序で,各CN,1 ≤ CN ≤ Nに対して,次による。 

1) 次の値式をSとする。 

SEMICOLONCAT ( S, COND ) 

ここで,CONDは,CONDITION̲NUMBERとし,CONDITION̲NUMBERの値は,CNとす

る。 

2) 処理系依存の順序でとられる条件領域CN中の各条件情報項目CIIに対して,次の値式をS

とする。 

SEMICOLONCAT ( S, CIN ) 

ここで,CINは,CIIの<条件番号>とする。 

iii) <ALLの修飾子>がCONDITION及び<条件番号>を含むならば,<条件番号>の値をCNとする。

処理系依存の順序でとられる条件領域CN中の各条件情報項目CIIに対して,次の値式をSと

する。 

SEMICOLONCAT ( S, CIN ) 

ここで,CINは,CIIの<条件番号>とする。 

iv) <全情報相手>をTARGETとして,SをVALUEとして,“9.1 取出し代入”の一般規則を適用す

る。 

b) <文情報>が指定されるならば,各<文情報項目>に対して,<単純相手指定>をTARGETとして,<

文情報項目名>の値をVALUEとして,“9.1 取出し代入”の一般規則を適用する。 

c) そうでなければ(<条件情報>が指定されるならば),各<条件情報項目>に対して,<単純相手指定

>をTARGETとして,<条件情報項目名>の値をVALUEとして,“9.1 取出し代入”の一般規則を

適用する。 

適合性規則 

1) 機能F121“基本診断管理”なしでは,適合するSQL言語は,<GET DIAGNOSTICS文>を含んでは

ならない。 

2) 機能T511“トランザクション数”なしでは,適合するSQL言語は,TRANSACTIONS̲COMMITTED,

TRANSACTIONS̲ROLLED̲BACK又はTRANSACTION̲ACTIVEを含む<文情報項目名>を含んで

はならない。 

3) 機能F122“拡張診断管理”なしでは,適合するSQL言語は,対応する<文情報項目名>又は<条件情

報項目名>の宣言型とは異なる宣言型をもつ<単純相手指定>を含む<GET DIAGNOSTICS文>を含ん

ではならない。 

4) 機能F123“全診断”なしでは,適合するSQL言語は,<全情報>を含んではならない。 

23.2 診断領域スタックに対する押込み及び取出し 

細分箇条署名 

 “診断領域スタックに対する押込み及び取出し” [一般規則] ( 

パラメタ: “OPERATION”, 

パラメタ: “STACK” 

924 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

機能 

診断領域スタックに対する押込み及び取出し (Pushing and popping the diagnostics area stack) は,診断領

域スタックに関する操作を定義する。 

構文規則 

なし。 

アクセス規則 

なし。 

一般規則 

1) この細分箇条の一般規則の適用では,OPERATIONをOPとし,STACKをDASとする。 

2) 場合: 

a) OPが“PUSH”ならば,次による。 

場合: 

i) 

DAS中の診断領域の個数が,診断領域スタックごとの診断領域の処理系依存の最大数と等しい

ならば,例外条件:診断例外 (diagnostics exception) − スタック中の診断領域の最大数を超え

た (maximum number of stacked diagnostics areas exceeded) が引き起こされる。 

ii) そうでなければ,DASは,押し込まれ,DAS中の2番目の診断領域の内容が,1番目の診断領

域に写される。 

b) OPが“POP”ならば,1番目の診断領域がDASから取り除かれ,DAS中の後続する全ての診断

領域が位置を一つ上に移動され,2番目が1番目に,3番目が2番目にと次々になっていく。 

適合性規則 

なし。 

24 状態コード 

24.1 SQLSTATE 

この細分箇条は,ISO/IEC 9075-4の“20.1 SQLSTATE”によって修正される。 

この細分箇条は,ISO/IEC 9075-9の“26.1 SQLSTATE”によって修正される。 

この細分箇条は,ISO/IEC 9075-10の“15.1 SQLSTATE”によって修正される。 

この細分箇条は,ISO/IEC 9075-13の“15.1 SQLSTATE”によって修正される。 

この細分箇条は,ISO/IEC 9075-14の“23.1 SQLSTATE”によって修正される。 

SQLSTATEパラメタ中に戻される文字列値は,2文字のクラスコード,及びそれに続く3文字のサブク

ラスコードから成り,それぞれは,1オクテットの文字符号化形式をもち,かつ,<数字>及び<単純ラテン

大文字>に制限された,処理系定義の文字集合をもつ。表33“SQLSTATEのクラス及びサブクラスのコー

ド”は,各条件のクラスコード及び各クラスコードに対する一つ又は複数のサブクラスコードを規定する。 

<数字>'0','1','2','3'若しくは'4'のうちの一つ,又は<単純ラテン大文字>'A','B','C','D','E','F','G'若

しくは'H'のうちの一つで始まるクラスコードは,JIS X 3005 (ISO/IEC 9075) 規格群又は他の規格で定義さ

れる条件に対してだけ戻される。そのようなクラスコードの範囲を規格定義クラス (standard-defined class) 

と呼ぶ。そのようなクラスコードの幾つかは,この箇条中の他の箇所で規定するとおり,特定の規格によ

って用いるために予約されている。そのような規格定義クラスに関連付けられるサブクラスコードで,こ

れらの13文字のうちの一つで始まるサブクラスコードも,JIS X 3005 (ISO/IEC 9075) 規格群又は他の規

格で定義される条件に対してだけ戻される。そのようなサブクラスコードの範囲を規格定義サブクラス 

background image

925 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

(standard-defined subclass) と呼ぶ。規格定義クラスに関連付けられるサブクラスコードで,<数字>'5','6',

'7','8'若しくは'9'のうちの一つ,又は<単純ラテン大文字>'I','J','K','L','M','N','O','P','Q','R','S',

'T','U','V','W','X','Y'若しくは'Z'のうちの一つで始まるサブクラスコードは,処理系定義の条件のため

に予約され,処理系定義サブクラス (implementaion-defined subclass) と呼ぶ。 

<数字>'5','6','7','8'若しくは'9'のうちの一つ,又は<単純ラテン大文字>'I','J','K','L','M','N','O',

'P','Q','R','S','T','U','V','W','X','Y'若しくは'Z'のうちの一つで始まるクラスコードは,処理系定義

の例外条件のために予約され,処理系定義クラス (implementaion-defined class) と呼ぶ。そのようなクラス

に関連付けられるサブクラスコードで,サブクラスなし (no subclass) を意味する'000'を除く全てのサブク

ラスコードは,処理系定義の条件のために予約され,処理系定義サブクラス と呼ぶ。処理系定義の終了条

件は,成功終了 (successful completion),警告 (warning) 又はデータなし (no data) のクラスのうちの一つに

処理系定義サブクラスを連結して戻すことによって示さなければならない。 

条件に対してサブクラスコードが規定されないならば,サブクラス'000'又は処理系定義サブクラスのい

ずれかが戻される。 

注記572 この規定の結果として,SQL処理系は,JIS X 3005 (ISO/IEC 9075) 規格群によって要求さ

れないが,例外条件:構文誤り又はアクセス規則違反 (syntax error or access rule violation) 

のための,構文誤りの場合とアクセス規則違反の場合とを区別するサブクラスを提供して

もよい。 

複数の終了条件:警告,又は処理系定義の例外条件を含む複数の例外条件が引き起こされるならば,

“4.30.2 状態パラメタ”中の優先順序規則に従うという条件で,対応するSQLSTATE値のどれがSQLSTATE

状態パラメタ中に戻されるかは,処理系依存とする。SQLSTATE状態パラメタ中に戻される一つに加えて,

任意の個数の適用可能な条件値を診断領域中に戻してもよい。 

処理系定義の条件は,JIS X 3005 (ISO/IEC 9075) 規格群で定義される条件と,全体又は部分が重複して

もよい。しかし,そのような条件が文の実行の結果として発生するならば,対応する処理系定義の

SQLSTATE値は,SQLSTATEパラメタ中に戻してはならないが,診断領域中に戻してもよい。 

“カテゴリ”列は,次の意味をもつ。“S”は,与えられたクラスコードが成功終了に対応し,終了条件

であることを意味する。“W”は,与えられたクラスコードが成功終了に対応するが警告付きであり,終了

条件であることを意味する。“N”は,与えられたクラスコードがデータなしの状態に対応し,終了条件で

あることを意味する。“X”は,与えられたクラスコードが例外条件に対応することを意味する。 

04 09 10 13 14 表33−SQLSTATEのクラス及びサブクラスのコード 

カテゴリ 

条件 

クラス 

部分条件 

サブクラス 

曖昧なカーソル名 

3C 

(サブクラスなし) 

000 

更新可能でない列への代入を試みた 0U 

(サブクラスなし) 

000 

順序付け列への代入を試みた 

0V 

(サブクラスなし) 

000 

基数違反 

21 

(サブクラスなし) 

000 

コネクション例外 

08 

(サブクラスなし) 

000 

コネクションが存在しない 

003 

コネクション失敗 

006 

使用中のコネクション名 

002 

SQLクライアントがSQLコネクションを確

立できない 

001 

background image

926 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

SQLサーバがSQLコネクションの確立を拒

絶した 

004 

トランザクション解決不明 

007 

04 09 10 13 14 表33−SQLSTATEのクラス及びサブクラスのコード(続き) 

カテゴリ 

条件 

クラス 

部分条件 

サブクラス 

カーソル感度例外 

36 

(サブクラスなし) 

000 

要求が失敗した 

002 

要求が拒絶された 

001 

データ例外 

22 

(サブクラスなし) 

000 

配列データ,右切捨て 

02F 

配列要素誤り 

02E 

長さ0のデータ列の置換えを試みた 

01U 

文字がレパートリ中にない 

021 

日時フィールドあふれ 

008 

0による除算 

012 

代入中の誤り 

005 

エスケープ文字衝突 

00B 

標識あふれ 

022 

時間隔フィールドあふれ 

015 

時間隔値範囲外 

00P 

自然対数の引数が正しくない 

01E 

NTILE関数の引数が正しくない 

014 

NTH̲VALUE関数の引数が正しくない 

016 

べき関数の引数が正しくない 

01F 

幅バケット関数の引数が正しくない 

01G 

型変換での文字値が正しくない 

018 

日時形式が正しくない 

007 

エスケープ文字が正しくない 

019 

エスケープオクテットが正しくない 

00D 

エスケープ並びが正しくない 

025 

標識パラメタの値が正しくない 

010 

時間隔形式が正しくない 

006 

パラメタ値が正しくない 

023 

期間値が正しくない 

020 

ウィンドウ関数中の先行又は後続行数・グル
ープ数が正しくない 

013 

正規表現が正しくない 

01B 

標本句中の繰返し引数が正しくない 

02G 

FETCH FIRST句の行数が正しくない 

01W 

結果OFFSET句の行数が正しくない 

01X 

行バージョンが正しくない 

01H 

標本率が正しくない 

02H 

時刻帯時差値が正しくない 

009 

エスケープ文字の用い方が正しくない 

00C 

XQueryオプションフラグが正しくない 

01T 

XQuery正規表現が正しくない 

01S 

XQuery置換文字列が正しくない 

01V 

background image

927 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

最特定型不一致 

00G 

マルチ集合値あふれ 

00Q 

UCS文字列中に非文字 

029 

ナル値で変異当該パラメタを置き換えた 

02D 

表中にナル行は許されない 

01C 

04 09 10 13 14 表33−SQLSTATEのクラス及びサブクラスのコード(続き) 

カテゴリ 

条件 

クラス 

部分条件 

サブクラス 

配列相手にナル値 

00E 

ナル値,標識パラメタなし 

002 

ナル値は認められない 

004 

数値範囲外 

003 

順序数生成子の限界を超えた 

00H 

データ列データ,長さ不一致 

026 

データ列データ,右切捨て 

001 

部分データ列誤り 

011 

TRIM誤り 

027 

C文字列が終了していない 

024 

長さ0の文字列 

00F 

依存している権限記述子がまだ存在
する 

2B 

(サブクラスなし) 

000 

診断例外 

0Z 

(サブクラスなし) 

000 

スタック中の診断領域の最大数を超えた 

001 

動的SQL誤り 

07 

(サブクラスなし) 

000 

カーソル指定が実行できない 

003 

データ型の変換関数違反 

00B 

DATAの相手が正しくない 

00D 

DATETIME̲INTERVAL̲CODEが正しくない 

00F 

記述子数が正しくない 

008 

記述子索引が正しくない 

009 

LEVEL値が正しくない 

00E 

準備された文がカーソル指定ではない 

005 

制限されたデータ型属性違反 

006 

DATAの値が未定義 

00C 

USING句が動的パラメタ指定と一致しない 

001 

USING句が相手指定と一致しない 

002 

動的パラメタに対するUSING句が必要 

004 

結果フィールドに対するUSING句が必要 

007 

外部ルーチン例外 

38 

(サブクラスなし) 

000 

SQLを含むことは許されない 

001 

SQLデータを修正することは許されない 

002 

禁止されているSQL文を試みた 

003 

SQLデータを読むことは許されない 

004 

外部ルーチン呼出し例外 

39 

(サブクラスなし) 

000 

ナル値は許されない 

004 

サポートされていない機能 

0A 

(サブクラスなし) 

000 

複数サーバトランザクション 

001 

整合性制約違反 

23 

(サブクラスなし) 

000 

RESTRICT違反 

001 

background image

928 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

認可指定が正しくない 

28 

(サブクラスなし) 

000 

カタログ名が正しくない 

3D 

(サブクラスなし) 

000 

文字集合名が正しくない 

2C 

(サブクラスなし) 

000 

SQLセション既定文字集合を削除できない 

001 

条件数が正しくない 

35 

(サブクラスなし) 

000 

コネクション名が正しくない 

2E 

(サブクラスなし) 

000 

04 09 10 13 14 表33−SQLSTATEのクラス及びサブクラスのコード(続き) 

カテゴリ 

条件 

クラス 

部分条件 

サブクラス 

カーソル名が正しくない 

34 

(サブクラスなし) 

000 

カーソル状態が正しくない 

24 

(サブクラスなし) 

000 

権限付与者が正しくない 

0L 

(サブクラスなし) 

000 

役割指定が正しくない 

0P 

(サブクラスなし) 

000 

スキーマ名が正しくない 

3F 

(サブクラスなし) 

000 

スキーマ名リストの指定が正しくな
い 

0E 

(サブクラスなし) 

000 

照合順名が正しくない 

2H 

(サブクラスなし) 

000 

SQL記述子名が正しくない 

33 

(サブクラスなし) 

000 

SQL呼出し手続参照が正しくない 

0M 

(サブクラスなし) 

000 

SQL文名が正しくない 

26 

(サブクラスなし) 

000 

SQL文識別子が正しくない 

30 

(サブクラスなし) 

000 

相手の型の指定が正しくない 

0D 

(サブクラスなし) 

000 

トランザクション状態が正しくない 25 

(サブクラスなし) 

000 

SQLトランザクションが動作中 

001 

分岐トランザクションが既に動作中 

002 

保持されたカーソルには同じ隔離性水準が必
要 

008 

分岐トランザクションに対してアクセスモー
ドが適切でない 

003 

分岐トランザクションに対して隔離性水準が
適切でない 

004 

分岐トランザクションに対して動作中のSQL
トランザクションがない 

005 

読込み専用SQLトランザクション 

006 

スキーマ文とデータ文との混在は提供されな
い 

007 

トランザクション終了が正しくない 2D 

(サブクラスなし) 

000 

変換グループ名指定が正しくない 

0S 

(サブクラスなし) 

000 

位置付け子例外 

0F 

(サブクラスなし) 

000 

指定が正しくない 

001 

データなし 

02 

(サブクラスなし) 

000 

これ以上の結果集合は戻されない 

001 

トリガ実行中に禁止されている文が
現れた 

0W 

(サブクラスなし) 

000 

データ変更差分表によって修正される表を修
正 

001 

background image

929 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

遠隔データベースアクセス 

HZ 

(プロトコルの部分条件及びサブクラスコー

ド値の定義については,[ISO9579] の“8.1 

RDA特殊化の条件のための例外コード 

(Exception codes for RDA-specific Conditions)”

中の表12“RDA特殊化の条件のための

SQLSTATEのクラス及びサブクラスの値 

(SQLSTATE class and subclass values for RDA-

specific conditions)”参照) 

background image

930 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

04 09 10 13 14 表33−SQLSTATEのクラス及びサブクラスのコード(続き) 

カテゴリ 

条件 

クラス 

部分条件 

サブクラス 

保存点例外 

3B 

(サブクラスなし) 

000 

指定が正しくない 

001 

多すぎる 

002 

SQLルーチン例外 

2F 

(サブクラスなし) 

000 

関数がRETURN文を実行しなかった 

005 

SQLデータを修正することは許されない 

002 

禁止されているSQL文を試みた 

003 

SQLデータを読むことは許されない 

004 

成功終了 

00 

(サブクラスなし) 

000 

構文誤り又はアクセス規則違反 

42 

(サブクラスなし) 

000 

相手表がカーソル指定と一致しない 0T 

(サブクラスなし) 

000 

トランザクションロールバック 

40 

(サブクラスなし) 

000 

整合性制約違反 

002 

直列化失敗 

001 

文終了不明  

003 

被トリガ動作例外  

004 

被トリガ動作例外  

09 

(サブクラスなし) 

000 

被トリガデータ変更違反  

27 

(サブクラスなし) 

000 

データ変更差分表によって修正される表を修
正 

001 

警告 

01 

(サブクラスなし) 

000 

結果集合が更に戻される 

00D 

配列データ,右切捨て 

02F 

多すぎる結果集合を戻そうと試みた 

00E 

カーソル操作衝突 

001 

情報スキーマに対して既定値が長すぎる 

00B 

切断誤り 

002 

不十分な項目記述子領域 

005 

条件数が正しくない 

012 

集合関数中でナル値がなくなった 

003 

権限が付与されていない 

007 

権限が剝奪されていない 

006 

情報スキーマに対して問合せ式が長すぎる 

00A 

結果集合が戻された 

00C 

情報スキーマに対して探索条件が長すぎる 

009 

情報スキーマに対して文が長すぎる 

00F 

データ列データ,右切捨て 

004 

WITH CHECK OPTION違反 

44 

(サブクラスなし) 

000 

24.2 遠隔データベースアクセスのSQLSTATEクラス 

JIS X 3005 (ISO/IEC 9075) 規格群は,RDA応用文脈 (RDA Application Context) を用いて通信ネットワ

ーク上でSQLクライアントがSQLサーバと交信するときに発生するかもしれない遠隔データベースアク

セス (Remote Database Access) 誤りのためにSQLSTATEクラス 'HZ' を予約する。[ISO9579] は,ISO RDA

規格に適合する処理系中で検出しなければならない多くの例外条件を定義する。 

RDAを用いる処理系が,与えられた例外条件に対して,[ISO9579] で示す条件を報告するならば,その

background image

931 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

処理系は,SQLSTATEクラスコード 'HZ',及び示されたサブクラスコードを用いなければならず,それら

の例外が<GET DIAGNOSTICS文>によって取り出されるとき,CLASS̲ORIGINに値 'ISO 9075' を,

SUBCLASS̲ORIGINに表34“RDAのためのSQLSTATEのクラスコード”で示すとおりの値を設定しなけ

ればならない。 

RDA以外のクライアントサーバ通信を用いる処理系は,[ISO9579] で示す条件に対応する条件を,

SQLSTATEクラスコード 'HZ',及び示された対応するサブクラスコードを用いて報告してもよい。その処

理系は,CLASS̲ORIGINに値 'ISO 9075' を,SUBCLASS̲ORIGINに表34“RDAのためのSQLSTATEの

クラスコード”で示すとおりの値を設定してもよい。他のどの通信誤りも,CLASS̲ORIGINに値 'ISO 9075' 

を,SUBCLASS̲ORIGINに処理系定義の文字列値を設定して,処理系定義の範囲のサブクラスコードで戻

されなければならない。 

遠隔データベースアクセス例外は,['40000',トランザクションロールバック (transaction rollback) など

の,]表33“SQLSTATEのクラス及びサブクラスのコード”で定義したSQL例外条件も結果としてもたら

してもよい。そのような条件が発生するならば,'HZ' クラスのSQLSTATEは,SQLSTATEパラメタ中に戻

してはならないが,診断領域中に戻してもよい。 

表34−RDAのためのSQLSTATEのクラスコード 

SQLSTATEクラス 

SUBCLASS̲ORIGIN 

HZ 

([ISO9579] 参照) 

25 適合性 

25.1 SQL/Foundationに対する適合性の主張 

JIS X 3005-1 [ISO9075-1] の“8 適合性”中の要件に加えて,この規格に対する適合性の主張は,次の主

張でなければならない。 

1) 次のうちの少なくとも一つに対する適合性の主張。 

− 機能B011“埋込みAda” 

− 機能B012“埋込みC” 

− 機能B013“埋込みCOBOL” 

− 機能B014“埋込みFortran” 

− 機能B015“埋込みMUMPS” 

− 機能B016“埋込みPascal” 

− 機能B017“埋込みPL/I” 

− 機能B111“モジュール言語Ada” 

− 機能B112“モジュール言語C” 

− 機能B113“モジュール言語COBOL” 

− 機能B114“モジュール言語Fortran” 

− 機能B115“モジュール言語MUMPS” 

− 機能B116“モジュール言語Pascal” 

− 機能B117“モジュール言語PL/I” 

2) 次のうちの少なくとも一つに対する適合性の主張。 

− 機能B121“ルーチン言語Ada” 

− 機能B122“ルーチン言語C” 

background image

932 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

− 機能B123“ルーチン言語COBOL” 

− 機能B124“ルーチン言語Fortran” 

− 機能B125“ルーチン言語MUMPS” 

− 機能B126“ルーチン言語Pascal” 

− 機能B127“ルーチン言語PL/I” 

− 機能B128“ルーチン言語SQL” 

25.2 SQL/Foundationに対するその他の適合性要件 

この規格中の機能に対する適合性を主張するSQL処理系は,存在するならば,[ISO9075-11] 中の同じ機

能に対する適合性も主張しなければならない。 

機能T061“UCS提供”に対する適合性を主張するSQL処理系は,次のとおりでなければならない。 

− 指定されたある水準でJIS X 0221 [ISO10646] に適合する。 

− 名前付き文字集合UTF8,UTF16及びUTF32の少なくとも一つを提供する。 

− そのような各文字集合に対する既定照合順として,ある水準で [ISO14651] に適合する照合順を

提供する。 

25.3 SQL/Foundationの前提機能の関係 

表35−SQL/Foundationの前提機能の関係 

機能ID 

機能名 

前提機能ID 

前提機能名 

B011 

埋込みAda 

E182 

ホスト言語結合 

B012 

埋込みC 

E182 

ホスト言語結合 

B013 

埋込みCOBOL 

E182 

ホスト言語結合 

B014 

埋込みFortran 

E182 

ホスト言語結合 

B015 

埋込みMUMPS 

E182 

ホスト言語結合 

B016 

埋込みPascal 

E182 

ホスト言語結合 

B017 

埋込みPL/I 

E182 

ホスト言語結合 

B032 

拡張動的SQL 

B031 

基本動的SQL 

B034 

カーソル属性の動的指定 

B031 

基本動的SQL 

B035 

非拡張記述子名 

B031 

基本動的SQL 

B111 

モジュール言語Ada 

E182 

ホスト言語結合 

B112 

モジュール言語C 

E182 

ホスト言語結合 

B113 

モジュール言語COBOL 

E182 

ホスト言語結合 

B114 

モジュール言語Fortran 

E182 

ホスト言語結合 

B115 

モジュール言語MUMPS 

E182 

ホスト言語結合 

B116 

モジュール言語Pascal 

E182 

ホスト言語結合 

B117 

モジュール言語PL/I 

E182 

ホスト言語結合 

B211 

モジュール言語Ada:VARCHAR及び
NUMERIC提供 

B111 

モジュール言語Ada 

B221 

ルーチン言語Ada:VARCHAR及び
NUMERIC提供 

B121 

ルーチン言語Ada 

F053 

OVERLAPS述語 

F052 

時間隔及び日時の算術 

F202 

TRUNCATE TABLE文:識別列再開始選択
肢 

F200 

TRUNCATE TABLE文 

F313 

拡張MERGE文 

F312 

MERGE文 

F314 

DELETE分岐をもつMERGE文 

F312 

MERGE文 

F381 

拡張スキーマ操作 

F491 

制約管理 

background image

933 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表35−SQL/Foundationの前提機能の関係(続き) 

機能ID 

機能名 

前提機能ID 

前提機能名 

F382 

列データ型変更 

F381 

拡張スキーマ操作 

F383 

列NOT NULL句設定 

F381 

拡張スキーマ操作 

F384 

IDENTITY特性句削除 

F381 

拡張スキーマ操作 

F385 

列生成式句削除 

F381 

拡張スキーマ操作 

F386 

識別列生成句設定 

F381 

拡張スキーマ操作 

F386 

識別列生成句設定 

T174 

識別列 

F451 

文字集合定義 

F461 

名前付き文字集合 

F492 

選択可能な表制約強制 

F491 

制約管理 

F521 

表明 

F491 

制約管理 

F693 

SQLセション及びクライアントモジュー
ルの照合順 

F690 

照合順提供 

F711 

ALTER定義域 

F251 

定義域提供 

F721 

遅延可能制約 

F491 

制約管理 

F762 

CURRENT̲CATALOG 

F651 

カタログ名修飾子 

F762 

CURRENT̲CATALOG 

F763 

CURRENT̲SCHEMA 

F801 

完全な集合関数 

F441 

拡張集合関数提供 

F846 

正規表現演算子でのオクテット提供 

T061 

UCS提供 

F851 

副問合せ中の<ORDER BY句> 

F850 

<問合せ式>中の最上位<ORDER BY句> 

F855 

<問合せ式>中の入れ子になった<ORDER 
BY句> 

F850 

<問合せ式>中の最上位<ORDER BY句> 

F856 

<問合せ式>中の入れ子になった<FETCH 
FIRST句> 

F857 

<問合せ式>中の最上位<FETCH FIRST句> 

F858 

副問合せ中の<FETCH FIRST句> 

F857 

<問合せ式>中の最上位<FETCH FIRST句> 

F863 

<問合せ式>中の入れ子になった<結果
OFFSET句> 

F861 

<問合せ式>中の最上位<結果OFFSET句> 

F862 

副問合せ中の<結果OFFSET句> 

F861 

<問合せ式>中の最上位<結果OFFSET句> 

F866 

FETCH FIRST句:PERCENT選択肢 

F857 

<問合せ式>中の最上位<FETCH FIRST句> 

F867 

FETCH FIRST句:WITH TIES選択肢 

F857 

<問合せ式>中の最上位<FETCH FIRST句> 

F867 

FETCH FIRST句:WITH TIES選択肢 

F850 

<問合せ式>中の最上位<ORDER BY句> 

S024 

拡張構造型 

S023 

基本構造型 

S041 

基本参照型 

S051 

型の表作成 

S043 

拡張参照型 

S041 

基本参照型 

S051 

型の表作成 

S023 

基本構造型 

S081 

下位表 

S051 

型の表作成 

S092 

利用者定義型の配列 

S091 

基本配列提供 

S094 

参照型の配列 

S041 

基本参照型 

S094 

参照型の配列 

S091 

基本配列提供 

S095 

問合せによる配列構成子 

S091 

基本配列提供 

S096 

省略可能な配列限界 

S091 

基本配列提供 

S097 

配列要素代入 

S091 

基本配列提供 

S098 

ARRAY̲AGG 

S091 

基本配列提供 

S111 

問合せ式中のONLY 

S051 

型の表作成 

S201 

配列に関するSQL呼出しルーチン 

S091 

基本配列提供 

S202 

マルチ集合に関するSQL呼出しルーチン 

S271 

基本マルチ集合提供 

S231 

構造型位置付け子 

S023 

基本構造型 

S232 

配列位置付け子 

S091 

基本配列提供 

S233 

マルチ集合位置付け子 

S271 

基本マルチ集合提供 

background image

934 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表35−SQL/Foundationの前提機能の関係(続き) 

機能ID 

機能名 

前提機能ID 

前提機能名 

S242 

変換変更文 

S241 

変換関数 

S272 

利用者定義型のマルチ集合 

S271 

基本マルチ集合提供 

S274 

参照型のマルチ集合 

S041 

基本参照型 

S274 

参照型のマルチ集合 

S271 

基本マルチ集合提供 

S275 

高度マルチ集合提供 

S271 

基本マルチ集合提供 

T022 

BINARY及びVARBINARYデータ型の高
度提供 

T021 

BINARY及びVARBINARYデータ型 

T042 

拡張LOBデータ型提供 

T041 

基本LOBデータ型提供 

T043 

乗数T 

T041 

基本LOBデータ型提供 

T044 

乗数P 

T043 

乗数T 

T061 

UCS提供 

F461 

名前付き文字集合 

T061 

UCS提供 

F690 

照合順提供 

T122 

副問合せ中の(RECURSIVEを除く)WITH T121 

問合せ式中の(RECURSIVEを除く)WITH 

T131 

再帰的問合せ 

T121 

問合せ式中の(RECURSIVEを除く)WITH 

T132 

副問合せ中の再帰的問合せ 

T122 

副問合せ中の(RECURSIVEを除く)WITH 

T132 

副問合せ中の再帰的問合せ 

T131 

再帰的問合せ 

T152 

否定付きDISTINCT述語 

T151 

DISTINCT述語 

T173 

表定義中の拡張LIKE句 

T171 

表定義中のLIKE句 

T177 

順序数生成子提供:単純再開始選択肢 

T176 

順序数生成子提供 

T178 

識別列:単純再開始選択肢 

T174 

識別列 

T212 

拡張トリガ能力 

T211 

基本トリガ能力 

T213 

INSTEAD OFトリガ 

T211 

基本トリガ能力 

T272 

拡張保存点管理 

T271 

保存点 

T332 

拡張役割 

T331 

基本役割 

T432 

入れ子及び連結GROUPING SETS 

T431 

拡張グループ化能力 

T433 

複数引数GROUPING関数 

T431 

拡張グループ化能力 

T472 

DESCRIBE CURSOR 

T471 

結果集合戻り値 

T511 

トランザクション数 

F121 

基本診断管理 

T571 

配列戻し外部SQL呼出し関数 

S201 

配列に関するSQL呼出しルーチン 

T572 

マルチ集合戻し外部SQL呼出し関数 

S202 

マルチ集合に関するSQL呼出しルーチン 

T612 

高度OLAP演算 

T611 

基本OLAP演算 

T614 

NTILE関数 

T611 

基本OLAP演算 

T615 

LEAD及びLAG関数 

T611 

基本OLAP演算 

T616 

LEAD及びLAG関数のナルの扱いの選択
肢 

T615 

LEAD及びLAG関数 

T617 

FIRST̲VALUE及びLAST̲VALUE関数 

T611 

基本OLAP演算 

T618 

NTH̲VALUE関数 

T611 

基本OLAP演算 

T619 

入れ子ウィンドウ関数 

T611 

基本OLAP演算 

T620 

WINDOW句:GROUPS選択肢 

T611 

基本OLAP演算 

T652 

SQLルーチン中の動的SQL文 

B031 

基本動的SQL 

T654 

外部ルーチン中の動的SQL文 

B031 

基本動的SQL 

background image

935 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書A 

(参考) 

SQL適合性の要約 

この附属書は,ISO/IEC 9075-3の“附属書A SQL適合性の要約”によって修正される。 

この附属書は,ISO/IEC 9075-4の“附属書A SQL適合性の要約”によって修正される。 

この附属書は,ISO/IEC 9075-9の“附属書A SQL適合性の要約”によって修正される。 

この附属書は,ISO/IEC 9075-10の“附属書A SQL適合性の要約”によって修正される。 

この附属書は,ISO/IEC 9075-11の“附属書A SQL適合性の要約”によって修正される。 

この附属書は,ISO/IEC 9075-13の“附属書A SQL適合性の要約”によって修正される。 

この附属書は,ISO/IEC 9075-14の“附属書A SQL適合性の要約”によって修正される。 

この附属書の内容は,機能ID及び細分箇条で順序付けて,全ての適合性規則を要約する。 

表36“適合性規則の前に適用される構文上の変換”は,適合性規則を適用する前に適用される構文上の

変換を識別する。次の構文規則によって定義される構文上の変換が適合性規則の適用前に適用される。 

表36−適合性規則の前に適用される構文上の変換 

細分箇条及び構文規則 

“6.12 <CASE式>”,構文規則1)c) 

“6.12 <CASE式>”,構文規則2) 

“8.3 <BETWEEN述語>”,全ての構文規則 

“8.4 <IN述語>”,全ての構文規則 

この規格のほとんどの選択機能は,適合性規則によって規定し,この附属書の後方に要約している。表

37“適合性規則以外での機能の定義”は,適合性規則以外の規則で規定するこの規格の機能を列挙してい

る。表37“適合性規則以外での機能の定義”に現れる幾つかの機能には,適合性規則もあることに注意す

る。幾つかの機能の全部又は一部が[ISO9075-11] 中で定義されることにも注意する。 

background image

936 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表37−適合性規則以外での機能の定義 

機能ID 

機能名 

適用可能な規則 

F813 

拡張フラグ付け 

JIS X 3005-1 [ISO9075-1] の“8.5 SQLフラグ機能”,“中
核SQLフラグ付け”を指定する“フラグ付け水準”及び
“カタログ調査”を指定する“検査の範囲”。 

T042 

拡張LOBデータ型提供 

“11.51 <利用者定義型定義>”,一般規則2)c)ii)。 

T061 

UCS提供 

“25.2 SQL/Foundationに対するその他の適合性要件”,第
2段落。 

T101 

拡張ナル可能性決定検出 

“6.35 <ブール値式>”,構文規則4)b)。 
“7.7 <結合表>”,構文規則13)b)。 
“7.12 <問合せ指定>”,構文規則21)b)。 
“7.13 <問合せ式>”,構文規則19)c)。 
“7.13 <問合せ式>”,構文規則21)b)iii)1)。 

T111 

更新可能な結合,和集合及び列 

“7.12 <問合せ指定>”,構文規則29)b)。 
“7.13 <問合せ式>”,構文規則26)d)i)。 
“11.32 <ビュー定義>”,構文規則12)。 

T272 

拡張保存点管理 

“10.4 <ルーチン呼出し>”,一般規則7)b)iv)1)。 
“10.4 <ルーチン呼出し>”,一般規則8)g)ii)7)A)。 

T651 

SQLルーチン中のSQLスキーマ文 

“10.4 <ルーチン呼出し>”,一般規則7)b)v)。 

T652 

SQLルーチン中の動的SQL文 

“10.4 <ルーチン呼出し>”,一般規則7)b)vi)。 

T653 

外部ルーチン中のSQLスキーマ文 

“10.4 <ルーチン呼出し>”,一般規則8)g)ii)8)。 

T654 

外部ルーチン中の動的SQL文 

“10.4 <ルーチン呼出し>”,一般規則8)g)ii)9)。 

この附属書の残りは,この規格全体にわたって細分箇条で規定する適合性規則を機能名及び細分箇条で

整理して要約する。 

1) 機能B011“埋込みAda”に対する規定 

a) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能B011“埋込みAda”なしでは,適合するSQL言語は,<SQL埋込みAdaプログラム>を含

んではならない。 

2) 機能B012“埋込みC”に対する規定 

a) “21.4 <SQL埋込みCプログラム>” 

i) 

機能B012“埋込みC”なしでは,適合するSQL言語は,<SQL埋込みCプログラム>を含んで

はならない。 

3) 機能B013“埋込みCOBOL”に対する規定 

a) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能B013“埋込みCOBOL”なしでは,適合するSQL言語は,<SQL埋込みCOBOLプログラ

ム>を含んではならない。 

4) 機能B014“埋込みFortran”に対する規定 

a) “21.6 <SQL埋込みFortranプログラム>” 

i) 

機能B014“埋込みFortran”なしでは,適合するSQL言語は,<SQL埋込みFortranプログラム

>を含んではならない。 

5) 機能B015“埋込みMUMPS”に対する規定 

a) “21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能B015“埋込みMUMPS”なしでは,適合するSQL言語は,<SQL埋込みMUMPSプログラ

937 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ム>を含んではならない。 

6) 機能B016“埋込みPascal”に対する規定 

a) “21.8 <SQL埋込みPascalプログラム>” 

i) 

機能B016“埋込みPascal”なしでは,適合するSQL言語は,<SQL埋込みPascalプログラム>

を含んではならない。 

7) 機能B017“埋込みPL/I”に対する規定 

a) “21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能B017“埋込みPL/I”なしでは,適合するSQL言語は,<SQL埋込みPL/Iプログラム>を含

んではならない。 

8) 機能B021“直接SQL”に対する規定 

a) “22.1 <直接SQL文>” 

i) 

機能B021“直接SQL”なしでは,適合するSQL言語は,<直接SQL文>を含んではならない。 

9) 機能B031“基本動的SQL”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<SQL文名>を含んではならない。 

ii) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的カーソル名>を含んではな

らない。 

iii) 機能B031“基本動的SQL”なしでは,適合するSQL言語は,<記述子名>を含んではならない。 

b) “6.4 <値指定>及び<相手指定>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的パラメタ指定>を含んでは

ならない。 

c) “20.2 <ALLOCATE DESCRIPTOR文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<ALLOCATE DESCRIPTOR文>

を含んではならない。 

d) “20.3 <DEALLOCATE DESCRIPTOR文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<DEALLOCATE DESCRIPTOR文

>を含んではならない。 

e) “20.4 <GET DESCRIPTOR文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<GET DESCRIPTOR文>を含んで

はならない。 

f) 

“20.5 <SET DESCRIPTOR文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<SET DESCRIPTOR文>を含んで

はならない。 

g) “20.6 <PREPARE文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<PREPARE文>を含んではならな

い。 

h) “20.9 <記述文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<SQL文名>である<記述対象>を

含む<出力DESCRIBE文>を含んではならない。 

i) 

“20.10 <入力USING句>” 

938 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<入力USING句>を含んではなら

ない。 

j) 

“20.11 <出力USING句>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<出力USING句>を含んではなら

ない。 

k) “20.12 <EXECUTE文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<EXECUTE文>を含んではなら

ない。 

l) 

“20.13 <EXECUTE IMMEDIATE文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<EXECUTE IMMEDIATE文>を

含んではならない。 

m) “20.14 <動的カーソル宣言>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的カーソル宣言>を含んでは

ならない。 

n) “20.17 <動的OPEN文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的OPEN文>を含んではなら

ない。 

o) “20.18 <動的FETCH文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的FETCH文>を含んではな

らない。 

p) “20.19 <動的単一行SELECT文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的単一行SELECT文>を含ん

ではならない。 

q) “20.20 <動的CLOSE文>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的CLOSE文>を含んではな

らない。 

r) “20.21 <動的DELETE文:位置付け>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的DELETE文:位置付け>を

含んではならない。 

s) “20.22 <動的UPDATE文:位置付け>” 

i) 

機能B031“基本動的SQL”なしでは,適合するSQL言語は,<動的UPDATE文:位置付け>を

含んではならない。 

10) 機能B032“拡張動的SQL”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<拡張文名>又は<拡張カーソル名

>を含んではならない。 

ii) 機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<定数>又は<非拡張記述子名>で

ない<記述子名>を含んではならない。 

b) “20.2 <ALLOCATE DESCRIPTOR文>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<定数>でない<実現値>を含んで

939 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

はならない。 

c) “20.8 <DEALLOCATE PREPARE文>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<DEALLOCATE PREPARE文>を

含んではならない。 

d) “20.9 <記述文>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<入力DESCRIBE文>を含んでは

ならない。 

e) “20.12 <EXECUTE文>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<結果USING句>を含んではなら

ない。 

f) 

“20.15 <拡張動的カーソル割当て文>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<拡張動的カーソル割当て文>を

含んではならない。 

g) “20.23 <準備可能動的DELETE文:位置付け>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<準備可能動的DELETE文:位

置付け>を含んではならない。 

h) “20.25 <準備可能動的UPDATE文:位置付け>” 

i) 

機能B032“拡張動的SQL”なしでは,適合するSQL言語は,<準備可能動的UPDATE文:位

置付け>を含んではならない。 

11) 機能B033“SQL呼出し関数の型付きでない引数”に対する規定 

a) “10.4 <ルーチン呼出し>” 

i) 

機能B033“SQL呼出し関数の型付きでない引数”なしでは,適合するSQL言語は,<CALL文

>に単純に含まれないで,かつ,<動的パラメタ指定>である<SQL引数>を単純に含む<ルーチン

呼出し>を含んではならない。 

12) 機能B034“カーソル属性の動的指定”に対する規定 

a) “20.6 <PREPARE文>” 

i) 

機能B034“カーソル属性の動的指定”なしでは,適合するSQL言語は,<ATTRIBUTES指定>

を含んではならない。 

13) 機能B035“非拡張記述子名”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能B035“非拡張記述子名”なしでは,適合するSQL言語は,<非拡張記述子名>である<記述

子名>を含んではならない。 

14) 機能B041“埋込みSQL例外宣言の拡張”に対する規定 

a) “21.2 <埋込み例外宣言>” 

i) 

機能B041“埋込みSQL例外宣言の拡張”なしでは,適合するSQL言語は,SQLSTATE又は

CONSTRAINTのいずれかを含む<SQL条件>を含んではならない。 

15) 機能B051“拡張実行権”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B051“拡張実行権”なしでは,適合するSQL言語は,FOR STATIC ONLY又はFOR STATIC 

AND DYNAMICを直に含む<モジュール認可句>を含んではならない。 

940 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) “21.1 <SQL埋込みホストプログラム>” 

i) 

機能B051“拡張実行権”なしでは,適合するSQL言語は,<埋込み認可宣言>を含んではなら

ない。 

16) 機能B111“モジュール言語Ada”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B111“モジュール言語Ada”なしでは,適合するSQL言語は,ADAを含む<LANGUAGE

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

17) 機能B112“モジュール言語C”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B112“モジュール言語C”なしでは,適合するSQL言語は,Cを含む<LANGUAGE句>を

含む<SQLクライアントモジュール定義>を含んではならない。 

18) 機能B113“モジュール言語COBOL”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B113“モジュール言語COBOL”なしでは,適合するSQL言語は,COBOLを含む

<LANGUAGE句>を含む<SQLクライアントモジュール定義>を含んではならない。 

19) 機能B114“モジュール言語Fortran”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B114“モジュール言語Fortran”なしでは,適合するSQL言語は,FORTRANを含む

<LANGUAGE句>を含む<SQLクライアントモジュール定義>を含んではならない。 

20) 機能B115“モジュール言語MUMPS”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B115“モジュール言語MUMPS”なしでは,適合するSQL言語は,Mを含む<LANGUAGE

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

21) 機能B116“モジュール言語Pascal”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B116“モジュール言語Pascal”なしでは,適合するSQL言語は,PASCALを含む<LANGUAGE

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

22) 機能B117“モジュール言語PL/I”に対する規定 

a) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能B117“モジュール言語PL/I”なしでは,適合するSQL言語は,PLIを含む<LANGUAGE

句>を含む<SQLクライアントモジュール定義>を含んではならない。 

23) 機能B121“ルーチン言語Ada”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B121“ルーチン言語Ada”なしでは,適合するSQL言語は,ADAを含む<LANGUAGE句

>を含む<ルーチン特性>を含んではならない。 

24) 機能B122“ルーチン言語C”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B122“ルーチン言語C”なしでは,適合するSQL言語は,Cを含む<LANGUAGE句>を含

む<ルーチン特性>を含んではならない。 

25) 機能B123“ルーチン言語COBOL”に対する規定 

941 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B123“ルーチン言語COBOL”なしでは,適合するSQL言語は,COBOLを含む<LANGUAGE

句>を含む<ルーチン特性>を含んではならない。 

26) 機能B124“ルーチン言語Fortran”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B124“ルーチン言語Fortran”なしでは,適合するSQL言語は,FORTRANを含む

<LANGUAGE句>を含む<ルーチン特性>を含んではならない。 

27) 機能B125“ルーチン言語MUMPS”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B125“ルーチン言語MUMPS”なしでは,適合するSQL言語は,Mを含む<LANGUAGE

句>を含む<ルーチン特性>を含んではならない。 

28) 機能B126“ルーチン言語Pascal”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B126“ルーチン言語Pascal”なしでは,適合するSQL言語は,PASCALを含む<LANGUAGE

句>を含む<ルーチン特性>を含んではならない。 

29) 機能B127“ルーチン言語PL/I”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B127“ルーチン言語PL/I”なしでは,適合するSQL言語は,PLIを含む<LANGUAGE句

>を含む<ルーチン特性>を含んではならない。 

30) 機能B128“ルーチン言語SQL”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B128“ルーチン言語SQL”なしでは,適合するSQL言語は,SQLを含む<LANGUAGE句

>を含む<ルーチン特性>を含んではならない。 

31) 機能B221“ルーチン言語Ada:VARCHAR及びNUMERIC提供”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能B221“ルーチン言語Ada:VARCHAR及びNUMERIC提供”なしでは,<SQL呼出しルー

チン>の<LANGUAGE句>がADAを指定するならば,<パラメタの型>及び<戻りデータ型>は,

CHARACTER VARYING又はNUMERICを指定してはならない。 

b) “13.3 <外部呼出し手続>” 

i) 

機能B221“ルーチン言語Ada:VARCHAR及びNUMERIC提供”なしでは,<外部呼出し手続

>の呼出し元言語がADAならば,<ホストパラメタデータ型>は,CHARACTER VARYING又は

NUMERICであってはならない。 

32) 機能F032“CASCADE削除動作”に対する規定 

a) “11.2 <スキーマ削除文>” 

i) 

機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動

作>を含んではならない。 

b) “11.31 <表削除文>” 

i) 

機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動

作>を含む<表削除文>を含んではならない。 

c) “11.33 <ビュー削除文>” 

942 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動

作>を含む<ビュー削除文>を含んではならない。 

d) “11.59 <データ型削除文>” 

i) 

機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動

作>を含む<データ型削除文>を含んではならない。 

e) “11.62 <ルーチン削除文>” 

i) 

機能F032“CASCADE削除動作”なしでは,適合するSQL言語は,CASCADEを含む<削除動

作>を含む<ルーチン削除文>を含んではならない。 

33) 機能F033“ALTER TABLE文:DROP COLUMN句”に対する規定 

a) “11.23 <列定義削除>” 

i) 

機能F033“ALTER TABLE文:DROP COLUMN句”なしでは,適合するSQL言語は,<列定義

削除>を含んではならない。 

34) 機能F034“拡張REVOKE文”に対する規定 

a) “12.7 <REVOKE文>” 

i) 

機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,CASCADEを含む<削除動作>

を含む<REVOKE文>を含んではならない。 

ii) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,GRANT OPTION FORを含む

<選択肢剝奪範囲>を含んではならない。 

iii) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,<オブジェクト名>中に陽に指

定されるか又は暗に想定されるSQLスキーマの所有者が現行認可識別子ではない<オブジェク

ト名>を含む<権限>を含む<REVOKE文>を含んではならない。 

iv) 機能F034“拡張REVOKE文”なしでは,適合するSQL言語は,次の全ての条件を満たす権限

記述子PDが存在するような<REVOKE文>を含んではならない。 

1) <REVOKE文>に含まれる<権限>に単純に含まれる<オブジェクト名>によって識別されるオ

ブジェクトをPDが識別する。 

2) <REVOKE文>に単純に含まれるいずれかの<権限受領者>によって識別される<権限受領者>

をPDが識別し,その<権限受領者>は,<REVOKE文>に含まれる<権限>に単純に含まれる<

オブジェクト名>中に陽に指定されるか又は暗に想定されるSQLスキーマの所有者を識別し

ない。 

3) <REVOKE文>に含まれる<権限>に単純に含まれる<動作>によって識別される動作をPDが

識別する。 

4) 権限が付与可能であることをPDが示す。 

35) 機能F052“時間隔及び日時の算術”に対する規定 

a) “5.3 <定数>” 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔定数>を含んで

はならない。 

b) “6.1 <データ型>” 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔型>を含んでは

ならない。 

c) “6.28 <数値関数>” 

943 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<EXTRACT式>を含ん

ではならない。 

d) “6.31 <日時値式>” 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<正符号>又は<負符号>

を直に含む<日時値式>を含んではならない。 

e) “6.33 <時間隔値式>” 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔値式>を含んで

はならない。 

f) 

“6.34 <時間隔値関数>” 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔値関数>を含ん

ではならない。 

g) “10.1 <時間隔修飾子>” 

i) 

機能F052“時間隔及び日時の算術”なしでは,適合するSQL言語は,<時間隔修飾子>を含ん

ではならない。 

36) 機能F053“OVERLAPS述語”に対する規定 

a) “8.14 <OVERLAPS述語>” 

i) 

機能F053“OVERLAPS述語”なしでは,適合するSQL言語は,<OVERLAPS述語>を含んでは

ならない。 

37) 機能F054“DATE型優先順序リスト中のTIMESTAMP”に対する規定 

a) “9.7型優先順序リスト決定” 

i) 

機能F054“DATE型優先順序リスト中のTIMESTAMP”なしでは,DATEの型優先順序リスト

は,次のリストとする。 

DATE 

38) 機能F111“SERIALIZABLE以外の隔離性水準”に対する規定 

a) “17.3 <トランザクション特性>” 

i) 

機能F111“SERIALIZABLE以外の隔離性水準”なしでは,適合するSQL言語は,SERIALIZABLE

以外の<隔離性水準>を含む<隔離性水準指定>を含んではならない。 

39) 機能F121“基本診断管理”に対する規定 

a) “17.3 <トランザクション特性>” 

i) 

機能F121“基本診断管理”なしでは,適合するSQL言語は,<診断領域サイズ>を含んではな

らない。 

b) “23.1 <GET DIAGNOSTICS文>” 

i) 

機能F121“基本診断管理”なしでは,適合するSQL言語は,<GET DIAGNOSTICS文>を含ん

ではならない。 

40) 機能F122“拡張診断管理”に対する規定 

a) “23.1 <GET DIAGNOSTICS文>” 

i) 

機能F122“拡張診断管理”なしでは,適合するSQL言語は,対応する<文情報項目名>又は<条

件情報項目名>の宣言型とは異なる宣言型をもつ<単純相手指定>を含む<GET DIAGNOSTICS

文>を含んではならない。 

41) 機能F123“全診断”に対する規定 

944 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) “23.1 <GET DIAGNOSTICS文>” 

i) 

機能F123“全診断”なしでは,適合するSQL言語は,<全情報>を含んではならない。 

42) 機能F171“利用者ごとの複数スキーマ”に対する規定 

a) “11.1 <スキーマ定義>” 

i) 

機能F171“利用者ごとの複数スキーマ”なしでは,適合するSQL言語は,<スキーマ名>を含

む<スキーマ名句>を含んではならない。 

43) 機能F191“参照削除動作”に対する規定 

a) “11.8 <参照制約定義>” 

i) 

機能F191“参照削除動作”なしでは,適合するSQL言語は,<削除規則>を含んではならない。 

44) 機能F200“TRUNCATE TABLE文”に対する規定 

a) “14.10 < TRUNCATE TABLE文>” 

i) 

機能F200“TRUNCATE TABLE文”なしでは,適合するSQL言語は,<TRUNCATE TABLE文

>を含んではならない。 

45) 機能F202“TRUNCATE TABLE文:識別列再開始選択肢”に対する規定 

a) “14.10 < TRUNCATE TABLE文>” 

i) 

機能F202“TRUNCATE TABLE文:識別列再開始選択肢”なしでは,適合するSQL言語は,<

識別列再開始選択肢>を含んではならない。 

46) 機能F222“INSERT文:DEFAULT VALUES句”に対する規定 

a) “14.11 <INSERT文>” 

i) 

機能F222“INSERT文:DEFAULT VALUES句”なしでは,適合するSQL言語は,<既定値発>

を含んではならない。 

47) 機能F251“定義域提供”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F251“定義域提供”なしでは,適合するSQL言語は,<定義域名>を含んではならない。 

b) “6.4 <値指定>及び<相手指定>” 

i) 

機能F251“定義域提供”なしでは,適合するSQL言語は,VALUEを含む<一般値指定>を含ん

ではならない。 

c) “11.34 <定義域定義>” 

i) 

機能F251“定義域提供”なしでは,適合するSQL言語は,<定義域定義>を含んではならない。 

d) “11.40 <定義域削除文>” 

i) 

機能F251“定義域提供”なしでは,適合するSQL言語は,<定義域削除文>を含んではならな

い。 

48) 機能F262“拡張CASE式”に対する規定 

a) “6.12 <CASE式>” 

i) 

機能F262“拡張CASE式”なしでは,適合するSQL言語中で,<単純CASE>に直に含まれる

<CASEオペランド>は,単一の<共通値式>又は<ブール述語オペランド>である<行値構成子述

語オペランド>の<行値述語オペランド>でなければならない。 

ii) 機能F262“拡張CASE式”なしでは,適合するSQL言語中で,<単純WHEN句>に含まれる

<WHENオペランド>は,単一の<共通値式>又は<ブール述語オペランド>である<行値構成子述

語オペランド>の<行値述語オペランド>でなければならない。 

945 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

49) 機能F263“単純CASE式中のコンマで区切られた述語”に対する規定 

a) “6.12 <CASE式>” 

i) 

機能F263“単純CASE式中のコンマで区切られた述語”なしでは,適合するSQL言語中で,<

単純WHEN句>に含まれる<WHENオペランドリスト>は,ただ一つの<WHENオペランド>を

単純に含まなければならない。 

50) 機能F271“複合文字定数”に対する規定 

a) “5.3 <定数>” 

i) 

機能F271“複合文字定数”なしでは,適合するSQL言語中で,<文字列定数>は,<文字表現>

のただ一つの繰返しを含まなければならない(すなわち,それは,“<引用符> [ <文字表現>... ] 

<引用符>”のただ一つの並びを含まなければならない。)。 

51) 機能F281“LIKE強化”に対する規定 

a) “8.5 <LIKE述語>” 

i) 

機能F281“LIKE強化”なしでは,適合するSQL言語は,<文字LIKE述語>に直に含まれる<

行値述語オペランド>に単純に含まれる,列参照でない<共通値式>を含んではならない。 

ii) 機能F281“LIKE強化”なしでは,適合するSQL言語は,<値指定>でない<文字パターン>を含

んではならない。 

iii) 機能F281“LIKE強化”なしでは,適合するSQL言語は,<値指定>でない<エスケープ文字>を

含んではならない。 

52) 機能F291“UNIQUE述語”に対する規定 

a) “8.11 <UNIQUE述語>” 

i) 

機能F291“UNIQUE述語”なしでは,適合するSQL言語は,<UNIQUE述語>を含んではなら

ない。 

注記573 “9.12 グループ化操作”の適合性規則も適用される。 

53) 機能F301“問合せ式中のCORRESPONDING”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F301“問合せ式中のCORRESPONDING”なしでは,適合するSQL言語は,

CORRESPONDINGを含む<問合せ式>を含んではならない。 

54) 機能F302“INTERSECT表演算子”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F302“INTERSECT表演算子”なしでは,適合するSQL言語は,INTERSECTを含む<問合

せ項>を含んではならない。 

55) 機能F304“EXCEPT ALL表演算子”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F304“EXCEPT ALL表演算子”なしでは,適合するSQL言語は,EXCEPT ALLを含む<問

合せ式>を含んではならない。 

注記574 DISTINCT,INTERSECT又はEXCEPTが指定されるならば,“9.12 グループ化操作”

の適合性規則を適用する。 

56) 機能F312“MERGE文”に対する規定 

a) “14.12 <MERGE文>” 

i) 

機能F312“MERGE文”なしでは,適合するSQL言語は,<MERGE文>を含んではならない。 

946 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

57) 機能F313“拡張MERGE文”に対する規定 

a) “14.12 <MERGE文>” 

i) 

機能F313“拡張MERGE文”なしでは,適合するSQL言語中で,<MERGE文>は,<併合WHEN 

MATCHED句>及び<併合WHEN NOT MATCHED句>のそれぞれを2回以上含んではならない。 

ii) 機能F313“拡張MERGE文”なしでは,適合するSQL言語中で,<併合WHEN MATCHED句

>又は<併合WHEN NOT MATCHED句>は,<探索条件>を直に含んではならない。 

58) 機能F314“DELETE分岐をもつMERGE文”に対する規定 

a) “14.12 <MERGE文>” 

i) 

機能F314“DELETE分岐をもつMERGE文”なしでは,適合するSQL言語中で,<併合WHEN 

MATCHED句>は,<併合削除指定>を直に含んではならない。 

59) 機能F321“利用者認可”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能F321“利用者認可”なしでは,適合するSQL言語は,CURRENT̲USER,SYSTEM̲USER

又はSESSION̲USERを含む<一般値指定>を含んではならない。 

注記575 CURRENT̲USERとUSERとは,意味的に同じであるが,機能F321“利用者認可”

なしでは,CURRENT̲USERは,USERとして指定しなければならない。 

b) “11.5 <DEFAULT句>” 

i) 

機能F321“利用者認可”なしでは,適合するSQL言語は,CURRENT̲USER,SESSION̲USER

又はSYSTEM̲USERを含む<既定値選択肢>を含んではならない。 

注記576 CURRENT̲USERとUSERとは,意味的に同じだが,機能F321“利用者認可”なし

では,CURRENT̲USERは,USERとして指定しなければならない。 

c) “19.2 <セション利用者識別子設定文>” 

i) 

機能F321“利用者認可”なしでは,適合するSQL言語は,<セション利用者識別子設定文>を

含んではならない。 

60) 機能F361“サブプログラム提供”に対する規定 

a) “21.1 <SQL埋込みホストプログラム>” 

i) 

機能F361“サブプログラム提供”なしでは,適合するSQL言語は,同じ変数名を指定する二つ

の<ホスト変数定義>を含んではならない。 

61) 機能F381“拡張スキーマ操作”に対する規定 

a) “11.2 <スキーマ削除文>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<スキーマ削除文>を含んで

はならない。 

b) “11.12 <列定義変更>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列定義変更>を含んではな

らない。 

c) “11.13 <列DEFAULT句設定>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列DEFAULT句設定>を含

んではならない。 

d) “11.14 <列DEFAULT句削除>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列DEFAULT句削除>を含

947 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

んではならない。 

e) “11.17 <列SCOPE句追加>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列SCOPE句追加>を含んで

はならない。 

f) 

“11.18 <列SCOPE句削除>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<列SCOPE句削除>を含んで

はならない。 

g) “11.24 <表制約定義追加>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<表制約定義追加>を含んで

はならない。 

h) “11.26 <表制約定義削除>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<表制約定義削除>を含んで

はならない。 

i) 

“11.61 <ルーチン変更文>” 

i) 

機能F381“拡張スキーマ操作”なしでは,適合するSQL言語は,<ルーチン変更文>を含んで

はならない。 

62) 機能F382“列データ型変更”に対する規定 

a) “11.19 <列データ型句変更>” 

i) 

機能F382“列データ型変更”なしでは,適合するSQL言語は,<列データ型句変更>を含んで

はならない。 

63) 機能F383“列NOT NULL句設定”に対する規定 

a) “11.15 <列NOT NULL句設定>” 

i) 

機能F383“列NOT NULL句設定”なしでは,適合するSQL言語は,<列NOT NULL句設定>

を含んではならない。 

b) “11.16 <列NOT NULL句削除>” 

i) 

機能F383“列NOT NULL句設定”なしでは,適合するSQL言語は,<列NOT NULL句削除>

を含んではならない。 

64) 機能F384“IDENTITY特性句削除”に対する規定 

a) “11.21 <IDENTITY特性句削除>” 

i) 

機能F384“IDENTITY特性句削除”なしでは,適合するSQL言語は,<IDENTITY特性句削除

>を含んではならない。 

65) 機能F385“列生成式句削除”に対する規定 

a) “11.22 <列生成式句削除>” 

i) 

機能F385“列生成式句削除”なしでは,適合するSQL言語は,<列生成式句削除>を含んでは

ならない。 

66) 機能F386“識別列生成句設定”に対する規定 

a) “11.20 <識別列指定変更>” 

i) 

機能F386“識別列生成句設定”なしでは,適合するSQL言語は,<識別列生成句設定>を含ん

ではならない。 

67) 機能F391“長い識別子”に対する規定 

948 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) “5.2 <トークン>及び<分離符号>” 

i) 

機能F391“長い識別子”なしでは,<通常識別子>中で,<識別子部分>の個数は,18未満でな

ければならない。 

ii) 機能F391“長い識別子”なしでは,<区切り識別子>の<区切り識別子本体>は,18個を超える<

区切り識別子部分>を含んではならない。 

注記577 規格に適合するSQL処理系によって提供される全ての文字集合が,この細分箇条の

構文規則で識別される<識別子開始>及び<識別子部分>に関連する全ての文字を必

ずしも含むわけではない。この細分箇条の構文規則で識別されるどの文字も,SQL

クライアントモジュールに対して用いるか又はSQLデータ中で用いる文字集合に

その文字が属していない限り,<識別子開始>又は<識別子部分>中で提供することを,

規格に適合するどのSQL処理系にも要求してはならない。 

68) 機能F392 “識別子中のUnicodeエスケープ”に対する規定 

a) “5.2 <トークン>及び<分離符号>” 

i) 

機能F392 “識別子中のUnicodeエスケープ”なしでは,適合するSQL言語は,<Unicode区切

り識別子>を含んではならない。 

69) 機能F393“定数中のUnicodeエスケープ”に対する規定 

a) “5.3 <定数>” 

i) 

機能F393“定数中のUnicodeエスケープ”なしでは,適合するSQL言語は,<Unicode文字列

定数>を含んではならない。 

70) 機能F394“選択可能な正規形式指定”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能F394“選択可能な正規形式指定”なしでは,適合するSQL言語は,<正規形式>を含んで

はならない。 

b) “8.12 <NORMALIZED述語>” 

i) 

機能F394“選択可能な正規形式指定”なしでは,適合するSQL言語は,<正規形式>を含んで

はならない。 

71) 機能F401“拡張結合表”に対する規定 

a) “7.7 <結合表>” 

i) 

機能F401“拡張結合表”なしでは,適合するSQL言語は,<交差結合>を含んではならない。 

ii) 機能F401“拡張結合表”なしでは,適合するSQL言語は,<自然結合>を含んではならない。 

iii) 機能F401“拡張結合表”なしでは,適合するSQL言語は,FULLを含んではならない。 

72) 機能F402“LOB,配列及びマルチ集合に対する名前付き列結合”に対する規定 

a) “7.7 <結合表>” 

i) 

機能F402“LOB,配列及びマルチ集合に対する名前付き列結合”なしでは,<自然結合>又は<

名前付き列結合>中でCが対応する結合列で,かつ,Cの宣言型がLOB順序付け,配列順序付

け又はマルチ集合順序付けならば,適合するSQL言語は,その<自然結合>又は<名前付き列結

合>のいずれかを単純に含む<結合表>を含んではならない。 

注記578 Cが対応する結合列ならば,“9.11 等値性演算”の適合性規則も適用する。 

73) 機能F403“分割結合表”に対する規定 

a) “7.7 <結合表>” 

949 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F403“分割結合表”なしでは,適合するSQL言語は,<分割結合表>を含んではならない。 

74) 機能F411“時刻帯指定”に対する規定 

a) “5.3 <定数>” 

i) 

機能F411“時刻帯指定”なしでは,適合するSQL言語は,<時刻帯時間隔>を含んではならな

い。 

b) “6.1 <データ型>” 

i) 

機能F411“時刻帯指定”なしでは,適合するSQL言語は,<WITH又はWITHOUT TIME ZONE>

を含んではならない。 

c) “6.28 <数値関数>” 

i) 

機能F411“時刻帯指定”なしでは,適合するSQL言語は,<時刻帯フィールド>を指定する

<EXTRACT式>を含んではならない。 

d) “6.31 <日時値式>” 

i) 

機能F411“時刻帯指定”なしでは,適合するSQL言語は,<時刻帯>を含んではならない。 

e) “6.32 <日時値関数>” 

i) 

機能F411“時刻帯指定”なしでは,適合するSQL言語は,<CURRENT̲TIME値関数>を含んで

はならない。 

ii) 機能F411“時刻帯指定”なしでは,適合するSQL言語は,<CURRENT̲TIMESTAMP値関数>

を含んではならない。 

f) 

“19.4 <地方時刻帯設定文>” 

i) 

機能F411“時刻帯指定”なしでは,適合するSQL言語は,<地方時刻帯設定文>を含んではな

らない。 

75) 機能F421“各国文字”に対する規定 

a) “5.3 <定数>” 

i) 

機能F421“各国文字”なしでは,適合するSQL言語は,<各国文字列定数>を含んではならな

い。 

b) “6.1 <データ型>” 

i) 

機能F421“各国文字”なしでは,適合するSQL言語は,<各国文字列型>を含んではならない。 

c) “6.13 <CAST指定>” 

i) 

機能F421“各国文字”なしでは,適合するSQL言語は,宣言型がNATIONAL CHARACTER,

NATIONAL CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTである

<CASTオペランド>を含んではならない。 

d) “6.28 <数値関数>” 

i) 

機能F421“各国文字”なしでは,適合するSQL言語は,NATIONAL CHARACTER,NATIONAL 

CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTの宣言型をもつ<デー

タ列値式>を単純に含む<LENGTH式>を含んではならない。 

e) “6.29 <データ列値式>” 

i) 

機能F421“各国文字”なしでは,適合するSQL言語は,NATIONAL CHARACTER,NATIONAL 

CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTの宣言型をもつ<文字

値式>を含んではならない。 

f) 

“6.30 <データ列値関数>” 

950 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F421“各国文字”なしでは,適合するSQL言語は,NATIONAL CHARACTER,NATIONAL 

CHARACTER VARYING又はNATIONAL CHARACTER LARGE OBJECTの宣言型をもつ<文字

値関数>を含んではならない。 

g) “8.5 <LIKE述語>” 

i) 

機能F421“各国文字”及び機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語

中で,<LIKE述語>に単純に含まれる<文字値式>は,宣言型がNATIONAL CHARACTER LARGE 

OBJECTであってはならない。 

ii) 機能F421“各国文字”なしでは,適合するSQL言語中で,<LIKE述語>に単純に含まれる<文

字値式>は,宣言型がNATIONAL CHARACTER又はNATIONAL CHARACTER VARYINGであ

ってはならない。 

76) 機能F431“読込み専用スクロール可能カーソル”に対する規定 

a) “14.2 <カーソル特性>” 

i) 

機能F431“読込み専用スクロール可能カーソル”なしでは,適合するSQL言語は,<カーソル

スクロール可能性>を含んではならない。 

b) “14.5 <FETCH文>” 

i) 

機能F431“読込み専用スクロール可能カーソル”なしでは,適合するSQL言語中で,<FETCH

文>は,<取出し方向>を含んではならない。 

77) 機能F441“拡張集合関数提供”に対する規定 

a) “7.8 <WHERE句>” 

i) 

機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<WHERE句>に直接含まれる

<値式>で,<集合関数指定>を一般に含む<導出列>を参照する<列参照>を含む<値式>を含んで

はならない。 

b) “10.9 <集約関数>” 

i) 

機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,COUNTを直に含む<計算操

作>を含み,かつ,DISTINCTを直に含む<集合限定子>を含まない<一般集合関数>を含んではな

らない。 

ii) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,DISTINCTを直に含む<集合

限定子>を含まないで,かつ,Tの列を参照しない列参照を含む<値式>を含む<一般集合関数>

を含んではならない。 

iii) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,Tの列を参照する列参照を含

む<従属変数式>も<独立変数式>も含まない<2項集合関数>を含んではならない。 

iv) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<一般集合関数>に単純に含

まれ,かつ,外への参照である列参照を含む<値式>で,列参照ではない<値式>を含んではなら

ない。 

v) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<従属変数式>又は<独立変数

式>に単純に含まれ,かつ,外への参照である列参照を含む<数値式>で,列参照ではない<数値

式>を含んではならない。 

iv) 機能F441“拡張集合関数提供”なしでは,適合するSQL言語は,<集約関数> SFS2を一般に含

む<値式>から導出される列への参照を含み,かつ,<集約関数> SFS1に含まれる列参照を含ん

ではならない。 

951 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

78) 機能F442“集合関数中の列参照の混在”に対する規定 

a) “10.9 <集約関数>” 

i) 

機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を

含み,そのうちの一つが外への参照である<値式>を単純に含む<仮説集合関数値式リスト>を含

んではならない。 

ii) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を

含み,そのうちの一つが外への参照である<値式>を単純に含む<逆分布関数引数>を含む<逆分

布関数>を含んではならない。 

iii) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を

含み,そのうちの一つが外への参照である<値式>を単純に含む<一般集合関数>を含む<集約関

数>を含んではならない。 

iv) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を

含み,そのうちの一つが外への参照である<従属変数式>又は<独立変数式>を単純に含む<2項

集合関数>を含む<集約関数>を含んではならない。 

v) 機能F442“集合関数中の列参照の混在”なしでは,適合するSQL言語は,二つ以上の列参照を

含み,そのうちの一つが外への参照である<値式>を単純に含む<WITHIN GROUP指定>を含ん

ではならない。 

79) 機能F451“文字集合定義”に対する規定 

a) “11.41 <文字集合定義>” 

i) 

機能F451“文字集合定義”なしでは,適合するSQL言語は,<文字集合定義>を含んではなら

ない。 

b) “11.42 <文字集合削除文>” 

i) 

機能F451“文字集合定義”なしでは,適合するSQL言語は,<文字集合削除文>を含んではな

らない。 

80) 機能F461“名前付き文字集合”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<文字集合名>を含んではな

らない。 

b) “10.5 <文字集合指定>” 

i) 

機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<文字集合指定>を含んでは

ならない。 

c) “11.1 <スキーマ定義>” 

i) 

機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<スキーマ文字集合指定>を

含んではならない。 

d) “13.2 <モジュール名句>” 

i) 

機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<モジュール文字集合指定>

を含んではならない。 

e) “19.7 <SET NAMES文>” 

i) 

機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<SET NAMES文>を含んでは

ならない。 

952 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

f) 

“21.1 <SQL埋込みホストプログラム>” 

i) 

機能F461“名前付き文字集合”なしでは,適合するSQL言語は,<埋込み文字集合宣言>を含

んではならない。 

81) 機能F491“制約管理”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F491“制約管理”なしでは,適合するSQL言語は,<制約名>を含んではならない。 

b) “10.8 <制約名定義>及び<制約特性>” 

i) 

機能F491“制約管理”なしでは,適合するSQL言語は,<制約名定義>を含んではならない。 

c) “11.39 <定義域制約定義削除>” 

i) 

機能F491“制約管理”なしでは,適合するSQL言語は,<定義域制約定義削除>を含んではな

らない。 

d) “21.2 <埋込み例外宣言>” 

i) 

機能F491“制約管理”なしでは,適合するSQL言語は,<制約名>を含む<SQL条件>を含んで

はならない。 

82) 機能F492“選択可能な表制約強制”に対する規定 

a) “10.8 <制約名定義>及び<制約特性>” 

i) 

機能F492“選択可能な表制約強制”なしでは,適合するSQL言語は,<制約強制>を指定する<

制約特性>を含んではならない。 

b) “11.25 <表制約定義変更>” 

i) 

機能F492“選択可能な表制約強制”なしでは,適合するSQL言語は,<制約強制>を含む<表制

約定義変更>を含んではならない。 

83) 機能F521“表明”に対する規定 

a) “11.47 <表明定義>” 

i) 

機能F521“表明”なしでは,適合するSQL言語は,<表明定義>を含んではならない。 

b) “11.48 <表明削除文>” 

i) 

機能F521“表明”なしでは,適合するSQL言語は,<表明削除文>を含んではならない。 

84) 機能F531“一時表”に対する規定 

a) “11.3 <表定義>” 

i) 

機能F531“一時表”なしでは,適合するSQL言語は,<表有効範囲>を含んではならないし,

大局一時表又は局所一時表を参照してはならない。 

b) “14.16 <一時表宣言>” 

i) 

機能F531“一時表”なしでは,適合するSQL言語は,<一時表宣言>を含んではならない。 

85) 機能F555“拡張秒精度”に対する規定 

a) “5.3 <定数>” 

i) 

機能F555“拡張秒精度”なしでは,適合するSQL言語中で,<時刻印定数>に含まれる<小数秒

>である<符号なし整数>は,6個を超える<数字>を含んではならない。 

ii) 機能F555“拡張秒精度”なしでは,適合するSQL言語中で,<時刻定数>は,<小数秒>を含ん

ではならない。 

b) “6.1 <データ型>” 

i) 

機能F555“拡張秒精度”なしでは,適合するSQL言語は,0を指定しない<時刻精度>を含んで

953 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

はならない。 

ii) 機能F555“拡張秒精度”なしでは,適合するSQL言語は,0又は6のいずれかを指定しない<

時刻印精度>を含んではならない。 

c) “6.32 <日時値関数>” 

i) 

機能F555“拡張秒精度”なしでは,適合するSQL言語は,0でない<時刻精度>を含む<現在地

方時刻値関数>を含んではならず,0でない<時刻精度>を含む<CURRENT̲TIME値関数>を含ん

ではならない。 

ii) 機能F555“拡張秒精度”なしでは,適合するSQL言語は,0でも6でもない<時刻印精度>を含

む<現在地方時刻印値関数>を含んではならず,0でも6でもない<時刻印精度>を含む

<CURRENT̲TIMESTAMP値関数>を含んではならない。 

86) 機能F561“完全な値式”に対する規定 

a) “8.4 <IN述語>” 

i) 

機能F561“完全な値式”なしでは,適合するSQL言語は,<IN値リスト>に直に含まれる,<値

指定>ではない<行値式>を含んではならない。 

注記579 <IN述語>は,等値性演算なので,“9.11 等値性演算”の適合性規則も適用する。 

b) “10.9 <集約関数>” 

i) 

機能F561“完全な値式”又は機能F801“完全な集合関数”なしでは,適合するSQL言語は,

DISTINCTを直に含み,かつ,列参照ではない<値式>を含む<一般集合関数>を含んではならな

い。 

87) 機能F571“真理値テスト”に対する規定 

a) “6.35 <ブール値式>” 

i) 

機能F571“真理値テスト”なしでは,適合するSQL言語は,<真理値>を単純に含む<ブールテ

スト>を含んではならない。 

88) 機能F591“導出表”に対する規定 

a) “7.6 <表参照>” 

i) 

機能F591“導出表”なしでは,適合するSQL言語は,<導出表>を含んではならない。 

89) 機能F611“標識データ型”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能F611“標識データ型”なしでは,適合するSQL言語中で,<標識パラメタ>及び<標識変数

>の宣言型は, 処理系定義の同じデータ型でなければならない。 

90) 機能F641“行構成子及び表構成子”に対する規定 

a) “7.1 <行値構成子>” 

i) 

機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,二つ以上の<行値構成子

要素>を含み,かつ,<表値構成子>に単純に含まれない<明示行値構成子>を含んではならない。 

ii) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,<行副問合せ>である<明

示行値構成子>を含んではならない。 

iii) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,二つ以上の<行値構成子

要素>を含み,かつ,<文脈型付き表値構成子>に単純に含まれない<文脈型付き行値構成子>を

含んではならない。 

b) “7.3 <表値構成子>” 

954 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F641“行構成子及び表構成子”なしでは,適合するSQL言語中で,<文脈型付き表値構成

子>の<文脈型付き行値式リスト>は,ただ一つの<文脈型付き行値構成子> RVEを含まなければ

ならない。RVEは,“(<文脈型付き行値構成子要素リスト>)”という形式から成らなければなら

ない。 

ii) 機能F641“行構成子及び表構成子”なしでは,適合するSQL言語は,<表値構成子>を含んで

はならない。 

91) 機能F651“カタログ名修飾子”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F651“カタログ名修飾子”なしでは,適合するSQL言語は,<カタログ名>を含んではな

らない。 

b) “19.5 <SET CATALOG文>” 

i) 

機能F651“カタログ名修飾子”なしでは,適合するSQL言語は,<SET CATALOG文>を含んで

はならない。 

92) 機能F661“単純表”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F661“単純表”なしでは,適合するSQL言語は,<表値構成子>を直に含む<単純表>を含

んではならない。 

ii) 機能F661“単純表”なしでは,適合するSQL言語は,<明示表>を含んではならない。 

93) 機能F671“CHECK制約中の副問合せ”に対する規定 

a) “11.9 <検査制約定義>” 

i) 

機能F671“CHECK制約中の副問合せ”なしでは,適合するSQL言語は,<問合せ式>を含む<

検査制約定義>に含まれる<探索条件>を含んではならない。 

94) 機能F672“回顧検査制約”に対する規定 

a) “11.9 <検査制約定義>” 

i) 

機能F672“回顧検査制約”なしでは,適合するSQL言語は,CURRENT̲DATE,

CURRENT̲TIMESTAMP又はLOCALTIMESTAMPを一般に含む<検査制約定義>を含んではな

らない。 

b) “11.47 <表明定義>” 

i) 

機能F672“回顧検査制約”なしでは,適合するSQL言語は,CURRENT̲DATE,

CURRENT̲TIMESTAMP又はLOCALTIMESTAMPを一般に含む<表明定義>を含んではならな

い。 

95) 機能F673“CHECK制約中のSQLデータを読むルーチン呼出し”に対する規定 

a) “11.9 <検査制約定義>” 

i) 

機能F673“CHECK制約中のSQLデータを読むルーチン呼出し”なしでは,適合するSQL言

語は,SQLデータを潜在的に読むSQLルーチンである当該ルーチンをもつ<ルーチン呼出し>

を一般に含む<探索条件>を含む<検査制約定義>を含んではならない。 

96) 機能F690“照合順提供”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F690“照合順提供”なしでは,適合するSQL言語は,<照合順名>を含んではならない。 

b) “10.7 <COLLATE句>” 

955 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F690“照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を含んではならな

い。 

c) “11.43 <照合順定義>” 

i) 

機能F690“照合順提供”なしでは,適合するSQL言語は,<照合順定義>を含んではならない。 

d) “11.44 <照合順削除文>” 

i) 

機能F690“照合順提供”なしでは,適合するSQL言語は,<照合順削除文>を含んではならな

い。 

97) 機能F692“拡張照合順提供”に対する規定 

a) “11.4 <列定義>” 

i) 

機能F692“拡張照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を直に含む<列

定義>を含んではならない。 

b) “11.34 <定義域定義>” 

i) 

機能F692“拡張照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を直に含む<定

義域定義>を含んではならない。 

c) “11.52 <属性定義>” 

i) 

機能F692“拡張照合順提供”なしでは,適合するSQL言語は,<COLLATE句>を直に含む<属

性定義>を含んではならない。 

98) 機能F693“SQLセション及びクライアントモジュールの照合順”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能F693“SQLセション及びクライアントモジュールの照合順”なしでは,適合するSQL言

語は,<現行照合順指定>を含んではならない。 

b) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能F693“SQLセション及びクライアントモジュールの照合順”なしでは,適合するSQL言

語は,<モジュール照合順指定>を含んではならない。 

c) “19.10 <セション照合順設定文>” 

i) 

機能F693“SQLセション及びクライアントモジュールの照合順”なしでは,適合するSQL言

語は,<セション照合順設定文>を含んではならない。 

99) 機能F695“文字変換提供”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字変換名>を含んではならな

い。 

ii) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<符号変換名>を含んではならな

い。 

b) “6.30 <データ列値関数>” 

i) 

機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字文字変換>を含んではなら

ない。 

ii) 機能F695“文字変換提供”なしでは,適合するSQL言語は,<符号変換>を含んではならない。 

c) “11.45 <文字変換定義>” 

i) 

機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字変換定義>を含んではなら

ない。 

956 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) “11.46 <文字変換削除文>” 

i) 

機能F695“文字変換提供”なしでは,適合するSQL言語は,<文字変換削除文>を含んではな

らない。 

100) 機能F701“参照更新動作”に対する規定 

a) “11.8 <参照制約定義>” 

i) 

機能F701“参照更新動作”なしでは,適合するSQL言語は,<更新規則>を含んではならない。 

101) 機能F711“ALTER定義域”に対する規定 

a) “11.35 <定義域変更文>” 

i) 

機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域変更文>を含んではなら

ない。 

b) “11.36 <定義域DEFAULT句設定>” 

i) 

機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域DEFAULT句設定>を含

んではならない。 

c) “11.37 <定義域DEFAULT句削除>” 

i) 

機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域DEFAULT句削除>を含

んではならない。 

d) “11.38 <定義域制約定義追加>” 

i) 

機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域制約定義追加>を含んで

はならない。 

e) “11.39 <定義域制約定義削除>” 

i) 

機能F711“ALTER定義域”なしでは,適合するSQL言語は,<定義域制約定義削除>を含んで

はならない。 

102) 機能F721“遅延可能制約”に対する規定 

a) “10.8 <制約名定義>及び<制約特性>” 

i) 

機能F721“遅延可能制約”なしでは,適合するSQL言語は,<制約強制>以外の<制約特性>を

含んではならない。 

注記580 これは,INITIALLY IMMEDIATE NOT DEFERRABLEが暗に想定されることを意味

する。 

b) “17.4 <SET CONSTRAINTS MODE文>” 

i) 

機能F721“遅延可能制約”なしでは,適合するSQL言語は,<SET CONSTRAINTS MODE文>

を含んではならない。 

103) 機能F731“INSERT列権限”に対する規定 

a) “12.3 <権限>” 

i) 

機能F731“INSERT列権限”なしでは,適合するSQL言語中で,INSERTを含む<動作>は,<

権限列リスト>を含んではならない。 

104) 機能F741“参照MATCH型”に対する規定 

a) “8.13 <MATCH述語>” 

i) 

機能F741“参照MATCH型”なしでは,適合するSQL言語は,<MATCH述語>を含んではなら

ない。 

注記581 “9.11 等値性演算”の適合性規則も適用する。 

957 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) “11.8 <参照制約定義>” 

i) 

機能F741“参照MATCH型”なしでは,適合するSQL言語は,MATCHを含む<参照指定>を含

んではならない。 

105) 機能F751“ビューCHECK拡張”に対する規定 

a) “11.32 <ビュー定義>” 

i) 

機能F751“ビューCHECK拡張”なしでは,適合するSQL言語は,<レベル句>を含んではなら

ない。 

ii) 機能F751“ビューCHECK拡張”なしでは,適合するSQL言語は,<問合せ式>を含む<問合せ

式>を含み,かつ,WITH CHECK OPTIONを含む<ビュー定義>を含んではならない。 

106) 機能F761“セション管理”に対する規定 

a) “19.1 <SET SESSION CHARACTERISTICS文>” 

i) 

機能F761“セション管理”なしでは,適合するSQL言語は,<SET SESSION CHARACTERISTICS

文>を含んではならない。 

b) “19.5 <SET CATALOG文>” 

i) 

機能F761“セション管理”なしでは,適合するSQL言語は,<SET CATALOG文>を含んではな

らない。 

c) “19.6 <SET SCHEMA文>” 

i) 

機能F761“セション管理”なしでは,適合するSQL言語は,<SET SCHEMA文>を含んではな

らない。 

d) “19.7 <SET NAMES文>” 

i) 

機能F761“セション管理”なしでは,適合するSQL言語は,<SET NAMES文>を含んではなら

ない。 

107) 機能F762“CURRENT̲CATALOG”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能F762“CURRENT̲CATALOG”なしでは,適合するSQL言語は,CURRENT̲CATALOGを

含む<一般値指定>を含んではならない。 

b) “11.5 <DEFAULT句>” 

i) 

機能F762“CURRENT̲CATALOG”なしでは,適合するSQL言語は,CURRENT̲CATALOGを

含む<既定値選択肢>を含んではならない。 

108) 機能F763“CURRENT̲SCHEMA”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能F763“CURRENT̲SCHEMA”なしでは,適合するSQL言語は,CURRENT̲SCHEMAを含

む<一般値指定>を含んではならない。 

b) “11.5 <DEFAULT句>” 

i) 

機能F763“CURRENT̲SCHEMA”なしでは,適合するSQL言語は,CURRENT̲SCHEMAを含

む<既定値選択肢>を含んではならない。 

109) 機能F771“コネクション管理”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F771“コネクション管理”なしでは,適合するSQL言語は,陽に指定される<コネクショ

ン名>を含んではならない。 

958 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) “18.1 <CONNECT文>” 

i) 

機能F771“コネクション管理”なしでは,適合するSQL言語は,<CONNECT文>を含んでは

ならない。 

c) “18.2 <SET CONNECTION文>” 

i) 

機能F771“コネクション管理”なしでは,適合するSQL言語は,<SET CONNECTION文>を含

んではならない。 

d) “18.3 <DISCONNECT文>” 

i) 

機能F771“コネクション管理”なしでは,適合するSQL言語は,<DISCONNECT文>を含んで

はならない。 

110) 機能F781“自己参照操作”に対する規定 

a) “14.9 <DELETE文:探索>” 

i) 

機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<DELETE

文:探索>を含んではならない。 

1) Tの末端で一般に基となる表が,<探索条件>に広く含まれる<問合せ式>の基となる表である。 

2) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メ

ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。 

b) “14.11 <INSERT文>” 

i) 

機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<INSERT

文>を含んではならない。 

1) 列参照の修飾する表の表名を除いて,Tの末端で一般に基となる表の<表名>が<副問合せ発>

に広く含まれる。 

2) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メ

ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<副問合せ発>が広く含む。 

c) “14.12 <MERGE文>” 

i) 

機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<MERGE

文>を含んではならない。 

1) 列参照の<表名又は問合せ名>又は<相関名>を除いて,<表参照>に直に含まれる<問合せ式>

に,Tの末端で一般に基となる表が広く含まれる。 

2) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メ

ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<表参照>に直に含まれる<問

合せ式>が広く含む。 

ii) 機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<MERGE

文>を含んではならない。 

1) Tの末端で一般に基となる表が,<探索条件>に広く含まれるいずれかの<問合せ式>の基とな

る表である。 

2) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メ

ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。 

d) “14.14 <UPDATE文:探索>” 

i) 

機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<UPDATE

文:探索>を含んではならない。 

959 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

1) Tの末端で一般に基となる表が,<探索条件>に広く含まれる<問合せ式>の基となる表である。 

2) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メ

ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。 

e) “14.15 <設定句リスト>” 

i) 

機能F781“自己参照操作”なしでは,適合するSQL言語は,次のいずれかが真である<設定句

>を含んではならない。 

1) Tの末端で一般に基となる表が,<設定句>に直に含まれる<更新元>又は<代入行>に単純に含

まれるいずれかの<値式>に広く含まれるいずれかの<問合せ式>の基となる表である。 

2) SQLデータを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メ

ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>を,<設定句>に直に含まれる<更

新元>又は<代入行>が広く含む。 

111) 機能F791“鈍感カーソル”に対する規定 

a) “14.2 <カーソル特性>” 

i) 

機能F791“鈍感カーソル”なしでは,適合するSQL言語は,INSENSITIVEを直に含む<カーソ

ル感度>を含んではならない。 

ii) 機能F791“鈍感カーソル”又は機能T231“敏感カーソル”なしでは,適合するSQL言語は,

ASENSITIVEを直に含む<カーソル感度>を含んではならない。 

112) 機能F801“完全な集合関数”に対する規定 

a) “7.12 <問合せ指定>” 

i) 

機能F801“完全な集合関数”なしでは,適合するSQL言語は,DISTINCTを含む<集合限定子

>がQSに含まれる<問合せ式>に含まれる場合を除いて,DISTINCTを含む二つ以上の<集合限

定子>を含む<問合せ指定> QSを含んではならない。 

b) “10.9 <集約関数>” 

i) 

機能F561“完全な値式”又は機能F801“完全な集合関数”なしでは,適合するSQL言語は,

DISTINCTを直に含み,かつ,列参照ではない<値式>を含む<一般集合関数>を含んではならな

い。 

113) 機能F821“局所表参照”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能F821“局所表参照”なしでは,適合するSQL言語は,<局所修飾子>を含む<局所又はスキ

ーマ修飾子>を含んではならない。 

b) “6.7 <列参照>” 

i) 

機能F821“局所表参照”なしでは,適合するSQL言語は,MODULEを単純に含む<列参照>を

含んではならない。 

114) 機能F831“完全カーソル更新”に対する規定 

a) “14.1 <カーソル宣言>” 

i) 

機能F831“完全カーソル更新”なしでは,適合するSQL言語は,FOR UPDATEを指定する 

<更新可能性句>を含む<カーソル指定>,及び<カーソルスクロール可能性>を含む<カーソル特

性>の両方を含む<カーソル宣言>を含んではならない。 

b) “14.3 <カーソル指定>” 

i) 

機能F831“完全カーソル更新”なしでは,適合するSQL言語は,FOR UPDATEを指定する 

960 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<更新可能性句>,及び<ORDER BY句>の両方を含む<カーソル指定>を含んではならない。 

c) “14.13 <UPDATE文:位置付け>” 

i) 

機能F831“完全カーソル更新”なしでは,適合するSQL言語は,CDDの宣言された<カーソル

指定>が順序付けられている<UPDATE文:位置付け>を含んではならない。 

115) 機能F841“LIKE̲REGEX述語”に対する規定 

a) “8.7 <LIKE̲REGEX述語>” 

i) 

機能F841“LIKE̲REGEX述語”なしでは,適合するSQL言語は,<LIKE̲REGEX述語>を含ん

ではならない。 

116) 機能F842“OCCURENCES̲REGEX関数”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能F842“OCCURENCES̲REGEX関数”なしでは,適合するSQL言語は,

<OCCURENCES̲REGEX関数>を含んではならない。 

117) 機能F843“POSITION̲REGEX関数”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能F843“POSITION̲REGEX関数”なしでは,適合するSQL言語は,<POSITION̲REGEX式

>を含んではならない。 

118) 機能F844“SUBSTRING̲REGEX”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能F844“SUBSTRING̲REGEX”なしでは,適合するSQL言語は,<SUBSTRING̲REGEX関

数>を含んではならない。 

119) 機能F845“TRANSLATE̲REGEX”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能F845“TRANSLATE̲REGEX”なしでは,適合するSQL言語は,<TRANSLATE̲REGEX関

数>を含んではならない。 

120) 機能F846“正規表現演算子でのオクテット提供”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<OCCURENCES̲REGEX関数>は,<文字長単位>を含んではならない。 

ii) 機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<POSITION̲REGEX式>は,<文字長単位>を含んではならない。 

b) “6.30 <データ列値関数>” 

i) 

機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<SUBSTRING̲REGEX関数>は,<文字長単位>を含んではならない。 

ii) 機能F846“正規表現演算子でのオクテット提供”なしでは,適合するSQL言語中で,

<TRANSLATE̲REGEX関数>は,<文字長単位>を含んではならない。 

121) 機能F847“値式正規表現”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能F847“値式正規表現”なしでは,適合するSQL言語中で,<XQueryパターン>及び<XQuery

オプションフラグ>は,<値指定>でなければならない。 

b) “6.30 <データ列値関数>” 

961 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F847“値式正規表現”なしでは,適合するSQL言語中で,<XQueryパターン>,<XQuery

オプションフラグ>及び<XQuery置換文字列>は,<値指定>でなければならない。 

c) “8.7 <LIKE̲REGEX述語>” 

i) 

機能F847“値式正規表現”なしでは,適合するSQL言語中で,<XQueryパターン>及び<XQuery

オプションフラグ>は,<値指定>でなければならない。 

122) 機能F850“<問合せ式>中の最上位<ORDER BY句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F850“<問合せ式>中の最上位<ORDER BY句>”なしでは,適合するSQL言語中で,<問

合せによる配列値構成子>又は<カーソル指定>のいずれにも直に含まれない<問合せ式>は,

<ORDER BY句>を直に含んではならない。 

123) 機能F851“副問合せ中の<ORDER BY句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F851“副問合せ中の<ORDER BY句>”なしでは,適合するSQL言語中で,別の<問合せ式

>に含まれる<問合せ式>は,<ORDER BY句>を直に含んではならない。 

124) 機能F852“ビュー中の最上位<ORDER BY句>”に対する規定 

a) “11.32 <ビュー定義>” 

i) 

機能F852“ビュー中の最上位<ORDER BY句>”なしでは,適合するSQL言語中で,<ビュー定

義>に直に含まれる<問合せ式>は,<ORDER BY句>を直に含んではならない。 

125) 機能F855“<問合せ式>中の入れ子になった<ORDER BY句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F855“<問合せ式>中の入れ子になった<ORDER BY句>”なしでは,適合するSQL言語中

で,<問合せ一次子>は,<ORDER BY句>を直に含んではならない。 

126) 機能F856“<問合せ式>中の入れ子になった<FETCH FIRST句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F856“<問合せ式>中の入れ子になった<FETCH FIRST句>”なしでは,適合するSQL言語

中で,<問合せ一次子>は,<FETCH FIRST句>を直に含んではならない。 

127) 機能F857“<問合せ式>中の最上位<FETCH FIRST句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F857“<問合せ式>中の最上位<FETCH FIRST句>”なしでは,適合するSQL言語中で, 

<問合せ式>は,<FETCH FIRST句>を直に含んではならない。 

128) 機能F858“副問合せ中の<FETCH FIRST句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F858“副問合せ中の<FETCH FIRST句>”なしでは,適合するSQL言語中で,別の<問合

せ式>に含まれる<問合せ式>は,<FETCH FIRST句>を直に含んではならない。 

129) 機能F859“ビュー中の最上位<FETCH FIRST句>”に対する規定 

a) “11.32 <ビュー定義>” 

i) 

機能F859“ビュー中の最上位<FETCH FIRST句>”なしでは,適合するSQL言語中で,<ビュ

ー定義>に直に含まれる<問合せ式>は,<FETCH FIRST句>を直に含んではならない。 

130) 機能F860“<FETCH FIRST句>中の動的な<最初の取出し行数>”に対する規定 

a) “7.13 <問合せ式>” 

962 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能F860“<FETCH FIRST句>中の動的な<最初の取出し行数>”なしでは,適合するSQL言語

中で,<FETCH FIRST句>は,<符号なし整数>ではない<最初の取出し行数>を含んではならな

い。 

131) 機能F861“<問合せ式>中の最上位<結果OFFSET句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F861“<問合せ式>中の最上位<結果OFFSET句>”なしでは,適合するSQL言語中で,<問

合せ式>は,<結果OFFSET句>を直に含んではならない。 

132) 機能F862“副問合せ中の<結果OFFSET句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F862“副問合せ中の<結果OFFSET句>”なしでは,適合するSQL言語中で,別の<問合せ

式>に含まれる<問合せ式>は,<結果OFFSET句>を直に含んではならない。 

133) 機能F863“<問合せ式>中の入れ子になった<結果OFFSET句>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F863“<問合せ式>中の入れ子になった<結果OFFSET句>”なしでは,適合するSQL言語

中で,<問合せ一次子>は,<結果OFFSET句>を直に含んではならない。 

134) 機能F864“ビュー中の最上位<結果OFFSET句>”に対する規定 

a) “11.32 <ビュー定義>” 

i) 

機能F864“ビュー中の最上位<結果OFFSET句>”なしでは,適合するSQL言語中で,<ビュー

定義>に直に含まれる<問合せ式>は,<結果OFFSET句>を直に含んではならない。 

135) 機能F865“<結果OFFSET句>中の動的な<変位行数>”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F865“<結果OFFSET句>中の動的な<変位行数>”なしでは,適合するSQL言語中で,<結

果OFFSET句>は,<符号なし整数>ではない<変位行数>を含んではならない。 

136) 機能F866“FETCH FIRST句:PERCENT選択肢”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F866“FETCH FIRST句:PERCENT選択肢”なしでは,適合するSQL言語中で,<FETCH 

FIRST句>は,<最初の取出し率>を含んではならない。 

137) 機能F867“FETCH FIRST句:WITH TIES選択肢”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能F867“FETCH FIRST句:WITH TIES選択肢”なしでは,適合するSQL言語中で,<FETCH 

FIRST句>は,WITH TIESを含んではならない。 

138) 機能S023“基本構造型”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<属性名>を含んではならない。 

b) “6.1 <データ型>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,構造型を識別する<パス解決利用者

定義型名>を含んではならない。 

c) “6.17 <メソッド呼出し>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<メソッド呼出し>を含んではなら

ない。 

963 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

d) “6.19 <NEW指定>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<NEW指定>を含んではならない。 

e) “10.4 <ルーチン呼出し>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<一般式>を含んではならない。 

f) 

“11.51 <利用者定義型定義>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<メンバリスト>を含んではならな

い。 

ii) 機能S023“基本構造型”なしでは,適合するSQL言語は,<メソッド指定リスト>を含んでは

ならない。 

g) “11.52 <属性定義>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<属性定義>を含んではならない。 

h) “11.60 <SQL呼出しルーチン>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,<メソッド指定指示子>を含んでは

ならない。 

i) 

“12.3 <権限>” 

i) 

機能S023“基本構造型”なしでは,適合するSQL言語は,UNDERを含む<動作>を含み,かつ,

構造型を識別する<スキーマ解決利用者定義型名>を含む<オブジェクト名>を含む<権限>を含

んではならない。 

139) 機能S024“拡張構造型”に対する規定 

a) “6.18 <静的メソッド呼出し>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,<静的メソッド呼出し>を含んでは

ならない。 

b) “9.11 等値性演算” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語中で,等値性演算のオペランドの宣言型

は,ST順序付けであってはならない。 

c) “9.12 グループ化操作” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語中で,グループ化操作のオペランドの宣

言型は,ST順序付けであってはならない。 

d) “9.13 マルチ集合要素グループ化操作” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語中で,マルチ集合要素グループ化操作の

マルチ集合オペランドの宣言要素型は,ST順序付けであってはならない。 

e) “9.14 順序付け操作” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語中で,順序付け操作のオペランドの宣言

型は,ST順序付けであってはならない。 

f) 

“10.6 <特定ルーチン指示子>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,METHODを直に含む<ルーチン種

別>を含む<特定ルーチン指示子>を含んではならない。 

g) “11.51 <利用者定義型定義>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,NOT INSTANTIABLEを含む

<INSTANTIABLE句>を含んではならない。 

964 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) 機能S024“拡張構造型”なしでは,適合するSQL言語は,SELF AS RESULTを直に含む<原メ

ソッド指定>を含んではならない。 

iii) 機能S024“拡張構造型”なしでは,適合するSQL言語は,GENERALを含む<パラメタ様式>

を含む<メソッド特性の並び>を含んではならない。 

iv) 機能S024“拡張構造型”なしでは,適合するSQL言語は,NO SQLを直に含む<SQLデータア

クセス指示>を含む<原メソッド指定>を含んではならない。 

v) 機能S024“拡張構造型”なしでは,適合するSQL言語は,INSTANCE又はSTATICを含む<部

分メソッド指定>を含んではならない。 

h) “11.52 <属性定義>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,<属性既定値>を含んではならない。 

i) 

“11.53 <型変更文>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,<型変更文>を含んではならない。 

j) 

“11.60 <SQL呼出しルーチン>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語中で,<SQLパラメタ宣言>は,RESULT

を含んではならない。 

k) “11.62 <ルーチン削除文>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,メソッドを識別する<特定ルーチン

指示子>を含む<ルーチン削除文>を含んではならない。 

l) 

“12.2 <GRANT権限文>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,メソッドを識別する<GRANT権限

文>に含まれる<特定ルーチン指示子>を含んではならない。 

m) “12.3 <権限>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,USAGEを含む<動作>を含み,かつ,

構造型を識別する<スキーマ解決利用者定義型名>を含む<オブジェクト名>を含む<権限>を含

んではならない。 

ii) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<権限メソッドリスト>を含んでは

ならない。 

n) “14.11 <INSERT文>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語中で,陽に指定されるか又は暗に想定さ

れる<挿入列リスト>中で識別される各列Cに対して,Cの宣言型が構造型TYならば,<問合せ

式>又は<文脈型付き表値構成子>の対応する列の宣言型は,TYでなければならない。 

o) “14.12 <MERGE文>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,陽に指定されるか又は暗に想定され

る<挿入列リスト>中で識別される各列Cに対して,Cの宣言型が構造型TYならば,<問合せ式

>又は<文脈型付き表値構成子>の対応する列の宣言型は,TYであるという条件を満たさない

<MERGE文>を含んではならない。 

p) “14.15 <設定句リスト>” 

i) 

機能S024“拡張構造型”なしでは,適合するSQL言語は,<設定句>中の<更新相手>の宣言型

が構造型TYで,かつ,<設定句>に含まれる<更新元>の宣言型,又は<設定句>に含まれる<代入

行>の対応するフィールドの宣言型がTYでない<設定句>を含んではならない。 

965 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ii) 機能S024“拡張構造型”なしでは,適合するSQL言語は,<変異設定句>を含み,最後の<メソ

ッド名>の宣言型が構造型TYを識別し,かつ,<設定句>に含まれる<更新元>の宣言型がTYで

ない<設定句>を含んではならない。 

140) 機能S025“終端構造型”に対する規定 

a) “11.51 <利用者定義型定義>” 

i) 

機能S025“終端構造型”なしでは,適合するSQL言語中で,構造型を定義する<利用者定義型

定義>は,NOT FINALである<終端性>を含まなければならない。 

141) 機能S026“自己参照構造型”に対する規定 

a) “11.52 <属性定義>” 

i) 

機能S026“自己参照構造型”なしでは,適合するSQL言語は,<属性定義>を含む<利用者定義

型定義>に単純に含まれる<スキーマ解決利用者定義型名>と等価な<被参照型>をもつ<参照型>

であり,かつ,<属性定義>に単純に含まれる<データ型>を含んではならない。 

142) 機能S027“特定メソッド名によるメソッド作成”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能S027“特定メソッド名によるメソッド作成”なしでは,適合するSQL言語は,SPECIFIC 

METHODを含む<メソッド指定指示子>を含んではならない。 

143) 機能S028“並べ替え可能なUDT選択肢リスト”に対する規定 

a) “11.51 <利用者定義型定義>” 

i) 

機能S028“並べ替え可能なUDT選択肢リスト”なしでは,適合するSQL言語は,指定される

ならば,<INSTANTIABLE句>,<終端性>,指定されるならば,<参照型指定>,指定されるなら

ば,<REFへのCAST>,指定されるならば,<型へのCAST>,指定されるならば,<個別型への

CAST>,及び指定されるならば,<元型へのCAST>が,この順序で現れない<利用者定義型選択

肢リスト>を含んではならない。 

144) 機能S041“基本参照型”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<参照型>を含んではならない。 

b) “6.20 <属性又はメソッド参照>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<属性又はメソッド参照>を含んで

はならない。 

c) “6.21 <内参照演算>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<内参照演算>を含んではならない。 

d) “6.26 <値式>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<参照値式>を含んではならない。 

e) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<Ada  REF変数>を含んではならな

い。 

f) 

“21.4 <SQL埋込みCプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<C REF変数>を含んではならない。 

g) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<COBOL REF変数>を含んではなら

966 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ない。 

h) “21.6 <SQL埋込みFortranプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<Fortran REF変数>を含んではなら

ない。 

i) 

“21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<MUMPS REF変数>を含んではな

らない。 

j) 

“21.8 <SQL埋込みPascalプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<Pascal REF変数>を含んではならな

い。 

k) “21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能S041“基本参照型”なしでは,適合するSQL言語は,<PL/I REF変数>を含んではならな

い。 

145) 機能S043“拡張参照型”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<列定義>に単純に含まれる<データ

型>に単純に含まれない<SCOPE句>を含んではならない。 

b) “6.13 <CAST指定>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語中で,<CASTオペランド>の宣言型が参

照型ならば,<CAST相手>は,参照型である<データ型>を含まなければならない。 

c) “6.22 <メソッド参照>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<メソッド参照>を含んではならな

い。 

d) “6.23 <参照解決>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<参照解決>を含んではならない。 

e) “11.3 <表定義>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<SCOPE句>を含む<列選択肢リス

ト>を含んではならない。 

ii) 機能S043“拡張参照型”なしでは,適合するSQL言語は,SYSTEM GENERATEDを含まない

<参照生成>を含んではならない。 

f) 

“11.17 <列SCOPE句追加>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<列SCOPE句追加>を含んではなら

ない。 

g) “11.18 <列SCOPE句削除>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<列SCOPE句削除>を含んではなら

ない。 

h) “11.32 <ビュー定義>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<参照可能ビュー指定>を含んでは

ならない。 

i) 

“11.51 <利用者定義型定義>” 

967 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<参照型指定>を含んではならない。 

j) 

“14.11 <INSERT文>” 

i) 

機能S043“拡張参照型”なしでは,適合するSQL言語は,<置換句>を含んではならない。 

146) 機能S051“型の表作成”に対する規定 

a) “11.3 <表定義>” 

i) 

機能S051“型の表作成”なしでは,適合するSQL言語は,“OF <パス解決利用者定義型名>”

を含んではならない。 

147) 機能S071“関数及び型の名前解決でのSQLパス”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは, 適合するSQL言語は,

CURRENT̲PATHを含む<一般値指定>を含んではならない。 

b) “10.3 <パス指定>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<パス指定

>を含んではならない。 

c) “11.1 <スキーマ定義>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<スキーマ

パス指定>を含んではならない。 

d) “11.5 <DEFAULT句>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,

CURRENT̲PATHを含む<既定値選択肢>を含んではならない。 

e) “13.1 <SQLクライアントモジュール定義>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<モジュー

ルパス指定>を含んではならない。 

f) 

“19.8 <SET PATH文>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<SET PATH

文>を含んではならない。 

g) “21.1 <SQL埋込みホストプログラム>” 

i) 

機能S071“関数及び型の名前解決でのSQLパス”なしでは,適合するSQL言語は,<埋込みパ

ス指定>を含んではならない。 

148) 機能S081“下位表”に対する規定 

a) “11.3 <表定義>” 

i) 

機能S081“下位表”なしでは,適合するSQL言語は,<下位表句>を含んではならない。 

b) “11.32 <ビュー定義>” 

i) 

機能S081“下位表”なしでは,適合するSQL言語は,<下位ビュー句>を含んではならない。 

c) “12.2 <GRANT権限文>” 

i) 

機能S081“下位表”なしでは,適合するSQL言語は,WITH HIERARCHY OPTIONを含む<GRANT

権限文>を含んではならない。 

d) “12.3 <権限>” 

i) 

機能S081“下位表”なしでは,適合するSQL言語は,UNDERを含む<動作>を含み,かつ, 

<表名>を含む<オブジェクト名>を含む<権限>を含んではならない。 

968 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

e) “12.7 <REVOKE文>” 

i) 

機能S081“下位表”なしでは,適合するSQL言語は,HIERARCHY OPTION FORを含む<選択

肢剝奪範囲>を含んではならない。 

149) 機能S091“基本配列提供”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S091“基本配列提供”なしでは,適合するSQL言語は,<配列型>を含んではならない。 

b) “6.5 <文脈型付き値指定>” 

i) 

機能S091“基本配列提供”なしでは,適合するSQL言語は,ARRAYを単純に含む<空指定>を

含んではならない。 

c) “6.24 <配列要素参照>” 

i) 

機能S091“基本配列提供”なしでは,適合するSQL言語は,<配列要素参照>を含んではなら

ない。 

d) “6.28 <数値関数>” 

i) 

機能S091“基本配列提供”又は機能S271“基本マルチ集合提供”なしでは,適合するSQL言

語は,<基数式>を含んではならない。 

e) “6.36 <配列値式>” 

i) 

機能S091“基本配列提供”なしでは,適合するSQL言語は,<配列値式>を含んではならない。 

f) 

“6.38 <配列値構成子>” 

i) 

機能S091“基本配列提供”なしでは,適合するSQL言語は,<列挙による配列値構成子>を含

んではならない。 

g) “7.6 <表参照>” 

i) 

機能S091“基本配列提供”又は機能S271“基本マルチ集合提供”なしでは,適合するSQL言

語は,<集まり導出表>を含んではならない。 

h) “14.15 <設定句リスト>” 

i) 

機能S091“基本配列提供”なしでは,適合するSQL言語は,<単純値指定>を直に含む<更新相

手>を含んではならない。 

150) 機能S092“利用者定義型の配列”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S092“利用者定義型の配列”なしでは,適合するSQL言語は,<パス解決利用者定義型名

>を含む<データ型>を基にする<配列型>を含んではならない。 

151) 機能S094“参照型の配列”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S094“参照型の配列”なしでは,適合するSQL言語は,<参照型>を含む<データ型>を基

にする<配列型>を含んではならない。 

152) 機能S095“問合せによる配列構成子”に対する規定 

a) “6.38 <配列値構成子>” 

i) 

機能S095“問合せによる配列構成子”なしでは,適合するSQL言語は,<問合せによる配列値

構成子>を含んではならない。 

153) 機能S096“省略可能な配列限界”に対する規定 

a) “6.1 <データ型>” 

969 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能S096“省略可能な配列限界”なしでは,適合するSQL言語は,<最大基数>を直に含まな

い<配列型>を含んではならない。 

154) 機能S097“配列要素代入”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能S097“配列要素代入”なしでは,適合するSQL言語は,<相手配列要素指定>を含んでは

ならない。 

155) 機能S098“ARRAY̲AGG”に対する規定 

a) “10.9 <集約関数>” 

i) 

機能S098“ARRAY̲AGG”なしでは,適合するSQL言語は,<配列集約関数>を含んではなら

ない。 

156) 機能S111“問合せ式中のONLY”に対する規定 

a) “7.6 <表参照>” 

i) 

機能S111“問合せ式中のONLY”なしでは,適合するSQL言語は,<ONLY指定>を含む<表参

照>を含んではならない。 

b) “14.8 <DELETE文:位置付け>” 

i) 

機能S111“問合せ式中のONLY”なしでは,適合するSQL言語は,ONLYを含む<相手表>を含

んではならない。 

157) 機能S151“型述語”に対する規定 

a) “8.19 <型述語>” 

i) 

機能S151“型述語”なしでは,適合するSQL言語は,<型述語>を含んではならない。 

158) 機能S161“下位型扱い”に対する規定 

a) “6.16 <下位型扱い>” 

i) 

機能S161“下位型扱い”なしでは,適合するSQL言語は,<下位型扱い>を含んではならない。 

159) 機能S162“参照に対する下位型扱い”に対する規定 

a) “6.16 <下位型扱い>” 

i) 

機能S162“参照に対する下位型扱い”なしでは,適合するSQL言語は,<参照型>を含む<相手

下位型>を含んではならない。 

160) 機能S201“配列に関するSQL呼出しルーチン”に対する規定 

a) “10.4 <ルーチン呼出し>” 

i) 

機能S201“配列に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,宣言型が配

列型である<SQL引数>を含んではならない。 

b) “11.60 <SQL呼出しルーチン>” 

i) 

機能S201“配列に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,配列型を基

にする<パラメタの型>を含んではならない。 

ii) 機能S201“配列に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,配列型を基

にする<戻りデータ型>を含んではならない。 

161) 機能S202“マルチ集合に関するSQL呼出しルーチン”に対する規定 

a) “10.4 <ルーチン呼出し>” 

i) 

機能S202“マルチ集合に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,宣言

型がマルチ集合型である<SQL引数>を含んではならない。 

970 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) “11.60 <SQL呼出しルーチン>” 

i) 

機能S202“マルチ集合に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,マル

チ集合型を基にする<パラメタの型>を含んではならない。 

ii) 機能S202“マルチ集合に関するSQL呼出しルーチン”なしでは,適合するSQL言語は,マル

チ集合型を基にする<戻りデータ型>を含んではならない。 

162) 機能S211“利用者定義の型変換関数”に対する規定 

a) “11.63 <利用者定義型変換定義>” 

i) 

機能S211“利用者定義の型変換関数”なしでは,適合するSQL言語は,<利用者定義型変換定

義>を含んではならない。 

b) “11.64 <利用者定義型変換削除文>” 

i) 

機能S211“利用者定義の型変換関数”なしでは,適合するSQL言語は,<利用者定義型変換削

除文>を含んではならない。 

163) 機能S231“構造型位置付け子”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,構造型を識別する<データ型>を単純に含む<パラメタの型>を含んではならない。 

ii) 機能S231“構造型位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,構造型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならない。 

b) “13.3 <外部呼出し手続>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,

かつ,構造型を識別する<データ型>を単純に含む<ホストパラメタデータ型>を含んではならな

い。 

c) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<Ada利用

者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

d) “21.4 <SQL埋込みCプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<C利用者

定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

e) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<COBOL利

用者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

f) 

“21.6 <SQL埋込みFortranプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<Fortran利

用者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

g) “21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<MUMPS

利用者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならな

い。 

h) “21.8 <SQL埋込みPascalプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<Pascal利

971 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

用者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

i) 

“21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能S231“構造型位置付け子”なしでは,適合するSQL言語は,構造型を識別する<PL/I利用

者定義型位置付け子変数>に単純に含まれる<パス解決利用者定義型名>を含んではならない。 

164) 機能S232“配列位置付け子”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,か

つ,配列型を識別する<データ型>を単純に含む<パラメタの型>を含んではならない。 

ii) 機能S232“配列位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,か

つ,配列型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならない。 

b) “13.3 <外部呼出し手続>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含み,か

つ,<配列型>を単純に含む<ホストパラメタデータ型>を含んではならない。 

c) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<Ada配列位置付け子変数>を

含んではならない。 

d) “21.4 <SQL埋込みCプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<C配列位置付け子変数>を含

んではならない。 

e) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<COBOL配列位置付け子変数

>を含んではならない。 

f) 

“21.6 <SQL埋込みFortranプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<Fortran配列位置付け子変数>

を含んではならない。 

g) “21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<MUMPS配列位置付け子変数

>を含んではならない。 

h) “21.8 <SQL埋込みPascalプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<Pascal配列位置付け子変数>を

含んではならない。 

i) 

“21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能S232“配列位置付け子”なしでは,適合するSQL言語は,<PL/I配列位置付け子変数>を

含んではならない。 

165) 機能S233“マルチ集合位置付け子”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含

み,かつ,マルチ集合型を識別する<データ型>を単純に含む<パラメタの型>を含んではならな

い。 

ii) 機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含

972 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

み,かつ,マルチ集合型を識別する<データ型>を単純に含む<戻りデータ型>を含んではならな

い。 

b) “13.3 <外部呼出し手続>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<位置付け子標識>を含

み,かつ,<マルチ集合型>を単純に含む<ホストパラメタデータ型>を含んではならない。 

c) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Adaマルチ集合位置付

け子変数>を含んではならない。 

d) “21.4 <SQL埋込みCプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Cマルチ集合位置付け

子変数>を含んではならない。 

e) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<COBOLマルチ集合位

置付け子変数>を含んではならない。 

f) 

“21.6 <SQL埋込みFortranプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Fortranマルチ集合位置

付け子変数>を含んではならない。 

g) “21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<MUMPSマルチ集合位

置付け子変数>を含んではならない。 

h) “21.8 <SQL埋込みPascalプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<Pascalマルチ集合位置

付け子変数>を含んではならない。 

i) 

“21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能S233“マルチ集合位置付け子”なしでは,適合するSQL言語は,<PL/Iマルチ集合位置付

け子変数>を含んではならない。 

166) 機能S241“変換関数”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能

S241“変換関数”なしでは,適合する

SQL

言語は,

CURRENT̲DEFAULT̲TRANSFORM̲GROUPを含んではならない。 

ii) 機能

S241“変換関数”なしでは,適合する

SQL

言語は,

CURRENT̲TRANSFORM̲GROUP̲FOR̲TYPEを含んではならない。 

b) “11.60 <SQL呼出しルーチン>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<変換グループ指定>を含んではなら

ない。 

c) “11.67 <変換定義>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<変換定義>を含んではならない。 

d) “11.71 <変換削除文>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<変換削除文>を含んではならない。 

e) “13.1 <SQLクライアントモジュール定義>” 

973 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<モジュール変換グループ指定>を含

んではならない。 

f) 

“19.9 <SET TRANSFORM GROUP文>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<SQL TRANSFORM GROUP文>を含

んではならない。 

g) “21.1 <SQL埋込みホストプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<埋込み変換グループ指定>を含んで

はならない。 

h) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<Ada利用者定義型変数>を含んでは

ならない。 

i) 

“21.4 <SQL埋込みCプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<C利用者定義型変数>を含んではな

らない。 

j) 

“21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<COBOL利用者定義型変数>を含んで

はならない。 

k) “21.6 <SQL埋込みFortranプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<Fortran利用者定義型変数>を含んで

はならない。 

l) 

“21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<MUMPS利用者定義型変数>を含んで

はならない。 

m) “21.8 <SQL埋込みPascalプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<Pascal利用者定義型変数>を含んでは

ならない。 

n) “21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能S241“変換関数”なしでは,適合するSQL言語は,<PL/I利用者定義型変数>を含んでは

ならない。 

167) 機能S242“変換変更文”に対する規定 

a) “11.68 <変換変更文>” 

i) 

機能S242“変換変更文”なしでは,適合するSQL言語は,<変換変更文>を含んではならない。 

168) 機能S251“利用者定義順序付け”に対する規定 

a) “11.65 <利用者定義順序付け定義>” 

i) 

機能S251“利用者定義順序付け”なしでは,適合するSQL言語は,<利用者定義順序付け定義

>を含んではならない。 

注記582 MAPが指定されるならば,“9.11 等値性演算”の適合性規則を適用する。ORDER 

FULL BY MAPが指定されるならば,“9.14 順序付け操作”の適合性規則も適用する。 

b) “11.66 <利用者定義順序付け削除文>” 

i) 

機能S251“利用者定義順序付け”なしでは,適合するSQL言語は,<利用者定義順序付け削除

974 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

文>を含んではならない。 

169) 機能S261“特定型メソッド”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能S261“特定型メソッド”なしでは,適合するSQL言語は,<特定型メソッド>を含んでは

ならない。 

170) 機能S271“基本マルチ集合提供”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合型>を含んで

はならない。 

b) “6.5 <文脈型付き値指定>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,MULTISETを単純に含む<

空指定>を含んではならない。 

c) “6.25 <マルチ集合要素参照>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合要素参照>を

含んではならない。 

d) “6.28 <数値関数>” 

i) 

機能S091“基本配列提供”又は機能S271“基本マルチ集合提供”なしでは,適合するSQL言

語は,<基数式>を含んではならない。 

e) “6.39 <マルチ集合値式>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合値式>を含ん

ではならない。 

f) 

“6.40 <マルチ集合値関数>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合値関数>を含

んではならない。 

注記583 “9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

g) “6.41 <マルチ集合値構成子>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<マルチ集合値構成子>を

含んではならない。 

h) “7.6 <表参照>” 

i) 

機能S091“基本配列提供”又は機能S271“基本マルチ集合提供”なしでは,適合するSQL言

語は,<集まり導出表>を含んではならない。 

i) 

“8.16 <MEMBER述語>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<MEMBER述語>を含んで

はならない。 

注記584 “9.11 等値性演算”の適合性規則も適用する。 

j) 

“8.18 <SET述語>” 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,<SET述語>を含んではな

らない。 

注記585 “9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

k) “10.9 <集約関数>” 

975 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能S271“基本マルチ集合提供”なしでは,適合するSQL言語は,COLLECTを直に含む<計

算操作>を含んではならない。 

171) 機能S272“利用者定義型のマルチ集合”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S272“利用者定義型のマルチ集合”なしでは,適合するSQL言語は,<パス解決利用者定

義型名>を含む<データ型>を基にする<マルチ集合型>を含んではならない。 

172) 機能S274“参照型のマルチ集合”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S274“参照型のマルチ集合”なしでは,適合するSQL言語は,<参照型>を含む<データ型

>を基にする<マルチ集合型>を含んではならない。 

173) 機能S275“高度マルチ集合提供”に対する規定 

a) “6.39 <マルチ集合値式>” 

i) 

機能S275“高度マルチ集合提供”なしでは,適合するSQL言語は,MULTISET UNION,MULTISET 

INTERSECTION又はMULTISET EXCEPTを含んではならない。 

注記586 MULTISET UNION DISTINCT,MULTISET INTERSECTION又はMULTISET EXCEPT

が指定されるならば,“9.13 マルチ集合要素グループ化操作”の適合性規則も適用す

る。 

b) “8.17 <SUBMULTISET述語>” 

i) 

機能S275“高度マルチ集合提供”なしでは,適合するSQL言語は,<SUBMULTISET述語>を

含んではならない。 

注記587 “9.13 マルチ集合要素グループ化操作”の適合性規則も適用する。 

c) “9.11 等値性演算” 

i) 

機能S275“高度マルチ集合提供”なしでは,適合するSQL言語中で,等値性演算のオペランド

の宣言型は,マルチ集合順序付けであってはならない。 

注記588 等値性演算のオペランドOPの宣言型がマルチ集合型ならば,OPは,マルチ集合要

素グループ化操作のマルチ集合オペランドである。“9.13 マルチ集合要素グループ

化操作”の適合性規則を適用する。 

d) “10.9 <集約関数>” 

i) 

機能S275“高度マルチ集合提供”なしでは,適合するSQL言語は,FUSION又はINTERSECTION

を直に含む<計算操作>を含んではならない。 

注記589 INTERSECTIONが指定されるならば,“9.13 マルチ集合要素グループ化操作”の適

合性規則も適用する。 

174) 機能S281“入れ子集まり型”に対する規定 

a) “6.1 <データ型>” 

i) 

機能S281“入れ子集まり型”なしでは,適合するSQL言語は,<集まり型>を含む<データ型>

を基にする集まり型を含んではならない。 

175) 機能S291“行全体の一意性制約”に対する規定 

a) “11.7 <一意性制約定義>” 

i) 

機能S291“行全体の一意性制約”なしでは,適合するSQL言語は,UNIQUE(VALUE) を含ん

ではならない。 

976 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

176) 機能S301“拡張UNNEST”に対する規定 

a) “7.6 <表参照>” 

i) 

機能S301“拡張UNNEST”なしでは,適合するSQL言語中で,<集まり導出表>は,二つ以上

の<集まり値式>を単純に含んではならない。 

177) 機能S401“配列型を基にする個別型”に対する規定 

a) “11.51 <利用者定義型定義>” 

i) 

機能S401“配列型を基にする個別型”なしでは,適合するSQL言語中で,<表現>は,<配列型

>を含んではならない。 

178) 機能S402“マルチ集合型を基にする個別型”に対する規定 

a) “11.51 <利用者定義型定義>” 

i) 

機能S402“マルチ集合型を基にする個別型”なしでは,適合するSQL言語中で,<表現>は,<

マルチ集合型>を含んではならない。 

179) 機能S403“ARRAY̲MAX̲CARDINALITY”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能S403“ARRAY̲MAX̲CARDINALITY”なしでは,適合するSQL言語は,<最大基数式>を

含んではならない。 

180) 機能S404“TRIM̲ARRAY”に対する規定 

a) “6.37 <配列値関数>” 

i) 

機能S404“TRIM̲ARRAY”なしでは,適合するSQL言語は,<TRIM̲ARRAY関数>を含んで

はならない。 

181) 機能T021“BINARY及びVARBINARYデータ型”に対する規定 

a) “5.3 <定数>” 

i) 

機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”な

しでは,適合するSQL言語は,<2進オクテット列定数>を含んではならない。 

b) “6.1 <データ型>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<長大オブ

ジェクト2進オクテット列型>ではない<2進オクテット列型>を含んではならない。 

c) “6.28 <数値関数>” 

i) 

機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”な

しでは,適合するSQL言語は,<2進オクテットPOSITION式>を含んではならない。 

d) “6.29 <データ列値式>” 

i) 

機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”な

しでは,適合するSQL言語は,<2進オクテット値式>を含んではならない。 

e) “21.3 <SQL埋込みAdaプログラム>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Ada BINARY

変数>を含んではならない。 

ii) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Ada 

VARBINARY変数>を含んではならない。 

f) 

“21.4 <SQL埋込みCプログラム>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<C BINARY

977 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

変数>を含んではならない。 

ii) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<C 

VARBINARY変数>を含んではならない。 

g) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<COBOL 

BINARY変数>を含んではならない。 

h) “21.6 <SQL埋込みFortranプログラム>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Fortran 

BINARY変数>を含んではならない。 

ii) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Fortran 

VARBINARY変数>を含んではならない。 

i) 

“21.8 <SQL埋込みPascalプログラム>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<Pascal 

BINARY変数>を含んではならない。 

j) 

“21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<PL/I BINARY

変数>を含んではならない。 

ii) 機能T021“BINARY及びVARBINARYデータ型”なしでは,適合するSQL言語は,<PL/I 

VARBINARY変数>を含んではならない。 

182) 機能T022“BINARY及びVARBINARYデータ型の高度提供”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能T042“拡張LOBデータ型提供”又は機能T022“BINARY及びVARBINARYデータ型の高

度提供”なしでは,適合するSQL言語は,<2進オクテット値関数>を含んではならない。 

b) “8.5 <LIKE述語>” 

i) 

機能T042“拡張LOBデータ型提供”又は機能T022“BINARY及びVARBINARYデータ型の高

度提供”なしでは,適合するSQL言語は,<オクテットLIKE述語>を含んではならない。 

183) 機能T023“複合2進オクテット定数”に対する規定 

a) “5.3 <定数>” 

i) 

機能T023“複合2進オクテット定数”なしでは,適合するSQL言語中で,<2進オクテット列

定数>は,“<引用符> [ { <ヘキシット> <ヘキシット> }... ] <引用符>”のただ一つの繰返しを含

まなければならない。 

184) 機能T024“2進オクテット定数中の空白”に対する規定 

a) “5.3 <定数>” 

i) 

機能T024“2進オクテット定数中の空白”なしでは,適合するSQL言語中で,<2進オクテッ

ト列定数>は,<空白>を含んではならない。 

185) 機能T031“BOOLEANデータ型”に対する規定 

a) “5.3 <定数>” 

i) 

機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール定数>を含んでは

ならない。 

b) “6.1 <データ型>” 

978 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール型>を含んではな

らない。 

c) “6.26 <値式>” 

i) 

機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール値式>である<値式

>を含んではならない。 

d) “6.35 <ブール値式>” 

i) 

機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<括弧なし値式一次子>を

単純に含む<ブール一次子>を含んではならない。 

e) “7.1 <行値構成子>” 

i) 

機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,<ブール述語オペランド>

を直に含む<行値構成子述語オペランド>を含んではならない。 

f) 

“10.9 <集約関数>” 

i) 

機能T031“BOOLEANデータ型”なしでは,適合するSQL言語は,EVERY,ANY又はSOME

を直に含む<計算操作>を含んではならない。 

186) 機能T041“基本LOBデータ型提供”に対する規定 

a) “5.3 <定数>” 

i) 

機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”な

しでは,適合するSQL言語は,<2進オクテット列定数>を含んではならない。 

b) “6.1 <データ型>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<長大オブジェクト2

進オクテット列型>,<文字長大オブジェクト型>又は<各国文字長大オブジェクト型>を含んで

はならない。 

c) “6.28 <数値関数>” 

i) 

機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”な

しでは,適合するSQL言語は,<2進オクテットPOSITION式>を含んではならない。 

d) “6.29 <データ列値式>” 

i) 

機能T041“基本LOBデータ型提供”又は機能T021“BINARY及びVARBINARYデータ型”な

しでは,適合するSQL言語は,<2進オクテット値式>を含んではならない。 

e) “11.60 <SQL呼出しルーチン>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<位置付け子標識>を含

み,かつ,長大オブジェクト型を識別する<データ型>を単純に含む<パラメタの型>を含んでは

ならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<位置付け子標識>を含

み,かつ,長大オブジェクト型を識別する<データ型>を単純に含む<戻りデータ型>を含んでは

ならない。 

f) 

“21.3 <SQL埋込みAdaプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada BLOB変数>を含

んではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada CLOB変数>を含

んではならない。 

979 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

iii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada BLOB位置付け

子変数>を含んではならない。 

iv) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Ada CLOB位置付け

子変数>を含んではならない。 

g) “21.4 <SQL埋込みCプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C BLOB変数>を含ん

ではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C CLOB変数>を含ん

ではならない。 

iii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C BLOB位置付け子

変数>を含んではならない。 

iv) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<C CLOB位置付け子

変数>を含んではならない。 

h) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL BLOB変数>

を含んではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL CLOB変数>

を含んではならない。 

iii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL BLOB位置付

け子変数>を含んではならない。 

iv) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<COBOL CLOB位置付

け子変数>を含んではならない。 

i) 

“21.6 <SQL埋込みFortranプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran BLOB変数>を

含んではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran CLOB変数>を

含んではならない。 

iii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran BLOB位置付

け子変数>を含んではならない。 

iv) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Fortran CLOB位置付

け子変数>を含んではならない。 

j) 

“21.7 <SQL埋込みMUMPSプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<MUMPS BLOB位置付

け子変数>を含んではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<MUMPS CLOB位置付

け子変数>を含んではならない。 

k) “21.8 <SQL埋込みPascalプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal BLOB変数>を

含んではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal CLOB変数>を

980 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含んではならない。 

iii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal BLOB位置付け

子変数>を含んではならない。 

iv) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<Pascal CLOB位置付け

子変数>を含んではならない。 

l) 

“21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I BLOB変数>を含

んではならない。 

ii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I CLOB変数>を含

んではならない。 

iii) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I BLOB位置付け

子変数>を含んではならない。 

iv) 機能T041“基本LOBデータ型提供”なしでは,適合するSQL言語は,<PL/I CLOB位置付け

子変数>を含んではならない。 

187) 機能T042“拡張LOBデータ型提供”に対する規定 

a) “6.13 <CAST指定>” 

i) 

機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語は,宣言型がBINARY LARGE 

OBJECT又はCHARACTER LARGE OBJECTである<CASTオペランド>を含んではならない。 

ii) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語は,宣言型がNATIONAL 

CHARACTER LARGE OBJECTである<CASTオペランド>を含んではならない。 

b) “6.30 <データ列値関数>” 

i) 

機能T042“拡張LOBデータ型提供”又は機能T022“BINARY及びVARBINARYデータ型の高

度提供”なしでは,適合するSQL言語は,<2進オクテット値関数>を含んではならない。 

c) “8.5 <LIKE述語>” 

i) 

機能T042“拡張LOBデータ型提供”又は機能T022“BINARY及びVARBINARYデータ型の高

度提供”なしでは,適合するSQL言語は,<オクテットLIKE述語>を含んではならない。 

ii) 機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中で,<LIKE述語>に単純

に含まれる<文字値式>は,宣言型がCHARACTER LARGE OBJECTであってはならない。 

iii) 機能F421“各国文字”及び機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語

中で,<LIKE述語>に単純に含まれる<文字値式>は,宣言型がNATIONAL CHARACTER LARGE 

OBJECTであってはならない。 

d) “8.6 <SIMILAR述語>” 

i) 

機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中で,<SIMILAR述語>に

単純に含まれる<文字値式>は,宣言型がCHARACTER LARGE OBJECTであってはならない。 

e) “9.11 等値性演算” 

i) 

機能T042“拡張LOBデータ型提供”なしでは,適合するSQL言語中で,等値性演算のオペラ

ンドの宣言型は,LOB順序付けであってはならない。 

188) 機能T043“乗数T”に対する規定 

a) “5.2 <トークン>及び<分離符号>” 

i) 

機能T043“乗数T”なしでは,適合するSQL言語中で,<乗数>は,Tであってはならない。 

981 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

189) 機能T044“乗数P”に対する規定 

a) “5.2 <トークン>及び<分離符号>” 

i) 

機能T044“乗数P”なしでは,適合するSQL言語中で,<乗数>は,Pであってはならない。 

190) 機能T051“行型”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,<フィールド名>を含んではならない。 

b) “6.1 <データ型>” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,<行型>を含んではならない。 

c) “6.2 <フィールド定義>” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,<フィールド定義>を含んではならない。 

d) “6.15 <フィールド参照>” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,<フィールド参照>を含んではならない。 

e) “7.1 <行値構成子>” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,ROWを直に含む<明示行値構成子>を含ん

ではならない。 

ii) 機能T051“行型”なしでは,適合するSQL言語は,ROWを直に含む<文脈型付き行値構成子

>を含んではならない。 

f) 

“7.2 <行値式>” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,<行値の特別な場合>を含んではならない。 

g) “7.12 <問合せ指定>” 

i) 

機能T051“行型”なしでは,適合するSQL言語は,<全フィールド参照>を含んではならない。 

191) 機能T053“全フィールド参照のための陽に指定された別名”に対する規定 

a) “7.12 <問合せ指定>” 

i) 

機能T053“全フィールド参照のための陽に指定された別名”なしでは,適合するSQL言語は,

<全フィールド列名リスト>を含んではならない。 

注記590 <集合限定子> DISTINCTが指定されるならば,“9.12 グループ化操作”の適合性規

則も適用する。 

192) 機能T061“UCS提供”に対する規定 

a) “6.1 <データ型>” 

i) 

機能T061“UCS提供”なしでは,適合するSQL言語は,<文字長単位>を含んではならない。 

b) “6.30 <データ列値関数>” 

i) 

機能T061“UCS提供”なしでは,適合するSQL言語は,<NORMALIZE関数>を含んではなら

ない。 

c) “8.12 <NORMALIZED述語>” 

i) 

機能T061“UCS提供”なしでは,適合するSQL言語は,<NORMALIZED述語>を含んではな

らない。 

193) 機能T071“BIGINTデータ型”に対する規定 

a) “6.1 <データ型>” 

i) 

機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,BIGINTを含んではならない。 

b) “21.3 <SQL埋込みAdaプログラム>” 

982 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,Interfaces.SQL.BIGINTを含む

<Ada修飾付き型指定>を含んではならない。 

ii) 機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,BIGINTを含む<Ada修飾なし

型指定>を含んではならない。 

c) “21.4 <SQL埋込みCプログラム>” 

i) 

機能T071“BIGINTデータ型”なしでは,適合するSQL言語は,long longを含む<C数値変

数>を含んではならない。 

d) “21.5 <SQL埋込みCOBOLプログラム>” 

i) 

機能T071“BIGINTデータ型”なしでは,適合するSQL言語中で,<COBOL整数型>と等価な

<ホストパラメタデータ型>は,BIGINTであってはならない。 

e) “21.9 <SQL埋込みPL/Iプログラム>” 

i) 

機能T071“BIGINTデータ型”なしでは,適合するSQL言語中で,<PL/I型FIXED BINARY>

と等価な<ホストパラメタデータ型>は,BIGINTであってはならない。 

194) 機能T111“更新可能な結合,和集合及び列”に対する規定 

a) “11.32 <ビュー定義>” 

i) 

機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語中で,WITH CHECK 

OPTIONが指定されるならば,ビュー表は,単純に更新可能でなければならない。 

b) “14.3 <カーソル指定>” 

i) 

機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語中で,FOR UPDATE

が指定されるならば,QEは,単純に更新可能でなければならない。 

c) “14.9 <DELETE文:探索>” 

i) 

機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能

でない表を識別する<相手表>を含む<DELETE文:探索>を含んではならない。 

d) “14.11 <INSERT文>” 

i) 

機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能

でない表を識別する<挿入相手>を含む<INSERT文>を含んではならない。 

e) “14.12 <MERGE文>” 

i) 

機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能

でない表を識別する<相手表>を含む<MERGE文>を含んではならない。 

f) 

“14.14 <UPDATE文:探索>” 

i) 

機能T111“更新可能な結合,和集合及び列”なしでは,適合するSQL言語は,単純に更新可能

でない表を識別する<相手表>を含む<UPDATE文:探索>を含んではならない。 

195) 機能T121“問合せ式中の(RECURSIVEを除く)WITH”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T121“問合せ式中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語は,<問

合せ名>を含んではならない。 

b) “7.6 <表参照>” 

i) 

機能T121“問合せ式中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語は,<問

合せ名>を含んではならない。 

c) “7.13 <問合せ式>” 

983 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能T121“問合せ式中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語中で,

<問合せ式>は,<WITH句>を含んではならない。 

196) 機能T122“副問合せ中の(RECURSIVEを除く)WITH”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能T122“副問合せ中の(RECURSIVEを除く)WITH”なしでは,適合するSQL言語中で,

<問合せ式>に含まれる<問合せ式>は,<WITH句>を含んではならない。 

197) 機能T131“再帰的問合せ”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能T131“再帰的問合せ”なしでは,適合するSQL言語は,RECURSIVEを含む<問合せ式>

を含んではならない。 

b) “11.32 <ビュー定義>” 

i) 

機能T131“再帰的問合せ”なしでは,適合するSQL言語は,RECURSIVEを直に含む<ビュー

定義>を含んではならない。 

198) 機能T132“副問合せ中の再帰的問合せ”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能T132“副問合せ中の再帰的問合せ”なしでは,適合するSQL言語中で,<問合せ式>に含

まれる<問合せ式>は,RECURSIVEを含んではならない。 

199) 機能T141“SIMILAR述語”に対する規定 

a) “8.6 <SIMILAR述語>” 

i) 

機能T141“SIMILAR述語”なしでは,適合するSQL言語は,<SIMILAR述語>に含んではなら

ない。 

200) 機能T151“DISTINCT述語”に対する規定 

a) “8.15 <DISTINCT述語>” 

i) 

機能T151“DISTINCT述語”なしでは,適合するSQL言語は,<DISTINCT述語>を含んではな

らない。 

注記591 “9.11 等値性演算”の適合性規則も適用する。 

201) 機能T152“否定付きDISTINCT述語”に対する規定 

a) “8.15 <DISTINCT述語>” 

i) 

機能T152“否定付きDISTINCT述語”なしでは,適合するSQL言語は,NOTを直に含む

<DISTINCT述語部分2>を含んではならない。 

202) 機能T171“表定義中のLIKE句”に対する規定 

a) “11.3 <表定義>” 

i) 

機能T171“表定義中のLIKE句”なしでは,適合するSQL言語は,<LIKE句>を含んではなら

ない。 

203) 機能T172“表定義中のAS副問合せ句”に対する規定 

a) “11.3 <表定義>” 

i) 

機能T172“表定義中のAS副問合せ句”なしでは,適合するSQL言語は,<AS副問合せ句>を

含んではならない。 

204) 機能T173“表定義中の拡張LIKE句”に対する規定 

a) “11.3 <表定義>” 

984 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能T173“表定義中の拡張LIKE句”なしでは,適合するSQL言語中で,<LIKE句>は,<LIKE

選択肢の並び>を含んではならない。 

205) 機能T174“識別列”に対する規定 

a) “11.4 <列定義>” 

i) 

機能T174“識別列”なしでは,適合するSQL言語は,<識別列指定>を含んではならない。 

b) “11.20 <識別列指定変更>” 

i) 

機能T174“識別列”なしでは,適合するSQL言語中で,<列定義変更>は,<識別列指定変更>

を含んではならない。 

206) 機能T175“生成列”に対する規定 

a) “11.4 <列定義>” 

i) 

機能T175“生成列”なしでは,適合するSQL言語は,<生成句>を含んではならない。 

207) 機能T176“順序数生成子提供”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子名>を含んで

はならない。 

b) “6.14 <次値式>” 

i) 

機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<次値式>を含んではならな

い。 

c) “11.72 <順序数生成子定義>” 

i) 

機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子定義>を含ん

ではならない。 

d) “11.73 <順序数生成子変更文>” 

i) 

機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子変更文>を含

んではならない。 

e) “11.74 <順序数生成子削除文>” 

i) 

機能T176“順序数生成子提供”なしでは,適合するSQL言語は,<順序数生成子削除文>を含

んではならない。 

208) 機能T177“順序数生成子提供:単純再開始選択肢”に対する規定 

a) “11.73 <順序数生成子変更文>” 

i) 

機能T177“順序数生成子提供:単純再開始選択肢”なしでは,適合するSQL言語中で,<順序

数生成子変更文>に含まれる<順序数生成子変更RESTART選択肢>は,<順序数生成子再開始値

>を含まなければならない。 

209) 機能T178“識別列:単純再開始選択肢”に対する規定 

a) “11.20 <識別列指定変更>” 

i) 

機能T178“識別列:単純再開始選択肢”なしでは,適合するSQL言語中で,<識別列指定変更

>に含まれる<順序数生成子変更RESTART選択肢>は,<順序数生成子再開始値>を含まなけれ

ばならない。 

210) 機能T180“システムバージョン表”に対する規定 

a) “7.6 <表参照>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,<問合せシステム時刻期

985 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

間指定>を含んではならない。 

b) “11.3 <表定義>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,“WITH <SYSTEM 

VERSIONING句>”,又はSYSTEM̲TIMEを指定する<表期間定義>を含んではならない。 

c) “11.4 <列定義>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,<システム時刻期間開始

列指定>又は<システム時刻期間終了列指定>を含んではならない。 

d) “11.27 <表期間定義追加>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,ADD <システム時刻期

間指定>を含んではならない。 

e) “11.28 <表期間定義削除>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,DROP PERIOD 

SYSTEM̲TIMEを含んではならない。 

f) 

“11.29 <SYSTEM VERSIONING句追加>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,<SYSTEM VERSIONING

句追加>を含んではならない。 

g) “11.30 <SYSTEM VERSIONING句削除>” 

i) 

機能T180“システムバージョン表”なしでは,適合するSQL言語は,<SYSTEM VERSIONING

句削除>を含んではならない。 

211) 機能T181“適用業務時刻期間表”に対する規定 

a) “11.3 <表定義>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<適用業務時刻期間指定>

を含む<表期間定義>を含んではならない。 

b) “11.7 <一意性制約定義>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<WITHOUT OVERLAPS指

定>を含んではならない。 

c) “11.8 <参照制約定義>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<参照PERIOD指定>を含

んではならない。 

ii) 機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<被参照PERIOD指定>を

含んではならない。 

d) “11.27 <表期間定義追加>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,ADD <適用業務時刻期間

指定>を含んではならない。 

e) “11.28 <表期間定義削除>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語は,<適用業務時刻期間名>を

含む<表期間定義削除>を含んではならない。 

f) 

“14.9 <DELETE文:探索>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語中で,<DELETE文:探索>は,

FOR PORTION OFを含んではならない。 

986 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) “14.14 <UPDATE文:探索>” 

i) 

機能T181“適用業務時刻期間表”なしでは,適合するSQL言語中で,<UPDATE文:探索>は,

FOR PORTION OFを含んではならない。 

212) 機能T191“参照動作RESTRICT”に対する規定 

a) “11.8 <参照制約定義>” 

i) 

機能T191“参照動作RESTRICT”なしでは,適合するSQL言語は,RESTRICTを含む<参照動

作>を含んではならない。 

213) 機能T201“参照制約のための比較可能なデータ型”に対する規定 

a) “11.8 <参照制約定義>” 

i) 

機能T201“参照制約のための比較可能なデータ型”なしでは,適合するSQL言語は,各参照

列のデータ型が,対応している被参照列のデータ型と同じでない<参照列リスト>を含んではな

らない。 

注記592 “9.12 グループ化操作”の適合性規則も適用する。 

214) 機能T211“基本トリガ能力”に対する規定 

a) “7.6 <表参照>” 

i) 

機能T211“基本トリガ能力”なしでは,適合するSQL言語は,<遷移表名>を含んではならな

い。 

b) “11.49 <トリガ定義>” 

i) 

機能T211“基本トリガ能力”なしでは,適合するSQL言語は,<トリガ定義>を含んではなら

ない。 

c) “11.50 <トリガ削除文>” 

i) 

機能T211“基本トリガ能力”なしでは,適合するSQL言語は,<トリガ削除文>を含んではな

らない。 

d) “12.3 <権限>” 

i) 

機能T211“基本トリガ能力”なしでは,適合するSQL言語は,TRIGGERを含む<動作>を含ん

ではならない。 

215) 機能T212“拡張トリガ能力”に対する規定 

a) “11.49 <トリガ定義>” 

i) 

機能T212“拡張トリガ能力”なしでは,適合するSQL言語中で,<被トリガ動作>は,FOR EACH 

ROWを含まなければならない。 

216) 機能T213“INSTEAD OFトリガ”に対する規定 

a) “11.49 <トリガ定義>” 

i) 

機能T213“INSTEAD OFトリガ”なしでは,適合するSQL言語中で,<トリガ動作時期>は,

INSTEAD OFを直に含んではならない。 

217) 機能T231“敏感カーソル”に対する規定 

a) “14.2 <カーソル特性>” 

i) 

機能T231“敏感カーソル”なしでは,適合するSQL言語は,SENSITIVEを直に含む<カーソル

感度>を含んではならない。 

ii) 機能F791“鈍感カーソル”又は機能T231“敏感カーソル”なしでは,適合するSQL言語は,

ASENSITIVEを直に含む<カーソル感度>を含んではならない。 

987 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

218) 機能T241“START TRANSACTION文”に対する規定 

a) “17.1 <START TRANSACTION文>” 

i) 

機能T241“START TRANSACTION文”なしでは,適合するSQL言語は,<START TRANSACTION

文>を含んではならない。 

219) 機能T251“SET TRANSACTION文:LOCAL選択肢”に対する規定 

a) “17.2 <SET TRANSACTION文>” 

i) 

機能T251“SET TRANSACTION文:LOCAL選択肢”なしでは,適合するSQL言語は,LOCAL

を直に含む<SET TRANSACTION文>を含んではならない。 

220) 機能T261“連鎖トランザクション”に対する規定 

a) “17.7 <COMMIT文>” 

i) 

機能T261“連鎖トランザクション”なしでは,適合するSQL言語は,CHAINを直に含む

<COMMIT文>を含んではならない。 

b) “17.8 <ROLLBACK文>” 

i) 

機能T261“連鎖トランザクション”なしでは,適合するSQL言語は,CHAINを直に含む

<ROLLBACK文>を含んではならない。 

221) 機能T271“保存点”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T271“保存点”なしでは,適合するSQL言語は,<保存点名>を含んではならない。 

b) “17.5 <SAVEPOINT文>” 

i) 

機能T271“保存点”なしでは,適合するSQL言語は,<SAVEPOINT文>を含んではならない。 

c) “17.6 <RELEASE SAVEPOINT文>” 

i) 

機能T271“保存点”なしでは,適合するSQL言語は,<RELEASE SAVEPOINT文>を含んでは

ならない。 

d) “17.8 <ROLLBACK文>” 

i) 

機能T271“保存点”なしでは,適合するSQL言語は,<SAVEPOINT句>を含んではならない。 

222) 機能T272“拡張保存点管理”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T272“拡張保存点管理”なしでは,適合するSQL言語は,<保存点水準指示>を含む<ルー

チン特性の並び>を含んではならない。 

223) 機能T281“列単位のSELECT権限”に対する規定 

a) “12.3 <権限>” 

i) 

機能T281“列単位のSELECT権限”なしでは,適合するSQL言語中で,SELECTを含む<動作

>は,<権限列リスト>を含んではならない。 

224) 機能T285“拡張導出列名”に対する規定 

a) “7.12 <問合せ指定>” 

i) 

機能T285“拡張導出列名”なしでは,適合するSQL言語中で,<選択リスト>中の<導出列>が

<AS句>を指定しないで,かつ,その<導出列>の<値式>が単一の列参照でないならば,その列

の<列名>は,処理系依存とする。 

225) 機能T301“関数従属性”に対する規定 

a) “6.7 <列参照>” 

988 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能T301“関数従属性”なしでは,適合するSQL言語中で,QCRがグループ不変列参照なら

ば,QCRは,QCRの修飾する問合せのグループ化列への参照でなければならない。 

b) “6.9 <集合関数指定>” 

i) 

機能T301“関数従属性”なしでは,適合するSQL言語中で,CRがSFSの集約化列参照であ

り,CRの修飾する問合せQQがSFSの集約問合せでなく,QQがグループ化され,かつ,QQ

の<HAVING句>,<WINDOW句>又は<選択リスト>にSFSが含まれるならば,CRは,QQのグ

ループ化列への参照でなければならない。 

c) “7.10 <HAVING句>” 

i) 

機能T301“関数従属性”なしでは,適合するSQL言語中で,<探索条件>に直接含まれる各列

参照は,次のうちのいずれか一つでなければならない。 

1) Tのグループ化列への曖昧さのない参照。 

2) 外への参照。 

ii) 機能T301“関数従属性”なしでは,適合するSQL言語中で,<探索条件>中の<問合せ式>に含

まれ,Tの列を参照する各列参照は,次のうちのいずれか一つでなければならない。 

1) Tのグループ化列への曖昧さのない参照。 

2) <集合関数指定>の集約化引数中に含まれる。 

d) “7.11 <WINDOW句>” 

i) 

機能T301“関数従属性”なしでは,適合するSQL言語中で,Tがグループ表ならば,Tの列を

参照する<WINDOW句>に含まれる各列参照は,Tのグループ化列に対する参照であるか,又は

<集合関数指定>の集約化引数に含まれなければならない。 

e) “7.12 <問合せ指定>” 

i) 

機能T301“関数従属性”なしでは,適合するSQL言語中で,Tがグループ表ならば,<選択リ

スト>に含まれる各<値式>中の,Tの列を参照する各<列参照>は,グループ化列を参照するか,

又は<集合関数指定>の集約化引数中で指定されなければならない。 

f) 

“20.4 <GET DESCRIPTOR文>” 

i) 

機能T301“関数従属性”なしでは,適合するSQL言語は,KEY̲MEMBERを含む<記述子項目

名>を含んではならない。 

226) 機能T312“OVERLAY関数”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能T312“OVERLAY関数”なしでは,適合するSQL言語は,<文字OVERLAY関数>を含ん

ではならない。 

ii) 機能T312“OVERLAY関数”なしでは,適合するSQL言語は,<2進オクテットOVERLAY関

数>を含んではならない。 

227) 機能T323“外部ルーチンのための陽に指定される安全保護”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T323“外部ルーチンのための陽に指定される安全保護”なしでは,適合するSQL言語は,

<EXTERNAL SECURITY句>を含んではならない。 

228) 機能T324“SQLルーチンのための陽に指定される安全保護”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T324“SQLルーチンのための陽に指定される安全保護”なしでは,適合するSQL言語は,

989 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

<権利句>を含んではならない。 

229) 機能T325“修飾付きSQLパラメタ参照”に対する規定 

a) “6.6 <識別子鎖>” 

i) 

機能T325“修飾付きSQLパラメタ参照”なしでは,適合するSQL言語は,最初の<識別子>が

<ルーチン名>の<被修飾識別子>であるSQLパラメタ参照を含んではならない。 

b) “7.12 <問合せ指定>” 

i) 

機能T325“修飾付きSQLパラメタ参照”なしでは,適合するSQL言語は,指示対象がSQLパ

ラメタで,かつ,最初の<識別子>が<ルーチン名>の<被修飾識別子>である<被アスタリスク付

け識別子鎖>を含んではならない。 

230) 機能T326“表関数”に対する規定 

a) “6.41 <マルチ集合値構成子>” 

i) 

機能T326“表関数”なしでは,適合するSQL言語中で,<マルチ集合値構成子>は,<問合せに

よる表値構成子>を含んではならない。 

b) “7.6 <表参照>” 

i) 

機能T326“表関数”なしでは,適合するSQL言語は,<表関数導出表>を含んではならない。 

c) “11.60 <SQL呼出しルーチン>” 

i) 

機能T326“表関数”なしでは,適合するSQL言語は,<戻りTABLE型>を含んではならない。 

231) 機能T331“基本役割”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T331“基本役割”なしでは,適合するSQL言語は,<役割名>を含んではならない。 

b) “12.4 <役割定義>” 

i) 

機能T331“基本役割”なしでは,適合するSQL言語は,<役割定義>を含んではならない。 

c) “12.5 <GRANT役割文>” 

i) 

機能T331“基本役割”なしでは,適合するSQL言語は,<GRANT役割文>を含んではならな

い。 

d) “12.6 <役割削除文>” 

i) 

機能T331“基本役割”なしでは,適合するSQL言語は,<役割削除文>を含んではならない。 

e) “12.7 <REVOKE文>” 

i) 

機能T331“基本役割”なしでは,適合するSQL言語は,<REVOKE役割文>を含んではならな

い。 

f) 

“19.3 <SET ROLE文>” 

i) 

機能T331“基本役割”なしでは,適合するSQL言語は,<SET ROLE文>を含んではならない。 

232) 機能T332“拡張役割”に対する規定 

a) “6.4 <値指定>及び<相手指定>” 

i) 

機能T332“拡張役割”なしでは,適合するSQL言語は,CURRENT̲ROLEを含んではならな

い。 

b) “11.1 <スキーマ定義>” 

i) 

機能T332“拡張役割”なしでは,適合するSQL言語中で,<スキーマ認可識別子>は,<役割名

>であってはならない。 

c) “11.5 <DEFAULT句>” 

990 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

機能T332“拡張役割”なしでは,適合するSQL言語は,CURRENT̲ROLEを含む<既定値選択

肢>を含んではならない。 

d) “12.3 <権限>” 

i) 

機能T332“拡張役割”なしでは,適合するSQL言語は,<権限付与者>を含んではならない。 

e) “12.4 <役割定義>” 

i) 

機能T332“拡張役割”なしでは,適合するSQL言語は,WITH ADMINを直に含む<役割定義>

を含んではならない。 

f) 

“12.8 権限付与者決定” 

i) 

機能T332“拡張役割”なしでは,適合するSQL言語は,<権限付与者>を含んではならない。 

233) 機能T341“SQL呼出し関数及びSQL呼出し手続のオーバロード”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T341“SQL呼出し関数及びSQL呼出し手続のオーバロード”なしでは,適合するSQL言

語は,ルーチン名が<スキーマ修飾付きルーチン名>であるルーチン記述子を,<スキーマ修飾付

きルーチン名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマが含む<スキーマルーチン>を含んではならない。 

234) 機能T351“囲み注釈”に対する規定 

a) “5.2 <トークン>及び<分離符号>” 

i) 

機能T351“囲み注釈”なしでは,適合するSQL言語は,<囲み注釈>を含んではならない。 

235) 機能T431“拡張グループ化能力”に対する規定 

a) “6.9 <集合関数指定>” 

i) 

機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<グループ化操作>を含ん

ではならない。 

b) “7.9 <GROUP BY句>” 

i) 

機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<ROLLUPリスト>を含ん

ではならない。 

ii) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<CUBEリスト>を含んで

はならない。 

iii) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<GROUPING SETS指定>

を含んではならない。 

iv) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<空グループ化集合>を含

んではならない。 

v) 機能T431“拡張グループ化能力”なしでは,適合するSQL言語は,<グループ化列参照リスト

>を含む<通常グループ化集合>を含んではならない。 

236) 機能T432“入れ子及び連結GROUPING SETS”に対する規定 

a) “7.9 <GROUP BY句>” 

i) 

機能T432“入れ子及び連結GROUPING SETS”なしでは,適合するSQL言語は,<GROUPING 

SETS指定>を含む<グループ化集合リスト>を含んではならない。 

ii) 機能T432“入れ子及び連結GROUPING SETS”なしでは,適合するSQL言語は,<GROUP BY

句>に単純に含まれる唯一の<グループ化要素>ではない<GROUPING SETS指定> GSSを単純に

含む<GROUP BY句>を含んではならない。 

991 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

注記593 “9.12 グループ化操作”の適合性規則も適用する。 

237) 機能T433“複数引数GROUPING関数”に対する規定 

a) “6.9 <集合関数指定>” 

i) 

機能T433“複数引数GROUPING関数”なしでは,適合するSQL言語は,二つ以上の<列参照

>を含む<グループ化操作>を含んではならない。 

238) 機能T434“GROUP BY DISTINCT”に対する規定 

a) “7.9 <GROUP BY句>” 

i) 

機能T434“GROUP BY DISTINCT”なしでは,適合するSQL言語は,<集合限定子>を単純に含

む<GROUP BY句>を含んではならない。 

239) 機能T441“ABS及びMOD関数”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能T441“ABS及びMOD関数”なしでは,適合するSQL言語は,<絶対値式>を含んではな

らない。 

ii) 機能T441“ABS及びMOD関数”なしでは,適合するSQL言語は,<剰余式>を含んではなら

ない。 

240) 機能T461“対称的BETWEEN述語”に対する規定 

a) “8.3 <BETWEEN述語>” 

i) 

機能T461“対称的BETWEEN述語”なしでは,適合するSQL言語は,SYMMETRIC又は

ASYMMETRICを単純に含む<BETWEEN述語>を含んではならない。 

注記594 <BETWEEN述語>は,順序付け操作なので,“9.14 順序付け操作”の適合性規則も

適用する。 

241) 機能T471“結果集合戻り値”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T471“結果集合戻り値”なしでは,適合するSQL言語は,<戻り結果集合特性>を含んで

はならない。 

b) “14.2 <カーソル特性>” 

i) 

機能T471“結果集合戻り値”なしでは,適合するSQL言語は,<カーソル戻り可能性>を含ん

ではならない。 

c) “20.16 <受取りカーソル割当て文>” 

i) 

機能T471“結果集合戻り値”なしでは,適合するSQL言語は,<受取りカーソル割当て文>を

含んではならない。 

242) 機能T472“DESCRIBE CURSOR”に対する規定 

a) “20.9 <記述文>” 

i) 

機能T472“DESCRIBE CURSOR”なしでは,適合するSQL言語は,<カーソル名>を含む<記述

対象>を含む<出力DESCRIBE文>を含んではならない。 

243) 機能T491“LATERAL導出表”に対する規定 

a) “7.6 <表参照>” 

i) 

機能T491“LATERAL導出表”なしでは,適合するSQL言語は,<横参照導出表>を含んではな

らない。 

244) 機能T495“データ変更及び取出しの一体化”に対する規定 

992 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) “7.6 <表参照>” 

i) 

機能T495“データ変更及び取出しの一体化”なしでは,適合するSQL言語は,<データ変更差

分表>を含んではならない。 

245) 機能T501“拡張EXISTS述語”に対する規定 

a) “8.10 <EXISTS述語>” 

i) 

機能T501“拡張EXISTS述語”なしでは,適合するSQL言語は,<表副問合せ>に直接含まれ

る<問合せ指定>の<選択リスト>が<アスタリスク>又は単一の<導出列>のいずれかから成らな

い<表副問合せ>を単純に含む<EXISTS述語>を含んではならない。 

246) 機能T502“期間述語”に対する規定 

a) “8.20 <期間述語>” 

i) 

機能T502“期間述語”なしでは,適合するSQL言語は,<期間述語>を含んではならない。 

247) 機能T511“トランザクション数”に対する規定 

a) “23.1 <GET DIAGNOSTICS文>” 

i) 

機能T511“トランザクション数”なしでは,適合するSQL言語は,

TRANSACTIONS̲COMMITTED

TRANSACTIONS̲ROLLED̲BACK

TRANSACTION̲ACTIVEを含む<文情報項目名>を含んではならない。 

248) 機能T521“CALL文中の名前付き引数”に対する規定 

a) “10.4 <ルーチン呼出し>” 

i) 

機能T521“CALL文中の名前付き引数”なしでは,適合するSQL言語は,<名前付き引数指定

>を含んではならない。 

249) 機能T522“SQL呼出し手続の入力パラメタのための既定値”に対する規定 

a) “10.4 <ルーチン呼出し>” 

i) 

機能T522“SQL呼出し手続の入力パラメタのための既定値”なしでは,適合するSQL言語中

で,<SQL引数>は,<文脈型付き値指定>であってはならない。 

b) “11.60 <SQL呼出しルーチン>” 

i) 

機能T522“SQL呼出し手続の入力パラメタのための既定値”なしでは,適合するSQL言語は,

<パラメタ既定値>を含んではならない。 

250) 機能T551“既定構文のための省略可能なキーワード”に対する規定 

a) “7.13 <問合せ式>” 

i) 

機能T551“既定構文のための省略可能なキーワード”なしでは,適合するSQL言語は,UNION 

DISTINCT,EXCEPT DISTINCT又はINTERSECT DISTINCTを含んではならない。 

b) “14.2 <カーソル特性>” 

i) 

機能T551“既定構文のための省略可能なキーワード”なしでは,適合するSQL言語は,WITHOUT 

HOLDを直に含む<カーソル保持可能性>を含んではならない。 

251) 機能T561“保持可能位置付け子”に対する規定 

a) “14.17 <FREE LOCATOR文>” 

i) 

機能T561“保持可能位置付け子”なしでは,適合するSQL言語は,<FREE LOCATOR文>を含

んではならない。 

b) “14.18 <HOLD LOCATOR文>” 

i) 

機能T561“保持可能位置付け子”なしでは,適合するSQL言語は,<HOLD LOCATOR文>を

993 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

含んではならない。 

252) 機能T571“配列戻し外部SQL呼出し関数”に対する規定 

a) “11.51 <利用者定義型定義>” 

i) 

機能T571“配列戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,次のいずれかの

条件を満たす<RETURNS句>を含む<メソッド指定>を含んではならない。 

1) <結果CAST FROM型>が指定され,それが<配列型>を単純に含み,かつ,<位置付け子標識

>を含まない。 

2) <結果CAST FROM型>が指定されず,<戻りデータ型>が<配列型>を単純に含み,かつ,<位

置付け子標識>を含まない。 

b) “11.60 <SQL呼出しルーチン>” 

i) 

機能T571“配列戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,配列戻し外部関

数を定義する<SQL呼出しルーチン>を含んではならない。 

253) 機能T572“マルチ集合戻し外部SQL呼出し関数”に対する規定 

a) “11.51 <利用者定義型定義>” 

i) 

機能T572“マルチ集合戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,次のいず

れかの条件を満たす<RETURNS句>を含む<メソッド指定>を含んではならない。 

1) <結果CAST FROM型>が指定され,それが<マルチ集合型>を単純に含み,かつ,<位置付け

子標識>を含まない。 

2) <結果CAST FROM型>が指定されず,<戻りデータ型>が<マルチ集合型>を単純に含み,か

つ,<位置付け子標識>を含まない。 

b) “11.60 <SQL呼出しルーチン>” 

i) 

機能T572“マルチ集合戻し外部SQL呼出し関数”なしでは,適合するSQL言語は,マルチ集

合戻し外部関数を定義する<SQL呼出しルーチン>を含んではならない。 

254) 機能T581“正規表現部分列関数”に対する規定 

a) “6.30 <データ列値関数>” 

i) 

機能T581“正規表現部分列関数”なしでは,適合するSQL言語は,<正規表現部分列関数>を

含んではならない。 

255) 機能T591“潜在的にナルの列のUNIQUE制約”に対する規定 

a) “11.7 <一意性制約定義>” 

i) 

機能T591“潜在的にナルの列のUNIQUE制約”なしでは,適合するSQL言語中で,UNIQUE

が指定されるならば,<一意列リスト>に含まれる<列名>をもつ各列に対する<列定義>は,NOT 

NULLを含まなければならない。 

注記595 “9.12 グループ化操作”の適合性規則も適用する。 

256) 機能T601“局所カーソル参照”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T601“局所カーソル参照”なしでは,適合するSQL言語中で,<カーソル名>は,<局所修

飾子>を含んではならない。 

257) 機能T611“基本OLAP演算”に対する規定 

a) “6.10 <ウィンドウ関数>” 

i) 

機能T611“基本OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ関数>を含んでは

994 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ならない。 

b) “7.11 <WINDOW句>” 

i) 

機能T611“基本OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ指定>を含んでは

ならない。 

c) “10.10 <ソート指定リスト>” 

i) 

機能T611“基本OLAP操作”なしでは,適合するSQL言語は,<ナル順序付け>を含んではな

らない。 

注記596 “9.14 順序付け操作”の適合性規則も適用する。 

258) 機能T612“高度OLAP演算”に対する規定 

a) “5.4 名前及び識別子” 

i) 

機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ名>を含んではな

らない。 

b) “6.10 <ウィンドウ関数>” 

i) 

機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ名>を含んではな

らない。 

ii) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,PERCENT̲RANK又はCUME̲DIST

を含んではならない。 

iii) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,ウィンドウ順序付け句を含ま

ないウィンドウ構造記述子をもつ<ウィンドウ名又は指定>を直に含み,かつ,ROW̲NUMBER

を単純に含む<ウィンドウ関数>を含んではならない。 

c) “6.28 <数値関数>” 

i) 

機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<幅バケット関数>を含んでは

ならない。 

d) “7.11 <WINDOW句>” 

i) 

機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<WINDOW句>を含んではなら

ない。 

ii) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<既存ウィンドウ名>を含んで

はならない。 

iii) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<ウィンドウ枠除外>を含んで

はならない。 

注記597 “9.12 グループ化操作”の適合性規則も適用する。 

e) “10.9 <集約関数>” 

i) 

機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<仮説集合関数>又は<逆分布関

数>を含んではならない。 

ii) 機能T612“高度OLAP演算”なしでは,適合するSQL言語は,<FILTER句>を含んではならな

い。 

259) 機能T613“サンプリング”に対する規定 

a) “7.6 <表参照>” 

i) 

機能T613“サンプリング”なしでは,適合するSQL言語は,<標本句>を含んではならない。 

260) 機能T614“NTILE関数”に対する規定 

995 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) “6.10 <ウィンドウ関数>” 

i) 

機能T614“NTILE関数”なしでは,適合するSQL言語は,<NTILE関数>を含んではならない。 

261) 機能T615“LEAD又はLAG関数”に対する規定 

a) “6.10 <ウィンドウ関数>” 

i) 

機能T615“LEAD又はLAG関数”なしでは,適合するSQL言語は,<LEAD又はLAG関数>

を含んではならない。 

262) 機能T616“LEAD及びLAG関数のナルの扱いの選択肢”に対する規定 

a) “6.10 <ウィンドウ関数>” 

i) 

機能T616“LEAD及びLAG関数のナルの扱いの選択肢”なしでは,適合するSQL言語中で,

<LEAD又はLAG関数>は,<ナルの扱い>を含んではならない。 

263) 機能T617“FIRST̲VALUE又はLAST̲VALUE関数”に対する規定 

a) “6.10 <ウィンドウ関数>” 

i) 

機能T617“FIRST̲VALUE又はLAST̲VALUE関数”なしでは,適合するSQL言語は,

<FIRST̲VALUE又はLAST̲VALUE関数>を含んではならない。 

264) 機能T618“NTH̲VALUE関数”に対する規定 

a) “6.10 <ウィンドウ関数>” 

i) 

機能T618“NTH̲VALUE関数”なしでは,適合するSQL言語は,<NTH̲VALUE関数>を含ん

ではならない。 

265) 機能T619“入れ子ウィンドウ関数”に対する規定 

a) “6.11 <入れ子ウィンドウ関数>” 

i) 

機能T619“入れ子ウィンドウ関数”なしでは,適合するSQL言語は,<入れ子ウィンドウ関数

>を含んではならない。 

266) 機能T620“WINDOW句:GROUPS選択肢”に対する規定 

a) “7.11 <WINDOW句>” 

i) 

機能T620“WINDOW句:GROUPS選択肢”なしでは,適合するSQL言語は,GROUPSを指

定する<ウィンドウ枠単位>を含んではならない。 

267) 機能T621“拡張数関数”に対する規定 

a) “6.28 <数値関数>” 

i) 

機能T621“拡張数関数”なしでは,適合するSQL言語は,<自然対数>を含んではならない。 

ii) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<指数関数>を含んではならない。 

iii) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<べき関数>を含んではならない。 

iv) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<平方根>を含んではならない。 

v) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<下限関数>を含んではならない。 

vi) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<上限関数>を含んではならない。 

b) “10.9 <集約関数>” 

i) 

機能T621“拡張数関数”なしでは,適合するSQL言語は,STDDEV̲POP,STDDEV̲SAMP,

VAR̲POP又はVAR̲SAMPを直に含む<計算操作>を含んではならない。 

ii) 機能T621“拡張数関数”なしでは,適合するSQL言語は,<2項集合関数種別>を含んではなら

ない。 

268) 機能T641“複数列代入”に対する規定 

996 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) “14.15 <設定句リスト>” 

i) 

機能T641“複数列代入”なしでは,適合するSQL言語は,<複数列代入>を含んではならない。 

269) 機能T651“SQLルーチン中のSQLスキーマ文”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T651“SQLルーチン中のSQLスキーマ文”なしでは,適合するSQL言語は,SQLスキー

マ文を含む<SQLルーチン本体>を含んではならない。 

270) 機能T652“SQLルーチン中の動的SQL文”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T652“SQLルーチン中の動的SQL文”なしでは,適合するSQL言語は,動的SQL文を

含む<SQLルーチン本体>を含んではならない。 

271) 機能T653“外部ルーチン中のSQLスキーマ文”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T653“外部ルーチン中のSQLスキーマ文”なしでは,適合するSQL言語は,SQLスキー

マ文が現れるプログラムを識別する<外部ルーチン名>を含んではならない。 

272) 機能T654“外部ルーチン中の動的SQL文”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T654“外部ルーチン中の動的SQL文”なしでは,適合するSQL言語は,動的SQL文が現

れるプログラムを識別する<外部ルーチン名>を含んではならない。 

273) 機能T655“循環的依存ルーチン”に対する規定 

a) “11.60 <SQL呼出しルーチン>” 

i) 

機能T655“循環的依存ルーチン”なしでは,適合するSQL言語は,<SQL呼出しルーチン>に

よって指定されるSQL呼出しルーチンのルーチン記述子に当該ルーチンが一般に依存してい

る<ルーチン呼出し>を含む<SQLルーチン本体>を含んではならない。 

997 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書B 

(参考) 

処理系定義要素 

この附属書は,ISO/IEC 9075-3の“附属書B 処理系定義要素”によって修正される。 

この附属書は,ISO/IEC 9075-4の“附属書B 処理系定義要素”によって修正される。 

この附属書は,ISO/IEC 9075-9の“附属書B 処理系定義要素”によって修正される。 

この附属書は,ISO/IEC 9075-10の“附属書B 処理系定義要素”によって修正される。 

この附属書は,ISO/IEC 9075-11の“附属書B 処理系定義要素”によって修正される。 

この附属書は,ISO/IEC 9075-13の“附属書B 処理系定義要素”によって修正される。 

この附属書は,ISO/IEC 9075-14の“附属書B 処理系定義要素”によって修正される。 

この附属書は,この規格の本体で処理系定義として識別している機能を参照する。 

1) “4.2.1 文字列の導入” 

a) <キーワード>のNATIONAL CHARACTERによって表現される文字列の下位型に関連付けられる

特定の文字集合は,処理系定義とする。 

b) ある文字集合から別の文字集合へのUCSでない文字列式の変換が自動的に行われる環境は,処理

系定義とする。 

2) “4.2.4 文字レパートリ” 

a) SQL処理系は,一つ以上の文字レパートリを提供する。これらの文字レパートリは,規格によっ

て定義されてもよいし,処理系定義であってもよい。 

b) SQL̲TEXTと名前付けられた文字集合は,全ての<SQL言語文字>と,SQL処理系によって提供さ

れる全ての文字集合中の全ての文字とを含む,国際文字集合のレパートリの処理系定義の部分集

合とする。 

c) SQL̲IDENTIFIERと名前付けられた文字集合は,<SQL言語文字>,及び<通常識別子>で用いるた

めにSQL処理系が提供する他の全ての文字から成る処理系定義の文字レパートリとする。 

3) “4.2.5 文字符号化形式” 

a) SQL̲CHARACTER文字符号化形式での文字符号化は,処理系定義とする。 

b) SQL̲TEXT文字符号化形式での文字符号化は,処理系定義とする。 

c) SQL̲IDENTIFIER文字符号化形式での文字符号化は,処理系定義とする。 

d) SQL処理系は,提供する各文字レパートリに対して,一つ以上の文字符号化形式を提供する。こ

れらの文字符号化形式は,規格によって定義されてもよいし,処理系定義であってもよい。 

4) “4.2.6 照合順” 

a) 規格定義の照合順を含めて,SQL処理系によって提供される照合順は,処理系定義とする。 

b) SQL̲CHARACTER照合順によって指定される順序は,処理系定義とする。 

c) SQL̲TEXT照合順によって指定される順序は,処理系定義とする。 

d) SQL̲IDENTIFIER照合順によって指定される順序は,処理系定義とする。 

5) “4.2.7 文字集合” 

a) UCS̲BASIC又はUNICODEのどちらの照合順が,UTF8,UTF16及びUTF32文字集合に対する既

定であるかは,処理系定義とする。 

998 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

6) “4.2.8 国際文字集合” 

a) <NORMALIZE関数>及び<NORMALIZED述語>を除いて,非正規化UCS文字列に関するどの演

算の結果も,処理系定義とする。 

7) “4.3.2 2進オクテット列の比較” 

a) 長大オブジェクト2進オクテット列値以外の2進オクテット列値に対して,等価でない二つの2

進オクテット列値を比較するとき,後続するXʼ00ʼを意味があるとみなすかどうかは,処理系定義

とする。 

8) “4.4.2 数の性質” 

a) 後続する桁が数値から取り除かれるとき,切捨てが行われるか又は丸めが行われるかは,処理系

定義とする。 

b) 切捨て又は丸めによって近似が得られ,二つ以上の近似があるとき,どの近似が選択されるかは,

処理系定義とする。 

c) 与えられた概数型に対して,丸め又は切捨てによって得られる近似をどの数値がもつかは,処理

系定義とする。 

d) 算術の通常の規則が適用される範囲の境界は,処理系定義とする。 

e) 数データ型間で変換が行われるとき,最下位有効桁が失われるならば,丸めが発生するか又は切

捨てが発生するかは,処理系定義とする。 

9) “4.6.1 日時及び時間隔の導入” 

a) 日時型又は時間隔型Tに対する日時又は時間隔の値Dの丸めによって得られる近似は,T中の次

のような値Vとする。Dと数値Vとの間の差の絶対値がT中の二つの連続する日時又は時間隔の

値の間の差の絶対値の半分以下である。そのような値Vが二つ以上あるならば,どれをとるかは,

処理系定義とする。 

10) “4.6.2 日時” 

a) SQL処理系がうるう秒を提供するかどうか,及びそれが日時及び時間隔の算術演算の結果に反映

されるかどうかは,処理系定義とする。 

11) “4.9.1 参照型の導入” 

a) ホスト変数中では,REF値は,Nオクテットの値として実体化される。ここで,Nは,処理系定

義とする。 

12) “4.13 列,フィールド及び属性” 

a) 列の値がナルであり得ないことをSQL処理系が正しく推論できるようにする処理系定義の規則

が存在するならば,実表の列は,ナルでないことが分かる。 

13) “4.15.10 表を含む演算” 

a) <表参照>が<標本句>を含み,<標本句>が<REPEATABLE句>を含むならば,処理系定義の幾つか

の条件を満たすという条件で,その<表参照>の繰返し実行は,与えられた<繰返し引数>に対して

同一行をもつ結果表を戻す。 

14) “4.18.3 表制約” 

a) 参照制約記述子中の参照列の名前のリスト及び被参照列の名前のリストの順序付けは,処理系定

義とするが,対応する列の名前は,各リスト中の対応する位置を占めなければならない。 

15) “4.19 関数従属性” 

a) SQL処理系は,追加の知られている関数従属性を定義してもよい。 

999 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

16) “4.19.16 <問合せ式>中の知られている関数従属性” 

a) RECURSIVEが指定されるならば,BPK集合,BUC集合及び公理的でない知られている関数従属

性は,処理系定義とする。 

17) “4.23 SQLクライアントモジュール” 

a) SQLクライアントモジュールが作成又は破壊される機構は,処理系定義とする。 

b) SQLクライアントモジュールとSQLエージェントとの間の関連付けが定義される方法は,処理

系定義とする。 

c) 同じ又は異なるプログラム言語で書かれた他の翻訳単位を,翻訳単位が呼び出してもよい又は制

御を移してもよいかどうかは,処理系定義とする。 

18) “4.24 埋込み構文” 

a) 手続,サブルーチン,プログラム変数,分岐ラベル,<SQLクライアントモジュール定義>,<外部

呼出し手続>又は他のホスト言語若しくはホスト言語環境の要素の名前のために,名前空間の一

部がSQL処理系によって予約されるかどうかは,処理系定義とする。名前空間の一部がそのよう

に予約されるならば,予約される部分も,処理系定義とする。 

19) “4.26 SQLの直接起動” 

a) <直接SQL文>の起動方法,<直接SQL文>の結果として条件を引き起こす方法,診断情報にアク

セスする方法,及び結果を戻す方法は,処理系定義とする。 

20) “4.28.2 SQL呼出しルーチンの性質” 

a) 外部ルーチンの<ルーチン本体>によって識別されるプログラムの実行後,そのルーチンのパラメ

タ受渡し様式がGENERALならば,出力パラメタ(があるならば,出力パラメタ)の値,プログ

ラムから戻される値(があるならば,その値),SQLSTATEの値,及びメッセージテキスト(があ

るならば,そのメッセージテキスト)の値は,処理系定義の方法で得られる。 

21) “4.28.3 SQL呼出しルーチンの実行” 

a) 外部ルーチンの<ルーチン本体>によって識別される外部プログラムに含まれる<SQLクライアン

トモジュール定義>が<モジュールパス指定>を指定しないならば,外部ルーチンSQLパスは,処

理系定義のSQLパスとする。 

22) “4.28.5 SQL呼出し手続によって戻される結果集合” 

a) 結果集合並びRSSの存在をもたらすSQL呼出し手続SIPの呼出し元INVにRSS自体を戻しても

よいかどうかは,処理系定義とする。 

23) “4.30.2 状態パラメタ” 

a) 終了条件警告 (warning) は,この規格で規定する条件だけでなく,処理系定義の条件に対しても,

引き起こされる。 

24) “4.31 診断領域” 

a) 例外条件がSQLSTATEによって通知されるとき,その条件についての情報をこの診断領域中の空

きの条件領域に格納する。引き起こされるかもしれない別の条件によって条件領域が更に占有さ

れることになる範囲は,処理系定義とする。 

25) “4.33 カーソル” 

a) 敏感又は処理依存感度の保持可能カーソルが,後続SQLトランザクションに対して開いている状

態のまま保持されるならば,(このSQLトランザクション又はカーソルが開いている状態のまま

保持されるいずれかの後続SQLトランザクションによって)SQLデータに対して行われた著し

1000 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

い変更が,そのカーソルを閉じる前に,後続SQLトランザクション中のそのカーソルに対して可

視であるかどうかは,処理系定義とする。 

26) “4.33.1 カーソルの一般記述” 

a) 受取りカーソルの操作上の戻り可能性は,処理系定義とする。 

27) “4.35 基本安全保護モデル” 

a) オペレーティングシステム利用者への<認可識別子>の対応付けは,処理系定義とする。 

28) “4.36 SQLトランザクション” 

a) SQLスキーマ文の実行と同じSQLトランザクション内に,SQLデータ文の実行が存在してもよ

いかどうかは,処理系定義とする。存在してもよいならば,どの開いているカーソル又は遅延制

約に与える効果も,処理系定義とする。 

b) SQL処理系が回復不可能な誤りを検出し,<ROLLBACK文>の実行を暗に開始するならば,処理

系定義の例外コード (implementation-defined exception code) で例外条件が引き起こされる。 

c) SQLスキーマ文の動的実行と同じSQLトランザクション内に,<SQL動的データ文>の動的実行

が存在してもよいかどうかは,処理系定義とする。存在してもよいならば,準備された動的文に

与える効果も,処理系定義とする。 

d) 診断領域の内容,SQL記述子領域の内容,及び被準備文の状態に,<保存点指定子>を参照する

<ROLLBACK文>が影響を与えるかどうか,又はどのように影響を与えるかは,処理系定義とす

る。 

e) SQLトランザクションのトランザクション時刻印のデータ型は,処理系定義とする。 

f) 

二つ以上のSQLサーバに影響を与えるSQLトランザクションが提供されるかどうかは,処理系

定義とする。 

29) “4.37 SQLコネクション” 

a) SQLサーバにアクセスし,SQLセションを開始するために必要な,SQLサーバの位置,同一性及

び通信プロトコルを決定するために,SQL処理系が<SQLサーバ名>をどのように用いるかは,処

理系定義とする。 

30) “4.38 SQLセション” 

a) 陽に指定される<CONNECT文>の利用以外によってSQLセションが開始されるとき,処理系定義

のSQLサーバに関連付けられるSQLセションが開始される。既定SQLサーバは,処理系定義と

する。 

b) <外部呼出し手続>の呼出しが最後の動作中SQLクライアントモジュール内の最後の呼出しかど

うかをSQL処理系が決定するための機構及び規則は,処理系定義とする。 

c) SQLセションは,SQLセション内の大域一時表,作成局所一時表又は宣言局所一時表の実現値を

含む一つ以上の処理系定義のスキーマを用いる。 

d) SQLセションが開始されるとき,SQLセションの現行既定時刻帯時差として用いる処理系定義の

既定時刻帯が存在する。 

e) 陽に指定される<CONNECT文>の利用以外によってSQLセションが開始されるとき,SQLセシ

ョン利用者識別子の処理系定義の初期値が存在する。 

f) 

SQLセションが開始されるとき,<PREPARE文>及び<EXECUTE IMMEDIATE文>の実行によっ

て現行SQLセション中で動的に準備される<準備可能文>に含まれる全ての修飾なし<スキーマ名

>を実効的に修飾するために用いる名前をもつ処理系定義の既定カタログが存在する。 

1001 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

g) SQLセションが開始されるとき,<PREPARE文>及び<EXECUTE IMMEDIATE文>の実行によっ

て現行SQLセション中で動的に準備される<準備可能文>に含まれる全ての修飾なし<スキーマ修

飾付き名前>を実効的に修飾するために用いる名前をもつ処理系定義の既定スキーマが存在する。 

h) <SET PATH文>の実行の成功の前の現行SQLパスの値は,処理系定義とする。 

30.1) “4.39.1 トリガの一般記述” 

a) トリガの集合の実行順序 (order of execution) は,最も古いトリガが最初に実行されるというよう

に,それらの記述子中の作成時刻印の値の昇順とする。一つ以上のトリガが同じ時刻印の値をも

つならば,それらの実行の相対的な順序は,処理系定義とする。 

31) “4.40 クライアントサーバ処理” 

a) SQLエージェントが動作中のとき,そのSQLエージェントは,ある処理系定義の方法で,単一の

SQLクライアントに結合されている。 

32) “5.2 <トークン>及び<分離符号>” 

a) 行端標識(<改行>)は,処理系定義とする。 

b) ソース言語文字集合が<逆斜線>を含まないとき,既定の<Unicodeエスケープ文字>として用いる

文字は,処理系定義とする。 

c) (大文字小文字標準形式の)<通常識別子>と<区切り識別子>との等価性,二つの<区切り識別子>

の等価性,二つの<Unicode区切り識別子>の等価性,<Unicode区切り識別子>と<区切り識別子>

との等価性,又は(大文字小文字標準形式の)<通常識別子>と<Unicode区切り識別子>との等価

性は,大文字小文字を区別する処理系定義の照合順を用いて決定される。 

33) “5.3 <定数>” 

a) 各国文字を表現するために用いる文字集合の<文字集合名>は,処理系定義とする。 

b) <真数定数>の宣言型は,処理系定義とする。 

c) <概数定数>の宣言型は,処理系定義とする。 

d) <2進オクテット列定数>の宣言型は,処理系定義とする。 

34) “5.4 名前及び識別子” 

a) <スキーマ名句>に含まれるがSQLクライアントモジュールに含まれない<スキーマ名>が,<カタ

ログ名>を含まないならば,処理系定義の<カタログ名>が暗に想定される。 

b) <モジュール認可句>に含まれる<スキーマ名>が<カタログ名>を含まないならば,処理系定義の<

カタログ名>が暗に想定される。 

c) 正しい<認可識別子>であるそれらの<識別子>は,処理系定義とする。 

d) 正しい<カタログ名>であるそれらの<識別子>は,処理系定義とする。 

e) 全ての<符号変換名>は,処理系定義とする。 

f) 

<PREPARE文>又は<EXECUTE IMMEDIATE文>の実行によって現行SQLセション中で動的に準

備される<準備可能文>に含まれる<スキーマ名>が,<カタログ名>を含まないならば,SQLセショ

ンのための処理系定義の<カタログ名>が暗に想定される。 

g) <PREPARE文>又は<EXECUTE IMMEDIATE文>の実行によって現行SQLセション中で動的に準

備される<準備可能文>に含まれる<スキーマ修飾付き名前>が,<スキーマ名>を含まないならば,

SQLセションのための処理系定義の<スキーマ名>が暗に想定される。 

35) “6.1 <データ型>” 

a) NATIONAL CHARACTERに関連付けられる<文字集合名>は,処理系定義とする。 

1002 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) <精度>が省略されるならば,処理系定義の<精度>が暗に想定される。 

c) DECIMALとして定義されるデータ型の10進精度は,<精度>によって指定される各値に対して,

処理系定義とする。 

d) SMALLINT,INTEGER及びBIGINTとして定義されるデータ型の精度は,処理系定義とするが,

三つの全てのデータ型は,同じ基数をもつ。 

e) FLOATとして定義されるデータ型の2進精度は,<精度>によって指定される各値に対して,処理

系定義とする。 

f) 

REALとして定義されるデータ型の精度は,処理系定義とする。 

g) DOUBLE PRECISIONとして定義されるデータ型の精度は,処理系定義とするが,REALの精度よ

り大きい。 

h) どの<データ型>に対しても,<データ型>の限界は,処理系定義とする。 

i) 

文字列型及び2進オクテット列型の最大長は,処理系定義とする。 

j) 

<文字列型>に対してCHARACTER SETが指定されないならば,文字集合は,処理系定義とする。 

k) <真数型> DECIMAL及びNUMERICに対して,<精度>の最大値及び<位取り>の最大値は,処理系

定義とする。 

l) 

各真数型ENTに対して,次のような(ENT自体でもよい)ENTの標準形 (normal form) として

知られている処理系定義の真数型ENNF(ENT) が存在する。 

i) 

ENNF(ENT) のデータ型の名前がDECでも,INTでもない。 

ii) ENNF(DEC) のデータ型の名前がENNF(DECIMAL) のデータ型の名前と同じである。 

iii) ENNF(INT) のデータ型の名前がENNF(INTEGER) のデータ型の名前と同じである。 

iv) ENNF(ENT) の精度,位取り及び基数が,それぞれ,ENTの精度,位取り及び基数と同じであ

る。 

v) ENNF(ENNF(ENT)) がENNF(ENT) と同じである。 

m) <概数型> FLOATに対して,<精度>の最大値は,処理系定義とする。 

n) 各概数型ANTに対して,次のような(ANT自体でもよい)ANTの標準形 として知られている処

理系定義の概数型ANNF(ANT) が存在する。 

i) 

ANNF(ANT) の精度がANTの精度と同じである。 

ii) ANNF(ANNF(ANT)) がANNF(ANT) と同じである。 

o) <概数型> FLOAT,REAL及びDOUBLE PRECISIONに対して,指数の最大値及び最小値は,処理

系定義とする。 

p) <時刻小数秒精度>の最大値は,処理系定義とするが,6未満であってはならない。 

q) <日時型>に対する<時刻精度>及び<時刻印精度>の最大値は,同じ処理系定義の値とする。 

r) <配列型>の最大基数が省略されるならば,処理系定義の最大基数が暗に想定される。 

36) “6.4 <値指定>及び<相手指定>” 

a) <値指定> CURRENT̲USER,SESSION̲USER及びSYSTEM̲USERの文字列が可変長か又は固定

長か,及び可変長ならば,その最大長,固定長ならば,その長さは,処理系定義とする。 

b) <値指定> CURRENT̲CATALOG及びCURRENT̲SCHEMAの文字列が可変長か又は固定長か,及

び可変長ならば,その最大長,固定長ならば,その長さは,処理系定義とする。 

c) SYSTEM̲USERによって指定される値は,実行によってSYSTEM̲USERの<一般値指定>の評価

を引き起こしたSQL文を含むSQLクライアントモジュールを実行したオペレーティングシステ

1003 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ム利用者を表現する処理系定義のデータ列とする。 

d) CURRENT̲PATHのデータ型が固定長か又は可変長か,及び固定長ならば,その長さ,可変長な

らば,その最大長は,処理系定義とする。 

e) 長さ0の文字列の値が<相手指定>又は<単純相手指定>に代入されるならば,例外条件:データ例

外 − 長さ0の文字列 (zero-length character string) が引き起こされるかどうかは,処理系定義と

する。 

f) 

機能F611“標識データ型”なしでは,適合するSQL言語中で,<標識パラメタ>及び<標識変数>

の宣言型は,処理系定義の同じデータ型でなければならない。 

37) “6.9 <集合関数指定>” 

e) <グループ化操作>の精度は,処理系定義とする。 

38) “6.10 <ウィンドウ関数>” 

a) PERCENT̲RANKが指定されるならば,結果の宣言型は,処理系定義の精度をもつ概数とする。 

b) CUME̲DISTが指定されるならば,結果の宣言型は,処理系定義の精度をもつ概数とする。 

39) “6.11 <入れ子ウィンドウ関数>” 

a) <入れ子ROW̲NUMBER関数>の宣言型は,位取り0の処理系定義の真数型とする。 

40) “6.13 <CAST指定>” 

a) 真数,概数,日時又は時間隔のデータ型への型変換のとき,丸めるか又は切り捨てるかは,処理

系定義とする。 

b) 真数値から時間隔型への型変換のとき,真数値の位取りが時間隔型の小数秒精度の桁数を超える

ならば,型変換演算が変換元の値を相手の型の限界に調整するために丸め又は切捨てを行うかど

うかは,処理系定義とする。 

41) “6.27 <数値式>” 

a) 加算,減算,乗算又は除算の演算子の両方のオペランドの宣言型が真数のとき,結果の宣言型は,

処理系定義の真数型とする。 

b) 除算の演算子の両方のオペランドの宣言型が真数のとき,結果の位取りは,処理系定義とする。 

c) 算術演算子のいずれかのオペランドの宣言型が概数のとき,結果の宣言型は,処理系定義の概数

型とする。 

d) 除算を行うとき,丸めるか又は切り捨てるかは,処理系定義とする。 

42) “6.28 <数値関数>” 

a) <POSITION式>の宣言型は,位取り0の処理系定義の真数型とする。 

b) <EXTRACT式>の宣言型は,処理系定義の真数型とする。<基本日時フィールド>がSECONDを指

定するならば,位取りは,処理系定義とする。そうでなければ,位取りは,0とする。 

c) <LENGTH式>の宣言型は,位取り0の処理系定義の真数型とする。 

d) <基数式>が指定されるならば,結果の宣言型は,位取り0の処理系定義の真数型とする。 

e) <自然対数>の結果の宣言型は,処理系定義の概数とする。 

f) 

<指数関数>の結果の宣言型は,処理系定義の概数とする。 

g) <べき関数>の結果の宣言型は,処理系定義の概数とする。 

h) <下限関数>及び<上限関数>の結果の宣言型は,それらに単純に含まれる<数値式>の宣言型が真数

ならば,位取り0の処理系定義の真数型とする。そうでなければ,結果の宣言型は,処理系定義

の概数型とする。 

1004 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

i) 

<OCCURRENCES̲REGEX関数>の宣言型は,位取り0の処理系定義の真数型とする。 

j) 

<POSITION̲REGEX式>の宣言型は,位取り0の処理系定義の真数型とする。 

k) <基数式>の宣言型は,位取り0の処理系定義の真数型とする。 

l) 

<最大基数式>の宣言型は,位取り0の処理系定義の真数型とする。 

43) “6.29 <データ列値式>” 

a) <文字値式>の結果が長さ0の文字列ならば,例外条件:データ例外 − 長さ0の文字列 (zero-

length character string) が引き起こされるかどうかは,処理系定義とする。 

b) <文字因子>の文字符号化形式がUTF8,UTF16又はUTF32で,かつ,オペランドのいずれかが正

規化されていないならば,結果は,処理系定義とする。 

44) “6.30 <データ列値関数>” 

a) <文字文字変換>又は<符号変換>の最大長は,処理系定義とする。 

b) <符号変換>の結果の文字集合は,処理系定義とする。 

c) <正規化関数結果長>が指定されないならば,<NORMALIZE関数>の宣言型の最大長は,処理系定

義とする。 

d) <XQuery置換文字列>が指定されないならば,<TRANSLATE̲REGEX関数>の宣言型の最大長は,

処理系定義とする。 

45) “6.33 <時間隔値式>” 

a) (時刻帯付き又は時刻帯なしの)TIME型の二つの値の差は,(各端点を除いて)-24:00:00と

+24:00:00との間にあるように制約される。その計算は,決定的でなければならないが,この範囲

にある0でない二つの値のどちらを結果とするかは,処理系定義とする。 

b) 二つの日時の差から時間隔が生成されるとき,丸めるか又は切り捨てるかの選択は,処理系定義

とする。 

c) 結果の<時間隔先行フィールド精度>は,処理系定義とするが,<時間隔一次子>の<時間隔先行フ

ィールド精度>未満であってはならない。 

d) <時間隔先行フィールド精度>は,処理系定義とするが,<時間隔項1>の時間隔フィールド及び<時

間隔先行フィールド精度>をもつ全ての時間隔値だけでなく,<時間隔値式1>の時間隔フィールド

及び<時間隔先行フィールド精度>をもつ全ての時間隔値を表現するのにも十分でなければなら

ない。 

46) “6.35 <ブール値式>” 

a) BVEが真 (True) のとき,Xは,ナルであり得ない,ということをSQL処理系が正確に推論する

ことを可能にする処理系定義の規則に,BVEが適合するならば,<ブール値式>は,Xに対するナ

ルでないことが分かる条件とする。 

47) “7.7 <結合表>” 

a) 列CRの値がナルであり得ないことを正確に推論できる処理系定義の規則に,CRが適合するなら

ば,<結合表>の結果の列CRは,ナルでないことが分かる。 

48) “7.12 <問合せ指定>” 

a) SQL処理系は,ナルでないことが分かる列を認識するための処理系定義の追加の規則を定義して

もよい。 

49) “8.2 <比較述語>” 

a) どちらも2進オクテット長大オブジェクト列値ではない二つの2進オクテット列値X及びYに対

1005 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

して,XとYとの間の違いが,Y中の後続するX'00' だけならば,XがY未満か又はXがYと等

しいかは,処理系定義とする。 

b) 比較カテゴリがRELATIVEである利用者定義型の場合に,=及び<によって全ての比較述語を定義

する構文変換が適用されるかどうかは,処理系定義とする。 

50) “8.5 <LIKE述語>” 

a) <LIKE述語>のための照合順として,どの照合順を用いることができるかは,処理系定義とする。 

51) “8.6 <SIMILAR述語>” 

a) <SIMILAR述語>のための照合順として,どの照合順を用いることができるかは,処理系定義とす

る。 

52) “8.20 <期間述語>” 

a) <時刻印精度>の最大値は,処理系定義とする。 

53) “9.1 取出し代入” 

a) 値Vが概数で,かつ,相手Tが真数ならば,Tに取り出されるVの近似が,丸めによって得られ

るか又は切捨てによって得られるかは,処理系定義とする。 

b) 値Vが相手Tより大きい精度をもつ日時ならば,Tに取り出されるVの近似が,丸めによって得

られるか又は切捨てによって得られるかは,処理系定義とする。 

c) 値Vが相手Tより大きい精度をもつ時間隔ならば,Tに取り出されるVの近似が,丸めによって

得られるか又は切捨てによって得られるかは,処理系定義とする。 

54) “9.2 格納代入” 

a) 値Vが概数で,かつ,相手Tが真数ならば,Tに格納されるVの近似が,丸めによって得られる

か又は切捨てによって得られるかは,処理系定義とする。 

b) 値Vが相手Tより大きい精度をもつ日時ならば,Tに格納されるVの近似が,丸めによって得ら

れるか又は切捨てによって得られるかは,処理系定義とする。 

c) 値Vが相手Tより大きい精度をもつ時間隔ならば,Tに格納されるVの近似が,丸めによって得

られるか又は切捨てによって得られるかは,処理系定義とする。 

55) “9.5 データ型組合せの結果” 

a) DTS中のデータ型の全てが真数ならば,結果の宣言型は,処理系定義の精度をもつ真数とする。 

b) DTS中のいずれかのデータ型が概数ならば,DTS中の各データ型は,数でなければならず,結果

の宣言型は,処理系定義の精度をもつ概数とする。 

56) “9.18 XQuery正規表現照合” 

a) パターン又はフラグの文字レパートリがUCSでないならば,UCSへの変換は,処理系定義とす

る。 

b) 当該文字列の文字レパートリがUCSでないならば,“XQuery正規表現一致”の定義は,処理系定

義とする。 

57) “9.19 XQuery正規表現置換” 

a) パターン,置換文字列又はフラグの文字レパートリがUCSでないならば,UCSへの変換は,処理

系定義とする。 

b) 当該文字列の文字レパートリがUCSでないならば,細分箇条の結果は,処理系定義とする。 

58) “9.26 順序数生成子の作成” 

a) <順序数生成子MAXVALUE選択肢>がNO MAXVALUEを指定するか,又は<順序数生成子

1006 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

MAXVALUE選択肢>が指定されないならば,宣言型DTの処理系定義の<符号付き数定数>である

<順序数生成子最大値>が暗に想定される。 

b) <順序数生成子MINVALUE選択肢>がNO MINVALUEを指定するか,又は<順序数生成子

MINVALUE選択肢>が指定されないならば,宣言型DTの処理系定義の<符号付き数定数>である

<順序数生成子最小値>が暗に想定される。 

59) “9.27 順序数生成子の変更” 

a) <順序数生成子MAXVALUE選択肢>がNO MAXVALUEを指定するならば,宣言型DTの処理系

定義の<符号付き数定数>である<順序数生成子最大値>が暗に想定される。 

b) <順序数生成子MINVALUE選択肢>がNO MINVALUEを指定するならば,宣言型DTの処理系定

義の<符号付き数定数>である<順序数生成子最小値>が暗に想定される。 

60) “10.1 <時間隔修飾子>” 

a) <時間隔先行フィールド精度>の最大値は,処理系定義とするが,2以上でなければならない。 

b) <時間隔小数秒精度>の最大値は,処理系定義とするが,6以上でなければならない。 

61) “10.4 <ルーチン呼出し>” 

a) Piが出力SQLパラメタで,かつ,RがSQLルーチンでないならば,CPViは,最特定型Tiの処

理系定義の値とする。 

b) <SQLコネクション文>又は<SQLトランザクション文>を<SQLルーチン本体>が含むならば構文

誤りが発生するかどうかは,処理系定義とする。 

c) 新しいSQLセション文脈RSCが作成されるとき,現行既定カタログ名,現行既定修飾なしスキ

ーマ名,現行既定文字集合名,現行SQLセションのSQLパス,SQLパスを定義するテキスト,

現行SQLセションの現行既定時刻帯時差,全ての動的SQL記述子領域の内容,既定変換グルー

プ名を定義するテキスト,利用者によって陽に設定された各利用者定義型に対する利用者定義型

名と変換グループ名との対を定義するテキスト,及び文実行文脈に,処理系定義の値が設定され

る。 

d) Rが外部ルーチンならば,Pの<SQLクライアントモジュール定義>中で参照される作成局所一時

表,Pの<SQLクライアントモジュール定義>に含まれる<一時表宣言>によって定義される宣言局

所一時表,大域拡張動的カーソルでなく,かつ,SQLクライアントモジュールがPのSQLクラ

イアントモジュールである全ての開いているカーソルのカーソル実現値記述子,大域拡張名をも

たない被準備文,及び大域拡張名をもたないSQL記述子領域の全ての実現値の識別体をRSCか

ら取り除くかどうかは,処理系定義とする。 

e) Rが外部ルーチンならば,Rを含むスキーマへのPの結合方法及び結合時機は,処理系定義とす

る。 

f) Pの実行の完了後に,Pの<SQLクライアントモジュール定義>中で宣言された開いているカーソ

ルが閉じられ,破壊されるかどうか,RSCに関連付けられた局所一時表が破壊されるかどうか,

及びPによって準備された被準備文が解放されるかどうかは,処理系定義とする。 

g) RがSQL呼出し手続ならば,出力SQLパラメタ又は入出力SQLパラメタで,かつ,対応する引

数に値が代入されなかった各SQLパラメタに対して,その対応する引数には,適切な型の処理系

定義の値が設定される。 

h) 外部SQL呼出ルーチンの外部安全保護特性がIMPLEMENTATION DEFINEDならば,新しいSQL

セション文脈の認可スタックの最上部セル中の利用者識別子及び役割名は,処理系定義とする。 

1007 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

62) “10.9 <集約関数>” 

a) COUNTが指定されるならば,結果の宣言型は,0の位取りをもつ処理系定義の真数型とする。 

b) SUM又はAVGが指定されるならば,次による。 

i) 

SUMが指定され,引数の宣言型が位取りSの真数ならば,結果の宣言型は,位取りSをもつ処

理系定義の真数型とする。 

ii) AVGが指定され,引数の宣言型DTが真数ならば,結果の宣言型は,DTの精度以上の精度及

びDTの位取り以上の位取りをもつ処理系定義の真数型とする。 

iii) 引数の宣言型DTが概数ならば,結果の宣言型は,DTの精度以上の精度をもつ処理系定義の概

数型とする。 

c) VAR̲POP又はVAR̲SAMPが指定されるならば,結果の宣言型は,処理系定義の概数型とする。

引数の宣言型が概数ならば,結果の精度は,引数の精度以上とする。 

d) <2項集合関数種別>が指定されるならば,次による。 

場合: 

i) 

REGR̲COUNTが指定されるならば,結果の宣言型は,0の位取りをもつ処理系定義の真数型と

する。 

ii) そうでなければ,結果の宣言型は,処理系定義の概数型とする。いずれかの引数が概数ならば,

結果の精度は,概数の引数の精度以上でなければならない。 

e) <仮説集合関数>が指定されるならば,次による。 

場合: 

i) 

RANK又はDENSE̲RANKが指定されるならば,結果の宣言型は,処理系定義の精度及び位取

り0をもつ真数とする。 

ii) そうでなければ,結果の宣言型は,処理系定義の精度をもつ概数とする。 

f) 

PERCENTILE̲CONTを指定する<逆分布関数>の<ソート指定>に単純に含まれる<値式>の宣言型

が数ならば,結果の宣言型は,処理系定義の精度をもつ概数とする。 

g) <配列集約関数>が指定されるならば,結果の宣言型は,処理系定義の最大基数をもつ配列型とす

る。 

63) “10.10 <ソート指定リスト>” 

a) <ナル順序付け>が指定されないならば,処理系定義の<ナル順序付け>が暗に想定される。<ナル

順序付け>に対する処理系定義の既定値は,<ソート指定リスト>の外側の文脈に依存してはなら

ない。 

64) “9.29 ビュー権限の決定” 

a) <認可識別子> AがビューVの全ての列に関するUPDATE権限をもつならば,AがVに関する

UPDATE権限をもつかどうかは,処理系定義とする。 

b) <認可識別子> AがビューVの全ての列に関するINSERT権限をもつならば,AがVに関する

INSERT権限をもつかどうかは,処理系定義とする。 

65) “11.1 <スキーマ定義>” 

a) <スキーマ文字集合指定>が指定されないならば,処理系定義の<文字集合指定>を含む<スキーマ

文字集合指定>が暗に想定される。 

b) <スキーマパス指定>が指定されないならば,処理系定義の<スキーマ名リスト>を含む<スキーマ

パス指定>が暗に想定される。 

1008 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) AUTHORIZATION <認可識別子>が指定されないならば,SQLセションに対する処理系定義の<認

可識別子>と等価な<認可識別子>が暗に想定される。 

d) <スキーマ定義>を実行するために必要な権限は,処理系定義とする。 

66) “11.8 <参照制約定義>” 

a) 参照制約記述子中の参照列の名前のリスト及び被参照列の名前のリストの順序付けは,処理系定

義とするが,対応する列の名前は,各リスト中の対応する位置を占めなければならない。 

67) “11.27 <表期間定義追加>” 

a) 既存の行のシステム期間開始列に代入される値は,処理系定義とする。 

68) “11.49 <トリガ定義>” 

a) <被トリガSQL文>が<SQLトランザクション文>,<SQLコネクション文>,<SQLスキーマ文>,

<動的SQL文>又は<SQLセション文>を広く含んではならないかどうかは,処理系定義とする。 

b) SQLデータを潜在的に修正するSQL文を<被トリガ動作>が含んではならないかどうかは,処理

系定義とする。 

69) “11.60  <SQL呼出しルーチン>” 

a) READS SQL DATAが指定されるならば,SQLデータを潜在的に修正するSQL文を<SQLルーチ

ン本体>が含んではならないかどうかは,処理系定義とする。 

b) CONTAINS SQLが指定されるならば,SQLデータを潜在的に修正するか又はSQLデータを潜在

的に読むSQL文を<SQLルーチン本体>が含んではならないかどうかは,処理系定義とする。 

c) DETERMINISTICが指定されるならば,潜在的に非決定的である<SQL手続文>を<SQLルーチン

本体>が含んではならないかどうかは,処理系定義とする。 

d) <SQLコネクション文>,<SQLスキーマ文>,<動的SQL文>,又は<SAVEPOINT文>,<RELEASE 

SAVEPOINT文>若しくは<SAVEPOINT句>を指定する<ROLLBACK文>以外の<SQLトランザク

ション文>を<SQLルーチン本体>が含んではならないかどうかは,処理系定義とする。 

70) “11.72 <順序数生成子定義>” 

a) <順序数生成子データ型選択肢>が指定されないならば,位取り0の処理系定義の真数型DTが暗

に想定される。 

71) “12.4 <役割定義>” 

a) <役割定義>を実行するために必要な権限は,処理系定義とする。 

72) “12.7 <REVOKE文>” 

a) 文字集合に関するUSAGE権限の喪失によって,SQLクライアントモジュールを失われるモジュ

ールであると決定することになるとき,そのSQLクライアントモジュールに与える影響は,処理

系定義とする。 

73) “13.1 <SQLクライアントモジュール定義>” 

a) 陽に指定されるか又は暗に想定される<スキーマ名>が<カタログ名>を指定しないならば,処理系

定義の<カタログ名>が暗に想定される。 

b) <モジュールパス指定>が指定されないならば,処理系定義の<スキーマ名リスト>を含む<モジュ

ールパス指定>が暗に想定される。 

73.1) “13.2 <モジュール名句>” 

c) <モジュール文字集合指定>が指定されないならば,<SQL言語文字>中の少なくとも全ての文字を

含む処理系定義の文字集合を指定する<モジュール文字集合指定>が暗に想定される。 

1009 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

74) “13.3 <外部呼出し手続>” 

a) <外部呼出し手続>を含む<SQLクライアントモジュール定義>が,等価な<手続名>をもつ<外部呼

出し手続>を含む別の<SQLクライアントモジュール定義>に関連付けられているSQLエージェン

トに関連付けられるならば,その効果は,処理系定義とする。 

b) <外部呼出し手続>を含む<SQLクライアントモジュール定義>が,SQLセションの<認可識別子> 

SAIと等価でない陽に指定される<モジュール認可識別子> MAIをもつならば,陽に指定される<

モジュール認可識別子> MAIをもつ<SQLクライアントモジュール定義>中の<外部呼出し手続>

をSAIが呼び出すことができるかどうかは,そのような呼出しに関する制限を含めて,処理系定

義とする。 

c) Interfaces.SQL.CHAR及びInterfaces.SQL.NCHARの定義は,処理系定義とするが,それ

ぞれ,SQLデータ型のCHARACTER及びNATIONAL CHARACTERを提供しなければならない。 

d) Interfaces.SQL.VARYING.CHAR及びInterfaces.SQL. VARYING.NCHARの定義は,処理

系定義とするが,それぞれ,SQLデータ型のCHARACTER VARYING及びNATIONAL 

CHARACTER VARYINGを提供しなければならない。 

75) “13.5 データ型対応” 

a) SQL文字列型に対応するCデータ型は,処理系定義とする。 

b) (PIC X に対応付けられる)COBOL固有の文字集合は,処理系定義とする。 

c) SQL文字列型に対応するFortranの型CHARACTERのKIND属性は,処理系定義とする。 

76) “14.9 <DELETE文:探索>” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

77) “14.10 <TRUNCATE TABLE文>” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

78) “14.11 <INSERT文>” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

79) “14.12 <MERGE文>” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

80) “14.14 <UPDATE文:探索>” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

1010 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

81) “15.1 カーソルを開くことの効果” 

a) 現在開いているカーソルに対して可視にならない著しい変更を,SQL処理系が許さないことが可

能かどうかは,処理系定義とする。 

82) “15.2 結果集合を受け取ることの効果” 

a) 受取りカーソルの操作上の戻り可能性特性は,処理系定義とする。 

83) “15.5 位置付け削除の効果” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

c) CRの結果集合記述子の行の並びから現在行が取り除かれるかどうかは,処理系定義とする。 

84) “15.6 位置付け更新の効果” 

a) 著しくない独立の変更をSQL処理系が許さなくてもよい範囲は,処理系定義とする。 

b) このSQL文が実行されているSQLトランザクション中で開いている敏感カーソルCRが存在し,

後続のSQLトランザクション中にCRが保持されたならば,このSQL文の成功実行の結果とし

て生じる変更がCRに対して可視になるかどうかは,処理系定義とする。 

85) “17.2 <SET TRANSACTION文>” 

a) トランザクションに対して設定するトランザクション隔離性水準は,表8“SQLトランザクショ

ン隔離性水準及び三つの現象”で規定するとおりに,陽に指定されるか又は暗に想定される<隔離

性水準>が発生させない現象のどれも発生させない処理系定義のトランザクション隔離性水準と

する。 

86) “17.5 <SAVEPOINT文>” 

a) SQLトランザクションごとの保存点の最大個数は,処理系定義とする。 

87) “17.7 <COMMIT文>” 

a) 保持されたカーソルの被準備文以外の被準備文が存在したままとなるかどうかは,処理系定義と

する。 

88) “17.8 <ROLLBACK文>” 

a) ロールバックが実行される保存点の確立前に現行SQLトランザクションによって開かれた,現行

SQLトランザクションに関連付けられるSQLクライアントモジュール中の開いているカーソル

の状態は,処理系定義とする。 

b) 被準備文が解放されるかどうかは,処理系定義とする。 

89) “18.1 <CONNECT文>” 

a) <コネクション利用者名>が指定されないならば,SQLコネクションに対する処理系定義の<コネ

クション利用者名>が暗に想定される。 

b) <コネクション利用者名>が,<CONNECT文>を含む<外部呼出し手続>を含むSQLクライアント

モジュールの<モジュール認可識別子>と同一でなければならないかどうかに関する制限は,処理

系定義とする。 

1011 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

c) DEFAULTが指定されるならば,既定SQLサーバを決定する方法は,処理系定義とする。 

d) 適切なSQLサーバを決定するために<SQLサーバ名>を用いる方法は,処理系定義とする。 

90) “19.2 <セション利用者識別子設定文>” 

a) SQLセション利用者識別子にそれの現在の値の設定を許さないこと除いて,SQLセション利用者

識別子に設定することができる利用者識別子に関する処理系定義の制限が許される。 

91) “19.10 <セション照合順設定文>” 

a) <文字集合指定リスト>が<セション照合順設定文>中に指定されないならば,SQLセション照合順

に設定される文字集合は,処理系定義とする。 

92) “20.1 SQL記述子領域の記述” 

a) 処理系定義のデータ型のデータ型コードは,処理系定義の負の値とする。 

93) “20.2 <ALLOCATE DESCRIPTOR文>” 

a) WITH MAX <実現値> が指定されないならば,<実現値>に対する0より大きい処理系定義の既定

値が暗に想定される。 

b) SQL記述子領域の最大個数及び単一のSQL記述子領域に対する項目記述子領域の最大個数は,

処理系定義とする。 

94) “20.5 <SET DESCRIPTOR文>” 

a) <記述文>の実行の結果として得られるTYPE,LENGTH,OCTET̲LENGTH,SCALE,

COLLATION̲CATALOG

COLLATION̲SCHEMA

COLLATION̲NAME

CHARACTER̲SET̲CATALOG,CHARACTER̲SET̲SCHEMA及びCHARACTER̲SET̲NAMEの

値を,<EXECUTE文>,<動的OPEN文>又は<動的FETCH文>の実行前に変更することに関する

制限は,処理系定義とする。 

95) “20.6 <PREPARE文>” 

a) <準備可能処理系定義文>の形式及び構文規則は,処理系定義とする。 

96) “20.9 <記述文>” 

a) <記述子名>のデータ型の文字集合は,処理系定義とする。 

b) SRが単一のSQL呼出しルーチンRを含まないならば,<CALL文>に単純に含まれる各<動的パ

ラメタ指定>に対する記述子中のPARAMETER̲MODE,PARAMETER̲ORDINAL̲POSITION,

PARAMETER̲SPECIFIC̲CATALOG

PARAMETER̲SPECIFIC̲SCHEMA

PARAMETER̲SPECIFIC̲NAMEには,処理系定義の値が設定される。 

97) “20.11 <出力USING句>” 

a) <動的FETCH文>中で<出力USING句>が用いられるならば,<動的FETCH文>によって識別され

る動的カーソルをCRとし,カーソルCRに対して,現在の実行に先立って最も新しく実行され

た<動的FETCH文>があるならば,それのi番目の<相手指定>又は<INTO句の引数>の最特定型を

LTDTとする。幾つかのことのいずれかが真ならば,例外条件:動的SQL誤り − 制限されたデ

ータ型属性違反 (restricted data type attribute violation) が引き起こされるかどうかは,処理系定義

とする。 

98) “21.1 <SQL埋込みホストプログラム>” 

a) SCHEMAを指定する<埋込み認可宣言>をHが含まないならば,Mの<モジュール認可句>の<ス

キーマ名>は,処理系定義とする。 

b) Hが<埋込み認可宣言>を含まないならば,Mは,“SCHEMA SN”を指定する<モジュール認可句

1012 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

>を含む。ここで,SNは,処理系定義の<スキーマ名>とする。 

c) <埋込み文字集合宣言>が指定されないならば,処理系定義の<文字集合指定>を含む<埋込み文字

集合宣言>が暗に想定される。 

d) 各<拡張動的カーソル割当て文>は,<動的カーソル名>を被準備文に関連付ける処理系定義の手続

の,ホスト言語の手続呼出し又はサブルーチン呼出しに置き換えられる。 

e) <SQL埋込みホストプログラム>が<埋込みパス指定>を含まないならば,暗に想定されるモジュー

ルは,処理系定義の<モジュールパス指定>を含む。 

99) “21.3 <SQL埋込みAdaプログラム>” 

a) 既定の文字集合は,処理系定義とする。 

b) Interfaces.SQL.INDICATOR̲TYPEに対応する<ホストパラメタデータ型>は,位取り0の処理系定

義の真数とする。 

100) “21.4 <SQL埋込みCプログラム>” 

a) <C文字変数>,<C VARCHAR変数>又は<C CLOB変数>中で暗に想定される文字集合は,処理系

定義とする。 

b) 既定の文字集合は,処理系定義とする。 

101) “21.5 <SQL埋込みCOBOLプログラム>” 

a) PICTURE,SIGN,USAGE及びVALUE句に加えて,<COBOL変数定義>中に現れてもよいCOBOL

データ記述句は,処理系定義とする。 

b) 既定の文字集合は,処理系定義とする。 

c) <COBOL整数型>を用いて宣言される変数の<ホストパラメタデータ型>がSMALLINTか,

INTEGERか又はBIGINTかは,処理系定義とする。 

102) “21.6 <SQL埋込みFortranプログラム>” 

a) 既定の文字集合は,処理系定義とする。 

b) CHARACTER KIND=nで宣言される変数の<ホストパラメタデータ型>がCHARACTERか又は

NATIONAL CHARACTERかは,処理系定義とする。nの値は,Fortran変数の処理系定義の特性を

決定する。nの値は,処理系定義とする。 

103) “21.7 <SQL埋込みMUMPSプログラム>” 

a) 既定の文字集合は,処理系定義とする。 

104) “21.8 <SQL埋込みPascalプログラム>” 

a) 既定の文字集合は,処理系定義とする。 

105) “21.9 <SQL埋込みPL/Iプログラム>” 

a) <PL/I型指定>及びINITIAL句に加えて,<PL/I変数定義>中に現れてもよいPL/Iデータ記述句は,

処理系定義とする。 

b) 既定の文字集合は,処理系定義とする。 

c) <PL/I型FIXED BINARY>で宣言される変数の<ホストパラメタデータ型>がSMALLINTか,

INTEGERか又はBIGINTかは,処理系定義とする。 

106) “22.1 <直接SQL文>” 

a) ナル値を表現する<値指定>は,処理系定義とする。 

b) <直接処理系定義文>の形式,構文規則及びアクセス規則は,処理系定義とする。 

c) 動作中のSQLトランザクションに<直接処理系定義文>が関連付けられてもよいかどうかは,処

1013 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

理系定義とする。 

d) <直接処理系定義文>がSQLトランザクションを開始するかどうかは,処理系定義とする。 

107) “23.1 <GET DIAGNOSTICS文>” 

a) 診断領域中の各可変長文字項目の最大長は,ほとんどの場合,処理系定義とする。 

b) 処理系定義のクラスコード又はサブクラスコードに対して,CLASS̲ORIGIN及び

SUBCLASS̲ORIGINのために設定される文字列値は,処理系定義とするが,'ISO 9075'であっては

ならない。 

c) MESSAGE̲TEXTの値は,処理系定義の文字列とする。 

d) COMMAND̲FUNCTION̲CODEの負の値は,処理系定義とし,処理系定義のSQL文を示す。 

e) 条件番号なしでALLが指定されるとき,占有条件領域の番号が与えられる順序は,処理系定義と

する。 

108) “24.1 SQLSTATE” 

a) SQLSTATEパラメタのクラスコード及びサブクラスコードに関連付けられる文字集合は,処理系

定義とする。 

b) <数字>'5','6','7','8'若しくは'9'のうちの一つ,又は<単純ラテン大文字>'I','J','K','L','M','N',

'O','P','Q','R','S','T','U','V','W','X','Y'若しくは'Z'のうちの一つで始まるクラス及びサブ

クラスの値及び意味は,処理系定義とする。処理系定義クラスコードに関連付けられる全てのサ

ブクラスの値及び意味は,処理系定義とする。 

109) “25 適合性” 

a) SQL処理系が必要とするかもしれない追加の<キーワード>のリストのままで,適合しないSQL

言語のフラグ付け又は適合するSQL言語の処理の方法は,処理系定義とする。 

1014 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書C 
(参考) 

処理系依存要素 

この附属書は,ISO/IEC 9075-3の“附属書C 処理系依存要素”によって修正される。 

この附属書は,ISO/IEC 9075-4の“附属書C 処理系依存要素”によって修正される。 

この附属書は,ISO/IEC 9075-9の“附属書C 処理系依存要素”によって修正される。 

この附属書は,ISO/IEC 9075-10の“附属書C 処理系依存要素”によって修正される。 

この附属書は,ISO/IEC 9075-11の“附属書C 処理系依存要素”によって修正される。 

この附属書は,ISO/IEC 9075-13の“附属書C 処理系依存要素”によって修正される。 

この附属書は,ISO/IEC 9075-14の“附属書C 処理系依存要素”によって修正される。 

この附属書は,規格に適合するSQL処理系の動作が処理系依存であることを,この規格が陽に規定して

いる箇所を参照する。 

1) “4.1.1 データ型の一般的な導入” 

a) データ型の値の物理的な表現は,処理系依存とする。 

2) “4.15.10 表を含む演算” 

a) 表を含む演算は,処理系依存の順序でその表中の行を参照する。 

3) “4.15.14 ウィンドウ表” 

a) <句内ウィンドウ指定>によって暗に定義されるウィンドウのウィンドウ名は,処理系依存とする。 

4) “4.28.5  SQL呼出し手続によって戻される結果集合” 

a) その最大個数を超える位置にある結果集合が戻されるかどうかは,処理系依存とする。 

5) “4.30.5 位置付け子” 

a) 位置付け子の値は,処理系依存の4オクテットの整数値とする。 

6) “4.31 診断領域” 

a) 陽に指定されないとき,条件領域限界は,処理系依存とする。 

b) 診断領域中の1番目の条件がSQLSTATE値に対応する条件に常に対応することを除いて,診断領

域に格納される条件についての情報の順序は,処理系依存とする。 

c) 診断領域スタック中の診断領域の最大数は,処理系依存とする。 

7) “4.33 カーソル” 

a) <カーソル指定>が<ORDER BY句>を含まないか,又は行の順序を完全に指定しない<ORDER BY

句>を含むならば,結果集合の行は,<ORDER BY句>が順序を指定する範囲でだけ定義される順

序をもち,その他の順序は,処理系依存とする。 

b) カーソルを識別するSQL文の実行中に誤りが発生するとき,開いているカーソルの位置及び状態

に与える影響は,処理系依存とする。 

c) 処理依存感度カーソルが開いており,かつ,同じSQLトランザクション内から,そのカーソル以

外によってSQLデータに変更が行われるならば,そのカーソルが閉じられる前に,そのカーソル

に対してその変更が可視であるかどうかは,処理系依存とする。 

8) “4.36 SQLトランザクション” 

a) SQL文の実行のために暗に読み込まれるスキーマ定義は,処理系依存とする。 

1015 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

9) “4.38 SQLセション” 

a) 処理系依存の一意なSQLセション識別子が,各SQLセションに関連付けられる。 

10) “4.40 クライアントサーバ処理” 

a) SQLサーバ上で実効的に実体化されるSQLクライアントモジュールの<SQLクライアントモジュ

ール名>は,処理系依存とする。 

b) SQLサーバによる<SQL手続文>の実行に続いて,SQLクライアント中のそのSQLエージェント

の診断領域スタック中に処理系依存の方法で診断情報が渡される。 

c) SQLクライアントによって提供される文字レパートリとSQLサーバによって提供される文字レ

パートリとの間の非互換性の診断情報への影響は,処理系依存とする。 

11) “6.7 <列参照>” 

a) QCRがグループ不変列参照であり,かつ,QCRの最特定型が文字列,時刻帯付き日時又は利用者

定義型ならば,QCRは,QCRの修飾する問合せの与えられたグループのどの行中のCの値とも

異ならない処理系依存の値を示す。 

12) “6.13 <CAST指定>” 

a) マルチ集合型が配列型に型変換されるとき,結果中の要素の順序は,処理系依存とする。 

13) “6.28 <数値関数>” 

a) <OCCURRENCES̲REGEX関数>がOCTETSを指定し,かつ,<開始位置>で与えられる位置のオ

クテットが文字の最初のオクテットでないならば,<OCCURRENCES̲REGEX関数>の結果は,処

理系依存とする。 

b) <POSITION̲REGEX式>がOCTETSを指定し,かつ,<開始位置>で与えられる位置のオクテット

が文字の最初のオクテットでないならば,<POSITION̲REGEX式>の結果は,処理系依存とする。 

14) “6.30 <データ列値関数>” 

a) <SUBSTRING̲REGEX関数>がOCTETSを指定し,かつ,<開始位置>で与えられる位置のオクテ

ットが文字の最初のオクテットでないならば,<SUBSTRING̲REGEX関数>の結果は,処理系依

存とする。 

b) <TRANSLATE̲REGEX関数>がOCTETSを指定し,かつ,<開始位置>で与えられる位置のオクテ

ットが文字の最初のオクテットでないならば,<TRANSLATE̲REGEX関数>の結果は,処理系依

存とする。 

15) “6.32 <日時値関数>” 

a) SQL文の実行中のCURRENT̲DATE,CURRENT̲TIME及びCURRENT̲TIMESTAMP関数の評価

の時期は,処理系依存とする。 

16) “6.33 <時間隔値式>” 

a) 減算のために時間隔をスカラ値に変換するために用いる開始日時は,処理系依存とする。 

17) “6.38 <配列値構成子>” 

a) <問合せによる配列値構成子>の結果中の,<ORDER BY句>によって決定されない配列要素の順

序は,処理系依存とする。 

18) “7.1 <行値構成子>” 

a) <行値構成子要素リスト>を指定する<行値構成子>のフィールドの名前は,処理系依存とする。 

b) <文脈型付き行値構成子>のフィールドの名前は,処理系依存とする。 

19) “7.3 <表値構成子>” 

1016 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) <表値構成子>又は<文脈型付き表値構成子>の列名は,処理系依存とする。 

20) “7.7 <結合表>” 

a) <分割結合表>の結合分割列の宣言型が利用者定義型で,かつ,二つの行に対するその列の比較の

結果が不定 (Unknown) になるならば,それらの行の区画への割当ては,処理系依存とする。 

21) “7.9 <GROUP BY句>” 

a) グループ化列の宣言型が利用者定義型で,かつ,二つの行に対するその列の比較の結果が不定 

(Unknown) になるならば,<GROUP BY句>の結果中のグループへのこれらの行の割当ては,処理

系依存とする。 

b) <探索条件>又は<値式>がグループに適用されるとき,最特定型が文字列,時刻帯付き日時又は利

用者定義型であり,かつ,グループ化列に関数従属である列を参照するグループ不変列参照の値

は,処理系依存とする。 

22) “7.11 <WINDOW句>” 

a) ウィンドウ構造記述子のウィンドウ順序付け句がないならば,ウィンドウ順序付けは,処理系依

存とする。 

b) ウィンドウ区画内の同位行のウィンドウ順序付けは,処理系依存とするが,そのウィンドウ順序

付けは,順序等価である全てのウィンドウ構造記述子に対して同じでなければならない。それは,

ウィンドウW1がウィンドウW2のための順序付けウィンドウならば,W1及びW2に対しても同

じでなければならない。 

23) “7.12 <問合せ指定>” 

a) 列が<AS句>によって名前付けされず,かつ,単一列参照から導出されないならば,列の名前は,

処理系依存とする。 

b) <集合限定子> DISTINCTが指定され,かつ,結果列の最特定型が文字列,時刻帯付き日時又は利

用者定義型ならば,冗長な重複を取り除いた後に,その列に残る正確な値は,処理系依存とする。 

24) “7.13 <問合せ式>” 

a) <単純表>が<問合せ指定>でも,<明示表>でもないならば,<単純表>の各列の名前は,処理系依存

とする。 

b) <問合せ項>がINTERSECTを直に含み,かつ,オペランドの表の対応する列の対の<列名>が等価

でないならば,結果列は,処理系依存の<列名>をもつ。 

c) <問合せ式本体>がUNION又はEXCEPTを直に含み,かつ,オペランドの表の対応する列の対の

<列名>が等価でないならば,結果列は,処理系依存の<列名>をもつ。 

d) <ORDER BY句>を<問合せ式>が単純に含まないならば,その<問合せ式>によって指定される表

中の行の順序付けは,処理系依存とする。 

e) <ORDER BY句>を<問合せ式>が直に含み,かつ,その<問合せ式>によって指定される表中の二

つ以上の行から成るグループが,<ORDER BY句>中に指定された全てのソートキーで異ならない

値を含むならば,そのグループ中のこれらの行の順序付けは,処理系依存とする。 

f) 

利用者定義型UDTの利用者定義順序付けによって決定されるとおりに比較が不定 (Unknown) と

なる,UDTのナルでない二つの値の相対的な順序付けは,処理系依存とする。 

25) “8.2 <比較述語>” 

a) 演算MAX,MIN,DISTINCT及びグループ化列の参照が可変長文字列を参照するとき,等しい値

の集合から選択される特定の値は,処理系依存とする。 

1017 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

26) “8.15 <DISTINCT述語>” 

a) “8.2 <比較述語>”に従って,等値性に対してV1とV2とを比較した結果が不定 ならば,結果が

真 か又は偽 かは,処理系依存とする。 

27) “9.4 SQLサーバからホスト言語への値の受渡し” 

a) ホスト言語がADAで,かつ,値が代入されなかったならば,値は,処理系依存とする。 

28) “10.4 <ルーチン呼出し>” 

a) 値Viを得るために,処理系依存の順序で,SAL中の各SQL引数Aiが評価される。 

b) Pが,Rの言語のための規格又は他の規定に従って規格に適合するプログラムでないならば,Pの

実行の結果は,処理系依存とする。 

c) 外部ルーチンがDETERMINISTICを指定し,かつ,同一のSQL引数値リストでのそのルーチンの

異なる実行が同一の結果を生じないならば,結果は,処理系依存とする。 

d) Pから戻される値は,処理系依存の方法でSQL処理系に渡される。 

29) “10.9 <集約関数>” 

a) MAX又はMINの引数の宣言型が利用者定義型で,かつ,二つの値の比較の結果が不定 (Unknown) 

になるならば,最大値又は最小値は,処理系依存とする。 

b) <配列集約関数>がORDER BYを指定しないならば,結果配列中の要素の順序付けは,処理系依

存とする。 

30) “10.10 <ソート指定リスト>” 

a) PVi及びQViがナル値でなく,かつ,“PVi <比較演算子> QVi”の結果が不定 (Unknown) なら

ば,PViとQViとの相対的な順序付けは,処理系依存とする。 

b) <ソート指定>に関して異ならない二つの行の相対的な順序付けは,処理系依存とする。 

31) “11.6 <表制約定義>” 

a) <制約名定義>を指定しない制約の<制約名>は,処理系依存とする。 

32) “11.8 <参照制約定義>” 

a) 異ならない様々な値のうちで波及のために用いる特定の値は,処理系依存とする。 

33) “11.15 <列NOT NULL句設定>” 

a) Cの列記述子に含まれる関連付けられた表制約定義の制約名は,処理系依存とする。 

34) “11.32 <ビュー定義>” 

a) 参照型が導出表現をもつ参照可能ビューの自己参照列の値を計算するために用いる式は,処理系

依存とする。 

35) “11.34 <定義域定義>” 

a) <制約名定義>を指定しない制約の<制約名>は,処理系依存とする。 

36) “11.43 <照合順定義>” 

a) 照合順が特に指定されない文字集合の照合順は,処理系依存とする。 

37) “11.51 <利用者定義型定義>” 

a) <特定メソッド名>が指定されないならば,<スキーマ名>がSNと等価な処理系依存の<特定メソ

ッド名>が暗に想定される。 

38) “11.56 <原メソッド指定追加>” 

a) PORMSが<特定メソッド名>を指定しないならば,<スキーマ名>がSNと等価である処理系依存

の<特定メソッド名>が暗に想定される 

1018 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

39) “11.57 <置換メソッド指定追加>” 

a) POVMSが<特定メソッド名>を指定しないならば,<スキーマ名>がSNと等価である処理系依存

の<特定メソッド名>が暗に想定される。 

40) “11.60 <SQL呼出しルーチン>” 

a) SQL呼出しルーチンがSQL呼出し関数ならば,外部ルーチンから戻される値は,処理系依存の方

法でSQL処理系に受け渡される。 

41) “13.1 <SQLクライアントモジュール定義>” 

a) <SQLクライアントモジュール定義>中の<外部呼出し手続>の呼出しを実行するSQLエージェン

トが,その<SQLクライアントモジュール定義>の<LANGUAGE句>によって指定されたプログラ

ム言語の仕様に適合するプログラムでないならば,その効果は,処理系依存とする。 

b) 二つ以上のAdaタスクからの<外部呼出し手続>の呼出しをSQLエージェントが実行するならば,

その結果は,処理系依存とする。 

c) SQLエージェントが不意に終了したかどうかの決定は,処理系依存とする。 

42) “13.3 <外部呼出し手続>” 

a) <外部呼出し手続>の呼出しを実行するSQLエージェントが,<外部呼出し手続>の呼出し元言語

によって指定されるプログラム言語の仕様に適合するプログラムでないならば,その効果は,処

理系依存とする。 

43) “13.4 <SQL手続文>” 

a) Sが<SELECT文:単一行>又は<FETCH文>で,かつ,終了条件:データなし (no data) が引き起

こされるか,又は例外条件が引き起こされるならば,PNiがS中の<相手指定>中で参照される各

PIiの値は,処理系依存とする。 

44) “14.5 <FETCH文>” 

a) 状態パラメタ以外で<FETCH文>によって戻される値の,<取出し相手リスト>中の相手への代入

の順序は,処理系依存とする。 

b) <SELECT文:単一行>の実行中の,相手への値の代入中に誤りが発生するならば,状態パラメタ

以外の相手の値は,処理系依存とする。 

c) 相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とし,

CRは,現在行の上に位置付けられたままとする。 

d) <導出列>の導出中に例外条件が引き起こされるとき,CRが現在行の上に位置付けられたままか

どうかは,処理系依存である。 

45) “14.7 <SELECT文:単一行>” 

a) 状態パラメタ以外で<SELECT文:単一行>によって戻される値の,<選択相手リスト>中の相手へ

の代入の順序は,処理系依存とする。 

b) <問合せ指定>の結果の基数が1より大きいならば,<選択相手リスト>によって識別される相手に

値が代入されるかどうかは,処理系依存とする。 

c) <SELECT文:単一行>の実行中の,相手への値の代入中に誤りが発生するならば,状態パラメタ

以外の相手の値は,処理系依存とする。 

46) “14.11 <INSERT文>” 

a) 導出自己参照列の値の生成は,処理系依存とする。 

47) “14.12 <MERGE文>” 

1019 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

a) 導出自己参照列の値の生成は,処理系依存とする。 

48) “14.16 <一時表宣言>” 

a) 一時表を含むスキーマの<スキーマ名>は,処理系依存とする。 

49) “15.6 位置付け更新の効果” 

a) 実表の列Cが修正され,<UPDATE文:位置付け>によって識別される<カーソル指定>の<問合せ

式>に単純に含まれるいずれかの<ソートキー>の<値式>の評価がCを参照したならば,CRの位

置は,処理系依存とする。 

50) “15.19 トリガの実行” 

a) TRが行レベルトリガならば,ST中の遷移が取られる順序は,処理系依存とする。 

51) “17.2 <SET TRANSACTION文>” 

a) <条件数>が指定されないならば,1以上の処理系依存の値が暗に想定される。 

b) <条件数>が指定され,<条件数>に対する処理系依存の最大値を超えるならば,その最大値を用い

る。 

52) “18.1 <CONNECT文>” 

a) 現行SQLセションの持続トランザクション特性の条件領域限界は,1以上の処理系依存の値とす

る。 

53) “18.3 <DISCONNECT文>” 

a) ALLが指定されるならば,Lは,現行のSQLエージェントによる<CONNECT文>によって確立さ

れ,かつ,<DISCONNECT文>によってまだ切断されていない全てのSQLコネクションを,処理

系依存の順序で表現するリストとする。 

54) “20.2 <ALLOCATE DESCRIPTOR文>” 

a) SQL記述子領域が割り当てられるとき,(LEVEL以外の)フィールドの値は,処理系依存とする。 

55) “20.4 <GET DESCRIPTOR文>” 

a) <GET DESCRIPTOR文>中で例外条件が引き起こされるならば,<単純相手指定1>及び<単純相手

指定2>によって指定される全ての相手の値は,処理系依存とする。 

b) <動的パラメタ指定>に対して,UNNAMEDの値は,1とし,NAMEの値は,処理系依存とする。 

c) 値が未定義のどのフィールドに対しても,<GET DESCRIPTOR文>によって取り出される値は,処

理系依存とする。 

56) “20.5 <SET DESCRIPTOR文>” 

a) DINがTYPEならば,IDA中のTYPE及びLEVEL以外の全てのフィールドには,処理系依存の

値が設定される。 

b) <SET DESCRIPTOR文>中で例外条件が引き起こされるならば,<SET DESCRIPTOR文>中で指定

される項目記述子領域の全ての要素の値は,処理系依存とする。 

57) “20.9 <記述文>” 

a) SQL項目記述子領域が設定されるならば,TYPEの特定の値に対して適用可能でないフィールド

には,処理系依存の値が設定される。 

b) 受取りカーソルの<カーソル指定>を準備するために用いる<SQL文名>は,処理系依存とする。 

58) “20.10 <入力USING句>” 

a) <入力DESCRIBE文>が用いられるとき,動的SQL記述子領域構造中のNAME,DATA及び

INDICATORの値は,処理系依存とする。TYPEが文字列型又は2進オクテット長大オブジェクト

1020 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

型を示すならば,SCALE及びPRECISIONの値は,処理系依存とする。TYPEが真数型又は概数

型を示すならば,LENGTH及びOCTET̲LENGTHの値は,処理系依存とする。TYPEがブール型

を示すならば,PRECISION,SCALE,LENGTH及びOCTET̲LENGTHの値は,処理系依存とす

る。 

59) “20.11 <出力USING句>” 

a) <出力DESCRIBE文>が実行されるとき,DATA及びINDICATORの値は,処理系依存とする。

TYPEが文字列型又は2進オクテット長大オブジェクト型を示すならば,SCALE及びPRECISION

の値は,処理系依存とする。TYPEが真数型又は概数型を示すならば,LENGTH及び

OCTET̲LENGTHの値は,処理系依存とする。TYPEがブール型を示すならば,PRECISION,SCALE,

LENGTH及びOCTET̲LENGTHの値は,処理系依存とする。 

60) “20.13 <EXECUTE IMMEDIATE文>” 

a) <EXECUTE IMMEDIATE文>が実行されるときに準備される文の<文名>は,処理系依存とする。 

61) “20.18 <動的FETCH文>” 

a) 相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とする。 

62) “21.1 < SQL埋込みホストプログラム>” 

a) <SQL埋込みホストプログラム>から導出される暗に想定される<SQLクライアントモジュール定

義>の<SQLクライアントモジュール名>は,処理系依存とする。 

b) <SQL埋込みホストプログラム>が<埋込み認可宣言>を含まないならば,<SQL埋込みホストプロ

グラム>から導出される暗に想定される<SQLクライアントモジュール定義>の<モジュール認可

識別子>は,処理系依存とする。 

c) <SQL埋込みホストプログラム>から導出される暗に想定される<SQLクライアントモジュール定

義>中の各<カーソル宣言>中で,各<埋込み変数名>は,互いに異なる処理系依存の<ホストパラメ

タ名>に一貫して置き換えられる。 

d) <SQL埋込みホストプログラム>から導出される暗に想定される<SQLクライアントモジュール定

義>中の各<外部呼出し手続>の<手続名>は,処理系依存とする。 

e) <SQL埋込みホストプログラム>から導出される暗に想定される<SQLクライアントモジュール定

義>中の各<外部呼出し手続>中で,各<埋込み変数名>は,互いに異なる処理系依存の<ホストパラ

メタ名>に一貫して置き換えられる。 

f) 

<OPEN文>以外の<SQL手続文>に対して,<SQL埋込みホストプログラム>から導出される暗に

想定される<SQLクライアントモジュール定義>中の一つの<外部呼出し手続>が,<SQL埋込みホ

ストプログラム>中の二つ以上の<SQL手続文>に対応できるかどうかは,処理系依存とする。 

g) <SQL埋込みホストプログラム>から導出される暗に想定される<SQLクライアントモジュール定

義>中の各<外部呼出し手続>中で,<ホストパラメタ宣言>の実現値の順序は,処理系依存とする。 

63) “22.1 <直接SQL文>” 

a) <COMMIT文>又は<ROLLBACK文>が実行される。回復不可能な誤りが発生したか,SQLの直接

起動が不意に終了したか,又はいずれかの強制制約が満たされないならば,<ROLLBACK文>が

実行される。そうでなければ,これらのSQL文のどちらが実行されるかの選択は,処理系依存と

する。SQLの直接起動が不意に終了したかどうかの決定は,処理系依存とする。 

64) “23.1 <GET DIAGNOSTICS文>” 

a) 直接の結果として,<DELETE文:探索>,<INSERT文>,<MERGE文>又は<UPDATE文:探索>

1021 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

の実行にならないSQL文の実行の後のROW̲COUNTの値は,処理系依存とする。 

b) <条件番号>が1以外の値をもつならば,<条件番号>の値と,そのSQL文に対する一般規則の評

価中に引き起こされた特定の条件との間の関連付けは,処理系依存とする。 

c) ALLが指定されるとき,特定の条件領域の文情報項目及び条件情報領域が存在する順序は,処理

系依存とする。 

1022 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書D 
(参考) 

削除予定機能 

この附属書は,JIS X 3005-1の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-3の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-4の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-9の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-10の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-11の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-13の“附属書D 削除予定機能”によって修正される。 

この附属書は,ISO/IEC 9075-14の“附属書D 削除予定機能”によって修正される。 

次の機能については,この規格の改正で将来削除することを意図している。 

1) 機能T141“SIMILAR述語” 

1023 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書E 

(参考) 

ISO/IEC 9075:2008との非互換性 

この附属書は,ISO/IEC 9075-3の“附属書E ISO/IEC 9075:2003との非互換性”によって修正される。 

この附属書は,ISO/IEC 9075-4の“附属書E ISO/IEC 9075:2008との非互換性”によって修正される。 

この附属書は,ISO/IEC 9075-9の“附属書E ISO/IEC 9075:2003との非互換性”によって修正される。 

この附属書は,ISO/IEC 9075-10の“附属書E ISO/IEC 9075:2003との非互換性”によって修正される。 

この附属書は,ISO/IEC 9075-11の“附属書E ISO/IEC 9075:2008との非互換性”によって修正される。 

この附属書は,ISO/IEC 9075-13の“附属書E ISO/IEC 9075:2003との非互換性”によって修正される。 

この附属書は,ISO/IEC 9075-14の“附属書E ISO/IEC 9075:2008との非互換性”によって修正される。 

この規格のこの版は,JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)で規定されたデータベース言語SQLの前

の版との幾つかの非互換機能を導入する。 

この附属書中で明記されていない限り,データベース言語SQLの機能及び能力は,JIS X 3005-2:2010 

(ISO/IEC 9075-2:2008)と互換性がある。 

1) 多くの<予約語>が言語に追加された。これらの<予約語>は,次のとおりである。 

− ARRAY̲MAX̲CARDINALITY 

− CONTAINS 

− EQUALS 

− FIRST̲VALUE 

− LAG 

− LAST̲VALUE 

− LEAD 

− NTH̲VALUE 

− NTILE 

− OFFSET 

− PERCENT 

− PERIOD 

− PORTION 

− PRECEDES 

− SUCCEEDS 

− SYSTEM̲TIME 

− TRIM̲ARRAY 

− VERSIONING 

2) JIS X 3005-1:2010 (ISO/IEC 9075-1:2008)では,SQLプロファイル (SQL Profiles) がデータベース言

語SQLに対して定義されていた。この規格のこの版では,SQLプロファイルの定義が削除された。 

3) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,機能T052“行型に対するMAX及びMIN”が行型の

値に関するMAX演算及びMIN演算を提供していた。JIS X 3005-2 (ISO/IEC 9075-2) のこの版では,

その機能が削除され,規定で本質的に提供されるサポートが削除された。 

1024 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

4) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,参照可能ビューの基底表が<問合せ名>として定義さ

れることを許していた。これは,もはや禁止された。 

5) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,次のシナリオが許されていた。潜在的に非決定的で

ない参照可能ビューRVを作成する。(CHECK OPTION,検査制約又は表明によって,)RVが決定的

であるという事実に依存するものを作成し,その後,潜在的に非決定的なRVの下位ビューを追加

する。このシナリオは,もはや禁止された。 

6) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,更新可能な参照可能ビューの下位ビューが更新可能

でないことを許していた。これは,もはや禁止された。さらに,参照可能ビューの更新可能な継承

列は,継承列の親列によって参照される基底表中の列と同じ列を参照しなければならない。 

7) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008),ISO/IEC 9075-4:2008及びISO/IEC 9075-11:2008では,機

能IDのT322及びT332を一貫性をもって用いていなかった。これらは,この規格群の幾つかの規

格中で異なる三つの機能を識別していた。この規格群のこの版では,これらの三つの機能を識別す

るために,機能ID(T322,T332及びT341)を一貫性をもって用いた。 

8) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,<PREPARE文>は,無条件で,トランザクション開始

文であった。JIS X 3005-2 (ISO/IEC 9075-2) のこの版では,<PREPARE文>がトランザクションを開

始するかどうかは,<PREPARE文>が実行されるときに<PREPARE文>によって参照される<SQL文

変数>の内容に依存する。 

9) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,受取りカーソルは,<拡張カーソル名>によって参照

可能な種類の拡張動的カーソルであった。JIS X 3005-2 (ISO/IEC 9075-2) のこの版では,受取りカ

ーソルは,<カーソル名>をもち,拡張動的カーソルではない。 

10) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,<出力DESCRIBE文>のDESCRIBE CURSOR選択肢

は,拡張動的カーソルに適用可能であった。JIS X 3005-2 (ISO/IEC 9075-2) のこの版では,DESCRIBE 

CURSOR選択肢は,受取りカーソルだけに限定された(拡張動的カーソルは,拡張動的カーソルの

被準備文を記述することによって,今でもまだ記述できる。)。 

11) JIS X 3005-2:2010 (ISO/IEC 9075-2:2008)では,CHARACTER LARGE OBJECTに対するホスト言語

データ構造体の長さ部分は,ホスト言語からSQLサーバに移動させるとき,文字単位で測られたが,

逆方向はオクテット単位で測られた。JIS X 3005-2 (ISO/IEC 9075-2) のこの版では,長さ部分は,

どちらの方向でも,宣言型の<文字長単位>に依存して文字単位か又はオクテット単位のいずれかの

同じ単位で測られる。 

background image

1025 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書F 

(参考) 

SQLの機能の分類 

この附属書は,ISO/IEC 9075-3の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,ISO/IEC 9075-4の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,ISO/IEC 9075-9の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,ISO/IEC 9075-10の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,ISO/IEC 9075-11の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,ISO/IEC 9075-13の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,ISO/IEC 9075-14の“附属書F SQLの機能の分類”によって修正される。 

この附属書は,この規格中で規定している機能の分類を記述する。 

表38“必須機能の機能分類及び定義”は,この規格中で規定している中核SQLのSQL言語の機能の分

類を含む。表39“選択機能の機能分類”は,この規格中で規定している中核SQLでないSQL言語の機能

の分類を含む。 

これらの表では,最初の列は,表の行の位置を素早く示すために用いてもよい項番を含む。その他の点

では,これらの値は,役に立たず,不変ではない。すなわち,これらの値は,JIS X 3005 (ISO/IEC 9075) 規

格群の将来の版において,又は技術的正誤票によってさえも予告なく変更されることがある。 

表38“必須機能の機能分類及び定義”及び表39“選択機能の機能分類”の“機能ID”列は,表に含まれ

る各機能及び各副機能の正式な識別を示す。 

表38“必須機能の機能分類及び定義”及び表39“選択機能の機能分類”の“機能名”列は,機能IDの

値に関連付けられている機能又は副機能の簡潔な記述を含む。 

表38“必須機能の機能分類及び定義”の“機能の説明”列は,この規格の必須機能の定義だけを与える。

この定義は,全ての構文規則,アクセス規則及び適合性規則の制約を前提として,各機能で提供される特

定の言語要素の表示から成る。 

表39“選択機能の機能分類”は,機能の定義を与えない。それらの機能の定義は,適合性規則中に含ま

れ,“附属書A SQL適合性の要約”中で更に要約されている。 

表38−必須機能の機能分類及び定義 

機能ID 

機能名 

機能の説明 

E011 

数データ型 

− “6.1 <データ型>”:数の式,数定数,数の比較及び数の代入を

含む<数型>。 

E011-01 

INTEGER及びSMALLINTデ
ータ型(その全てのつづりを
含む。) 

− “5.2 <トークン>及び<分離符号>”:<予約語>のINT,INTEGER

及びSMALLINT。 

− “5.3 <定数>”:[<符号>] <符号なし整数> 
− “6.1 <データ型>”:INTEGER及びSMALLINTの<真数型>。 
− “13.5 データ型対応”:提供している全ての言語のINTEGER及

びSMALLINTの型対応。 

background image

1026 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

E011-02 

REAL,DOUBLE PRECISION
及びFLOATデータ型 

− “5.2 <トークン>及び<分離符号>”:<予約語>のREAL,

DOUBLE,FLOAT及びPRECISION。 

− “5.3 <定数>”:[<符号>] <概数定数> 
− “6.1 <データ型>”:<概数型>。 
− “13.5 データ型対応”:提供している全ての言語のREAL,

DOUBLE PRECISION及びFLOATの型対応。 

E011-03 

DECIMAL及びNUMERICデ
ータ型 

− “5.2 <トークン>及び<分離符号>”:<予約語>のDEC,DECIMAL

及びNUMERIC。 

− “5.3 <定数>”:[<符号>] <真数定数>。 
− “6.1 <データ型>”:DECIMAL及びNUMERICの<真数型>。 
− “13.5 データ型対応”:提供している全ての言語のDECIMAL及

びNUMERICの型対応。 

E011-04 

算術演算子 

− “6.27 <数値式>”:<数一次子>が<値式一次子>のとき。 

E011-05 

数の比較 

− “8.2 <比較述語>”:<表副問合せ>及び機能F131“グループ操

作”の提供なしで,数データ型に対して。 

E011-06 

数データ型間の暗黙の型変換 

− “8.2 <比較述語>”:数データ型のどの型の値も,互いに比較す

ることができる。そのような値は,それらの代数値に関して比
較される。 

− “9.1 取出し代入”及び“9.2 格納代入”:ある数型の値は,丸

め,切捨て及び範囲外の条件に従って,別の数型に代入するこ
とができる。 

E021 

文字列型 

− “6.1 <データ型>”:文字の式,文字定数,文字の比較,文字の

代入及び文字データに関するその他の操作を含む<文字列型>。 

E021-01 

CHARACTERデータ型(その
全てのつづりを含む。) 

− “5.2 <トークン>及び<分離符号>”:<予約語>のCHAR及び

CHARACTER。 

− “6.1 <データ型>”:CHARACTERの<文字列型>。 
− “6.29 <データ列値式>”:CHARACTER型の値に対して。 
− “13.5 データ型対応”:提供している全ての言語の

CHARACTERの型対応。 

10 

E021-02 

CHARACTER VARYINGデー
タ型(その全てのつづりを含
む。) 

− “5.2 <トークン>及び<分離符号>”:<予約語>のVARCHAR及

びVARYING。 

− “6.1 <データ型>”:CHARACTER VARYINGの<文字列型>”。 
− “6.29 <データ列値式>”:CHARACTER VARYING型の値に対し

て。 

− “13.5 データ型対応”:提供している全ての言語の

CHARACTER VARYINGの型対応。 

11 

E021-03 

文字定数 

− “5.3 <定数>”:<引用符>[<文字表現>...]<引用符>。 

12 

E021-04 

CHARACTER̲LENGTH関数 

− “6.28 <数値関数>”:<CHAR̲LENGTH式>。 

13 

E021-05 

OCTET̲LENGTH関数 

− “6.28 <数値関数>”:<OCTET̲LENGTH式>。 

14 

E021-06 

SUBSTRING関数 

− “6.30 <データ列値関数>”:<文字部分列関数>。 

15 

E021-07 

文字連結 

− “6.29 <データ列値式>”:<連結>式。 

16 

E021-08 

UPPER及びLOWER関数 

− “6.30 <データ列値関数>”:<大文字小文字変換>関数。 

17 

E021-09 

TRIM関数 

− “6.30 <データ列値関数>”:<TRIM関数>。 

18 

E021-10 

固定長文字列型と可変長文字
列型との間の暗黙の型変換 

− “8.2 <比較述語>”:CHARACTER又はCHARACTER VARYING

データ型のいずれかの型の値は,互いに比較することができる。 

− “9.1 取出し代入”及び“9.2 格納代入”:CHARACTER又は

CHARACTER VARYINGデータ型のいずれかの型の値は,切捨
ての条件に従って,他の型に代入することができる。 

background image

1027 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

19 

E021-11 

POSITION関数 

− “6.28 <数値関数>”:<POSITION式>。 

20 

E021-12 

文字の比較 

− “8.2 <比較述語>”:<表副問合せ>及び機能F131“グループ操

作”の提供なしで,CHARACTER及びCHARACTER VARYING
データ型に対して。 

21 

E031 

識別子 

− “5.2 <トークン>及び<分離符号>”:<通常識別子>及び<区切り

識別子>。 

22 

E031-01 

区切り識別子 

− “5.2 <トークン>及び<分離符号>”:<区切り識別子>。 

23 

E031-02 

小文字識別子 

− “5.2 <トークン>及び<分離符号>”:<通常識別子>中のアルファ

ベット文字は,大文字又は小文字のどちらであってもよい(非
区切り識別子が大文字だけから成る必要はないことを意味す
る。)。 

24 

E031-03 

後続する下線文字 

− “5.2 <トークン>及び<分離符号>”:<通常識別子>中の最後の<

識別子部分>が<下線文字>であってもよい。 

25 

E051 

基本問合せ指定 

− “7.12 <問合せ指定>”:機能F131“グループ操作”の提供なし

で,<表参照>が,<表名>である<表名又は問合せ名>のとき。 

26 

E051-01 

SELECT DISTINCT 

− “7.12 <問合せ指定>”:副機能E051-02からE051-09までなし

で,DISTINCTの<集合限定子>あり。 

27 

E051-02 

GROUP BY句 

− “7.4 <表式>”:副機能E051-04からE051-09までなしでの

<GROUP BY句>。 

− “7.9 <GROUP BY句>”:<選択リスト>中の全ての非集約化列を

<GROUP BY句>が含まなければならないという制約,及び
<GROUP BY句>中のどの列も<選択リスト>中に現れなければ
ならないという制約付きで。 

28 

E051-04 

<選択リスト>中にない列を含
むことができるGROUP BY 

− “7.9 <GROUP BY句>”:<GROUP BY句>中のどの列も<選択リ

スト>中に現れなければならないという制約なし。 

29 

E051-05 

再命名できる選択リスト項目 

− “7.12 <問合せ指定>”:<AS句>。 

30 

E051-06 

HAVING句 

− “7.4 <表式>”:<HAVING句>。 
− “7.10 <HAVING句>” 

31 

E051-07 

選択リスト中の修飾付き* 

− “7.12 <問合せ指定>”:<修飾付きアスタリスク>。 

32 

E051-08 

FROM句中の相関名 

− “7.6 <表参照>”:[ AS ] <相関名> 

33 

E051-09 

FROM句中での列名の再命名 

− “7.6 <表参照>”:[ AS ] <相関名> [ <左括弧> <導出列リ

スト> <右括弧> ] 

34 

E061 

基本述語及び探索条件 

− “8.21 <探索条件>”及び“8.1 <述語>” 

35 

E061-01 

比較述語 

− “8.2 <比較述語>”:<表副問合せ>の提供なしで,提供している

データ型に対して。 

36 

E061-02 

BETWEEN述語 

− “8.3 <BETWEEN述語>” 

37 

E061-03 

値のリスト付きのIN述語 

− “8.4 <IN述語>”:<表副問合せ>の提供なしで。 

38 

E061-04 

LIKE述語 

− “8.5 <LIKE述語>”:[ ESCAPE <エスケープ文字> ] なし。 

39 

E061-05 

LIKE述語:ESCAPE句 

− “8.5 <LIKE述語>”:[ ESCAPE <エスケープ文字> ] あり。 

40 

E061-06 

NULL述語 

− “8.8 <NULL述語>”:機能F481“拡張NULL述語”なし。 

41 

E061-07 

限定比較述語 

− “8.9 <限定比較述語>”:<表副問合せ>の提供なし。 

42 

E061-08 

EXISTS述語 

− “8.10 <EXISTS述語>” 

43 

E061-09 

比較述語中の副問合せ 

− “8.2 <比較述語>”:<表副問合せ>の提供ありで,提供している

データ型に対して。 

44 

E061-11 

IN述語中の副問合せ 

− “8.4 <IN述語>”:<表副問合せ>の提供あり。 

45 

E061-12 

限定比較述語中の副問合せ 

− “8.9 <限定比較述語>”:<表副問合せ>の提供あり。 

46 

E061-13 

相関副問合せ 

− “8.1 <述語>”:外側の問合せ中の列への相関参照として,<表副

問合せ>中で<相関名>を用いることができるとき。 

background image

1028 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

47 

E061-14 

探索条件 

− “8.21 <探索条件>” 

48 

E071 

基本問合せ式 

− “7.13 <問合せ式>” 

49 

E071-01 

UNION DISTINCT表演算子 

− “7.13 <問合せ式>”:UNION [ DISTINCT ] の提供あり。 

50 

E071-02 

UNION ALL表演算子 

− “7.13 <問合せ式>”:UNION ALL の提供あり。 

51 

E071-03 

EXCEPT DISTINCT表演算子 

− “7.13 <問合せ式>”:EXCEPT [ DISTINCT ] の提供あり。 

52 

E071-05 

表演算子によって合成され,
正確に同じデータ型をもつ必
要がない列 

− “7.13 <問合せ式>”:UNION及びEXCEPTによって合成される

列が,正確に同じデータ型をもつ必要はない。 

53 

E071-06 

副問合せ中の表演算子 

− “7.13 <問合せ式>”:<表副問合せ>がUNION又はEXCEPTを

指定できる。 

54 

E081 

基本権限 

− “12.3 <権限>” 

55 

E081-01 

表レベルでのSELECT権限 

− “12.3 <権限>”:<権限列リスト>なしのSELECTの<動作>。 

56 

E081-02 

DELETE権限 

− “12.3 <権限>”:DELETEの<動作>。 

57 

E081-03 

表レベルでのINSERT権限 

− “12.3 <権限>”:<権限列リスト>なしのINSERTの<動作>。 

58 

E081-04 

表レベルでのUPDATE権限 

− “12.3 <権限>”:<権限列リスト>なしのUPDATEの<動作>。 

59 

E081-05 

列レベルでのUPDATE権限 

− “12.3 <権限>”:UPDATE <左括弧> <権限列リスト> <右括弧> 

の<動作>。 

60 

E081-06 

表レベルでのREFERENCES
権限 

− “12.3 <権限>”:<権限列リスト>なしのREFERENCESの<動作

>で。 

61 

E081-07 

列レベルでのREFERENCES
権限 

− “12.3 <権限>”:REFERENCES <左括弧> <権限列リスト> <右括

弧> の<動作>。 

62 

E081-08 

WITH GRANT OPTION 

− “12.2 <GRANT権限文>”:WITH GRANT OPTION 

63 

E081-09 

USAGE権限 

− “12.3 <権限>”:USAGEの<動作>。 

64 

E081-10 

EXECUTE権限 

− “12.3 <権限>”:EXECUTEの<動作>。 

65 

E091 

集合関数 

− “6.9 <集合関数指定>” 

66 

E091-01 

AVG 

− “6.9 <集合関数指定>”:AVGの<計算操作>。 

67 

E091-02 

COUNT 

− “6.9 <集合関数指定>”:COUNTの<計算操作>。 

68 

E091-03 

MAX 

− “6.9 <集合関数指定>”:MAXの<計算操作>。 

69 

E091-04 

MIN 

− “6.9 <集合関数指定>”:MINの<計算操作>。 

70 

E091-05 

SUM 

− “6.9 <集合関数指定>”:SUMの<計算操作>。 

71 

E091-06 

ALL限定子 

− “6.9 <集合関数指定>”:ALLの<集合限定子>。 

72 

E091-07 

DISTINCT限定子 

− “6.9 <集合関数指定>”:DISTINCTの<集合限定子>。 

73 

E101 

基本データ操作 

− “14 データ操作”:<INSERT文>,<DELETE文:探索>及び

<UPDATE文:探索>。 

74 

E101-01 

INSERT文 

− “14.11 <INSERT文>”:<文脈型付き表値構成子>が,単一にす

ぎない<文脈型付き行値式>から成り得るとき。 

75 

E101-03 

探索UPDATE文 

− “14.14 <UPDATE文:探索>”:機能E153“副問合せのある更新

可能な問合せ”又は機能F221“明示既定値”のいずれかの提供
なし。 

76 

E101-04 

探索DELETE文 

− “14.9 <DELETE文:探索>” 

77 

E111 

単一行SELECT文 

− “14.7 <SELECT文:単一行>”:機能F131“グループ操作”の

提供なし。 

78 

E121 

基本カーソル提供 

− “14 データ操作”:<カーソル宣言>,<OPEN文>,<FETCH文

>,<CLOSE文>,<DELETE文:位置付け>及び<UPDATE文:
位置付け>。 

background image

1029 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

79 

E121-01 

DECLARE CURSOR 

− “14.1 <カーソル宣言>”:<ソートキー>中の各<値式>が<列参照

>でなければならず,その<列参照>が<選択リスト>中になけれ
ばならず,かつ,<カーソル保持可能性>が指定されないとき。 

80 

E121-02 

選択リスト中にある必要がな
いORDER BY列 

− “14.1 <カーソル宣言>”:<列参照>が<選択リスト>中にもある

必要がないように,副機能E121-01を拡張。 

81 

E121-03 

ORDER BY句中の値式 

− “14.1 <カーソル宣言>”:<ソートキー>中の<値式>が<列参照>

である必要がないように,副機能E121-01を拡張。 

82 

E121-04 

OPEN文 

− “14.4 <OPEN文>” 

83 

E121-06 

位置付けUPDATE文 

− “14.13 <UPDATE文:位置付け>”:機能E153“副問合せのある

更新可能な問合せ”又は機能F221“明示既定値”のいずれかの
提供なし。 

84 

E121-07 

位置付けDELETE文 

− “14.8 <DELETE文:位置付け>” 

85 

E121-08 

CLOSE文 

− “14.6 <CLOSE文>” 

86 

E121-10 

FETCH文:暗に想定される
NEXT 

− “14.5 <FETCH文>” 

87 

E121-17 

WITH HOLDカーソル 

− “14.1 <カーソル宣言>”:ここで,<ソートキー>中の<値式>が<

列参照>である必要はなく,<選択リスト>中にある必要はなく,
かつ,<カーソル保持可能性>が指定されてもよい。 

88 

E131 

ナル値提供(値の代わりにナ
ル) 

− “4.13 列,フィールド及び属性”:ナル可能性特性 
− “6.5 <文脈型付き値指定>”:<ナル指定> 

89 

E141 

基本整合性制約 

− “11.6 <表制約定義>”:この表中のこの機能の副機能によって明

記するとおり。 

90 

E141-01 

NOT NULL制約 

− “11.4 <列定義>”:NOT NULLの<列制約>。 

91 

E141-02 

NOT NULL列のUNIQUE制約 − “11.4 <列定義>”:NOT NULLとして指定された列に対する

UNIQUEの<一意性指定>。 

− “11.7 <一意性制約定義>”:UNIQUEの<一意性指定>。 

92 

E141-03 

PRIMARY KEY制約 

− “11.4 <列定義>”:NOT NULLとして指定された列に対する

PRIMARY KEYの<一意性指定>。 

− “11.7 <一意性制約定義>”:PRIMARY KEYの<一意性指定>。 

93 

E141-04 

参照削除動作及び参照更新動
作の両方に対してNO 
ACTION既定値をもつ基本
FOREIGN KEY制約 

− “11.4 <列定義>”:<参照指定>の<列制約>。 
− “11.8 <参照制約定義>”:<列名リスト>中に列が指定されるな

らば,それは,適用可能な<一意性制約定義>の<一意列リスト>
中の名前と同じ順序でなければならず,かつ,一致する列の<デ
ータ型>が同じでなければならない。 

94 

E141-06 

CHECK制約 

− “11.4 <列定義>”:<検査制約定義>の<列制約>。 
− “11.9 <検査制約定義>” 

95 

E141-07 

列の既定値 

− “11.4 <列定義>”:<DEFAULT句>。 

96 

E141-08 

PRIMARY KEYから推定され
るNOT NULL 

− “11.4 <列定義>”及び“11.7 <一意性制約定義>”:全ての

PRIMARY KEY及びUNIQUE制約とともにNOT NULLが指定
されるという副機能E141-02及びE141-03での制限を取り除く。 

− “11.4 <列定義>”:PRIMARY KEY制約でNOT NULLが暗に想

定される。 

97 

E141-10 

任意の順序で指定できる外部
キー中の名前 

− “11.4 <列定義>”及び“11.8 <参照制約定義>”:<列名リスト>中

で列が指定されるならば,それらの列は,適用可能な<一意性制
約定義>の<一意列リスト>中の名前と同じ順序である必要がな
いように,副機能E141-04を拡張する。 

98 

E151 

トランザクション提供 

− “17 トランザクション管理”:<COMMIT文>及び<ROLLBACK

文>。 

background image

1030 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

99 

E151-01 

COMMIT文 

− “17.7 <COMMIT文>” 

100 

E151-02 

ROLLBACK文 

− “17.8 <ROLLBACK文>” 

101 

E152 

基本SET TRANSACTION文 

− “17.2 <SET TRANSACTION文>” 

102 

E152-01 

SET TRANSACTION

文:

ISOLATION 

LEVEL 

SERIALIZABLE句 

− “17.2 <SET TRANSACTION文>”:ISOLATION LEVEL 

SERIALIZABLE句の<トランザクションモード>。 

103 

E152-02 

SET TRANSACTION文:READ 
ONLY及びREAD WRITE句 

− “17.2 <SET TRANSACTION文>”:READ ONLY又はREAD 

WRITEの<トランザクションアクセスモード>。 

104 

E153 

副問合せのある更新可能な問
合せ 

− “7.13 <問合せ式>”:<WHERE句>が<副問合せ>を含んでいて

も,<問合せ式>が更新可能。 

105 

E161 

先行する2重負符号を用いる
SQL注釈 

− “5.2 <トークン>及び<分離符号>”:<単純注釈>。 

106 

E171 

SQLSTATE提供 

− “24.1 SQLSTATE” 

107 

E182 

ホスト言語結合 

− “13 SQLクライアントモジュール” 
注記599 SQL処理系は,モジュール言語,埋込みSQL又はそれら

の両方のいずれかを用いて,標準ホスト言語との少なく
とも一つの結合を提供する必要がある。これは,次の機能
のいずれかによって提供できる。 

機能B011“埋込みAda” 
機能B012“埋込みC” 
機能B013“埋込みCOBOL” 
機能B014“埋込みFortran” 
機能B015“埋込みMUMPS” 
機能B016“埋込みPascal” 
機能B017“埋込みPL/I” 
機能B111“モジュール言語Ada” 
機能B112“モジュール言語C” 
機能B113“モジュール言語COBOL” 
機能B114“モジュール言語Fortran” 
機能B115“モジュール言語MUMPS” 
機能B116“モジュール言語Pascal” 
機能B117“モジュール言語PL/I” 

108 

F031 

基本スキーマ操作 

− “11 スキーマ定義及びスキーマ操作”:この機能の副機能によ

って示されるとおりに選択された機能。 

109 

F031-01 

永続実表を作成するための
CREATE TABLE文 

− “11.3 <表定義>”:<スキーマ定義>の文脈中ではない。 

110 

F031-02 

CREATE VIEW文 

− “11.32 <ビュー定義>”:<スキーマ定義>の文脈中ではなく,か

つ,機能F081“ビュー中のUNION及びEXCEPTION”の提供
なし。 

111 

F031-03 

GRANT文 

− “12.1 <GRANT文>”:<スキーマ定義>の文脈中ではない。 

112 

F031-04 

ALTER TABLE

文:ADD 

COLUMN句 

− “11.10 <表変更文>”:<列定義追加>の句。 
− “11.11 <列定義追加>” 

113 

F031-13 

DROP TABLE文:RESTRICT
句 

− “11.31 <表削除文>”:RESTRICTの<削除動作>。 

114 

F031-16 

DROP VIEW文:RESTRICT句 − “11.33 <ビュー削除文>”:RESTRICTの<削除動作>。 

115 

F031-19 

REVOKE文:RESTRICT句 

− “12.7 <REVOKE文>”:RESTRICTの<削除動作>,この文の利

用が,削除される表の所有者に制限できる場合だけ。 

表38−必須機能の機能分類及び定義(続き) 

background image

1031 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

機能ID 

機能名 

機能の説明 

116 

F041 

基本結合表 

− “7.7 <結合表>”:機能F401,F402及びF403の提供なしで。 

117 

F041-01 

内結合(必然的にINNERキー
ワードではない) 

− “7.6 <表参照>”:副機能F041-02からF041-08までの提供なし

で,<結合表>の句。 

118 

F041-02 

INNERキーワード 

− “7.7 <結合表>”:INNERの<結合型>。 

119 

F041-03 

LEFT OUTER JOIN 

− “7.7 <結合表>”:LEFTの<外結合型>。 

120 

F041-04 

RIGHT OUTER JOIN 

− “7.7 <結合表>”:RIGHTの<外結合型>。 

121 

F041-05 

入れ子にできる外結合 

− “7.7 <結合表>”:<結合表>内の<表参照>自体が<結合表>であっ

てもよいように,副機能F041-01を拡張する。 

122 

F041-07 

内結合中でも用いることがで
きる,左外結合又は右外結合
中の内表 

− “7.7 <結合表>”:入れ子になった<結合表>内の<表名>が,外側

の<結合表>中の<表名>と同じであってもよいように,副機能
F041-01を拡張する。 

123 

F041-08 

(=だけでなく)提供される全
ての比較演算子 

− “7.7 <結合表>”:<等号演算子>の<比較演算子>をもつ<比較述

語>に,<結合条件>が限定されないように,副機能F041-01を拡
張する。 

124 

F051 

基本日付及び時刻 

− “6.1 <データ型>”:日時定数,日時の比較及び日時の変換を含

む<日時型>。 

125 

F051-01 

DATEデータ型(DATE定数の
提供を含む。) 

− “5.3 <定数>”:<日時定数>の形式<日付定数>。 
− “6.1 <データ型>”:DATE <日時型>。 
− “6.31 <日時値式>”:型DATEの値に対して。 

126 

F051-02 

少なくとも0の小数秒精度を
もつTIMEデータ型(TIME定
数の提供を含む。) 

− “5.3 <定数>”:形式<日時定数>の<時刻定数>。ここで,<引用

符なし時刻データ列>の値は,省略可能な<時刻帯時間隔>を含
まない<時刻値>を単純に含む。 

− “6.1 <データ型>”:<WITH又はWITHOUT TIME ZONE>の句な

しでのTIME <日時型>。 

− “6.31 <日時値式>”:型TIMEの値に対して。 

127 

F051-03 

少なくとも0及び6の小数秒
精度をもつTIMESTAMPデー
タ型(TIMESTAMP定数の提供
を含む。) 

− “5.3 <定数>”:形式<日時定数>の<時刻印定数>。ここで,<引

用符なし時刻印データ列>の値は,省略可能な<時刻帯時間隔>
を含まない<時刻値>を単純に含む。 

− “6.1 <データ型>”:<WITH又はWITHOUT TIME ZONE>の句な

しでのTIMESTAMP <日時型>。 

− “6.31 <日時値式>”:型TIMESTAMPの値に対して。 

128 

F051-04 

DATE

TIME

TIMESTAMPデータ型に関す
る比較述語 

− “8.2 <比較述語>”:DATE型とDATE型との間,TIME型とTIME

型との間,TIMESTAMP型とTIMESTAMP型との間の値の比較
に対して。 

129 

F051-05 

日時型と文字列型との間の陽
に指定されるCAST 

− “6.13 <CAST指定>”:機能F201“CAST関数”の提供が得られ

るならば,文字列型からDATE,TIME及びTIMESTAMP型への
型変換,DATE型からDATE,TIMESTAMP及び文字列型への型
変換,TIME型からTIME,TIMESTAMP及び文字列型への型変
換,並びにTIMESTAMP型からDATE,TIME,TIMESTAMP及
び文字列型への型変換。 

130 

F051-06 

CURRENT̲DATE 

− “6.32 <日時値関数>”:<CURRENT̲DATA値関数>。 
− “6.31 <日時値式>”:値が<CURRENT̲DATA値関数>のとき。 

131 

F051-07 

LOCALTIME 

− “6.32 <日時値関数>”:<現在地方時刻値関数>。 
− “6.31 <日時値式>”:値が<現在地方時刻値関数>のとき。 
− “11.5 <DEFAULT句>”:<日時値関数>のLOCALTIME選択肢。 

background image

1032 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

132 

F051-08 

LOCALTIMESTAMP 

− “6.32 <日時値関数>”:<現在地方時刻印値関数>。 
− “6.31 <日時値式>”:値が<現在地方時刻印値関数>のとき。 
− “11.5 <DEFAULT句>”:<日時値関数>のLOCALTIMESTAMP選

択肢。 

133 

F081 

ビュー中のUNION及び
EXCEPT 

− “11.32 <ビュー定義>”:<ビュー定義>中の<問合せ式>が

UNION,UNION ALL及び/又はEXCEPTを指定してもよい。 

134 

F131 

グループ操作 

− グループビュー (grouped view) は,<副問合せ>に含まれていな

い,陽に指定されるか又は暗に想定される<GROUP BY句>又は
<HAVING句>を含む<問合せ指定>である元の<問合せ式>をも
つビュー。 

この定義を用いると,機能F131“グループ操作”は,それの五つの
副機能F131-01,F131-02,F131-03,F131-04及びF131-05の和集合。 

135 

F131-01 

グループビューをもつ問合せ
中で提供されるWHERE,
GROUP BY及びHAVING句 

− “7.4 <表式>”:<FROM句>中の表がグループビューであっても,

<WHERE句>,<GROUP BY句>及び<HAVING句>を指定しても
よい。 

136 

F131-02 

グループビューをもつ問合せ
中で提供される複数表 

− “7.5 <FROM句>”:<FROM句>中の表がグループビューであっ

ても,<FROM句>が二つ以上の<表参照>を指定してもよい。 

137 

F131-03 

グループビューをもつ問合せ
中で提供される集合関数 

− “7.12 <問合せ指定>”:<FROM句>中の表がグループビューで

あっても,<選択リスト>が<集合関数指定>を指定してもよい。 

138 

F131-04 

GROUP BY及びHAVING句並
びにグループビューをもつ副
問合せ 

− “7.15 <副問合せ>”:<比較述語>中の<副問合せ>が,<GROUP 

BY句>及び/又は<HAVING句>を含んでもよく,及び/又は,
グループビューを識別してもよい。 

139 

F131-05 

GROUP BY及びHAVING句並
びにグループビューをもつ単
一行SELECT 

− “14.7 <SELECT文:単一行>”:<FROM句>中の表がグループ

ビューであってもよい。 

− “14.7 <SELECT文:単一行>”:<表式>が,<GROUP BY句>及

び/又は<HAVING句>を指定してもよい。 

140 

F181 

複数モジュール提供 
注記600 複数のホスト翻訳
単位を一度に単一のSQLセシ
ョンに関連付ける能力。 

− “13.1 <SQLクライアントモジュール定義>”:SQLエージェン

トを二つ以上の<SQLクライアントモジュール定義>に関連付け
ることができる。この機能で,複数の<SQLクライアントモジュ
ール定義>又は<SQL埋込みホストプログラム>を別々にコンパ
イルし,実行時にそれらを集めて適切に“リンクする”ことを
SQL処理系に頼ることができる。可搬性を確保するためには,
適用業務プログラムは,次の制限に従わなければならない。 

− 同じ<カーソル名>のカーソルをもつモジュールをリンクするこ

とを避ける。 

− 同じ<SQL文名>を用いて文を準備するモジュールをリンクする

ことを避ける。 

− 同じ<記述子名>の記述子を割り当てるモジュールをリンクする

ことを避ける。 

− <埋込み例外宣言>の有効範囲が単一の翻訳単位であることを前

提とする。 

− <埋込み変数名>が宣言される同じ翻訳単位中でだけ,それを参

照できることを前提とする。 

141 

F201 

CAST関数 
注記601 これは,提供される
全てのデータ型間の関連する
CASTの提供を意味する。 

− “6.13 <CAST指定>”:提供される全てのデータ型に対して。 
− “6.26 <値式>”:<CAST指定> 

142 

F221 

明示既定値 

− “6.5 <文脈型付き値指定>”:<既定値指定>。 
注記602 UPDATE文及びINSERT文での利用を含む。 

background image

1033 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

143 

F261 

CASE式 

− “6.26 <値式>”:<CASE式>。 

144 

F261-01 

単純CASE 

− “6.12 <CASE式>”:<単純CASE>。 

145 

F261-02 

探索CASE 

− “6.12 <CASE式>”:<探索CASE>。 

146 

F261-03 

NULLIF 

− “6.12 <CASE式>”:NULLIF <CASE略式>。 

147 

F261-04 

COALESCE 

− “6.12 <CASE式>”:COALESCE <CASE略式>。 

148 

F311 

スキーマ定義文 

− “11.1 <スキーマ定義>” 

149 

F311-01 

CREATE SCHEMA 

− “11.1 <スキーマ定義>”:二つの異なる<表定義>中の<参照制約

定義>が互いに他の表の列を参照してもよいという循環参照の
提供。 

150 

F311-02 

永続実表のためのCREATE 
TABLE 

− “11.1 <スキーマ定義>”:<表定義>である<スキーマ要素>。 
− “11.3 <表定義>”:<スキーマ定義>の文脈中で。 

151 

F311-03 

CREATE VIEW 

− “11.1 <スキーマ定義>”:<ビュー定義>である<スキーマ要素>。 
− “11.32 <ビュー定義>”:<スキーマ定義>の文脈中で,WITH 

CHECK OPTION句なしで,かつ,機能F081“ビュー中のUNION
及びEXCEPT”の提供なし。 

152 

F311-04 

CREATE VIEW:WITH CHECK 
OPTION 

− “11.32 <ビュー定義>”:<スキーマ定義>の文脈中で,しかし,

機能F081“ビュー中のUNION及びEXCEPT”の提供なしで,
WITH CHECK OPTION句。 

153 

F311-05 

GRANT文 

− “11.1 <スキーマ定義>”:<GRANT文>である<スキーマ要素>。 
− “12.1 <GRANT文>”:<スキーマ定義>の文脈中で。 

154 

F471 

スカラ副問合せ値 

− “6.26 <値式>”:<値式一次子>が<スカラ副問合せ>であっても

よい。 

155 

F481 

拡張NULL述語 

− “8.8 <NULL述語>”:<行値式>が<列参照>以外のものであって

もよい。 

156 

F812 

基本フラグ付け 

− 第1部の“8.5 SQLフラグ機能”:中核SQLフラグ付け (Core 

SQL Flagging) と指定される“フラグ付け水準”,及び構文だけ 
(Syntax Only) と指定される“検査の範囲”。 

注記603 この種類のフラグ付けは,カタログ情報へのアクセスを

必要としないで,構文だけを検査することによって,ベン
ダ拡張及びその他の規格外のSQLを識別する。 

157 

S011 

個別データ型 

− “11.51 <利用者定義型定義>”:<表現>が<既定義型>のとき。 
− “11.59 <データ型削除文>” 

158 

T321 

基本SQL呼出しルーチン 

− “11.60 <SQL呼出しルーチン>” 
− “11.62 <ルーチン削除文>” 
−  機能T041“基本LOBデータ型提供”が提供されるならば,<

位置付け子標識>も提供しなければならない。 

注記604 “ルーチン”は,関数,メソッド及び手続の総称である。

この機能は,規格に適合するSQL処理系が利用者定義関
数及び利用者定義手続の両方を提供することを要求す
る。中核SQLに適合するSQL処理系は,ルーチンを書く
ための少なくとも一つの言語を提供しなければならな
い。その言語は,SQLであってもよい。その言語がSQL
ならば,中核SQLでの基本指定能力は,1文ルーチンを
指定できることである。オーバロードされる関数及び手
続の提供は,中核SQLの一部分ではない。 

159 

T321-01 

オーバロードなしの利用者定
義関数 

− “11.60 <SQL呼出しルーチン>”:<関数指定>。 

background image

1034 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

表38−必須機能の機能分類及び定義(続き) 

機能ID 

機能名 

機能の説明 

160 

T321-02 

オーバロードなしの利用者定
義格納手続 

− “11.60 <SQL呼出しルーチン>”:<SQL呼出し手続>。 

161 

T321-03 

関数呼出し 

− “6.4 <値指定>及び<相手指定>”:<ルーチン呼出し>である<値

式一次子>。 

− “10.4 <ルーチン呼出し>”:利用者定義関数に対して。 

162 

T321-04 

CALL文 

− “10.4 <ルーチン呼出し>”:<CALL文>によって用いられる。 
− “16.1 <CALL文>” 

163 

T321-05 

RETURN文 

− “16.2 <RETURN文>”:SQL処理系がSQLルーチンを提供する

ならば。 

164 

T631 

一つのリスト要素をもつIN
述語 

− “8.4 <IN述語>”:ただ一つの<行値式>を含む<IN値リスト>。 

表39 “選択機能の機能分類”は,機能の定義を与えない。それらの機能の定義は,適合性規則中に含ま

れ,“附属書A SQL適合性の要約”中で更に要約されている。 

11 表39−選択機能の機能分類 

機能ID 

機能名 

B011 1) 

埋込みAda 

B012 1) 

埋込みC 

B013 1) 

埋込みCOBOL 

B014 1) 

埋込みFortran 

B015 1) 

埋込みMUMPS 

B016 1) 

埋込みPascal 

B017 1) 

埋込みPL/I 

B021 

直接SQL 

B031 

基本動的SQL 

10 

B032 

拡張動的SQL 

11 

B032-01 

<入力DESCRIBE文> 

12 

B033 

SQL呼出し関数の型付きでない引数 

13 

B034 

カーソル属性の動的指定 

14 

B035 

非拡張記述子名 

15 

B041 

埋込みSQL例外宣言の拡張 

16 

B051 

拡張実行権 

17 

B111 1) 

モジュール言語Ada 

18 

B112 1) 

モジュール言語C 

19 

B113 1) 

モジュール言語COBOL 

20 

B114 1) 

モジュール言語Fortran 

21 

B115 1) 

モジュール言語MUMPS 

22 

B116 1) 

モジュール言語Pascal 

23 

B117 1) 

モジュール言語PL/I 

24 

B121 

ルーチン言語Ada 

25 

B122 

ルーチン言語C 

26 

B123 

ルーチン言語COBOL 

27 

B124 

ルーチン言語Fortran 

28 

B125 

ルーチン言語MUMPS 

29 

B126 

ルーチン言語Pascal 

background image

1035 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

30 

B127 

ルーチン言語PL/I 

31 

B128 

ルーチン言語SQL 

32 

B211 

モジュール言語Ada:VARCHAR及びNUMERIC提供 

33 

B221 

ルーチン言語Ada:VARCHAR及びNUMERIC提供 

34 

F032 

CASCADE削除動作 

35 

F033 

ALTER TABLE文:DROP COLUMN句 

36 

F034 

拡張REVOKE文 

37 

F034-01 

スキーマオブジェクトの所有者以外によって実行されるREVOKE文 

38 

F034-02 

REVOKE文:GRANT OPTION FOR句 

39 

F034-03 

権限受領者がWITH GRANT OPTIONをもつ権限を剝奪するためのREVOKE文 

40 

F052 

時間隔及び日時の算術 

41 

F053 

OVERLAPS述語 

42 

F054 

DATE型優先順序リスト中のTIMESTAMP 

43 

F111 

SERIALIZABLE以外の隔離性水準 

44 

F111-01 

READ UNCOMMITTED隔離性水準 

45 

F111-02 

READ COMMITTED隔離性水準 

46 

F111-03 

REPEATABLE READ隔離性水準 

47 

F121 

基本診断管理 

48 

F121-01 

GET DIAGNOSTICS文 

49 

F121-02 

SET TRANSACTION文:DIAGNOSTICS SIZE句 

50 

F122 

拡張診断管理 

51 

F123 

全診断 

52 

F171 

利用者ごとの複数スキーマ 

53 

F191 

参照削除動作 

54 

F200 

TRUNCATE TABLE文 

55 

F202 

TRUNCATE TABLE文:識別列再開始選択肢 

56 

F222 

INSERT文:DEFAULT VALUES句 

57 

F251 

定義域提供 

58 

F262 

拡張CASE式 

59 

F263 

単純CASE式中のコンマで区切られた述語 

60 

F271 

複合文字定数 

61 

F281 

LIKE強化 

62 

F291 

UNIQUE述語 

63 

F301 

問合せ式中のCORRESPONDING 

64 

F302 

INTERSECT表演算子 

65 

F302-01 

INTERSECT DISTINCT表演算子 

66 

F302-02 

INTERSECT ALL表演算子 

67 

F304 

EXCEPT ALL表演算子 

68 

F312 

MERGE文 

69 

F313 

拡張MERGE文 

70 

F314 

DELETE分岐をもつMERGE文 

71 

F321 

利用者認可 

72 

F361 

サブプログラム提供 

73 

F381 

拡張スキーマ操作 

74 

F381-01 

ALTER TABLE文:ALTER COLUMN句 

75 

F381-02 

ALTER TABLE文:ADD CONSTRAINT句 

background image

1036 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

76 

F381-03 

ALTER TABLE文:DROP CONSTRAINT句 

77 

F382 

列データ型変更 

78 

F383 

列NOT NULL句設定 

79 

F384 

IDENTITY特性句削除 

80 

F385 

列生成式句削除 

81 

F386 

識別列生成句設定 

82 

F391 

長い識別子 

83 

F392 

識別子中のUnicodeエスケープ 

84 

F393 

定数中のUnicodeエスケープ 

85 

F394 

選択可能な正規形式指定 

86 

F401 

拡張結合表 

87 

F401-01 

NATURAL JOIN 

88 

F401-02 

FULL OUTER JOIN 

89 

F401-04 

CROSS JOIN 

90 

F402 

LOB,配列及びマルチ集合に対する名前付き列結合 

91 

F403 

分割結合表 

92 

F411 

時刻帯指定 

93 

F421 

各国文字 

94 

F431 

読込み専用スクロール可能カーソル 

95 

F431-01 

陽に指定されるNEXTをもつFETCH 

96 

F431-02 

FETCH FIRST 

97 

F431-03 

FETCH LAST 

98 

F431-04 

FETCH PRIOR 

99 

F431-05 

FETCH ABSOLUTE 

100 

F431-06 

FETCH RELATIVE 

101 

F441 

拡張集合関数提供 

102 

F442 

集合関数中の列参照の混在 

103 

F451 

文字集合定義 

104 

F461 

名前付き文字集合 

105 

F491 

制約管理 

106 

F492 

選択可能な表制約強制 

107 

F521 

表明 

108 

F531 

一時表 

109 

F555 

拡張秒精度 

110 

F561 

完全な値式 

111 

F571 

真理値テスト 

112 

F591 

導出表 

113 

F611 

標識データ型 

114 

F641 

行構成子及び表構成子 

115 

F651 

カタログ名修飾子 

116 

F661 

単純表 

117 

F671 

CHECK制約中の副問合せ 

118 

F672 

回顧検査制約 

F673 

CHECK制約中のSQLデータを読むルーチン呼出し 

119 

F690 

照合順提供 

120 

F692 

拡張照合順提供 

background image

1037 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

121 

F693 

SQLセション及びクライアントモジュールの照合順 

122 

F695 

文字変換提供 

123 

F701 

参照更新動作 

124 

F711 

ALTER定義域 

125 

F721 

遅延可能制約 

126 

F731 

INSERT列権限 

127 

F741 

参照MATCH型 

128 

F751 

ビューCHECK拡張 

129 

F761 

セション管理 

130 

F762 

CURRENT̲CATALOG 

131 

F763 

CURRENT̲SCHEMA 

132 

F771 

コネクション管理 

133 

F781 

自己参照操作 

134 

F791 

鈍感カーソル 

135 

F801 

完全な集合関数 

136 

F813 

拡張フラグ付け 
− 第1部の“8.5 SQLフラグ機能”:中核SQLフラグ付け (Core SQL Flagging) と指定される“フラ

グ付け水準”,及びカタログ調査 (Catalog Lookup) と指定される“検査の範囲”。 

137 

F821 

局所表参照 

138 

F831 

完全カーソル更新 

139 

F831-01 

更新可能なスクロール可能カーソル 

140 

F831-02 

更新可能な順序付けカーソル 

141 

F841 

LIKE̲REGEX述語 

142 

F842 

OCCURENCES̲REGEX関数 

143 

F843 

POSITION̲REGEX関数 

144 

F844 

SUBSTRING̲REGEX 

145 

F845 

TRANSLATE̲REGEX 

146 

F846 

正規表現演算子でのオクテット提供 

147 

F847 

値式正規表現 

148 

F850 

<問合せ式>中の最上位<ORDER BY句> 

149 

F851 

副問合せ中の<ORDER BY句> 

150 

F852 

ビュー中の最上位<ORDER BY句> 

151 

F855 

<問合せ式>中の入れ子になった<ORDER BY句> 

152 

F856 

<問合せ式>中の入れ子になった<FETCH FIRST句> 

153 

F857 

<問合せ式>中の最上位<FETCH FIRST句> 

154 

F858 

副問合せ中の<FETCH FIRST句> 

155 

F859 

ビュー中の最上位<FETCH FIRST句> 

156 

F860 

<FETCH FIRST句>中の動的な<最初の取出し行数> 

157 

F861 

<問合せ式>中の最上位<結果OFFSET句> 

158 

F862 

副問合せ中の<結果OFFSET句> 

159 

F863 

<問合せ式>中の入れ子になった<結果OFFSET句> 

160 

F864 

ビュー中の最上位<結果OFFSET句> 

161 

F865 

<結果OFFSET句>中の動的な<変位行数> 

162 

F866 

FETCH FIRST句:PERCENT選択肢 

163 

F867 

FETCH FIRST句:WITH TIES選択肢 

164 

S023 

基本構造型 

165 

S024 

拡張構造型 

background image

1038 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

166 

S025 

終端構造型 

167 

S026 

自己参照構造型 

168 

S027 

特定メソッド名によるメソッド作成 

169 

S028 

並べ替え可能なUDT選択肢リスト 

170 

S041 

基本参照型 

171 

S043 

拡張参照型 

172 

S051 

型の表作成 

173 

S071 

関数及び型の名前解決でのSQLパス 

174 

S081 

下位表 

175 

S091 

基本配列提供 

176 

S091-01 

組込みデータ型の配列 

177 

S091-02 

個別型の配列 

178 

S091-03 

配列の式 

179 

S092 

利用者定義型の配列 

180 

S094 

参照型の配列 

181 

S095 

問合せによる配列構成子 

182 

S096 

省略可能な配列限界 

183 

S097 

配列要素代入 

184 

S098 

ARRAY̲AGG 

185 

S111 

問合せ式中のONLY 

186 

S151 

型述語 

187 

S161 

下位型扱い 

188 

S162 

参照に対する下位型扱い 

189 

S201 

配列に関するSQL呼出しルーチン 

190 

S201-01 

配列パラメタ 

191 

S201-02 

関数の結果の型としての配列 

192 

S202 

マルチ集合に関するSQL呼出しルーチン 

193 

S211 

利用者定義の型変換関数 

194 

S231 

構造型位置付け子 

195 

S232 

配列位置付け子 

196 

S233 

マルチ集合位置付け子 

197 

S241 

変換関数 

198 

S242 

変換変更文 

199 

S251 

利用者定義順序付け 

200 

S261 

特定型メソッド 

201 

S271 

基本マルチ集合提供 

202 

S272 

利用者定義型のマルチ集合 

203 

S274 

参照型のマルチ集合 

204 

S275 

高度マルチ集合提供 

205 

S281 

入れ子集まり型 

206 

S291 

行全体の一意性制約 

207 

S301 

拡張UNNEST 

208 

S401 

配列型を基にする個別型 

209 

S402 

マルチ集合型を基にする個別型 

210 

S403 

ARRAY̲MAX̲CARDINALITY 

211 

S404 

TRIM̲ARRAY 

background image

1039 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

212 

T021 

BINARY及びVARBINARYデータ型 

213 

T022 

BINARY及びVARBINARYデータ型の高度提供 

214 

T023 

複合2進オクテット定数 

215 

T024 

2進オクテット定数中の空白 

216 

T031 

BOOLEANデータ型 

217 

T041 

基本LOBデータ型提供 

218 

T041-01 

BLOBデータ型 
− “5.2 <トークン>及び<分離符号>”:<予約語>のBINARY,BLOB,LARGE及びOBJECT。 
− “5.3 <定数>”:<2進オクテット列定数>。 
− “6.1 <データ型>”:BINARY LARGE OBJECTデータ型。 
− “6.29 <データ列値式>”:型BINARY LARGE OBJECTの値に対して。 
− “13.5 データ型対応”:提供している全ての言語のBINARY LARGE OBJECTの型対応。 

219 

T041-02 

CLOBデータ型 
− “5.2 <トークン>及び<分離符号>”:<予約語>のCHARACTER,CLOB,LARGE及びOBJECT。 
− “6.1 <データ型>”:CHARACTER LARGE OBJECTデータ型。 
− “6.29 <データ列値式>”:型CHARACTER LARGE OBJECTの値に対して。 
− “13.5 データ型対応”:提供している全ての言語のCHARACTER LARGE OBJECTの型対応。 
− 副機能E021-10によって提供される固定長文字列型と可変長文字列型との間の暗黙の型変換が

文字長大オブジェクト型の提供に拡張される。 

220 

T041-03 

LOBデータ型に対するPOSITION,LENGTH,LOWER,TRIM,UPPER及びSUBSTRING関数 
− “6.28 <数値関数>”:型BINARY LARGE OBJECT及びCHARACTER LARGE OBJECTの式に対

する<POSITION式>。 

− “6.28 <数値関数>”:型CHARACTER LARGE OBJECTの式に対する<CHAR̲LENGTH式>。 
− “6.28 <数値関数>”:型BINARY LARGE OBJECT及びCHARACTER LARGE OBJECTの式に対

する<OCTET̲LENGTH式>。 

− “6.30 <データ列値関数>”:型CHARACTER LARGE OBJECTの式に対する<大文字小文字変換>

関数。 

− “6.30 <データ列値関数>”:型CHARACTER LARGE OBJECTの式に対する<TRIM関数>。 
− “6.30 <データ列値関数>”:型BINARY LARGE OBJECTの式に対する<2進オクテットTRIM関

数>。 

− “6.30 <データ列値関数>”:型CHARACTER LARGE OBJECTの式に対する<文字部分列関数>。 
− “6.30 <データ列値関数>”:型BINARY LARGE OBJECTの式に対する<2進オクテット部分列関

数>。 

221 

T041-04 

LOBデータ型の連結 
− “6.29 <データ列値式>”:型CHARACTER LARGE OBJECTの式に対する<連結>式。 
− “6.29 <データ列値式>”:型BINARY LARGE OBJECTの式に対する<2進オクテット連結>式。 

222 

T041-05 

LOB位置付け子:保持可能でない。 
− “13.3 <外部呼出し手続>”:<位置付け子標識>。 
− “14.17 <FREE LOCATOR文>” 

223 

T042 

拡張LOBデータ型提供 

224 

T043 

乗数T 

225 

T044 

乗数P 

226 

T051 

行型 

227 

T053 

全フィールド参照のための陽に指定された別名 

228 

T061 

UCS提供 

229 

T071 

BIGINTデータ型 

230 

T101 

拡張ナル可能性決定 

231 

T111 

更新可能な結合,和集合及び列 

background image

1040 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

232 

T121 

問合せ式中の(RECURSIVEを除く)WITH 

233 

T122 

副問合せ中の(RECURSIVEを除く)WITH 

234 

T131 

再帰的問合せ 

235 

T132 

副問合せ中の再帰的問合せ 

236 

T141 

SIMILAR述語 

237 

T151 

DISTINCT述語 

238 

T152 

否定付きDISTINCT述語 

239 

T171 

表定義中のLIKE句 

240 

T172 

表定義中のAS副問合せ句 

241 

T173 

表定義中の拡張LIKE句 

242 

T174 

識別列 

243 

T175 

生成列 

244 

T176 

順序数生成子提供 

245 

T177 

順序数生成子提供:単純再開始選択肢 

246 

T178 

識別列:単純再開始選択肢 

247 

T180 

システムバージョン表 

248 

T181 

適用業務時刻期間表 

249 

T191 

参照動作RESTRICT 

250 

T201 

参照制約のための比較可能なデータ型 

251 

T211 

基本トリガ能力 

252 

T211-01 

一つの実表のUPDATE,INSERT又はDELETEに関して活性化されるトリガ 

253 

T211-02 

BEFOREトリガ 

254 

T211-03 

AFTERトリガ 

255 

T211-04 

FOR EACH ROWトリガ 

256 

T211-05 

トリガが呼び出される前に真 (True) でなければならない探索条件を指定するための能力 

257 

T211-06 

トリガ及び制約の相互作用に対する実行時規則の提供 

258 

T211-07 

TRIGGER権限 

259 

T211-08 

カタログ中に作成された順序で実行される同じ事象に対する複数のトリガ 

260 

T212 

拡張トリガ能力 

261 

T213 

INSTEAD OFトリガ 

262 

T231 

敏感カーソル 

263 

T241 

START TRANSACTION文 

264 

T251 

SET TRANSACTION文:LOCAL選択肢 

265 

T261 

連鎖トランザクション 

266 

T271 

保存点 

267 

T272 

拡張保存点管理 

268 

T281 

列単位のSELECT権限 

269 

T285 

拡張導出列名 

270 

T301 

関数従属性 

271 

T312 

OVERLAY関数 

272 

T323 

外部ルーチンのための陽に指定される安全保護 

273 

T324 

SQLルーチンのための陽に指定される安全保護 

274 

T325 

修飾付きSQLパラメタ参照 

275 

T326 

表関数 

276 

T331 

基本役割 

277 

T332 

拡張役割 

background image

1041 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

11 表39−選択機能の機能分類(続き) 

機能ID 

機能名 

278 

T341 

SQL呼出し関数及びSQL呼出し手続のオーバロード 

279 

T351 

囲み注釈 

280 

T431 

拡張グループ化能力 

281 

T432 

入れ子及び連結GROUPING SETS 

282 

T433 

複数引数GROUPING関数 

283 

T434 

GROUP BY DISTINCT 

284 

T441 

ABS及びMOD関数 

285 

T461 

対称的BETWEEN述語 

286 

T471 

結果集合戻り値 

287 

T472 

DESCRIBE CURSOR 

288 

T491 

LATERAL導出表 

289 

T495 

データ変更及び取出しの一体化 

290 

T501 

拡張EXISTS述語 

291 

T502 

期間述語 

292 

T511 

トランザクション数 

293 

T521 

CALL文中の名前付き引数 

294 

T522 

SQL呼出し手続の入力パラメタのための既定値 

295 

T551 

既定構文のための省略可能なキーワード 

296 

T561 

保持可能位置付け子 

297 

T571 

配列戻し外部SQL呼出し関数 

298 

T572 

マルチ集合戻し外部SQL呼出し関数 

299 

T581 

正規表現部分列関数 

300 

T591 

潜在的にナルの列のUNIQUE制約 

301 

T601 

局所カーソル参照 

302 

T611 

基本OLAP演算 

303 

T612 

高度OLAP演算 

304 

T613 

サンプリング 

305 

T614 

NTILE関数 

306 

T615 

LEAD及びLAG関数 

307 

T616 

LEAD及びLAG関数のナルの扱いの選択肢 

308 

T617 

FIRST̲VALUE及びLAST̲VALUE関数 

309 

T618 

NTH̲VALUE関数 

310 

T619 

入れ子ウィンドウ関数 

311 

T620 

WINDOW句:GROUPS選択肢 

312 

T621 

拡張数関数 

313 

T641 

複数列代入 

314 

T651 

SQLルーチン中のSQLスキーマ文 

315 

T652 

SQLルーチン中の動的SQL文 

316 

T653 

外部ルーチン中のSQLスキーマ文 

317 

T654 

外部ルーチン中の動的SQL文 

318 

T655 

循環的依存ルーチン 

注1) 規格に適合するSQL処理系は,少なくとも一つの埋込み言語を提供するか,又は少なくとも一つのホスト言語

に対して結合するSQLクライアントモジュールを提供することが(JIS X 3005-1 [ISO9075-1] の“8 適合性”に
よって,)要求されている。 

1042 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

附属書G 
(参考) 

JIS X 3005 (ISO/IEC 9075) 規格群のこの版で取り込まれていない欠陥報告 

この附属書中の各項目は,この規格の前の版で報告され,この版で残ったままになっている欠陥を記述

する。 

なし。 

background image

1043 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

参考文献 

[1] [IANA] 

The Internet Assigned Numbers Authority, Character sets 

http://www.iana.org/assignments/character-sets 

[2] [ISO646] 

ISO/IEC 646,Information technology−ISO 7-bit coded character set for information interchange 

[3] [ISO6429] 

JIS X 0211 符号化文字集合用制御機能 

注記 対応国際規格:ISO/IEC 6429,Information technology−Control functions for coded character 

sets 

注記 JIS X 0211:1994は,ISO/IEC 6429:1992と一致(IDT)している。 

[4] [ISO9075-3] 

ISO/IEC 9075-3:2008,Information technology−Database languages−SQL−Part 3: Call-Level Interface 

(SQL/CLI) 

注記 JIS X 3005-3:2002 データベース言語SQL 第3部:呼出しレベルインタフェース 

(SQL/CLI) が,この国際規格の二つ前の版ISO/IEC 9075-3:1999と一致している。 

[5] [ISO9075-4] 

ISO/IEC 9075-4:2011,Information technology−Database languages−SQL−Part 4: Persistent Stored 

Modules (SQL/PSM) 

注記 JIS X 3005-4:2002 データベース言語SQL 第4部:永続格納モジュール (SQL/PSM) が,

この国際規格の三つ前の版ISO/IEC 9075-4:1999と一致している。 

[6] [ISO9075-9] 

ISO/IEC 9075-9:2008,Information technology−Database languages−SQL−Part 9: Management of 

External Data (SQL/MED) 

注記 JIS X 3005-9:2003 データベース言語SQL 第9部:外部データ管理 (SQL/MED) が,こ

の国際規格の二つ前の版ISO/IEC 9075-9:2001と一致している。 

[7] [ISO9075-10] 

ISO/IEC 9075-10:2008,Information technology−Database languages−SQL−Part 10: Object Language 

Bindings (SQL/OLB) 

注記 JIS X 3005-10:2003 データベース言語SQL 第10部:オブジェクト言語結合 (SQL/OLB) 

が,この国際規格の二つ前の版ISO/IEC 9075-10:2000と一致している。 

[8] [ISO9075-13] 

ISO/IEC 9075-13:2008,Information technology−Database languages−SQL−Part 13: SQL Routines and 

Types Using the Java™ Programming Language (SQL/JRT) 

注記 JIS X 3005-13:2007 データベース言語SQL 第13部:Javaプログラム言語を用いるSQL

ルーチン及び型 (SQL/JRT) が,この国際規格の前の版ISO/IEC 9075-13:2003と一致して

いる。 

[9] [ISO9075-14] 

1044 

X 3005-2:2015 (ISO/IEC 9075-2:2011) 

ISO/IEC 9075-14:2011,Information technology−Database languages−SQL−Part 14: XML-Related 

Specifications(SQL/XML) 

注記 JIS X 3005-14:2006 データベース言語SQL 第14部:XML関連仕様 (SQL/XML) が,こ

の国際規格の三つ前の版ISO/IEC 9075-14:2003と一致している。 

[10] [POSIX] 

ISO/IEC/IEEE 9945,Information technology−Portable Operating System Interface (POSIX®) Base 

Specifications, Issue 7