X 3005-4:2019 (ISO/IEC 9075-4:2016)
(1)
目 次
ページ
序文 ··································································································································· 1
1 適用範囲························································································································· 1
2 引用規格························································································································· 1
2.1 JIS及びISO規格 ··········································································································· 2
3 定義,表記法及び規約 ······································································································· 2
3.1 規約 ···························································································································· 2
3.1.1 用語の使用 ················································································································· 2
3.1.1.1 その他の用語 ············································································································ 2
4 概念······························································································································· 2
4.1 SQLサーバモジュール ···································································································· 2
4.2 表 ······························································································································· 3
4.2.1 実表 ·························································································································· 3
4.2.1.1 一時表 ····················································································································· 3
4.2.2 表の一意識別 ·············································································································· 3
4.3 SQLスキーマ ················································································································ 4
4.4 SQL呼出しルーチン ······································································································· 4
4.4.1 SQL呼出しルーチンの概要 ··························································································· 4
4.4.2 定型SQL呼出しルーチンの実行 ····················································································· 4
4.4.3 ルーチン記述子 ··········································································································· 4
4.5 SQLパス ······················································································································ 4
4.6 ホストパラメタ ············································································································· 4
4.6.1 状態パラメタ ·············································································································· 4
4.7 診断領域 ······················································································································ 5
4.8 例外条件処理 ················································································································ 5
4.9 カーソル ······················································································································ 6
4.9.1 カーソルの一般記述 ····································································································· 6
4.10 SQL文 ······················································································································· 7
4.10.1 SQL文の種類 ············································································································ 7
4.10.2 機能によって分類されたSQL文 ··················································································· 7
4.10.2.1 SQLスキーマ文 ······································································································· 7
4.10.2.2 SQL制御文 ············································································································· 7
4.10.2.3 SQL制御宣言 ·········································································································· 8
4.10.2.4 SQL診断文 ············································································································· 8
4.10.3 SQL文及びトランザクション状態 ················································································· 8
4.10.4 SQL文の基本単位性及び文実行文脈 ·············································································· 8
X 3005-4:2019 (ISO/IEC 9075-4:2016) 目次
(2)
ページ
4.10.5 埋込み可能なSQL文 ·································································································· 9
4.10.6 準備可能及び即時実行可能なSQL文 ············································································· 9
4.10.7 直接実行可能なSQL文 ······························································································· 9
4.10.8 繰返しSQL文 ··········································································································· 9
4.10.9 複合文 ······················································································································ 9
4.11 基本安全保護モデル ····································································································· 10
4.11.1 権限 ························································································································ 10
4.12 SQLセション ············································································································· 10
4.12.1 SQLセションの一般記述 ···························································································· 10
5 語彙要素························································································································ 10
5.1 <トークン>及び<分離符号> ····························································································· 10
5.2 名前及び識別子 ············································································································ 11
6 スカラ式························································································································ 13
6.1 <値指定>及び<相手指定> ································································································ 13
6.2 <識別子鎖> ·················································································································· 14
6.3 <次値式> ····················································································································· 16
6.4 <SQL変数参照> ··········································································································· 16
7 問合せ式························································································································ 17
7.1 <表参照> ····················································································································· 17
7.2 <問合せ指定> ··············································································································· 17
8 その他の共通規則 ············································································································ 18
8.1 ハンドラ実行 ··············································································································· 18
9 その他の共通要素 ············································································································ 20
9.1 <ルーチン呼出し> ········································································································· 20
9.2 <SQLSTATE値> ··········································································································· 21
10 スキーマ定義及びスキーマ操作 ························································································ 22
10.1 <スキーマ定義> ·········································································································· 22
10.2 <スキーマ削除文> ······································································································· 23
10.3 <表定義> ··················································································································· 23
10.4 <列定義> ··················································································································· 24
10.5 <DEFAULT句> ··········································································································· 24
10.6 <検査制約定義> ·········································································································· 25
10.7 <列SCOPE句削除> ····································································································· 25
10.8 <列定義削除> ············································································································· 26
10.9 <表制約定義削除> ······································································································· 26
10.10 <表削除文> ··············································································································· 27
10.11 <ビュー定義> ············································································································ 27
10.12 <ビュー削除文> ········································································································· 27
10.13 <定義域削除文> ········································································································· 28
X 3005-4:2019 (ISO/IEC 9075-4:2016) 目次
(3)
ページ
10.14 <文字集合削除文> ······································································································ 28
10.15 <照合順削除文> ········································································································· 28
10.16 <文字変換削除文> ······································································································ 29
10.17 <表明定義> ··············································································································· 29
10.18 <表明削除文> ············································································································ 30
10.19 <トリガ定義> ············································································································ 30
10.20 <利用者定義順序付け削除文> ······················································································· 31
10.21 <SQLサーバモジュール定義> ······················································································ 31
10.22 <モジュール削除文> ··································································································· 34
10.23 <データ型削除文> ······································································································ 34
10.24 <SQL呼出しルーチン> ······························································································· 35
10.25 <ルーチン削除文> ······································································································ 36
10.26 <利用者定義型変換削除文> ·························································································· 36
11 アクセス制御 ················································································································ 36
11.1 <GRANT文> ·············································································································· 36
11.2 <権限>······················································································································· 37
11.3 <REVOKE文> ············································································································ 38
12 SQLクライアントモジュール ·························································································· 41
12.1 <外部呼出し手続> ······································································································· 41
12.2 <SQL手続文> ············································································································· 42
13 データ操作 ··················································································································· 43
13.1 <カーソル宣言> ·········································································································· 43
13.2 <OPEN文> ················································································································ 44
13.3 <FETCH文> ·············································································································· 44
13.4 <CLOSE文>··············································································································· 45
13.5 <SELECT文:単一行> ································································································· 45
13.6 <DELETE文:位置付け> ······························································································ 46
13.7 <UPDATE文:位置付け> ······························································································ 46
13.8 <一時表宣言> ············································································································· 47
14 その他のデータ操作規則 ································································································· 47
14.1 カーソルを開くことの効果 ···························································································· 47
15 制御文 ························································································································· 48
15.1 <複合文> ··················································································································· 48
15.2 <ハンドラ宣言> ·········································································································· 51
15.3 <条件宣言> ················································································································ 52
15.4 <SQL変数宣言> ·········································································································· 53
15.5 <代入文> ··················································································································· 53
15.6 <CASE文> ················································································································· 56
15.7 <IF文> ······················································································································ 58
X 3005-4:2019 (ISO/IEC 9075-4:2016) 目次
(4)
ページ
15.8 <ITERATE文> ··········································································································· 60
15.9 <LEAVE文> ··············································································································· 60
15.10 <LOOP文> ··············································································································· 61
15.11 <WHILE文> ············································································································· 62
15.12 <REPEAT文> ··········································································································· 62
15.13 <FOR文> ················································································································· 63
16 動的SQL ····················································································································· 65
16.1 <PREPARE文> ··········································································································· 66
16.2 <入力USING句> ········································································································ 67
16.3 <出力USING句> ········································································································ 67
17 埋込みSQL ·················································································································· 68
17.1 <SQL埋込みホストプログラム> ····················································································· 68
18 診断管理 ······················································································································ 69
18.1 <GET DIAGNOSTICS文> ····························································································· 69
18.2 <SIGNAL文> ············································································································· 70
18.3 <RESIGNAL文> ········································································································· 72
19 情報スキーマ ················································································································ 73
19.1 MODULE̲COLUMN̲USAGEビュー ·············································································· 74
19.2 MODULE̲PRIVILEGESビュー ····················································································· 74
19.3 MODULE̲TABLE̲USAGEビュー·················································································· 75
19.4 MODULESビュー ······································································································· 76
19.5 PARAMETERSビュー ································································································· 77
19.6 ROLE̲MODULE̲GRANTSビュー ················································································· 78
19.7 ROUTINESビュー······································································································· 79
19.8 短い名前のビュー ········································································································ 80
20 定義スキーマ ················································································································ 81
20.1 MODULE̲COLUMN̲USAGE実表 ················································································· 81
20.2 MODULE̲PRIVILEGES実表 ························································································ 82
20.3 MODULE̲TABLE̲USAGE実表····················································································· 83
20.4 MODULES実表 ·········································································································· 84
20.5 ROUTINES実表 ········································································································· 86
20.6 SQL̲CONFORMANCE実表 ························································································· 87
21 状態コード ··················································································································· 87
21.1 SQLSTATE ················································································································ 87
22 適合性 ························································································································· 88
22.1 SQL/PSMに対する適合性の主張 ···················································································· 88
22.2 SQL/PSMに対するその他の適合性要件 ··········································································· 88
22.3 SQL/PSMの前提機能の関係 ·························································································· 88
附属書A(参考)SQL適合性の要約 ························································································ 89
X 3005-4:2019 (ISO/IEC 9075-4:2016) 目次
(5)
ページ
附属書B(参考)処理系定義要素 ··························································································· 93
附属書C(参考)処理系依存要素 ··························································································· 94
附属書D(参考)削除予定機能 ······························································································ 95
附属書E(参考)ISO/IEC 9075:2011との非互換性 ····································································· 96
附属書F(参考)SQLの機能の分類 ························································································ 97
附属書G(参考)JIS X 3005 (ISO/IEC 9075) 規格群のこの版で取り込まれていない欠陥報告 ············· 99
X 3005-4:2019 (ISO/IEC 9075-4:2016) 目次
(6)
まえがき
この規格は,工業標準化法第12条第1項の規定に基づき,一般社団法人情報処理学会(IPSJ)及び一般
財団法人日本規格協会(JSA)から,工業標準原案を具して日本工業規格を制定すべきとの申出があり,
日本工業標準調査会の審議を経て,経済産業大臣が制定した日本工業規格である。
この規格は,著作権法で保護対象となっている著作物である。
この規格の一部が,特許権,出願公開後の特許出願又は実用新案権に抵触する可能性があることに注意
を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許権,出願公開後の特許出願及び実
用新案権に関わる確認について,責任はもたない。
JIS X 3005の規格群には,次に示す部編成がある。
JIS X 3005-1 第1部:枠組 (SQL/Framework)
JIS X 3005-2 第2部:基本機能 (SQL/Foundation)
JIS X 3005-4 第4部:永続格納モジュール (SQL/PSM)
JIS X 3005-13 第13部:Javaプログラム言語を用いるSQLルーチン及び型 (SQL/JRT)
JIS X 3005-14 第14部:XML関連仕様 (SQL/XML)
注記 この規格群に対応する国際規格ISO/IEC 9075には,上記の部のほかに,第3部:呼出しレベル
インタフェース (SQL/CLI),第9部:外部データ管理 (SQL/MED),第10部:オブジェクト言
語結合 (SQL/OLB),第11部:情報スキーマ及び定義スキーマ (SQL/ Schemata) もある。
日本工業規格 JIS
X 3005-4:2019
(ISO/IEC 9075-4:2016)
データベース言語SQL
第4部:永続格納モジュール (SQL/PSM)
Information technology-Database languages-SQL-
Part 4: Persistent Stored Modules (SQL/PSM)
序文
この規格は,2016年に第6版として発行されたISO/IEC 9075-4 :2016を基に,技術的内容及び構成を変
更することなく作成した日本工業規格である。
なお,この規格で点線の下線を施してある参考事項は,対応国際規格にはない事項である。
注記 この規格は,JIS X 3005-4として制定されたが,実質的には,2015年6月に廃止されたJIS X
3005-4:2002 (ISO/IEC 9075-4:1999) の改正である。
1
適用範囲
この規格は,SQLサーバモジュール中で,永続データベース言語ルーチンの宣言及び保守のためのデー
タベース言語の構文及び意味について規定する。
<外部呼出し手続>及び<SQL呼出しルーチン>のためのデータベース言語は,次の仕様を含む。
− 制御の流れを指示するための文の仕様。
− 変数及びパラメタへの式の結果の代入。
− SQL呼出しルーチンの実行中に引き起こされる種々の条件をそのSQL呼出しルーチンが処理できる
ようにするための条件ハンドラの仕様。
− 例外条件を信号として送る (signal) 文及び信号として再送する (resignal) 文の仕様。
− 元祖SQLサーバカーソルの宣言。
− 局所変数の宣言。
SQLサーバモジュール及びSQL呼出しルーチンに関するスキーマ情報を含む情報スキーマ表の定義も
含む。
注記 この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。
ISO/IEC 9075-4:2016,Information technology−Database languages−SQL−Part 4: Persistent Stored
Modules (SQL/PSM)(IDT)
なお,対応の程度を表す記号“IDT”は,ISO/IEC Guide 21-1に基づき,“一致している”こ
とを示す。
2
引用規格
次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの
引用規格は,記載の年の版を適用し,その後の改正版(追補を含む。)は適用しない。
2
X 3005-4:2019 (ISO/IEC 9075-4:2016)
2.1
JIS及びISO規格
[ISO9075-1]
ISO/IEC 9075-1:2016,Information technology−Database languages−SQL−Part 1: Framework
(SQL/Framework)
注記 JIS X 3005-1:2014が,この国際規格の前の版ISO/IEC 9075-1:2011と一致している。
注記 [ISO9075-1] のような,各引用規格の前に付加されている角括弧で囲んだ記号は,引用規格
を後で参照するために用いる記号である。
[ISO9075-2]
ISO/IEC 9075-2:2016,Information technology−Database languages−SQL−Part 2: Foundation
(SQL/Foundation)
注記 JIS X 3005-2:2015が,この国際規格の前の版ISO/IEC 9075-2:2011と一致している。
[ISO9075-11]
ISO/IEC 9075-11:2016,Information technology−Database languages−SQL−Part 11: Information and
Definition Schemas (SQL/Schemata)
3
定義,表記法及び規約
この箇条は,ISO/IEC 9075-2の“3 定義,表記法及び規約”を修正する。
3.1
規約
この細分箇条は,ISO/IEC 9075-2の“3.3 規約”を修正する。
3.1.1
用語の使用
この細分箇条は,ISO/IEC 9075-2の“3.3.1 用語の使用”を修正する。
3.1.1.1
その他の用語
この細分箇条は,ISO/IEC 9075-2の“3.3.1.1 その他の用語”を修正する。
【この段落を挿入する。】<SQL制御文>S2がSQL文S1を含むならば,S1は,<SQL制御文>S2の実行
の直接の結果 (direct result of executing an <SQL control statement>) として実行されたという。
【この段落を挿入する。】“Yに含まれる<ハンドラ宣言>の有効範囲は,そのYに含まれる全ての<SQL
スキーマ文>を除いた,そのYとする”という句は,<ハンドラ宣言>の有効範囲がそのような<SQLスキ
ーマ文>に含まれるSQL文には及ばないが,<SQLスキーマ文>自体には及ぶことを意味する。
4
概念
この箇条は,ISO/IEC 9075-2の“4 概念”を修正する。
4.1
SQLサーバモジュール
SQLサーバモジュール (SQL-server module) は,スキーマ中に定義され,<SQLサーバモジュール名>に
よって識別される永続オブジェクトとする。SQLサーバモジュールは,<SQLサーバモジュール定義>で作
成され,<モジュール削除文>,及びそのSQLサーバモジュールを含むスキーマを破壊する<スキーマ削除
文>によって破壊される。
<SQLサーバモジュール定義>は,<SQLサーバモジュール名>,省略可能な<SQLサーバモジュール文字
集合指定>,省略可能な<SQLサーバモジュールSCHEMA句>,省略可能な<SQLサーバモジュールパス指
定>,<一時表宣言>によって指定されるSQLサーバモジュールの0個以上の宣言局所一時表,及び一つ以
上の<SQL呼出しルーチン>を含む。
3
X 3005-4:2019 (ISO/IEC 9075-4:2016)
SQLサーバモジュールの<SQLサーバモジュール名>は,<スキーマ修飾付き名前>とする。<SQLサーバ
モジュール文字集合指定>によって指定される文字集合は,<SQLサーバモジュール定義>で用いるスキー
マオブジェクトの名前を表現するために用いる文字レパートリを識別する。<SQLサーバモジュール
SCHEMA句>によって指定される<既定スキーマ名>は,<SQLサーバモジュール定義>中に現れる修飾なし
の名前の暗に想定される修飾のために用いるスキーマ名を識別する。SQLサーバモジュールのSQL呼出
しルーチンは,SQL文からだけ呼び出される。
SQLサーバモジュールは,SQLサーバモジュール認可識別子 (SQL-server module authorization identifier)
をもち,SQLサーバモジュール認可識別子には,SQLサーバモジュールが作成される時点にそのSQLサ
ーバモジュールを含むスキーマの所有者の認可識別子が設定される。SQLサーバモジュール認可識別子は,
そのSQLサーバモジュールに含まれるSQLオブジェクトがあるならば,それの権限決定のための現行認
可識別子として動作する。
SQLサーバモジュールは,SQLサーバモジュール記述子によって記述される。SQLサーバモジュール記
述子は,次の項目を含む。
− SQLサーバモジュールのSQLサーバモジュール名。
− SQLサーバモジュールを表現する文字集合の記述子。
− SQLサーバモジュール中の修飾なしの名前の暗に想定される修飾のために用いる既定スキーマ名。
− SQLサーバモジュールのSQLサーバモジュール認可識別子。
− <SQLサーバモジュールパス指定>に含まれるスキーマ名のリスト。
− SQLサーバモジュール中で宣言される全ての局所一時表の表記述子。
− SQLサーバモジュールに含まれる全てのSQL呼出しルーチンの記述子。
− <SQLサーバモジュール定義>のテキスト。
− 作成時刻印。
4.2
表
この細分箇条は,ISO/IEC 9075-2の“4.15 表”を修正する。
4.2.1
実表
この細分箇条は,ISO/IEC 9075-2の“4.15.2 実表”を修正する。
4.2.1.1
一時表
この細分箇条は,ISO/IEC 9075-2の“4.15.2.3 一時表”を修正する。
【この段落を挿入する。】SQLサーバモジュールの宣言局所一時表は,<SQLサーバモジュール定義>中
で定義される宣言局所一時表とする。SQLサーバモジュールの宣言局所一時表は,<一時表宣言>を含む
<SQLサーバモジュール定義>中のいずれかの<モジュールルーチン>が実行される最初の時点に実効的に
実体化され,そのSQLセションの間永続する。SQLサーバモジュールの宣言局所一時表を参照するどの
SQLセション中のどのSQLサーバモジュールも,その宣言局所一時表の異なる実現値(すなわち,その
SQLセションの間のそのSQLサーバモジュールにだけ可視となる行のマルチ集合)を実体化させる。す
なわち,SQLサーバモジュールの宣言局所一時表の<表名>によって参照される行のマルチ集合は,SQLセ
ション間でも,SQLセション中に実行されるSQLサーバモジュール間でも,共有できない。
4.2.2
表の一意識別
この細分箇条は,ISO/IEC 9075-2の“4.15.5 表の一意識別”を修正する。
− 【4番目の細別項目の後に追加する。】SQLサーバモジュールの宣言局所一時表の<表名>は,SQLセ
ション識別子及びSQLサーバモジュール名とともに,行のマルチ集合を一意に識別する。
4
X 3005-4:2019 (ISO/IEC 9075-4:2016)
4.3
SQLスキーマ
この細分箇条は,ISO/IEC 9075-2の“4.26 SQLスキーマ”を修正する。
【1番目の段落に挿入する。】
− SQLサーバモジュール記述子。
4.4
SQL呼出しルーチン
この細分箇条は,ISO/IEC 9075-2の“4.33 SQL呼出しルーチン”を修正する。
4.4.1
SQL呼出しルーチンの概要
この細分箇条は,ISO/IEC 9075-2の“4.33.1 SQL呼出しルーチンの概要”を修正する。
【3番目の段落を置き換える。】SQL呼出しルーチンは,SQLサーバモジュールの構成要素又はSQLス
キーマの要素のいずれかとする。<SQLサーバモジュール定義>中で定義されるSQL呼出しルーチンを,
SQLモジュールレベルルーチン (SQL-module-level routine) と呼ぶ。<SQLサーバモジュール定義>中で定義
されないSQL呼出しルーチンを,スキーマレベルルーチン (schema-level routine) と呼ぶ。
4.4.2
定型SQL呼出しルーチンの実行
この細分箇条は,ISO/IEC 9075-2の“4.33.3 定型SQL呼出しルーチンの実行”を修正する。
【2番目の段落を置き換える。】SQL呼出しルーチンは,ルーチンSQLパス (routine SQL-path) をもち,
それは,SQL呼出しルーチンを含むSQLサーバモジュール若しくはSQLスキーマ,現行SQLセション,
又はSQL呼出しルーチンを含むSQLクライアントモジュールから継承される。
4.4.3
ルーチン記述子
この細分箇条は,ISO/IEC 9075-2の“4.33.5 ルーチン記述子”を修正する。
【1番目の段落に挿入する。】
− SQL呼出しルーチンがスキーマレベルルーチンでないならば,SQL呼出しルーチンを含むSQLサー
バモジュールの<SQLサーバモジュール名>,及びSQLサーバモジュールを含むスキーマの<スキーマ
名>。
4.5
SQLパス
この細分箇条は,ISO/IEC 9075-2の“4.34 SQLパス”を修正する。
【2番目の段落を置き換える。】CURRENT̲PATHによって指定される値は,現行SQLセションのSQL
パスの値とする。<ルーチン呼出し>が,<EXECUTE IMMEDIATE文>か若しくは<PREPARE文>のいずれ
かによって現行SQLセション中で準備される<準備可能文>に含まれるか,又は直接起動される<直接SQL
文>に含まれるとき,<スキーマ名>を含まない<ルーチン名>をもつ<ルーチン呼出し>の当該ルーチンを探
すために,このSQLパスが用いられる。SQLスキーマの定義及びSQLサーバモジュールの定義には,そ
れぞれ,<ルーチン呼出し>が<スキーマ定義>又は<SQLサーバモジュール定義>に含まれるときに,<スキ
ーマ名>を含まない<ルーチン名>をもつ<ルーチン呼出し>の当該ルーチンを探すために用いるSQLパスを
指定する。
4.6
ホストパラメタ
この細分箇条は,ISO/IEC 9075-2の“4.35 ホストパラメタ”を修正する。
4.6.1
状態パラメタ
この細分箇条は,ISO/IEC 9075-2の“4.35.2 状態パラメタ”を修正する。
【この段落を挿入する。】<SQL手続文>を実行している間に,例外条件又は終了条件が引き起こされて
もよい。<SQL手続文>が終了するとき,条件のうちの一つが有効な条件になる。有効な条件 (active
condition) は,SQLSTATEで戻される条件とする。有効な条件が例外条件ならば,それを,有効な例外条
5
X 3005-4:2019 (ISO/IEC 9075-4:2016)
件 (active exception condition) と呼ぶ。有効な条件が終了条件ならば,それを,有効な終了条件 (active
completion condition) と呼ぶ。
【この段落を挿入する。】<SQL手続文>が<複合文>ならば,有効な条件は,<複合文>中に指定されるい
ずれかの例外ハンドラの動作の結果として生じてもよい。
4.7
診断領域
この細分箇条は,ISO/IEC 9075-2の“4.36 診断領域”を修正する。
【この段落を挿入する。】ハンドラが有効化される前に,1番目の診断領域の一つ以上の条件領域中に終
了条件又は例外条件についての情報が格納される。その後,ハンドラ自体の実行が1番目の診断領域を修
正することになっているときでさえも,ハンドラがその情報にアクセスできるように,診断領域スタック
に押し込まれる。
【この段落を挿入する。】<SIGNAL文>を実行している間に,1番目の診断領域が空にされる。
<RESIGNAL文>を実行している間に1番目の診断領域に情報が追加される。
4.8
例外条件処理
例外条件処理 (Condition handling) は,SQL/PSM中の例外条件及び終了条件を扱うメソッドとする。例
外条件処理は,ハンドラの型,解決できる例外条件及び終了条件,並びにそのためにとる動作を指定する
ことによってハンドラを定義する<ハンドラ宣言> (<handler declaration>) を与える。例外条件処理は,例
外条件及び終了条件を陽に信号として送る (signal) 能力も与える。
<ハンドラ宣言>は,例外条件及び終了条件の扱いを指定する。<ハンドラ宣言>は,<複合文>中で指定で
きる。<複合文>CS中で指定される<ハンドラ宣言>の有効範囲は,CSに含まれるどの<SQLスキーマ文>
も除いたCSとする。
<ハンドラ宣言>は,一つ以上の条件をハンドラ動作と関連付ける。ハンドラ動作は,<SQL手続文>とす
る。
一般<ハンドラ宣言> (general <handler declaration>) は,<条件値>SQLEXCEPTION, SQLWARNING又は
NOT FOUNDと関連付けられる<ハンドラ宣言>とする。他の全ての<ハンドラ宣言>は,特定<ハンドラ宣
言> (specific <handler declaration>) とする。
条件は,<SQL手続文>の実行によって引き起こされる誤り又は情報通知の状態を表現する。条件は,
<SQL手続文>の実行に関する情報を診断領域中で提供するために引き起こされる。
<条件宣言>は,<条件名>を宣言するため,及び任意でその<条件名>をSQLSTATE値と関連付けるため
に用いる。<条件宣言>がSQLSTATE値を指定しないならば,それは,利用者定義の例外条件 (user-defined
exception condition) を宣言する。<条件名>は,<ハンドラ宣言>,<SIGNAL文>及び<RESIGNAL文>中で用
いることができる。
<ハンドラ宣言>を含む<複合文>が実行されるとき,その<ハンドラ宣言>に関連付けられた条件のための
ハンドラが作成される。作成されるハンドラが,SQL文によって引き起こされた例外条件又は終了条件に
対する最適ハンドラであるとき,そのハンドラは,有効化され (activated) る。そのようなハンドラは,有
効な (active) ハンドラとする。
最適 (most appropriate) ハンドラは,暗に想定されるか若しくは陽に指定される<RESIGNAL文>又はハ
ンドラを実行している間に決定される。ハンドラは,そのハンドラを実行している間に生じる例外条件に
対する最適ハンドラにはなり得ない。暗に想定される<RESIGNAL文>は,<複合文>又は<ハンドラ動作>
が成功終了 (successful completion) 以外の条件で終了するときに実行される。
最適ハンドラがなく,条件が例外条件ならば,例外条件を引き起こしているSQL文は,その例外条件で
6
X 3005-4:2019 (ISO/IEC 9075-4:2016)
終了する。このような例外条件を,処理されない例外条件 (unhandled exception condition) と呼ぶ。処理さ
れない例外条件は,例外条件処理のためにその次に見える有効範囲で調べられる。例外条件が最も外側の
<外部呼出し手続>又は<直接SQL文>で処理されないままならば,それは,SQLクライアントに見えるも
のとする。SQLクライアントが例外条件を解決しても,例外条件が引き起こされたSQLサーバ中での実
行は,再開されない。
最適ハンドラがなく,条件が終了条件ならば,[ISO9075-1] の“6.3.3.7 例外”で規定しているとおりに,
実行が再開される。このような終了条件を,処理されない終了条件 (unhandled completion condition) と呼
ぶ。
ハンドラの型は,CONTINUE,EXIT又はUNDOを指定する。
ハンドラの型がCONTINUEを指定するならば,ハンドラが有効化されるとき,次のことを行う。
− 診断領域スタックにプッシュする(押し込む。)。
− ハンドラ動作を実行する。
− 診断領域スタックからポップする(取り出す。)。
− 条件を引き起こした最も内側の実行文の実行が終了したならば,実行されたであろうとおりに,SQL
セションを継続させる。
ハンドラの型がEXITを指定するならば,ハンドラが有効化されるとき,次のことを行う。
− 診断領域スタックにプッシュする。
− ハンドラ動作を実行する。
− 診断領域スタックからポップする。
− 有効な例外条件なしで,ハンドラが作成された<複合文>から暗に抜ける (LEAVE)。
ハンドラの型がUNDOを指定するならば,ハンドラが有効化されるとき,次のことを行う。
− 診断領域スタックにプッシュする。
− ハンドラの有効範囲の<複合文>のSQL文リストに含まれる各SQL文の実行によってなされたSQLデ
ータ又はスキーマに対する全ての変更をロールバックし,それらの文の実行によって引き起こされた
全ての<SQL手続文>を取り消す。
− ハンドラ動作を実行する。
− 診断領域スタックからポップする。
− ハンドラが作成された<複合文>の実行が終了したならば実行されたであろうとおりに,SQLセション
を継続させる。
<ハンドラ動作>が終了条件:成功終了 で終了するならば,条件を解決することができたものとし,“15.2
<ハンドラ宣言>”で規定しているとおりに,実行が再開される。
<ハンドラ動作>が例外条件,又は成功終了 以外の終了条件で終了するならば,暗に想定される
<RESIGNAL文>が実行される。<RESIGNAL文>は,条件を解決できる別の<ハンドラ宣言>があるかどう
かを決定する。
4.9
カーソル
この細分箇条は,ISO/IEC 9075-2の“4.38 カーソル”を修正する。
4.9.1
カーソルの一般記述
この細分箇条は,ISO/IEC 9075-2の“4.38.1 カーソルの一般記述”を修正する。
【2番目の段落の後に挿入する。】<SQLスキーマ文>を介在しないで<SQLクライアントモジュール定義
>に含まれる<カーソル宣言>によって指定されるカーソルは,元祖SQLクライアントカーソル (standing
7
X 3005-4:2019 (ISO/IEC 9075-4:2016)
SQL-client cursor) とする。<複合文>に含まれる<カーソル宣言>によって指定されるカーソルは,元祖SQL
サーバカーソル (standing SQL-server cursor) とする。
【3番目の段落を置き換える。】宣言カーソル (declared cursor) は,元祖カーソル,宣言動的カーソル又
は受取りカーソルのいずれかとする。宣言カーソルは,<カーソル名>をもつ。<カーソル宣言>,<動的カ
ーソル宣言>又は<受取りカーソル割当て文>は,<SQLクライアントモジュール定義>の<モジュール内容>
に直に含まれるか,又は<複合文>の<局所カーソル宣言リスト>に含まれる。<カーソル名>の有効範囲は,
それを含む最も内側の<SQLクライアントモジュール定義>Mに含まれるどの<SQLスキーマ文>も除くM,
又は<複合文>CSの<局所ハンドラ宣言リスト>LHDLに含まれるどの<SQLスキーマ文>も除くLHDL及び
CSの<SQL文リスト>SSLに含まれるどの<SQLスキーマ文>も除くSSLとする。
【5番目の段落の2番目の細別項目を置き換える。】− カーソルの出所。
・ カーソルが宣言カーソル又は局所拡張動的カーソルならば,SQLクライアントモジュールか又は
<複合文>かを示す標識。
・ カーソルがPTF動的カーソルならば,多形表関数 (polymorphic table function) を呼び出す<ルーチ
ン呼出し>。
・ そうでなければ,SQLセション識別子。
【この段落を挿入する。】<複合文>中のどの<カーソル宣言>に対しても,<複合文>が実行されるごとに,
元祖SQLサーバカーソルが実効的に作成され,<複合文>の実行が終了するときに破壊される。
注記2 開いているWITH RETURNカーソルの破壊は,そのカーソルの結果集合を同時に破壊しな
い。
4.10 SQL文
この細分箇条は,ISO/IEC 9075-2の“4.39 SQL文”を修正する。
4.10.1 SQL文の種類
この細分箇条は,ISO/IEC 9075-2の“4.39.1 SQL文の種類”を修正する。
【この段落を挿入する。】次のものは,SQL文の追加の主要な種類とする。
− SQL制御宣言
4.10.2 機能によって分類されたSQL文
この細分箇条は,ISO/IEC 9075-2の“4.39.2 機能によって分類されたSQL文”を修正する。
4.10.2.1 SQLスキーマ文
この細分箇条は,ISO/IEC 9075-2の“4.39.2.1 SQLスキーマ文”を修正する。
【この段落を挿入する。】次のSQL文は,追加のSQLスキーマ文とする。
− <SQLサーバモジュール定義>
− <モジュール削除文>
4.10.2.2 SQL制御文
この細分箇条は,ISO/IEC 9075-2の“4.39.2.6 SQL制御文”を修正する。
【この段落を挿入する。】次のSQL文は,追加のSQL制御文とする。
− <複合文>
− <CASE文>
− <IF文>
− <ITERATE文>
− <LEAVE文>
8
X 3005-4:2019 (ISO/IEC 9075-4:2016)
− <LOOP文>
− <WHILE文>
− <REPEAT文>
− <FOR文>
− <代入文>
4.10.2.3 SQL制御宣言
【この段落を挿入する。】次のSQL文は,SQL制御宣言とする。
− <条件宣言>
− <ハンドラ宣言>
− <SQL変数宣言>
4.10.2.4 SQL診断文
この細分箇条は,ISO/IEC 9075-2の“4.39.2.8 SQL診断文”を修正する。
【この段落を挿入する。】次のSQL文は,追加のSQL診断文とする。
− <SIGNAL文>
− <RESIGNAL文>
4.10.3 SQL文及びトランザクション状態
この細分箇条は,ISO/IEC 9075-2の“4.39.4 SQL文及びトランザクション状態”を修正する。
【この段落を挿入する。】次の追加のSQL文は,トランザクション開始SQL文とする。
− <FOR文>
【この段落を挿入する。】次の追加のSQL文は,トランザクション開始SQL文ではない。
− <ITERATE文>
− <LEAVE文>
【この段落を挿入する。】次の追加のSQL文は,潜在的なトランザクション開始SQL文とする。
− 次の文以外のSQL制御文
・ <FOR文>
・ <ITERATE文>
・ <LEAVE文>
4.10.4 SQL文の基本単位性及び文実行文脈
この細分箇条は,ISO/IEC 9075-2の“4.39.5 SQL文の基本単位性及び文実行文脈”を修正する。
【基本単位でないSQL文の細別に追加する。】
− <代入文>
− <CASE文>
− <複合文>,ただし,BEGIN ATOMICが指定される場合を除く。
− <FOR文>
− <IF文>
− <LOOP文>
− <REPEAT文>
− <WHILE文>
9
X 3005-4:2019 (ISO/IEC 9075-4:2016)
4.10.5 埋込み可能なSQL文
この細分箇条は,ISO/IEC 9075-2の“4.39.6 埋込み可能なSQL文”を修正する。
【この段落を挿入する。】次のSQL文は,<SQL埋込みホストプログラム>中に埋込み可能な追加のSQL
文とし,それらは,SQLクライアントモジュール中の<外部呼出し手続>中の<SQL手続文>であってもよ
い。
− 全てのSQL制御文
注記3 SQL制御宣言を含むSQL文が<SQL埋込みホストプログラム>に埋め込まれているときでさ
え,(例えば,)<複合文>に含まれるSQL制御宣言は,許される。
4.10.6 準備可能及び即時実行可能なSQL文
この細分箇条は,ISO/IEC 9075-2の“4.39.7 準備可能及び即時実行可能なSQL文”を修正する。
【この段落を挿入する。】したがって,次のSQL制御文は,準備可能でない。
− <複合文>
− <CASE文>
− <IF文>
− <ITERATE文>
− <LEAVE文>
− <LOOP文>
− <WHILE文>
− <REPEAT文>
− <FOR文>
− <代入文>
【この段落を挿入する。】したがって,次のSQL制御宣言は,準備可能でない。
− <条件宣言>
− <ハンドラ宣言>
− <SQL変数宣言>
4.10.7 直接実行可能なSQL文
この細分箇条は,ISO/IEC 9075-2の“4.39.8 直接実行可能なSQL文”を修正する。
【この段落を挿入する。】次のSQL文は,直接実行してもよい追加のSQL文とする。
− 全てのSQL制御文
4.10.8 繰返しSQL文
次のSQL文は,繰返しSQL文 (iterated SQL-statement) とする。
− <LOOP文>
− <WHILE文>
− <REPEAT文>
− <FOR文>
4.10.9 複合文
複合文は,SQL文の並びを単一のSQL文とみなすことを許す。複合文は,局所的な有効範囲も定義し,
その有効範囲で,SQL変数,条件ハンドラ及び元祖SQLサーバカーソルを宣言できる。“15.1 <複合文>”
を参照。
10
X 3005-4:2019 (ISO/IEC 9075-4:2016)
4.11 基本安全保護モデル
この細分箇条は,ISO/IEC 9075-2の“4.40 基本安全保護モデル”を修正する。
4.11.1 権限
この細分箇条は,ISO/IEC 9075-2の“4.40.2 権限”を修正する。
【1番目の段落に挿入する。】
− SQLサーバモジュール
【この段落を挿入する。】EXECUTE権限記述子は,権限記述子によって識別されるSQLサーバモジュ
ールに関する権限の存在も識別してもよい。
【この段落を挿入する。】EXECUTE権限記述子に含まれるオブジェクトの識別は,記述子によって記述
されるSQLサーバモジュールも識別してもよい。
【この段落を挿入する。】EXECUTE権限記述子によって識別されるオブジェクトがSQL呼出しルーチ
ンRならば,Rは,スキーマレベルルーチンでなければならない。
注記4 “スキーマレベルルーチン”は,[ISO9075-2] の“11.60 <SQL呼出しルーチン>”中で定義し
ている。
4.12 SQLセション
この細分箇条は,ISO/IEC 9075-2の“4.43 SQLセション”を修正する。
4.12.1 SQLセションの一般記述
この細分箇条は,ISO/IEC 9075-2の“4.43.1 SQLセションの一般記述”を修正する。
【この段落を挿入する。】SQLセションSSが条件処理モード (condition handling mode) であるときに限
り,SSの間の幾つかの操作を可能とする。SQL文の実行に関する全ての診断情報が1番目の診断領域に記
録されるまでの範囲の実行を終了したときに,このモードが有効になる。次のSQL文の実行が始まるとき
に,条件処理モードが有効でなくなる。
5
語彙要素
この箇条は,ISO/IEC 9075-2の“5 語彙要素”を修正する。
5.1
<トークン>及び<分離符号>
この細分箇条は,ISO/IEC 9075-2の“5.2 <トークン>及び<分離符号>”を修正する。
機能
<トークン>及び<分離符号> (<token> and <separator>) は,SQL言語に関与する語彙単位(トークン及び
分離符号)を規定する。
形式
<非予約語> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| CONDITION̲IDENTIFIER
| EXIT
| STACKED
| UNDO
<予約語> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| DO
11
X 3005-4:2019 (ISO/IEC 9075-4:2016)
| ELSEIF
| HANDLER
| IF | ITERATE
| LEAVE | LOOP
| REPEAT | RESIGNAL
| SIGNAL
| UNTIL
| WHILE
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
5.2
名前及び識別子
この細分箇条は,ISO/IEC 9075-2の“5.4 名前及び識別子”を修正する。
機能
名前及び識別子 (Names and identifiers) は,名前を指定する。
形式
<SQLサーバモジュール名> ::=
<スキーマ修飾付き名前>
<SQL変数名> ::=
<識別子>
<条件名> ::=
<識別子>
構文規則
1) 【構文規則4)a) を置き換える。】<EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行
SQLセション中で準備される<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義
>又は<SQLサーバモジュール定義>を介在しないで<局所又はスキーマ修飾付き名前>が含まれるな
らば,SQLセションの既定の<修飾なしスキーマ名>が暗に想定される。
2) 【構文規則4)b) の前に挿入する。】<局所又はスキーマ修飾付き名前>が<スキーマ定義>を介在しな
いで<SQLサーバモジュール定義>に含まれるならば,<SQLサーバモジュール定義>中で指定され
るか又は暗に想定される<既定スキーマ名>が暗に想定される。
3) 【構文規則5)a) を置き換える。】LSQが“MODULE”ならば,TNは,次のうちのただ一つに含ま
れなければならない。
a) QIと等価な<修飾される識別子>を<表名>がもつ<一時表宣言>TTを,<SQLスキーマ文>を介在し
ないで含む<SQLクライアントモジュール定義>。
b) QIと等価な<修飾される識別子>を<表名>がもつ<一時表宣言>TTを含む<SQLサーバモジュール
12
X 3005-4:2019 (ISO/IEC 9075-4:2016)
定義>。
4) 【構文規則7) を置き換える。】<カーソル名>をCNとする。次のうちの少なくとも一つが真でなけ
ればならない。
a) <カーソル名>がCNである<カーソル宣言>又は<動的カーソル宣言>を含む<モジュール内容>を
もつ<SQLクライアントモジュール定義>に,<SQLスキーマ文>を介在しないでCNが含まれる。
b) <カーソル名>がCNである<カーソル宣言>を含む<局所カーソル宣言リスト>をもつ<複合文>に,
<SQLスキーマ文>を介在しないでCNが含まれる。
5) 【構文規則8) を置き換える。】<修飾される識別子>QIをもつ<利用者定義型名>UDTNが指定され
るならば,次による。
場合:
a) UDTNが<パス解決利用者定義型名>に単純に含まれるならば,次による。
場合:
i)
UDTNが<スキーマ名>SNを含むならば,SNによって識別されるスキーマは,利用者定義型
UDTの<修飾される識別子>がQIと等価であるようなUDTの記述子を含んでいなければなら
ない。UDTは,UDTNによって識別される利用者定義型とする。
ii) そうでなければ,次による。
1) 場合:
A) <EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備
される<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>又は<SQLサ
ーバモジュール定義>を介在しないでUDTNが含まれるならば,現行SQLセションのSQL
パスをDPとする。
B) <スキーマ定義>を介在しないで<SQLサーバモジュール定義>にUDTNが含まれるならば,
その<SQLサーバモジュール定義>のSQLパスをDPとする。
C) <SQLクライアントモジュール定義>に含まれない<スキーマ定義>にUDTNが含まれるな
らば,その<スキーマ定義>のSQLパスをDPとする。
D) そうでなければ,UDTNは,<SQLクライアントモジュール定義>に含まれる。その<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が<スキーマ名>を含まな
いならば,次による。
場合:
13
X 3005-4:2019 (ISO/IEC 9075-4:2016)
i)
<EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって現行SQLセション中で準備され
る<準備可能文>,又は直接起動される<直接SQL文>に,<スキーマ定義>又は<SQLサーバモジ
ュール定義>を介在しないでUDTNが含まれるならば,UDTNの暗に想定される<スキーマ名>
は,現行SQLセションの既定の<修飾なしスキーマ名>とする。
ii) <スキーマ定義>を介在しないで<SQLサーバモジュール定義>にUDTNが含まれるならば,
UDTNの暗に想定される<スキーマ名>は,<SQLサーバモジュール定義>中で指定されるか又は
暗に想定される<スキーマ名>とする。
iii) <SQLクライアントモジュール定義>に含まれない<スキーマ定義>にUDTNが含まれるならば,
UDTNの暗に想定される<スキーマ名>は,<スキーマ定義>中で指定されるか又は暗に想定され
る<スキーマ名>とする。
iv) そうでなければ,UDTNは,<SQLクライアントモジュール定義>に含まれる。UDTNの暗に想
定される<スキーマ名>は,<SQLクライアントモジュール定義>中で指定されるか又は暗に想定
される<スキーマ名>とする。
6) 【構文規則13)d)i) を置き換える。】<EXECUTE IMMEDIATE文>若しくは<PREPARE文>によって
現行SQLセション中で準備される<準備可能文>,又は直接起動される<直接SQL文>に,<スキー
マ定義>又は<SQLサーバモジュール定義>を介在しないで<スキーマ修飾付き名前>SQNが含まれる
ならば,SQLセションの既定の<修飾なしスキーマ名>が暗に想定される。
7) 【構文規則13)d)ii) の前に挿入する。】<スキーマ定義>を介在しないで<SQLサーバモジュール定義
>に<スキーマ修飾付き名前>SQNが含まれるならば,<SQLサーバモジュール定義>中で指定される
か又は暗に想定される<既定スキーマ名>が暗に想定される。
8) 【構文規則28) を置き換える。】<SQLパラメタ参照>又は<SQL変数参照>を識別し,かつ,<有効
範囲選択肢>を指定しない<拡張記述子名>を<記述子名>が含むならば,それぞれ,その<SQLパラメ
タ参照>又は<SQL変数参照>は,<記述子名>に対する値を与えるために用いられる。
注記5 前の規則は,<SQLパラメタ参照>又は<SQL変数参照>である<拡張記述子名>と,<識別子
>である<非拡張記述子名>との間の曖昧さをなくし,それぞれ,<SQLパラメタ参照>又は
<SQL変数参照>を優先する。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【この一般規則を挿入する。】<SQLサーバモジュール名>は,SQLサーバモジュールを識別する。
2) 【この一般規則を挿入する。】<SQL変数名>は,SQL変数を識別する。
3) 【この一般規則を挿入する。】<条件名>は,例外条件又は終了条件を識別し,対応するSQLSTATE
値を任意に識別する。
適合性規則
追加の適合性規則なし。
6
スカラ式
この箇条は,ISO/IEC 9075-2の“6 スカラ式”を修正する。
6.1
<値指定>及び<相手指定>
この細分箇条は,ISO/IEC 9075-2の“6.4 <値指定>及び<相手指定>”を修正する。
14
X 3005-4:2019 (ISO/IEC 9075-4:2016)
機能
<値指定> (<value specification>) 及び<相手指定> (<target specification>) は,一つ以上の値,ホストパラメ
タ,SQLパラメタ,動的パラメタ,ホスト変数又はSQL変数を指定する。
形式
<一般値指定> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQL変数参照>
<単純値指定> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQL変数参照>
<相手指定> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQL変数参照>
<単純相手指定> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQL変数参照>
<相手配列参照> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQL変数参照>
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則3) を置き換える。】<相手指定>が<ホストパラメタ指定>か,<SQLパラメタ参照>か,<
列参照>か,<相手配列要素指定>か,<動的パラメタ指定>か,<埋込み変数指定>か又は<SQL変数
参照>かどうかに従って,その<相手指定>は,それぞれ,ホストパラメタ,出力SQLパラメタ,遷
移新変数の列,配列型若しくは元型が配列型の個別型である宣言型をもつ相手の要素,動的に準備
される文の中で用いるパラメタ,ホスト変数又はSQL変数である相手を指定する。
2) 【一般規則15) を置き換える。】<単純相手指定>が<ホストパラメタ名>か,<SQLパラメタ参照>か,
<列参照>か,<埋込み変数名>か又は<SQL変数参照>かどうかに従って,その<単純相手指定>は,
それぞれ,ホストパラメタ,出力SQLパラメタ,遷移新変数の列,ホスト変数又はSQL変数であ
る相手を指定する。
注記6 <単純相手指定>には,決してナル値を代入できない。
適合性規則
追加の適合性規則なし。
6.2
<識別子鎖>
この細分箇条は,ISO/IEC 9075-2の“6.6 <識別子鎖>”を修正する。
機能
<識別子鎖> (<identifier chain>) は,<ピリオド>で区切られた識別子の連鎖の曖昧さをなくす。
15
X 3005-4:2019 (ISO/IEC 9075-4:2016)
形式
追加の形式項目なし。
構文規則
1) 【構文規則8) の前に挿入する。】SQL変数Vの宣言型が行型又は構造型ならば,Vは,細分可能
(refinable) という。
2) 【構文規則8) の先頭のテキストを置き換える。】1からMまでの範囲の高々一つのjに対して,PICj
をICの基底 (basis) と呼び,jをICの基底長 (basis length) と呼ぶ。基底の指示対象 (referent) は,
表の列C若しくは期間P,SQLパラメタSP又はSQL変数SVとする。ICの基底,基底長,基底有
効範囲及び基底指示対象は,次のとおりに決定される。
3) 【構文規則8)a)ii) を置き換える。】そうでなければ,ICは,I1と等価な<列名>をもつ列を含む列リ
ストが関連付けられた一つ以上の範囲変数の有効範囲中か,I1と等価な期間名をもつ期間を含む期
間リストが関連付けられた一つ以上の範囲変数の有効範囲中か,I1と等価な<SQLパラメタ名>をも
つSQLパラメタを含む<SQLパラメタ宣言リスト>が関連付けられた<ルーチン名>の有効範囲中か,
又はI1と等価な<SQL変数名>をもつSQL変数を含む<局所宣言リスト>が関連付けられた一つ以上
の<開始ラベル>の有効範囲中に含まれなければならない。そのような最も内側の有効範囲をISと
する。有効範囲がISであるそれらの範囲変数,<ルーチン名>及び<開始ラベル>を,可能な有効範
囲標識 (possible scope tags) という句で示す。可能な有効範囲標識の個数は,1でなければならない。
その可能な有効範囲標識をIPSTとする。
4) 【構文規則8)a)ii)2) の後に挿入する。】IPSTが<開始ラベル>ならば,<SQL変数名>がI1と等価な
SQL変数をSVとする。PIC1は,ICの基底とし,基底長は,1とし,基底有効範囲は,SVの有効
範囲とし,基底指示対象は,SVとする。
5) 【構文規則8)b)iv) の前に挿入する。】ICが<開始ラベル>の有効範囲中に含まれ,その<開始ラベル
>に関連付けられた<局所宣言リスト>が,I1と等価な<SQL変数名>をもつSQL変数SVを含むなら
ば,PIC1は,ICの候補基底とし,PIC1の有効範囲は,SVの有効範囲とし,PIC1の指示対象は,
SVとする。
6) 【構文規則8)b)iv) の前に挿入する。】N = 2で,<開始ラベル>BLとPIC1とが等価で,BLの有効範
囲がICを含み,かつ,BLに関連付けられた<局所宣言リスト>が,I2と等価な<SQL変数名>をも
つSQL変数SVを含むならば,PIC2は,ICの候補基底とし,PIC2の有効範囲は,SVの有効範囲
とし,PIC2の指示対象は,SVとする。
7) 【構文規則8)b)iv) の前に挿入する。】N > 2で,<開始ラベル>BLとPIC1とが等価で,BLの有効範
囲がICを含み,かつ,BLに関連付けられた<局所宣言リスト>が,I2と等価な<SQL変数名>をも
つ細分可能なSQL変数SVを含むならば,PIC2は,ICの候補基底とし,PIC2の有効範囲は,SV
の有効範囲とし,PIC2の指示対象は,SVとする。
8) 【構文規則10) に関連付けられた注記を置き換える。】
注記7 【注記173を置き換える。】この変換では,(PICBL) は,<左括弧><値式><右括弧>という
形式の<値式一次子>として解釈される。PICBLは,<列参照>である<括弧なし値式一次子
>か又は<SQLパラメタ参照>若しくは<SQL変数参照>である<一般値指定>である<符号な
し値指定>のいずれかの<値式一次子>の<値式>である。識別子IBL+1,...,INは,“6.15 <
フィールド参照>”及び“6.17 <メソッド呼出し>”の形式及び構文規則を用いて解析され
る。一方,<代入文>の左辺側では,(PICBL) は,“<左括弧><相手指定><右括弧>”として
16
X 3005-4:2019 (ISO/IEC 9075-4:2016)
解釈され,識別子IBL+1,...,INは,“15.5 <代入文>”の<修正フィールド参照>及び<変異
参照>の形式及び構文規則を用いて解析される。
9) 【構文規則15) の後に挿入する。】基底指示対象がSQL変数である<基本識別子鎖>は,SQL変数参
照 (SQL variable reference) とする。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【この一般規則を挿入する。】BICがSQL変数参照ならば,BICは,SQL変数SVを宣言する<SQL
変数宣言>を含む<局所宣言リスト>をもつ<複合文>の与えられた実行でのSVを参照する。
適合性規則
1) 機能P005“修飾付きSQL変数参照”なしでは,適合するSQL言語は,最初の<識別子>が<複合文>
の<開始ラベル>であるSQL変数参照を含んではならない。
6.3
<次値式>
この細分箇条は,ISO/IEC 9075-2の“6.14 <次値式>”を修正する。
機能
<次値式> (<next value expression>) は,順序数生成子の次の値を戻す。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1)e) の後に挿入する。】<代入文>。
2) 【この構文規則を挿入する。】<次値式>は,<CASE文>,<IF文>,<LOOP文>,<WHILE文>又は
<REPEAT文>に,<SQL文リスト>を介在しないで含まれてはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
6.4
<SQL変数参照>
機能
<SQL変数参照> (<SQL variable reference>) は,SQL変数を参照する。
形式
<SQL変数参照> ::=
<基本識別子鎖>
構文規則
1) <SQL変数参照>は,SQL変数参照である<基本識別子鎖>でなければならない。
アクセス規則
なし。
一般規則
なし。
17
X 3005-4:2019 (ISO/IEC 9075-4:2016)
適合性規則
なし。
7
問合せ式
この箇条は,ISO/IEC 9075-2の“7 問合せ式”を修正する。
7.1
<表参照>
この細分箇条は,ISO/IEC 9075-2の“7.6 <表参照>”を修正する。
機能
<表参照> (<table reference>) は,表を参照する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則8)d)iii) を置き換える。】QSTPSは,<列参照>,<SQLパラメタ参照>又は<SQL変数参
照>を含んではならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
7.2
<問合せ指定>
この細分箇条は,ISO/IEC 9075-2の“7.16 <問合せ指定>”を修正する。
機能
<問合せ指定> (<query specification>) は,<表式>の結果から導出される表を指定する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則8)f)i) の後に挿入する。】ICが<開始ラベル>の有効範囲中に含まれ,その<開始ラベル>
に関連付けられた<局所宣言リスト>が,I1と等価な<SQL変数名>をもつSQL変数SVを含むなら
ば,PIC1は,ICの候補基底とし,PIC1の有効範囲は,SPの有効範囲とする。
2) 【構文規則8)f)i) の後に挿入する。】N = 2で,<開始ラベル>BLとPIC1とが等価で,BLの有効範
囲がICを含み,かつ,BLに関連付けられた<局所宣言リスト>が,I2と等価な<SQL変数名>をも
つSQL変数SVを含むならば,PIC2は,ICの候補基底とし,PIC2の有効範囲は,SVの有効範囲
とし,PIC2の指示対象は,SVとする。
3) 【構文規則8)f)i) の後に挿入する。】N > 2で,<開始ラベル>BLとPIC1とが等価で,BLの有効範
囲がICを含み,かつ,BLに関連付けられた<局所宣言リスト>が,I2と等価な<SQL変数名>をも
つ細分可能なSQL変数SVを含むならば,PIC2は,ICの候補基底とし,PIC2の有効範囲は,SV
の有効範囲とし,PIC2の指示対象は,SVとする。
4) 【構文規則13)o)ii) の後に挿入する。】DCOLkが単一のSQL変数参照ならば,COLNkは,SQL変
数参照によって示されるSQL変数の<SQL変数名>とする。
18
X 3005-4:2019 (ISO/IEC 9075-4:2016)
5) 【構文規則19)c) の後に挿入する。】<選択リスト>中のi番目の<導出列>が<AS句>を指定しないで,
かつ,その<導出列>の<値式>が単一のSQL変数参照ならば,結果のi番目の列の<列名>は,その
SQL変数参照によって示されるSQL変数の<SQL変数名>とする。
6) 【構文規則21)b)iv) の後に挿入する。】SQL変数。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
1) 機能P005“修飾付きSQL変数参照”なしでは,適合するSQL言語は,最初の<識別子>が<複合文>
の<開始ラベル>である<アスタリスク付き識別子鎖>を含んではならない。
8
その他の共通規則
この箇条は,ISO/IEC 9075-2の“9 その他の共通規則”を修正する。
8.1
ハンドラ実行
細分箇条署名
“ハンドラ実行” [一般規則] (
パラメタ: “MOST APPROPRIATE HANDLER”
)
機能
ハンドラ実行 (Handler execution) は,例外条件に対する最適ハンドラを実行する。
構文規則
なし。
アクセス規則
なし。
一般規則
注記8 陽に指定される場合を除いて,この細分箇条の一般規則は,例外条件が引き起こされても終
了しない。
1) 場合:
a) 別の細分箇条から“サブルーチン細分箇条 (subroutine Subclause)”としてこの細分箇条が呼び出
されたならば,この細分箇条の一般規則の適用では,MOST APPROPRIATE HANDLERをMAH
とする。MAHは,最適ハンドラ (most appropriate handler) とする。
b) そうでなければ,引き起こしがこの細分箇条を呼び出す要因になった条件Cに対する最適ハンド
ラをMAHとする。
2) MAHを実効的に作成した<ハンドラ宣言>をHDとする。
3) HDを単純に含む<複合文>をCSとする。
4) MAH中で指定された<ハンドラ型>をHTとする。
5) MAHに単純に含まれる<ハンドラ動作>をHAとする。
6) MAHは,潜在的な最適ハンドラのリストから実効的に取り除かれる。
注記9 これによって,現在実行中のハンドラが,このハンドラを実行している間に引き起こされ
19
X 3005-4:2019 (ISO/IEC 9075-4:2016)
る例外に対する最適ハンドラとして選択されることを防ぐ。
7) MAHが基本単位の実行文脈中で有効化され,かつ,引き起こされた条件が任意の部分条件をもつ
トランザクションロールバック (transaction rollback) ならば,次の<RESIGNAL文>が実効的に実行
される。
RESIGNAL
注記10 基本単位の実行文脈中で条件が暗黙ロールバック([ISO9075-2] の“4.41.5 暗黙ロールバ
ック”参照)になるならば,ハンドラ本体が実行されるまでにトランザクションが実効的
にロールバックされている。これに続けてトランザクション開始文が実行されるならば,
それは,基本単位の実行文脈中でトランザクションを開始することを要求することになり,
正しくない。したがって,外側の基本単位でない実行文脈に条件が実効的に再送 (resignal)
される。
8) HTがCONTINUEを指定するならば,次による。
a) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診断
領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
b) HAをCOMPOUND STATEMENTとして,“15.1 <複合文>”の一般規則を適用する。
c) 場合:
i)
HAの終了時点に成功終了 (successful completion) 以外の処理されない条件があるならば,次に
よる。
1) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診
断領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
2) 次の<RESIGNAL文>が実効的に実行される。
RESIGNAL
ii) そうでなければ,次による。
1) POPをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診
断領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
2) 潜在的な最適ハンドラのリストにMAHが実効的に戻される。
3) HAが終了条件成功終了 で終了し,条件を引き起こした最も内側の実行文の実行が終了した
ときと同じようにSQLセションを継続する。
9) HTがEXITを指定するならば,次による。
a) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診断
領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
b) HAをCOMPOUND STATEMENTとして,“15.1 <複合文>”の一般規則を適用する。
c) CSの<局所カーソル宣言リスト>中で宣言されたどの開いている元祖SQLサーバカーソルCRに
対しても,CRをCURSORとして,SAVEをDISPOSITIONとして,[ISO9075-2] の“15.4 カー
ソルを閉じることの効果”の一般規則を適用する。
d) 場合:
i)
HAの終了時点に成功終了 以外の処理されない条件があるならば,次による。
1) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診
断領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
2) 次の<RESIGNAL文>が実効的に実行される。
20
X 3005-4:2019 (ISO/IEC 9075-4:2016)
RESIGNAL
ii) そうでなければ,次による。
1) POPをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診
断領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
2) 潜在的な最適ハンドラのリストにMAHが実効的に戻される。
3) HAが終了条件成功終了 で終了し,CSの実行が終了したときと同じようにSQLセションを
継続する。
10) HTがUNDOを指定するならば,次による。
a) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診断
領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
b) CSの<SQL文リスト>に含まれるSQL文,及びそのような文の実行によって引き起こされる
(triggered) <SQL手続文>の実行によってSQLデータ又はスキーマになされた全ての変更が取り消
される。
c) CSの<局所カーソル宣言リスト>中で宣言されたどの開いている元祖SQLサーバカーソルCRに
対しても,CRをCURSORとして,SAVEをDISPOSITIONとして,[ISO9075-2] の“15.4 カー
ソルを閉じることの効果”の一般規則を適用する。
d) HAをCOMPOUND STATEMENTとして,“15.1 <複合文>”の一般規則を適用する。
e) 場合:
i)
HAの終了時点に成功終了 以外の処理されない条件があるならば,次による。
1) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診
断領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
2) 次の<RESIGNAL文>が実効的に実行される。
RESIGNAL
ii) そうでなければ,次による。
1) POPをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診
断領域スタックに対するプッシュ及びポップ”の一般規則を適用する。
2) 潜在的な最適ハンドラのリストにMAHが実効的に戻される。
3) HAが終了条件成功終了 で終了し,CSの実行が終了したときと同じようにSQLセションを
継続する。
適合性規則
なし。
9
その他の共通要素
この箇条は,ISO/IEC 9075-2の“10 その他の共通要素”を修正する。
9.1
<ルーチン呼出し>
この細分箇条は,ISO/IEC 9075-2の“10.4 <ルーチン呼出し>”を修正する。
機能
<ルーチン呼出し> (<routine invocation>) は,SQL呼出しルーチンを呼び出す。
形式
追加の形式項目なし。
21
X 3005-4:2019 (ISO/IEC 9075-4:2016)
構文規則
1) 【構文規則6) を置き換える。】SQL呼出しルーチンRが実行可能ルーチン (executable routine) であ
ることは,Rが潜在的な候補ルーチンで,かつ,次の条件を満たすことと同値とする。
場合:
a) RIが<SQLスキーマ文>に含まれるならば,次の条件を満たす。
場合:
i)
RIが<SQLサーバモジュール定義> Mに含まれるならば,その<SQLスキーマ文>を含むスキー
マを所有する<認可識別子>に適用可能な権限が,Mに関するEXECUTEを含む。
ii) そうでなければ,その<SQLスキーマ文>を含むスキーマを所有する<認可識別子>に適用可能な
権限が,Rに関するEXECUTEを含む。
b) そうでなければ,次の条件を満たす。
場合:
i)
RIが<SQLサーバモジュール定義> Mに含まれるならば,現行の権限がMに関するEXECUTE
を含む。
ii) そうでなければ,現行の権限がRに関するEXECUTEを含む。
2) 【構文規則7)c) の前に挿入する。】RIが<SQLサーバモジュール定義>に含まれるならば,その<SQL
サーバモジュール定義>のSQLパスをDPとする。
3) 【構文規則7)c) を置き換える。】<SQLサーバモジュール定義>を介在しないでRIが<スキーマ定義
>に含まれるならば,その<スキーマ定義>のSQLパスをDPとする。
4) 【構文規則9)h)iii)5) を置き換える。】XAiが<SQL変数参照>,<SQLパラメタ参照>,<列参照>又は
<相手配列要素指定>ならば,XAiをTARGETとして,PiをVALUEとして,[ISO9075-2] の“9.2 格
納代入”の構文規則を適用する。
注記11 <列参照>は,遷移新変数列参照だけがあり得る。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則5)f)i)4) の後に挿入する。】<SQLサーバモジュール定義>で定義される宣言局所一時表の
識別体。
2) 【一般規則8)a) の後に挿入する。】RがSQLサーバモジュールSに含まれるならば,SへのPの結
合方法及び結合時機は,処理系定義とする。
3) 【一般規則9)b)ii) の先頭のテキストを置き換える。】TSiが<SQL変数参照>,<SQLパラメタ参照>,
<列参照>又は<相手配列要素指定>ならば,次による。
注記12 <列参照>は,遷移新変数列参照だけがあり得る。
適合性規則
追加の適合性規則なし。
9.2
<SQLSTATE値>
機能
<SQLSTATE値> (<sqlstate value>) は,SQLSTATE値を指定する。
形式
<SQLSTATE値> ::=
22
X 3005-4:2019 (ISO/IEC 9075-4:2016)
SQLSTATE [ VALUE ] <文字列定数>
構文規則
1) <SQLSTATE値>に含まれる<文字列定数>をLとする。
2) Lの暗に想定されるか又は陽に指定する文字集合は,SQLSTATEパラメタの値を戻す処理系定義の
文字集合でなければならない。
3) 次のTRIM関数の値である文字列をVとする。
TRIM ( BOTH ' ' FROM L )
4) Vは,次のいずれかから成らなければならない。
a) 最初の2文字が規格定義クラスコードの形式をもち,最後の3文字が規格定義サブクラスコード
の形式をもつ5文字。
b) 最初の2文字が規格定義クラスコードの形式をもち,最後の3文字が処理系定義サブクラスコー
ドの形式をもつ5文字。
c) 最初の2文字が処理系定義クラスコードの形式をもち,最後の3文字が規格定義サブクラスコー
ド又は処理系定義サブクラスコードの形式をもつ5文字。
5) Vは,条件成功終了 (successful completion) のSQLSTATE値であってはならない。
6) <SQLSTATE値>によって定義されるSQLSTATE値は,Vとする。
アクセス規則
なし。
一般規則
なし。
適合性規則
なし。
10 スキーマ定義及びスキーマ操作
この箇条は,ISO/IEC 9075-2の“11 スキーマ定義及びスキーマ操作”を修正する。
10.1 <スキーマ定義>
この細分箇条は,ISO/IEC 9075-2の“11.1 <スキーマ定義>”を修正する。
機能
<スキーマ定義> (<schema definition>) は,スキーマを定義する。
形式
<スキーマ要素> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQLサーバモジュール定義>
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
23
X 3005-4:2019 (ISO/IEC 9075-4:2016)
追加の適合性規則なし。
10.2 <スキーマ削除文>
この細分箇条は,ISO/IEC 9075-2の“11.2 <スキーマ削除文>”を修正する。
機能
<スキーマ削除文> (<drop schema statement>) は,スキーマを破壊する。
形式
追加の形式項目なし。
構文規則
1) 【この構文規則を挿入する。】RESTRICTが指定されるならば,Sは,どのSQLサーバモジュール
も含んではならない。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則8) の前に挿入する。】Sに含まれるどのSQLサーバモジュールMに対しても,Mの<SQL
サーバモジュール名>をMNとする。次の<モジュール削除文>がどのMに対しても実効的に実行さ
れる。
DROP MODULE MN CASCADE
2) 【一般規則11) を置き換える。】Sの<スキーマ名>を<SQLルーチン本体>に含むルーチン記述子を
もつSQL呼出しルーチンをRとする。
場合:
a) RがSQLサーバモジュールMに含まれるならば,Mの<SQLサーバモジュール名>をMNとする。
これ以上のアクセス規則の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
b) そうでなければ,Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルー
チン削除文>が実効的に実行される。
DROP SPECIFIC ROUTINE SN CASCADE
3) 【一般規則11) の後に挿入する。】Sの<スキーマ名>を含むモジュール記述子をもつSQLサーバモ
ジュールをSSMとし,SSMの<SQLサーバモジュール名>をMNとする。これ以上のアクセス規則
の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
適合性規則
追加の適合性規則なし。
10.3 <表定義>
この細分箇条は,ISO/IEC 9075-2の“11.3 <表定義>”を修正する。
機能
<表定義> (<table definition>) は,永続実表,作成局所一時表,又は大域一時表を定義する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則4) を置き換える。】<表内容元>は,<ホストパラメタ指定>,<SQLパラメタ参照>,<動
24
X 3005-4:2019 (ISO/IEC 9075-4:2016)
的パラメタ指定>,<埋込み変数指定>又は<SQL変数参照>を含んではならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.4 <列定義>
この細分箇条は,ISO/IEC 9075-2の“11.4 <列定義>”を修正する。
機能
<列定義> (<column definition>) は,実表の列を定義する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<列定義>は,<ホストパラメタ指定>,<SQLパラメタ参照>,<動的
パラメタ指定>,<埋込み変数指定>又は<SQL変数参照>を含んではならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.5 <DEFAULT句>
この細分箇条は,ISO/IEC 9075-2の“11.5 <DEFAULT句>”を修正する。
機能
<DEFAULT句> (<default clause>) は,列,定義域,属性又はSQL変数のための既定値を指定する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<DEFAULT句>の当該データ型は,<DEFAULT句>を含む<列定義>,
<定義域定義>,<属性定義>,<列定義変更>若しくは<定義域変更文>によって識別される記述子中で
指定されるデータ型,又は<DEFAULT句>を含む<SQL変数宣言>中で指定される<データ型>によっ
て定義されるデータ型とする。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
25
X 3005-4:2019 (ISO/IEC 9075-4:2016)
10.6 <検査制約定義>
この細分箇条は,ISO/IEC 9075-2の“11.9 <検査制約定義>”を修正する。
機能
<検査制約定義> (<check constraint definition>) は,SQLデータに対する条件を指定する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<探索条件>は,<ホストパラメタ指定>,<SQLパラメタ参照>,<動
的パラメタ指定>,<埋込み変数指定>,<SQL変数参照>,又はシステム時刻期間開始列若しくはシ
ステム時刻期間終了列を参照する<列参照>を含んではならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.7 <列SCOPE句削除>
この細分箇条は,ISO/IEC 9075-2の“11.18 <列SCOPE句削除>”を修正する。
機能
<列SCOPE句削除> (<drop column scope clause>) は,実表中のデータ型REFの既存の列から有効範囲を
削除する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則5)d) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則1) を置き換える。】影響を受ける内参照演算を含む<SQLルーチン本体>を含むルーチン
記述子をもつどのSQL呼出しルーチンRに対しても,次による。
場合:
a) RがSQLサーバモジュールMに含まれるならば,Mの<SQLサーバモジュール名>をMNとする。
これ以上のアクセス規則の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
b) そうでなければ,Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルー
チン削除文>がどのRに対しても実効的に実行される。
DROP SPECIFIC ROUTINE SN CASCADE
2) 【一般規則4) の後に挿入する。】影響を受ける内参照演算を含むモジュール記述子をもつSQLサー
バモジュールをSSMとし,SSMの<SQLサーバモジュール名>をMNとする。これ以上のアクセス
規則の検査なしで,次の<モジュール削除文>が実効的に実行される。
26
X 3005-4:2019 (ISO/IEC 9075-4:2016)
DROP MODULE MN CASCADE
適合性規則
追加の適合性規則なし。
10.8 <列定義削除>
この細分箇条は,ISO/IEC 9075-2の“11.23 <列定義削除>”を修正する。
機能
<列定義削除> (<drop column definition>) は,実表の列を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則7)e) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.9 <表制約定義削除>
この細分箇条は,ISO/IEC 9075-2の“11.26 <表制約定義削除>”を修正する。
機能
<表制約定義削除> (<drop table constraint definition>) は,表に関する制約を破壊する。
形式
追加の形式項目なし。
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則2) を置き換える。】<SQLルーチン本体>にTCの<制約名>を含むルーチン記述子をもつ
SQL呼出しルーチン,又はTCに依存しているSQL呼出しルーチンをRとする。
場合:
a) RがSQLサーバモジュールMに含まれるならば,Mの<SQLサーバモジュール名>をMNとする。
これ以上のアクセス規則の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
b) そうでなければ,Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルー
チン削除文>がどのRに対しても実効的に実行される。
DROP SPECIFIC ROUTINE SN CASCADE
適合性規則
追加の適合性規則なし。
27
X 3005-4:2019 (ISO/IEC 9075-4:2016)
10.10
<表削除文>
この細分箇条は,ISO/IEC 9075-2の“11.31 <表削除文>”を修正する。
機能
<表削除文> (<drop table statement>) は,表を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則7) の後に挿入する。】RESTRICTが指定されるならば,Tは,SQLサーバモジュールの
モジュール記述子中で参照されていてはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.11
<ビュー定義>
この細分箇条は,ISO/IEC 9075-2の“11.32 <ビュー定義>”を修正する。
機能
<ビュー定義> (<view definition>) は,ビュー表を定義する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則2) を置き換える。】QEは,<ホストパラメタ指定>,<SQLパラメタ参照>,<動的パラ
メタ指定>,<埋込み変数指定>又は<SQL変数参照>を含んではならない。
2) 【構文規則21)t)vi)5) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.12
<ビュー削除文>
この細分箇条は,ISO/IEC 9075-2の“11.33 <ビュー削除文>”を修正する。
機能
<ビュー削除文> (<drop view statement>) は,ビューを破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則5) の後に挿入する。】RESTRICTが指定されるならば,Vは,SQLサーバモジュールの
モジュール記述子中で参照されていてはならない。
28
X 3005-4:2019 (ISO/IEC 9075-4:2016)
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.13
<定義域削除文>
この細分箇条は,ISO/IEC 9075-2の“11.40 <定義域削除文>”を修正する。
機能
<定義域削除文> (<drop domain statement>) は,定義域を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則2) の後に挿入する。】RESTRICTが指定されるならば,Dは,SQLサーバモジュールの
モジュール記述子中で参照されていてはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.14
<文字集合削除文>
この細分箇条は,ISO/IEC 9075-2の“11.42 <文字集合削除文>”を修正する。
機能
<文字集合削除文> (<drop character set statement>) は,文字集合を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則4) の後に挿入する。】Cは,SQLサーバモジュールのモジュール記述子中で参照されて
いてはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.15
<照合順削除文>
この細分箇条は,ISO/IEC 9075-2の“11.44 <照合順削除文>”を修正する。
機能
<照合順削除文> (<drop collation statement>) は,照合順を破壊する。
29
X 3005-4:2019 (ISO/IEC 9075-4:2016)
形式
追加の形式項目なし。
構文規則
1) 【構文規則4) の後に挿入する。】RESTRICTが指定されるならば,Cは,SQLサーバモジュールの
モジュール記述子中で参照されていてはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.16
<文字変換削除文>
この細分箇条は,ISO/IEC 9075-2の“11.46 <文字変換削除文>”を修正する。
機能
<文字変換削除文> (<drop transliteration statement>) は,文字の文字変換を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則3) の後に挿入する。】RESTRICTが指定されるならば,Tは,SQLサーバモジュールの
モジュール記述子中で参照されていてはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.17
<表明定義>
この細分箇条は,ISO/IEC 9075-2の“11.47 <表明定義>”を修正する。
機能
<表明定義> (<assertion definition>) は,整合性制約を指定する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則5) を修正する。】構文規則中のリストに“,<SQL変数名>”を追加する。
2) 【構文規則5) の後に挿入する。】
注記13 <SQL変数名>も,<SQL変数名>の有効範囲の規則によって排除される。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
30
X 3005-4:2019 (ISO/IEC 9075-4:2016)
適合性規則
追加の適合性規則なし。
10.18
<表明削除文>
この細分箇条は,ISO/IEC 9075-2の“11.48 <表明削除文>”を修正する。
機能
<表明削除文> (<drop assertion statement>) は,表明を破壊する。
形式
追加の形式項目なし。
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則1) を置き換える。】Aの<制約名>を<SQLルーチン本体>に含むルーチン記述子をもつ
SQL呼出しルーチンをRとする。
場合:
a) RがSQLサーバモジュールMに含まれるならば,Mの<SQLサーバモジュール名>をMNとする。
これ以上のアクセス規則の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
b) そうでなければ,Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルー
チン削除文>が実効的に実行される。
DROP SPECIFIC ROUTINE SN CASCADE
適合性規則
追加の適合性規則なし。
10.19
<トリガ定義>
この細分箇条は,ISO/IEC 9075-2の“11.49 <トリガ定義>”を修正する。
機能
<トリガ定義> (<trigger definition>) は,被トリガSQL文を定義する。
形式
<被トリガSQL文> ::=
<SQL手続文>
注記14 <被トリガSQL文>を定義する上記の生成規則は,[ISO9075-2] の定義に完全にとって代わ
る。
構文規則
1) 【この構文規則を挿入する。】<SQL手続文>が<複合文> CSを単純に含むならば,CSは,ATOMIC
を指定しなければならない。
アクセス規則
1) 【アクセス規則3) を置き換える。】<トリガ定義>の<被トリガ動作>TAが<遷移旧表名>OTTN,<遷
移旧変数名>OTVN,<遷移新表名>NTTN又は<遷移新変数名>NTVNを含むならば,次による。
a) TAがOTTN,OTVN若しくはNTTNを含むか又は<代入文>の<代入相手>以外としてNTVNを含
31
X 3005-4:2019 (ISO/IEC 9075-4:2016)
むならば,Aに適用可能な権限は,Tに関するSELECTを含まなければならない。
b) TAが<代入文>の<代入相手>としてNTVNを含むならば,Aに適用可能な権限は,Tに関する
UPDATEを含まなければならない。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.20
<利用者定義順序付け削除文>
この細分箇条は,ISO/IEC 9075-2の“11.66 <利用者定義順序付け削除文>”を修正する。
機能
<利用者定義順序付け削除文> (<drop user-defined ordering statement>) は,利用者定義順序付けメソッドを
破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則4)d) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則1) を置き換える。】比較型がUDTである利用者定義型T1を宣言型としてもつ,等値性
演算,グループ化操作又は順序付け操作のオペランドを<SQLルーチン本体>が含むSQL呼出しル
ーチンをRとする。
場合:
a) <スキーマ定義>を介在しないでRがSQLサーバモジュールMに含まれるならば,Mの<SQLサ
ーバモジュール名>をMNとする。これ以上のアクセス規則の検査なしで,次の<モジュール削除
文>が実効的に実行される。
DROP MODULE MN CASCADE
b) そうでなければ,Rの<特定名>をSNとする。これ以上のアクセス規則の検査なしで,次の<ルー
チン削除文>が実効的に実行される。
DROP SPECIFIC ROUTINE SN CASCADE
2) 【一般規則6) の後に挿入する。】比較型がUDTである利用者定義型T1を宣言型としてもつ,等値
性演算,グループ化操作又は順序付け操作のオペランドを含むモジュール記述子をもつSQLサーバ
モジュールをSSMとし,SSMの<SQLサーバモジュール名>をMNとする。これ以上のアクセス規
則の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
適合性規則
追加の適合性規則なし。
10.21 <SQLサーバモジュール定義>
機能
<SQLサーバモジュール定義> (<SQL-server module definition>) は,SQLサーバモジュールを定義する。
32
X 3005-4:2019 (ISO/IEC 9075-4:2016)
形式
<SQLサーバモジュール定義> ::=
CREATE MODULE <SQLサーバモジュール名>
[ <SQLサーバモジュール文字集合指定> ]
[ <SQLサーバモジュールSCHEMA句> ]
[ <SQLサーバモジュールパス指定> ]
[ <一時表宣言>... ]
<SQLサーバモジュール内容>...
END MODULE
<SQLサーバモジュール文字集合指定> ::=
NAMES ARE <文字集合指定>
<SQLサーバモジュールSCHEMA句> ::=
SCHEMA <既定スキーマ名>
<既定スキーマ名> ::=
<スキーマ名>
<SQLサーバモジュールパス指定> ::=
<パス指定>
<SQLサーバモジュール内容> ::=
<SQL呼出しルーチン> <セミコロン>
構文規則
1) <SQLサーバモジュール定義>が<スキーマ定義>SDに含まれ,かつ,<SQLサーバモジュール定義>
の<SQLサーバモジュール名>が<スキーマ名>を含むならば,その<スキーマ名>は,SDの陽に指定
されるか又は暗に想定される<スキーマ名>と等価でなければならない。
2) <SQLサーバモジュール名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別さ
れるスキーマは,それを含む<SQLサーバモジュール定義>の<SQLサーバモジュール名>と等価な
<SQLサーバモジュール名>をもつモジュール記述子を含んでいてはならない。
3) <SQL呼出しルーチン>によって指定されるSQL呼出しルーチンは,スキーマレベルルーチンであ
ってはならない。
注記15 “スキーマレベルルーチン”は,[ISO9075-2] の“11.60 <SQL呼出しルーチン>”で定義し
ている。
4) <SQLサーバモジュールパス指定>が指定されないならば,<SQLサーバモジュール名>の陽に指定
されるか又は暗に想定される<スキーマ名>を含む処理系定義の<スキーマ名リスト>を含む<SQLサ
ーバモジュールパス指定>が暗に想定される。
5) <SQLサーバモジュールパス指定>の<スキーマ名リスト>に含まれる各<スキーマ名>の陽に指定さ
れるか又は暗に想定される<カタログ名>は,<SQLサーバモジュール名>の陽に指定されるか又は暗
に想定される<スキーマ名>の<カタログ名>と等価でなければならない。
6) 陽に指定されるか又は暗に想定される<SQLサーバモジュールパス指定>の<スキーマ名リスト>は,
SQLサーバモジュールのSQLパスとして用いる。SQLパスは,<SQLサーバモジュール定義>に含
まれる<ルーチン呼出し>に直に含まれる修飾なしの<ルーチン名>を実効的に修飾するために用い
る。
33
X 3005-4:2019 (ISO/IEC 9075-4:2016)
7) <SQLサーバモジュールSCHEMA句>が指定されないならば,<SQLサーバモジュール名>の陽に指
定されるか又は暗に想定される<スキーマ名>と等価な<既定スキーマ名>を含む<SQLサーバモジュ
ールSCHEMA句>が暗に想定される。
8) <SQLサーバモジュール文字集合指定>が指定されないならば,<SQLサーバモジュール名>の陽に
指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマの<スキーマ文字集合
指定>と等価な<文字集合指定>を含む<SQLサーバモジュール文字集合指定>が暗に想定される。
9) 陽に指定されるか又は暗に想定される<SQLサーバモジュール文字集合指定>は,SQLサーバモジュ
ールを表現する文字集合とする。SQLサーバモジュールが実際には異なる文字集合で表現されるな
らば,その効果は,処理系依存とする。
アクセス規則
1) <スキーマ定義>を介在しないで,<SQLサーバモジュール定義>が<SQLクライアントモジュール定
義>に含まれるならば,与えられた認可識別子は,<SQLサーバモジュール名>の暗に想定されるか
又は陽に指定される<スキーマ名>によって識別されるスキーマを所有する<認可識別子>を含まな
ければならない。
一般規則
1) <SQLサーバモジュール定義>は,SQLサーバモジュールを定義する。
2) <SQLサーバモジュール名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別さ
れるスキーマを所有する<認可識別子>へのSQLサーバモジュールに関するEXECUTE権限を定義
する権限記述子が作成される。権限記述子の権限付与者には,特別な権限付与者の値“̲SYSTEM”
が設定される。この権限が付与可能であることは,<SQLサーバモジュール定義>に含まれる全ての
<SQL呼出しルーチン>の<ルーチン本体>に含まれる<SQL手続文>を正常に実行するために<認可識
別子>に必要な権限の全てが付与可能であることと同値とする。
注記16 必要な権限は,<SQL手続文>に含まれる全ての<ルーチン呼出し>の全ての当該ルーチンに
関するEXECUTE権限を含む。
3) 定義しているSQLサーバモジュールを記述するSQLサーバモジュール記述子が作成される。SQL
サーバモジュール記述子は,次の項目を含む。
a) <SQLサーバモジュール名>によって指定されるSQLサーバモジュール名。
b) <SQLサーバモジュール文字集合指定>によって指定される文字集合の記述子。
c) <SQLサーバモジュールSCHEMA句>によって指定される既定スキーマ名。
d) <SQLサーバモジュール名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別
されるスキーマを所有する認可識別子に対応するSQLサーバモジュール認可識別子。
e) <SQLサーバモジュールパス指定>に含まれるスキーマ名のリスト。
f)
SQLサーバモジュール中で宣言される全ての局所一時表の記述子。
g) SQLサーバモジュールに含まれる全てのSQL呼出しルーチンの記述子。
h) <SQLサーバモジュール定義>のテキスト。
i)
作成時刻印の値としてのCURRENT̲TIMESTAMP。
適合性規則
1) 機能P001“格納モジュール”なしでは,適合するSQL言語は,<SQLサーバモジュール定義>を含
んではならない。
34
X 3005-4:2019 (ISO/IEC 9075-4:2016)
10.22
<モジュール削除文>
機能
<モジュール削除文> (<drop module statement>) は,SQLサーバモジュールを破壊する。
形式
<モジュール削除文> ::=
DROP MODULE <SQLサーバモジュール名> <削除動作>
構文規則
1) <SQLサーバモジュール名>をMNとし,MNによって識別されるSQLサーバモジュールをMとす
る。
2) Mは,SQLサーバモジュールでなければならない。
3) RESTRICTが指定されるならば,Mの記述子は,次のいずれかに含まれる<ルーチン呼出し>の当該
ルーチンに含まれるSQL呼出しルーチンの記述子を含んでいてはならない。
a) Mのモジュール記述子に含まれていないルーチン記述子の<SQLルーチン本体>。
b) Mのモジュール記述子に含まれていないルーチン記述子のSQLパラメタの<パラメタ既定値>。
c) ビュー記述子の<問合せ式>。
d) 制約記述子の<探索条件>。
e) トリガ記述子。
f) M以外のSQLサーバモジュールのモジュール記述子。
アクセス規則
1) 与えられた認可識別子は,Mの<スキーマ名>によって識別されるスキーマを所有する<認可識別子>
を含まなければならない。
一般規則
1) 現行認可識別子をAとする。“̲SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の
検査なしで,次の<REVOKE文>が実効的に実行される。
REVOKE EXECUTE ON MODULE MN FROM A
CASCADE
2) Mの記述子が破壊される。
適合性規則
1) 機能P001“格納モジュール”なしでは,適合するSQL言語は,<モジュール削除文>を含んではな
らない。
10.23
<データ型削除文>
この細分箇条は,ISO/IEC 9075-2の“11.59 <データ型削除文>”を修正する。
機能
<データ型削除文> (<drop data type statement>) は,利用者定義型を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則4)f)v) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
2) 【構文規則4)h)i)4) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
35
X 3005-4:2019 (ISO/IEC 9075-4:2016)
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.24
<SQL呼出しルーチン>
この細分箇条は,ISO/IEC 9075-2の“11.60 <SQL呼出しルーチン>”を修正する。
機能
<SQL呼出しルーチン> (<SQL-invoked routine>) は,SQL呼出しルーチンを定義する。
形式
<SQL呼出しルーチン> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <モジュールルーチン>
<モジュールルーチン> ::=
<モジュール手続>
| <モジュール関数>
<モジュール手続> ::=
[ DECLARE ] <SQL呼出し手続>
<モジュール関数> ::=
[ DECLARE ] <SQL呼出し関数>
構文規則
1) 【構文規則9)h) を置き換える。】場合:
a) <SQL呼出しルーチン>が<SQLサーバモジュール定義>に含まれていて,かつ,<LANGUAGE句>
が指定されないならば,<SQLサーバモジュール定義>の<LANGUAGE句>と等価な<LANGUAGE
句>が暗に想定される。
b) <SQL呼出しルーチン>が<SQLサーバモジュール定義>に含まれていないで,かつ,<LANGUAGE
句>が指定されないならば,LANGUAGE SQLが暗に想定される。
2) 【構文規則9)q) を置き換える。】<SQL呼出しルーチン>が<SQLサーバモジュール定義>を介在しな
いで<スキーマ定義>に含まれていて,かつ,RNが<スキーマ名>SNを含むならば,SNは,<SQL
呼出しルーチン>を含む<スキーマ定義>の指定されるか又は暗に想定される<スキーマ名>と等価で
なければならない。SNによって識別されるSQLスキーマをSとする。
3) 【構文規則9)q) の後に挿入する。】<SQL呼出しルーチン>が<SQLサーバモジュール定義>に含まれ
ていて,かつ,RNが<スキーマ名>SNを含むならば,SNは,<SQL呼出しルーチン>を含む<SQL
サーバモジュール定義>の指定されるか又は暗に想定される<スキーマ名>と等価でなければならな
い。SNによって識別されるSQLスキーマをSとする。
4) 【構文規則23)h) の後に挿入する。】スキーマレベルルーチンに含まれる<SQLルーチン本体>は,
SQLサーバモジュールの宣言局所一時表を識別する<表参照>を単純に含む<SQL手続文>を直に含
んではならない。
アクセス規則
追加のアクセス規則なし。
36
X 3005-4:2019 (ISO/IEC 9075-4:2016)
一般規則
1) 【一般規則3)w) の後に挿入する。】SQL呼出しルーチンがスキーマレベルルーチンならば,SQL呼
出しルーチンを含むスキーマのスキーマ名。そうでなければ,SQL呼出しルーチンを含むSQLサ
ーバモジュールのSQLサーバモジュール名,及びそのSQLサーバモジュールを含むスキーマのス
キーマ名。
適合性規則
追加の適合性規則なし。
10.25
<ルーチン削除文>
この細分箇条は,ISO/IEC 9075-2の“11.62 <ルーチン削除文>”を修正する。
機能
<ルーチン削除文> (<drop routine statement>) は,SQL呼出しルーチンを破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則4)c)v) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
10.26 <利用者定義型変換削除文>
この細分箇条は,ISO/IEC 9075-2の“11.64 <利用者定義型変換削除文>”を修正する。
機能
<利用者定義型変換削除文> (<drop user-defined cast statement>) は,利用者定義型変換を破壊する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則7)d) の後に挿入する。】SQLサーバモジュールのモジュール記述子。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
11 アクセス制御
この箇条は,ISO/IEC 9075-2の“12 アクセス制御”を修正する。
11.1 <GRANT文>
この細分箇条は,ISO/IEC 9075-2の“12.1 <GRANT文>”を修正する。
37
X 3005-4:2019 (ISO/IEC 9075-4:2016)
機能
<GRANT文> (<grant statement>) は,権限及び役割認可を定義する。
形式
追加の形式項目なし。
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【この一般規則 を挿入する。】関与する全ての権限受領者G,及びGによって所有される全てのSQL
サーバモジュールM1に対して,Gに適用可能な権限が,M1に含まれる全てのSQL呼出しルーチ
ンの<ルーチン本体>に含まれる全ての<SQL手続文>の実行の成功に必要な権限の全てを含み,かつ,
それらの権限が付与可能ならば,動作EXECUTE,“̲SYSTEM”の権限付与者,オブジェクトM1
及び権限受領者Gをもち,付与可能でないどの権限記述子に対しても,“̲SYSTEM”の現行利用者
識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT文>が実効的に実行される。
GRANT EXECUTE ON M1 TO
G WITH GRANT OPTION
注記17 必要な権限は,<SQL手続文>に含まれる全ての<ルーチン呼出し>の全ての当該ルーチンに
関するEXECUTE権限を含む。
適合性規則
追加の適合性規則なし。
11.2 <権限>
この細分箇条は,ISO/IEC 9075-2の“12.3 <権限>”を修正する。
機能
<権限> (<privileges>) は,権限を指定する。
形式
<オブジェクト名> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| MODULE <SQLサーバモジュール名>
構文規則
1) 【構文規則6) を置き換える。】<GRANT文>又は<REVOKE文>の<オブジェクト名>によって識別さ
れるオブジェクトがSQL呼出しルーチン又はSQLサーバモジュールならば,<権限>は,EXECUTE
を指定してもよい。そうでなければ,EXECUTEを指定してはならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
1) 機能P001“格納モジュール”なしでは,適合するSQL言語は,MODULEを含む<オブジェクト名>
を含んではならない。
38
X 3005-4:2019 (ISO/IEC 9075-4:2016)
11.3 <REVOKE文>
この細分箇条は,ISO/IEC 9075-2の“12.7 <REVOKE文>”を修正する。
機能
<REVOKE文> (<revoke statement>) は,権限及び役割認可を破壊する。
形式
追加の形式項目なし。
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則15)e) の後に挿入する。】QEに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的
メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上のSQL呼出しルーチンを含む
全てのSQLサーバモジュールに関するEXECUTE権限。
2) 【一般規則17)e) の後に挿入する。】TCの適用可能な<探索条件>に含まれる<ルーチン呼出し>,<
メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上の
SQL呼出しルーチンを含む全てのSQLサーバモジュールに関する EXECUTE権限。
3) 【一般規則18)e) の後に挿入する。】AXの適用可能な<探索条件>に含まれる<ルーチン呼出し>,<
メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上の
SQL呼出しルーチンを含む全てのSQLサーバモジュールに関する EXECUTE権限。
4) 【一般規則19)g) の後に挿入する。】TRの<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼
出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上のSQL呼出しル
ーチンを含む全てのSQLサーバモジュールに関する EXECUTE権限。
5) 【一般規則19)h) の後に挿入する。】TRの<被トリガSQL文>に含まれる<ルーチン呼出し>,<メソ
ッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上のSQL呼
出しルーチンを含む全てのSQLサーバモジュールに関する EXECUTE権限。
6) 【一般規則20)e) の後に挿入する。】DCの<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼
出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上のSQL呼出しル
ーチンを含む全てのSQLサーバモジュールに関する EXECUTE権限。
7) 【一般規則22)d) の後に挿入する。】CDが生成式GEをもち,かつ,REVOKE破壊動作の結果とし
て,GEに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド
参照>の当該ルーチンである一つ以上のSQL呼出しルーチンを含む全てのSQLサーバモジュールに
関する EXECUTE権限を,A1がそれの適用可能な権限中に,もはやもたなくなる。
8) 【一般規則29)a) の後に挿入する。】RDの<SQLルーチン本体>又はRDのSQLパラメタの<パラメ
タ既定値>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド
参照>の当該ルーチンである一つ以上のSQL呼出しルーチンを含む全てのSQLサーバモジュールに
関するEXECUTE権限。
9) 【一般規則32) の後に挿入する。】S1に含まれるSQLサーバモジュールのSQLサーバモジュール
記述子をSSMとする。REVOKE破壊動作の結果として,A1がそれの適用可能な権限中に次のいず
れかをもはやもたなくなるならば,SSMは,破棄される (abandoned) という。
39
X 3005-4:2019 (ISO/IEC 9075-4:2016)
a) SSMに含まれるSQL呼出しルーチンの<SQLルーチン本体>に含まれる<ルーチン呼出し>,<メ
ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである全てのスキー
マレベルルーチンに関するEXECUTE権限。
b) SSMに含まれるSQL呼出しルーチンの<SQLルーチン本体>に含まれる<ルーチン呼出し>,<メ
ソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである一つ以上の
SQL呼出しルーチンを含む全てのSQLサーバモジュールに関するEXECUTE権限。
c) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に含まれる<問合せ式>に含
まれる<表参照>によって識別される各表の少なくとも一つの列に関するSELECT権限。
d) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リスト>に含まれる<表参照
>によって識別される各表の少なくとも一つの列に関するSELECT権限。
e) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文>に含まれる<探索条件
>に含まれる<表参照>によって識別される各表の少なくとも一つの列に関するSELECT権限。
f) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる<表参照>によって識
別される各表の少なくとも一つの列に関するSELECT権限。
g) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文>に含まれる<探索条件
>に含まれる<列参照>によって識別される少なくとも一つの列に関するSELECT権限。
h) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる<列参照>によって識
別される少なくとも一つの列に関するSELECT権限。
i)
次の全ての列に関するINSERT権限。
場合:
i)
SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<INSERT文>又は<MERGE文>の<挿入列リスト>に含まれる<列名>によって
識別される列。
ii) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれ,かつ,<挿入列リスト>を含まない<INSERT文>に直に含まれる<表名>によっ
て識別される表の列。
iii) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれ,<併合挿入指定>を含み,かつ,<挿入列リスト>を含まない<MERGE文>に直
に含まれる<相手表>によって識別される表の列。
j) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<UPDATE文:位置付け>,<UPDATE文:探索>又は<MERGE文>のいずれかに含
まれる<対象列>に名前が含まれる全ての列に関するUPDATE権限。
k) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<DELETE文:位置付け>又は<DELETE文:探索>のいずれかに直に含まれる<表名
40
X 3005-4:2019 (ISO/IEC 9075-4:2016)
>に名前が含まれる全ての表に関するDELETE権限。
l)
SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれ,かつ,<併合削除指定>を含む<MERGE文>に含まれる<相手表>によって識別され
る表に関するDELETE権限。
m) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に名前が含まれる全ての定義域,照合順,文字集合,文字変換及び順序数生成子に関する
USAGE権限。
n) SSMに含まれ,DEFINERのSQL安全保護特性をもつ,SQL呼出しルーチンに含まれるSQLパ
ラメタ,戻りデータ型又は結果型変換の宣言型が利用者定義型UDTに用途依存であるような各
UDTに関するUSAGE権限。
o) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<データ型>が利用者定義型UDTに用途依存であるような全てのUDTに関する
USAGE権限。
p) 表T1が<メソッド参照>MRの<値式一次子>の有効範囲内にあり,かつ,メソッドMがMRの当
該ルーチンであるような,SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルー
チンの,<SQLルーチン本体>に含まれるMRが存在する全てのT1及び全てのMに関する表/メ
ソッド権限。
q) 次のいずれかに含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって
識別される列に関するSELECT権限。
i)
SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に含まれる<問合せ式>。
ii) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リスト>。
iii) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文>に含まれる<探索
条件>。
iv) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<更新元>又は<代入行>に含まれる<値式>。
r) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に含まれる<問合せ式>に含
まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関するWITH
HIERARCHY OPTION付きのSELECT権限。
s) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リスト>に含まれる<参照解
決>のための有効範囲化された表の少なくとも一つの上位表に関するWITH HIERARCHY
OPTION付きのSELECT権限。
t) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文>に含まれる<探索条件
>に含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関するWITH
HIERARCHY OPTION付きのSELECT権限。
41
X 3005-4:2019 (ISO/IEC 9075-4:2016)
u) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる<参照解決>のための
有効範囲化された表の少なくとも一つの上位表に関するWITH HIERARCHY OPTION付きの
SELECT権限。
v) 次のいずれかに含まれる<参照解決>のための有効範囲化された表に関するSELECT権限。
i)
SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<カーソル指定>,<INSERT文>又は<MERGE文>に単純に含まれる<問合せ式>。
ii) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<SELECT文:単一行>に直に含まれる<表式>又は<選択リスト>。
iii) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<DELETE文:探索>,<UPDATE文:探索>又は<MERGE文>に含まれる<探索
条件>。
iv) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン
本体>に含まれる<更新元>又は<代入行>に含まれる<値式>。
w) SSMに含まれ,DEFINERのSQL安全保護特性をもつSQL呼出しルーチンの,<SQLルーチン本
体>に含まれ,<ONLY指定>を単純に含む<表参照>によって識別される全ての型付き表の少なく
とも一つの上位表に関するWITH HIERARCHY OPTION付きのSELECT権限。
10) 【一般規則48) の後に挿入する。】どの破棄されるSQLサーバモジュール記述子MDに対しても,
記述子がMDであるSQLサーバモジュールをMとする。Mの<SQLサーバモジュール名>をMNと
する。これ以上のアクセス規則の検査なしで,次の<モジュール削除文>が実効的に実行される。
DROP MODULE MN CASCADE
適合性規則
追加の適合性規則なし。
12 SQLクライアントモジュール
この箇条は,ISO/IEC 9075-2の“13 SQLクライアントモジュール”を修正する。
12.1 <外部呼出し手続>
この細分箇条は,ISO/IEC 9075-2の“13.3 <外部呼出し手続>”を修正する。
機能
<外部呼出し手続> (<externally-invoked procedure>) は,外部呼出し手続を定義する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則10)e) に挿入する。】
CASE̲NOT̲FOUND̲FOR̲CASE̲STATEMENT̲NO̲SUBCLASS:
constant SQLSTATE̲TYPE :="20000";
DATA̲EXCEPTION̲NULL̲VALUE̲IN̲FIELD̲REFERENCE:
constant SQLSTATE̲TYPE :="2202A";
DIAGNOSTICS̲EXCEPTION̲STACKED̲DIAGNOSTICS̲ACCESSED̲WITHOUT̲ACTIVE̲HANDLER:
constant SQLSTATE̲TYPE :="0Z002";
42
X 3005-4:2019 (ISO/IEC 9075-4:2016)
RESIGNAL̲WHEN̲HANDLER̲NOT̲ACTIVE̲NO̲SUBCLASS:
constant SQLSTATE̲TYPE :="0K000";
UNHANDLED̲USER̲DEFINED̲EXCEPTION̲NO̲SUBCLASS:
constant SQLSTATE̲TYPE :="45000";
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
12.2 <SQL手続文>
この細分箇条は,ISO/IEC 9075-2の“13.4 <SQL手続文>”を修正する。
機能
<SQL手続文> (<SQL procedure statement>) は,<SQL手続文>である全てのSQL文を定義する。
形式
<SQLスキーマ定義文> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SQLサーバモジュール定義>
<SQLスキーマ操作文> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <モジュール削除文>
<SQL制御文> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <代入文>
| <複合文>
| <CASE文>
| <IF文>
| <ITERATE文>
| <LEAVE文>
| <LOOP文>
| <WHILE文>
| <REPEAT文>
| <FOR文>
<SQL診断文> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| <SIGNAL文>
| <RESIGNAL文>
構文規則
1) 【この構文規則を挿入する。】<SQLコネクション文>は,<SQL制御文>又は<SQLサーバモジュー
ル定義>に含まれてはならない。
43
X 3005-4:2019 (ISO/IEC 9075-4:2016)
2) 【構文規則3)d) の後に挿入する。】Sが<複合文>で,かつ,<日時値関数>,CURRENT̲USER,
CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,CURRENT̲CATALOG,CURRENT̲SCHEMA
又はCURRENT̲PATHを含む<既定値選択肢>を指定する<SQL変数宣言>をSが含む。
3) 【構文規則3)d) の後に挿入する。】Sが<複合文>で,<定義域名>を指定する<SQL変数宣言>をSが
含み,かつ,<日時値関数>,CURRENT̲USER,CURRENT̲ROLE,SESSION̲USER,SYSTEM̲USER,
CURRENT̲CATALOG,CURRENT̲SCHEMA又はCURRENT̲PATHを含む既定値を,<定義域名>
によって識別される定義域記述子がもつ。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則6) を置き換える。】Sが<SQL診断文>でも<複合文>でもないならば,1番目の診断領域
が空にされる。
2) 【一般規則21) の前に挿入する。】条件処理モードがSQLセション中で有効になる。
3) 【一般規則21) の前に挿入する。】Sの実行が成功しなかったならば,現在の条件に対して“15.2 <
ハンドラ宣言>”の一般規則によって決定される最適ハンドラをMAHとし,MAHをMOST
APPROPRIATE HANDLERとして,“8.1 ハンドラ実行”の一般規則を適用する。
注記18 “15.2 <ハンドラ宣言>”の一般規則は,現在の条件に対してどのハンドラが呼び出される
かを決定する。
4) 【一般規則23) の後に挿入する。】条件処理モードがSQLセション中で有効でなくなる。
適合性規則
追加の適合性規則なし。
13 データ操作
この箇条は,ISO/IEC 9075-2の“14 データ操作”を修正する。
13.1 <カーソル宣言>
この細分箇条は,ISO/IEC 9075-2の“14.1 <カーソル宣言>”を修正する。
機能
<カーソル宣言> (<declare cursor>) は,元祖カーソルを宣言する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) の先頭のテキストを置き換える。】<SQLスキーマ文>を介在しないで<SQLクライア
ントモジュール定義>Mに<カーソル宣言>が含まれるならば,次による。
2) 【この構文規則を挿入する。】<複合文>CSの<局所カーソル宣言リスト>LCDLに<カーソル宣言>DC
が含まれるならば,次による。
a) <カーソル名>は,LCDLに含まれる他のどの<カーソル宣言>,<動的カーソル宣言>又は<受取り
カーソル割当て文>の<カーソル名>とも等価であってはならない。
b) <カーソル名>の有効範囲は,CSとする。
アクセス規則
追加のアクセス規則なし。
44
X 3005-4:2019 (ISO/IEC 9075-4:2016)
一般規則
1) 【一般規則1)b) を置き換える。】カーソルの出所が,次の出所である。
場合:
a) <カーソル宣言>が<複合文>に含まれるならば,DCを含む最も内側の<複合文>。
b) そうでなければ,<カーソル宣言>を含む<SQLクライアントモジュール定義>をもつSQLクライ
アントモジュールの標識。
適合性規則
追加の適合性規則なし。
13.2 <OPEN文>
この細分箇条は,ISO/IEC 9075-2の“14.4 <OPEN文>”を修正する。
機能
<OPEN文> (<open statement>) は,元祖カーソルを開く。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<OPEN文>中の<カーソル名>をCNとする。CNは,CNと等価な一
つ以上の<カーソル名>の有効範囲内に含まれなければならない。そのような<カーソル名>が二つ以
上存在するならば,最も内側の有効範囲をもつものが指定される。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
13.3 <FETCH文>
この細分箇条は,ISO/IEC 9075-2の“14.5 <FETCH文>”を修正する。
機能
<FETCH文> (<fetch statement>) は,元祖カーソルの結果集合の指定された行の上に,元祖カーソルを位
置付けて,その行から値を取り出す。
形式
追加の形式項目なし。
構文規則
1) 【構文規則3) を置き換える。】<FETCH>文中の<カーソル名>をCNとする。CNは,CNと等価な
一つ以上の<カーソル名>の有効範囲内に含まれなければならない。そのような<カーソル名>が二つ
以上存在するならば,最も内側の有効範囲をもつものが指定される。
2) 【構文規則9)a)i) を置き換える。】TSが<SQL変数参照>又は<SQLパラメタ参照>ならば,TSを
TARGETとして,Tの行型の任意の値をVALUEとして,[ISO9075-2] の“9.2 格納代入”の構文規
則を適用する。
3) 【構文規則9)b)iii) の先頭のテキストを置き換える。】<SQL変数参照>,<SQLパラメタ参照>又は<
相手配列要素指定>のいずれかである各<相手指定>TS1i,1 ≤ i ≤ NTSに対して,次による。
45
X 3005-4:2019 (ISO/IEC 9075-4:2016)
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則5)a)i) を置き換える。】TSが<SQL変数参照>又は<SQLパラメタ参照>ならば,TSを
TARGETとして,現在行をVALUEとして,[ISO9075-2] の“9.2 格納代入”の一般規則を適用する。
2) 【一般規則5)b)i) の先頭のテキストを置き換える。】TVが<SQL変数参照>,<SQLパラメタ参照>
又は<相手配列要素指定>のいずれかならば,<取出し相手リスト>中の各<相手指定>に対して,<取
出し相手リスト>中のi番目の<相手指定>をTViとし,CRの現在行中のi番目の対応する値をSVi
で示す。
適合性規則
追加の適合性規則なし。
13.4 <CLOSE文>
この細分箇条は,ISO/IEC 9075-2の“14.6 <CLOSE文>”を修正する。
機能
<CLOSE文> (<close statement>) は,元祖カーソルを閉じる。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<CLOSE文>中の<カーソル名>をCNとする。CNは,CNと等価な
一つ以上の<カーソル名>の有効範囲内に含まれなければならない。そのような<カーソル名>が二つ
以上存在するならば,最も内側の有効範囲をもつものが指定される。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
13.5 <SELECT文:単一行>
この細分箇条は,ISO/IEC 9075-2の“14.7 <SELECT文:単一行>”を修正する。
機能
<SELECT文:単一行> (<select statement: single row>) は,表の指定された行から値を取り出す。
形式
追加の形式項目なし。
構文規則
1) 【構文規則3)b)ii) の先頭のテキストを置き換える。】1からNOEまでの範囲のiに対して,<選択
相手リスト>中の,<SQL変数参照>,<SQLパラメタ参照>又は<相手配列要素指定>のいずれかであ
るi番目の<相手指定>をTS1iとし,<選択相手リスト>中の<相手指定>に対応する<選択リスト>のi
番目の要素をSLiとする。
アクセス規則
追加のアクセス規則なし。
46
X 3005-4:2019 (ISO/IEC 9075-4:2016)
一般規則
1) 【一般規則4)b)ii) の先頭のテキストを置き換える。】1からNOEまでの範囲のiに対して,<SQL
変数参照>,<SQLパラメタ参照>又は<相手配列要素指定>のいずれかである<選択相手リスト>中の
i番目の<相手指定>をTSiとし,Qの行中の対応する(i番目の)値をSLiで示す。<選択相手リス
ト>中の相手への値の代入の順序は,処理系依存とする。
適合性規則
追加の適合性規則なし。
13.6 <DELETE文:位置付け>
この細分箇条は,ISO/IEC 9075-2の“14.8 <DELETE文:位置付け>”を修正する。
機能
<DELETE文:位置付け> (<delete statement: positioned>) は,表の一つの行を削除する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<DELETE文:位置付け>をDSPとし,DSPに直に含まれる<カーソ
ル名>をCNとする。CNは,CNと等価な一つ以上の<カーソル名>の有効範囲内に含まれなければ
ならない。そのような<カーソル名>が二つ以上存在するならば,最も内側の有効範囲をもつものが
指定される。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
13.7 <UPDATE文:位置付け>
この細分箇条は,ISO/IEC 9075-2の“14.13 <UPDATE文:位置付け>”を修正する。
機能
<UPDATE文:位置付け> (<update statement: positioned>) は,表の一つの行を更新する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<UPDATE文:位置付け>をUSPとし,USPに直に含まれる<カーソ
ル名>をCNとする。CNは,CNと等価な一つ以上の<カーソル名>の有効範囲内に含まれなければ
ならない。そのような<カーソル名>が二つ以上存在するならば,最も内側の有効範囲をもつものが
指定される。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
47
X 3005-4:2019 (ISO/IEC 9075-4:2016)
追加の適合性規則なし。
13.8 <一時表宣言>
この細分箇条は,ISO/IEC 9075-2の“14.16 <一時表宣言>”を修正する。
機能
<一時表宣言> (<temporary table declaration>) は,宣言局所一時表を宣言する。
形式
追加の形式項目なし。
構文規則
1) 【構文規則2) を置き換える。】TTDは,<SQLクライアントモジュール定義>,<直接SQL文>又は
<SQLサーバモジュール定義>に含まれなければならない。
2) 【構文規則4) を置き換える。】場合:
a) <一時表宣言>が,<SQLサーバモジュール定義>を介在しないで<SQLクライアントモジュール定
義>Mに含まれるならば,TNの<修飾される識別子>は,<SQLサーバモジュール定義>を介在し
ないでMに含まれる他のどの<一時表宣言>の<表名>の<修飾される識別子>とも,等価であって
はならない。
b) そうでなければ,TNの<修飾される識別子>は,<一時表宣言>を含む<SQLサーバモジュール定
義>に含まれる他のどの<一時表宣言>の<表名>の<修飾される識別子>とも,等価であってはなら
ない。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則3) を置き換える。】場合:
a) <一時表宣言>が,<SQLサーバモジュール定義>を介在しないで<SQLクライアントモジュール定
義>に含まれるならば,<SQLクライアントモジュール定義>内でのTの定義は,永続実表U.Tの
定義と実効的に等価とする。そのSQLクライアントモジュール内で,<SQLスキーマ文>に含ま
れないMODULE.Tへのどの参照も,U.Tへの参照と等価とする。
b) そうでなければ,<SQLサーバモジュール定義>内でのTの定義は,永続実表U.Tの定義と実効
的に等価とする。そのSQLサーバモジュール内で,MODULE.Tへのどの参照も,U.Tへの参照
と等価とする。
適合性規則
追加の適合性規則なし。
14 その他のデータ操作規則
この箇条は,ISO/IEC 9075-2の“15 その他のデータ操作規則”を修正する。
14.1 カーソルを開くことの効果
この細分箇条は,ISO/IEC 9075-2の“15.1 カーソルを開くことの効果”を修正する。
機能
カーソルを開くことの効果 (Effect of opening a cursor) は,受取りカーソルでないカーソルを開くことの
効果を規定する。
構文規則
48
X 3005-4:2019 (ISO/IEC 9075-4:2016)
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則5)a)i) を置き換える。】各<埋込み変数指定>,<ホストパラメタ指定>,<SQLパラメタ参
照>,<動的パラメタ指定>及び<SQL変数参照>は,それぞれ,<埋込み変数指定>,<ホストパラメ
タ指定>,<SQLパラメタ参照>,<動的パラメタ指定>及び<SQL変数参照>を評価した結果として生
じる値を示す<定数>によって置き換えられる。このとき,このような全ての評価は,実効的に同時
に行われる。
適合性規則
追加の適合性規則なし。
15 制御文
この箇条は,ISO/IEC 9075-14の“15 制御文”によって修正される。
この箇条は,ISO/IEC 9075-2の“16 制御文”を修正する。
15.1 <複合文>
この細分箇条は,ISO/IEC 9075-10の“11.27 <複合文>”によって修正される。
この細分箇条は,ISO/IEC 9075-14の“15.1 <複合文>”によって修正される。
細分箇条署名
“<複合文>” [一般規則] (
パラメタ: “COMPOUND STATEMENT”
)
機能
<複合文> (<compound statement>) は,他の複数の文を一緒にしてグループにする文を指定する。
形式
10 14 <複合文> ::=
[ <開始ラベル> <コロン> ] BEGIN [ [ NOT ] ATOMIC ]
[ <局所宣言リスト> ] [ <局所カーソル宣言リスト> ]
[ <局所ハンドラ宣言リスト> ]
[ <SQL文リスト> ]
END [ <終了ラベル> ]
<開始ラベル> ::=
<文ラベル>
<終了ラベル> ::=
<文ラベル>
<文ラベル> ::=
<識別子>
<局所宣言リスト> ::=
<終結局所宣言>...
<終結局所宣言> ::=
49
X 3005-4:2019 (ISO/IEC 9075-4:2016)
<局所宣言> <セミコロン>
<局所宣言> ::=
<SQL変数宣言>
| <条件宣言>
<局所カーソル宣言リスト> ::=
<終結局所カーソル宣言>...
<終結局所カーソル宣言> ::=
<カーソル宣言> <セミコロン>
<局所ハンドラ宣言リスト> ::=
<終結局所ハンドラ宣言>...
<終結局所ハンドラ宣言> ::=
<ハンドラ宣言> <セミコロン>
<SQL文リスト> ::=
<終結 SQL文>...
<終結 SQL文> ::=
<SQL手続文> <セミコロン>
構文規則
1) <複合文>をCSとする。
2) CSが<開始ラベル>を指定しないならば,CSを含む最も外側の<SQL制御文>に含まれる他のどの<
文ラベル>とも等価でない処理系依存の<開始ラベル>が暗に想定される。
3) <終了ラベル>を指定するならば,CSは,その<終了ラベル>と等価な<開始ラベル>を指定しなけれ
ばならない。
4) <開始ラベル>の有効範囲は,CSに含まれる全ての<SQLスキーマ文>及びCSに含まれる全ての<局
所ハンドラ宣言リスト>を除くCSとする。<開始ラベル>は,その有効範囲内の他のどの<開始ラベ
ル>とも等価であってはならない。
5) CSがATOMICもNOT ATOMICも指定しないならば,NOT ATOMICが暗に想定される。
6) CSがATOMICを指定するならば,<SQL文リスト>は,<COMMIT文>,又は<SAVEPOINT句>を指
定しない<ROLLBACK文>のいずれも含んではならない。
7) <局所宣言リスト>に含まれる<SQL変数名>をVNとする。VNによって識別される変数の宣言局所
名 (declared local name) は,VNとする。
8) <局所宣言リスト>に含まれる<条件宣言>に直に含まれる<条件名>をCON とする。<条件宣言>の宣
言局所名 は,CONとする。
9) <局所カーソル宣言リスト>に含まれる<カーソル宣言>DCに直に含まれる<カーソル名>をCNとす
る。DCによって宣言される元祖SQLサーバカーソルの宣言局所名 は,CNとする。
10) <局所宣言リスト>中で宣言されるどの二つの変数も,等価な宣言局所名をもってはならない。
11) <局所宣言リスト>に含まれるどの二つの<条件宣言>も,等価な宣言局所名をもってはならない。
12) <局所カーソル宣言リスト>中で宣言されるどの二つの元祖SQLサーバカーソルも,等価な宣言局所
名をもってはならない。
13) CSに単純に含まれる<局所宣言>に単純に含まれる<SQL変数宣言>の<SQL変数名>の有効範囲は,
CSの<局所カーソル宣言リスト>,CSの<局所ハンドラ宣言リスト>LHDLに含まれる全ての<SQL
50
X 3005-4:2019 (ISO/IEC 9075-4:2016)
スキーマ文>を除くLHDL,及びCSの<SQL文リスト>SSLに含まれる全ての<SQLスキーマ文>を
除くSSLとする。
14) CSに単純に含まれる<局所宣言>に単純に含まれる<条件宣言>中の<条件名>の有効範囲は,CSの<
局所ハンドラ宣言リスト>LHDLに含まれる全ての<SQLスキーマ文>を除くLHDL,及びCSの<SQL
文リスト>SSLに含まれる全ての<SQLスキーマ文>を除くSSLとする。
15) CSに単純に含まれる<終結局所カーソル宣言>に単純に含まれる<カーソル宣言>中の<カーソル名>
の有効範囲は,CSの<局所ハンドラ宣言リスト>LHDLに含まれる全ての<SQLスキーマ文>を除く
LHDL,及びCSの<SQL文リスト>SSLに含まれる全ての<SQLスキーマ文>を除くSSLとする。
16) CSに単純に含まれる<局所ハンドラ宣言リスト>に単純に含まれる<ハンドラ宣言>の有効範囲は,
CSの<SQL文リスト>SSLに含まれる全ての<SQLスキーマ文>を除くSSLとする。
17) UNDOを指定する<ハンドラ宣言>を<複合文>が単純に含むならば,ATOMICが指定されなければな
らない。
アクセス規則
なし。
一般規則
注記19 陽に指定される場合を除いて,この細分箇条の一般規則は,例外条件が引き起こされても終
了しない。
1) 場合:
a) 別の細分箇条から“サブルーチン細分箇条 (subroutine Subclause)”としてこの細分箇条が呼び出
されたならば,この細分箇条の一般規則の適用では,COMPOUND STATEMENTをCSとする。
b) そうでなければ,<複合文>をCSとする。
2) CSがATOMICを指定するならば,新しい保存点水準が確立される。
3) CSの<局所宣言リスト>,<局所カーソル宣言リスト>及び<局所ハンドラ宣言リスト>中で指定され
るSQL変数,元祖SQLサーバカーソル及びハンドラが,処理系依存の順序で作成される。
4) <SQL制御文>を介在しないでCSに直に含まれる<SQL文リスト>に含まれる<SQL手続文>の個数を
Nとする。1からNまでの範囲のiに対して,次による。
a) そのようなi番目の<SQL手続文>をSiとする。
b) SiをEXECUTING STATEMENTとして,[ISO9075-2] の“13.4 <SQL手続文>”の一般規則を適用
する。
c) Siの実行が成功終了 (successful completion) 以外の例外条件又は終了条件で終了するならば,次に
よる。
i)
次の<RESIGNAL文>が実効的に実行される。
RESIGNAL
ii) (ハンドラがあるならば,)ハンドラの実行終了時点に,処理されない例外条件が存在するなら
ば,一般規則4) の実行は,直ちに終了し,評価は,一般規則5) に続ける。
5) CSの<局所カーソル宣言リスト>中で宣言されるどの開いているカーソルCRに対しても,CRを
CURSORとして,SAVEをDISPOSITIONとして,[ISO9075-2] の“15.4 カーソルを閉じることの
効果”の一般規則を適用する。
6) CSの<局所宣言リスト>,<局所カーソル宣言リスト>及び<局所ハンドラ宣言リスト>中で指定され
るSQL変数,元祖SQLサーバカーソル及びハンドラが破壊される。
51
X 3005-4:2019 (ISO/IEC 9075-4:2016)
7) CSがATOMICを指定するならば,現行保存点水準が破壊される。
注記20 保存点水準の破壊は,その水準で確立され存在している全ての保存点を破壊する。
8) <局所宣言リスト>に含まれるどの<条件宣言>の<条件名>も,定義されているとみなされなくなる。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<複合文>を含んではならない。
15.2 <ハンドラ宣言>
機能
<ハンドラ宣言> (<handler declaration>) は,モジュール又は複合文中で処理されるべき例外条件又は終了
条件にハンドラを関連付ける。
形式
<ハンドラ宣言> ::=
DECLARE <ハンドラ型> HANDLER FOR <条件値リスト> <ハンドラ動作>
<ハンドラ型> ::=
CONTINUE
| EXIT
| UNDO
<ハンドラ動作> ::=
<SQL手続文>
<条件値リスト> ::=
<条件値> [ { <コンマ> <条件値> }... ]
<条件値> ::=
<SQLSTATE値>
| <条件名>
| SQLEXCEPTION
| SQLWARNING
| NOT FOUND
構文規則
1) <ハンドラ宣言>をHDとする。
2) HDの<条件値>中で指定される<条件名>CNは,HDを含む有効範囲をもつ<条件宣言>によって定義
されなければならない。そのような最も内側の<条件宣言>によって指定される条件をCとする。
3) <条件値>がSQLEXCEPTION,SQLWARNING又はNOT FOUNDを指定するならば,<SQLSTATE値
>も<条件名>も指定してはならない。
4) HDと同じ有効範囲をもつ他のどの<ハンドラ宣言>も,それの<条件値リスト>に,HDの<条件値リ
スト>に含まれる<条件値>と同じ条件を表現する<条件値>を含んではならない。
5) <条件値リスト>は,同じ<条件値>又は<SQLSTATE値>を2回以上含んではならないし,条件Cの<
条件名>と,Cに関連付けられたSQLSTATE値を表現する<SQLSTAE値>との両方を含んではならな
い。
6) SQLEXCEPTION,SQLWARNING及びNOT FOUNDは,それぞれ,[ISO9075-2] の“24.1 SQLSTATE”
中のカテゴリX,W及びNに対応するSQLSTATEクラスコードに対応する。
7) <条件値>がSQLEXCEPTION,SQLWARNING又はNOT FOUNDを指定するならば,<ハンドラ宣言
52
X 3005-4:2019 (ISO/IEC 9075-4:2016)
>は,一般<ハンドラ宣言> (general <handler declaration>) とする。そうでなければ,<ハンドラ宣言
>は,特定<ハンドラ宣言> (specific <handler declaration>) とする。
8) 同じ有効範囲中に同じ<条件値>に対する一般<ハンドラ宣言>と特定<ハンドラ宣言>とがあるなら
ば,特定<ハンドラ宣言>だけがその<条件値>に関連付けられる。
9) <ハンドラ動作>をHAとする。
10) HAは,HDの<条件値リスト>中で指定される全ての<条件名>,及びHDの<条件値リスト>中で指
定される全ての<SQLSTATE値>中で指定される全てのSQLSTATE値に関連付けられる。
11) HAが<条件名>に関連付けられ,かつ,その<条件名>がSQLSTATE値に対して定義されていたなら
ば,HAは,そのSQLSTAET値にも関連付けられる。
12) HAがSQLSTATEクラスに関連付けられるならば,それは,そのクラスの各SQLSTATE値に関連付
けられる。
アクセス規則
なし。
一般規則
1) HDによって指定される条件に関連付けられるハンドラHが作成されるとき,それは,Hが破壊さ
れるまで,このハンドラに関連付けられるSQLSTATE値又は条件名と同じSQLSTATE値又は条件
名をもつHDの有効範囲中にある幾つかのSQL文を実行している間に引き起こされるいずれかの条
件CNに対する最適ハンドラ (most appropriate handler) とする。Hが存在している間にCNを含む
有効範囲をもつ別のハンドラAH が作成され,CNのSQLSTATE値又は条件名と同じSQLSTATE値
又は条件名にAHが関連付けられるならば,CNは,もっと適切なハンドラをもつ。AHが破壊され
るまで,CNに対する最適ハンドラとしてAHがHに取って代わる。AHが破壊されるとき,CNに
対する最適ハンドラとして,H が復帰する。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<ハンドラ宣言>を含んではならない。
15.3 <条件宣言>
機能
<条件宣言> (<condition declaration>) は,条件名及び省略可能な対応するSQLSTATE値を宣言する。
形式
<条件宣言> ::=
DECLARE <条件名> CONDITION [ FOR <SQLSTATE値> ]
構文規則
1) <条件宣言>をCDとする。
2) <条件名>をCNとする。高々一つの<条件宣言>が,CNと等価で,かつ,CNと同じ有効範囲をもつ
<条件名>を指定しなければならない。
3) <条件名>が,それの有効範囲内で,<SQLSTATE値>によって指定されるSQLSTATE値に対して,
定義されているとみなされ (considered to be defined) る。
アクセス規則
なし。
一般規則
なし。
53
X 3005-4:2019 (ISO/IEC 9075-4:2016)
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<条件宣言>を含んではならない。
15.4 <SQL変数宣言>
機能
<SQL変数宣言> (<SQL variable declaration>) は,一つ以上の変数を宣言する。
形式
<SQL変数宣言> ::=
DECLARE <SQL変数名リスト> <データ型> [<DEFAULT句> ]
<SQL変数名リスト> ::=
<SQL変数名> [ { <コンマ> <SQL変数名> }... ]
構文規則
1) 指定された<データ型>は,<SQL変数宣言>によって宣言される各変数の宣言型とする。
アクセス規則
なし。
一般規則
1) <SQL変数宣言>が<DEFAULT句>DCを含むならば,DCに含まれる<既定値選択肢>をDVとする。
そうでなければ,<ナル指定>をDVとする。<SQL変数宣言>によって定義される変数をSV とする。
次のSQL文が実効的に実行される。
SET SV = DV
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<SQL変数宣言>を含んではならない。
15.5 <代入文>
この細分箇条は,ISO/IEC 9075-10の“11.16 <代入文>”によって修正される。
この細分箇条は,ISO/IEC 9075-14の“15.2 <代入文>”によって修正される。
機能
<代入文> (<assignment statement>) は,SQL変数,SQLパラメタ,ホストパラメタ又はホスト変数に値
を代入する。
形式
<代入文> ::=
<単独変数代入>
| <複数変数代入>
<複数変数代入> ::=
SET <代入相手リスト> <等号演算子> <代入行>
<代入相手リスト> ::=
<左括弧> <代入相手> [ { <コンマ> <代入相手> }... ] <右括弧>
14 <単独変数代入> ::=
SET <代入相手> <等号演算子> <代入元>
<代入相手> ::=
<相手指定>
| <修正フィールド参照>
54
X 3005-4:2019 (ISO/IEC 9075-4:2016)
| <変異参照>
<代入元> ::=
<値式>
| <文脈型付き代入元>
<文脈型付き代入元> ::=
<暗黙型付き値指定>
| <文脈型付き行値式>
<修正フィールド参照> ::=
<修正フィールド相手> <ピリオド> <フィールド名>
<修正フィールド相手> ::=
<相手指定>
| <左括弧> <相手指定> <右括弧>
| <修正フィールド参照>
<変異参照> ::=
<変異相手指定> <ピリオド> <メソッド名>
<変異相手指定> ::=
<相手指定>
| <左括弧> <相手指定> <右括弧>
| <変異参照>
構文規則
1) <複数変数代入>を含む<代入文>Aは,次のとおりに,<複合文>CSによって実効的に置き換えられ
る。
a) Aに含まれる<代入相手リスト>をATLとし,ATLに含まれる<代入相手>の個数をATNとし,A
に含まれる<代入行>をARとする。
b) ATNは,ARの次数と等しくなければならない。
c) Aに含まれるどの<相手指定>とも等価でない任意の<SQL変数名>をXとする。
d) ARの宣言型をXTとする。
e) ATLに含まれるi番目の<代入相手>をATi,1 ≤ i ≤ ATNとし,ARのi番目のフィールドの<フィ
ールド名>をFNiとする。
f) CSは,次の複合文とする。
BEGIN
DECLARE X XT ;
SET X = AR ;
SET AT1 = X . FN1 ;
. . .
SET ATATN = X . FNATN ;
END
2) <修正フィールド相手>又は<変異相手指定>に直に含まれる<列参照>である<相手指定>は,遷移新変
数列参照でなければならない。
注記21 “遷移新変数列参照”は,[ISO9075-2] の“6.6 <識別子鎖>”で定義している。
55
X 3005-4:2019 (ISO/IEC 9075-4:2016)
3) <代入文>がAFTERトリガの<被トリガSQL文>に含まれるならば,<代入相手>に含まれる<修正フ
ィールド相手>又は<変異相手指定>は,<列参照>を直に含んではならない。
4) <変異参照>MRに単純に含まれる<相手指定>の宣言型は,利用者定義型でなければならない。
5) <代入相手>が<変異参照>に直に含まれるならば,<変異相手指定>をTSとし,<メソッド名>をFN
とし,<代入元>をASとする。<代入文>は,次の代入文と等価とする。
SET TS = TS.FN ( AS )
注記22 <代入相手>が<変異参照>を含まなくなるまで,先行する規則を再帰的に適用する。
6) <代入相手>が<修正フィールド参照>FRならば,次による。
a) <代入相手>に単純に含まれ,かつ,<修正フィールド相手>に単純に含まれない<フィールド名>
によって識別されるフィールドをFとする。
b) <代入元>をASとする。
c) FをTARGETとして,ASをVALUEとして,[ISO9075-2] の“9.2 格納代入”の構文規則を適用
する。
7) <代入相手>が<埋込み変数名>又は<ホストパラメタ指定>を単純に含むならば,<代入元>は,<埋込
み変数名>又は<ホストパラメタ指定>を単純に含んではならない。
8) <代入相手>が<列参照>,<SQL変数参照>又は<SQLパラメタ参照>を単純に含み,かつ,<代入元>
が<値式>ならば,<代入相手>をTARGETとして,<代入元>をVALUEとして,[ISO9075-2] の“9.2
格納代入”の構文規則を適用する。
9)
10 <代入相手>が<埋込み変数名>又は<ホストパラメタ指定>を単純に含み,かつ,<代入元>が<値式>
ならば,<代入相手>をTARGETとして,<代入元>をVALUEとして,[ISO9075-2] の“9.1 取出し
代入”の構文規則を適用する。
10) <相手配列要素指定>が指定されるならば,次による。
a) <代入相手>に含まれる<相手配列参照>は,<列参照>であってはならない。
b) 宣言型が<相手指定>の宣言型である任意の格納場所をTARGETとして,<代入元>をVALUEとし
て,[ISO9075-2] の“9.2 格納代入”の構文規則を適用する。
11) <文脈型付き代入元>として指定する<文脈型付き行値式>は,<既定値指定>を含んではならない。
アクセス規則
なし。
一般規則
1)
14 <代入相手>が,<列参照>T,SQL変数Tに対する<SQL変数参照>,又はSQL呼出しルーチンの
SQLパラメタTに対する<SQLパラメタ参照>である<相手指定>ならば,TをTARGETとして,<
代入元>をVALUEとして,[ISO9075-2] の“9.2 格納代入”の一般規則を適用する。
2)
10 <代入相手>が,ホスト変数Tの<埋込み変数名>又はホストパラメタTの<ホストパラメタ指定>
である<相手指定>ならば,TをTARGETとして,<代入元>をVALUEとして,[ISO9075-2] の“9.1
取出し代入”の一般規則を適用する。
3) <代入相手>が,遷移新変数列参照である<相手指定>ならば,<列参照>によって識別される列をC
とし,その遷移変数によって置き換えられるべき行をRとする。Cの列がある表中のRの下位行又
はRの上位行を置き換える各遷移変数TVに対して,TV. CをTARGETとして,<代入元>をVALUE
として,[ISO9075-2] の“9.2 格納代入”の一般規則を適用する。
4) <代入相手>が<修正フィールド参照>FRならば,FRに単純に含まれる<相手指定>をTとする。FR
56
X 3005-4:2019 (ISO/IEC 9075-4:2016)
に単純に含まれる各<フィールド名>によって識別されるフィールドをFiとする。<代入相手>に単
純に含まれ,かつ,<修正フィールド相手>に単純に含まれない<フィールド名>によって識別される
フィールドをFTとする。
場合:
a) Tの値又はいずれかのFiの値がナル値ならば,例外条件:データ例外 (data exception) − フィー
ルド参照でナル値 (null value in field reference) が引き起こされる。
b)
14 そうでなければ,FTをTARGETとして,<代入元>をVALUEとして,[ISO9075-2] の“9.2 格
納代入”の一般規則を適用する。
5) <相手配列要素指定>が指定されるならば,次による。
場合:
a) <相手配列参照>TARの値がナル値ならば,例外条件:データ例外 − 配列相手にナル値 (null value
in array target) が引き起こされる。
b) そうでなければ,次による。
i)
TARの最大基数をNとする。
ii) TARの値の基数をMとする。
iii) TARに直に含まれる<単純値指定>の値をIとする。
iv) TARの要素型をEDTとする。
v) 場合:
1) Iが0よりも大きくて,かつ,M以下ならば,TARの値は,次のとおりに導出される要素型
がEDTで基数がMの配列Aによって置き換えられる。
A) 1からI‒1まで及びI+1からMまでの範囲のjに対して,A中のj番目の要素は,TAR中
のj番目の要素の値とする。
B)
14 AのI番目の要素をTARGETとして,<代入元>をVALUEとして,[ISO9075-2] の“9.2 格
納代入”の一般規則を適用する。
2) IがMよりも大きくて,かつ,N以下ならば,TARの値は,次のとおりに導出される要素型
がEDTで基数がIの配列Aによって置き換えられる。
A) 1からMまでの範囲のjに対して,A中のj番目の要素は,TAR中のj番目の要素の値とす
る。
B) M+1からIまでの範囲のjに対して,A中のj番目の要素は,ナル値とする。
C)
14 AのI番目の要素をTARGETとして,<代入元>をVALUEとして,[ISO9075-2] の“9.2 格
納代入”の一般規則を適用する。
3) そうでなければ,例外条件:データ例外 − 配列要素誤り (array element error) が引き起こ
される。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<代入文>を含んではならない。
2) 機能P006“複数代入”なしでは,適合するSQL言語は,<複数変数代入>を含んではならない。
3) 機能T051“行型”なしでは,適合するSQL言語は,<修正フィールド参照>を含んではならない。
15.6 <CASE文>
機能
<CASE文> (<case statement>) は,<探索条件>の真理値又はオペランドの等値性に基づく条件付きの実行
57
X 3005-4:2019 (ISO/IEC 9075-4:2016)
を提供する。
形式
<CASE文> ::=
<単純CASE文>
| <探索CASE文>
<単純CASE文> ::=
CASE <CASEオペランド>
<単純CASE文WHEN句>...
[ <CASE文ELSE句> ]
END CASE
<探索CASE文> ::=
CASE <探索CASE文WHEN句>...
[ <CASE文ELSE句> ]
END CASE
<単純CASE文WHEN句> ::=
WHEN <WHENオペランドリスト>
THEN <SQL文リスト>
<探索CASE文WHEN句> ::=
WHEN <探索条件>
THEN <SQL文リスト>
<CASE文ELSE句> ::=
ELSE <SQL文リスト>
構文規則
1) <CASE文>が<単純CASE文>を指定するならば,<CASEオペランド>をSCO1とする。
a) SCO1は,潜在的に非決定的か又はSQLデータを潜在的に修正するSQL呼出しルーチンを当該ル
ーチンが含む<ルーチン呼出し>を一般に含んではならない。
b) SCO1が<OVERLAPS述語部分1>ならば,各<WHENオペランド>は,<OVERLAPS述語部分2>
でなければならない。SCO1が<行値述語オペランド>ならば,各<WHENオペランド>は,
<OVERLAPS述語部分2>であってはならない。
c) <単純CASE文WHEN句>の個数をNとする。
d) 1からNまでの範囲の各iに対して,i番目の<単純CASE文WHEN句>の<WHENオペランドリ
スト>をWOLiとする。WOLiに単純に含まれる<WHENオペランド>の個数をM(i)とする。1から
M(i)までの範囲の各jに対して,WOLiに単純に含まれるj番目の<WHENオペランド> WOi,jとす
る。
e) 1からNまでの範囲の各iに対して,及び1からM(i)までの範囲の各jに対して,次による。
場合:
i)
WOi,jが<行値述語オペランド>ならば,次の指定をSCO2i,jとする。
= WOi,j
ii) そうでなければ,WOi,jをSCO2i,jとする。
f) i番目の<単純CASE文WHEN句>の<SQL文リスト>をSSLiとする。
58
X 3005-4:2019 (ISO/IEC 9075-4:2016)
g) <CASE文ELSE句>が指定されるならば,<CASE文ELSE句>をCSECとし,そうでなければ,
長さ0の文字列をCSECとする。
h) <単純CASE文>は,i番目の<探索CASE文WHEN句>が次の形式をとる<探索CASE文>と等価
とする。
WHEN ( SCO1 SCO2i,j ) OR
. . . OR
( SCO1 SCO2i, M(i) )
THEN SSLi
i)
等価な<探索CASE文>の<CASE文ELSE句>は,次の形式をとる。
CSEC
j)
この構文上の変換の結果に対して,[ISO9075-2] の“8 述語”の細分箇条の構文規則を適用する。
注記23 [ISO9075-2] の“8 述語”の具体的な細分箇条は,構文上の変換の結果として作成され
る述語によって決まる。
アクセス規則
なし。
一般規則
1) 場合:
a) <CASE文>中のいずれかの<探索CASE文WHEN句>の<探索条件>が真 (True) ならば,<探索条
件>が真 である最初の(最も左の)<探索CASE文WHEN句>の<SQL文リスト>をSLとする。
b) <CASE文>が<CASE文ELSE句>を単純に含むならば,その<CASE文ELSE句>の<SQL文リスト
>をSLとする。
c) そうでなければ,例外条件:CASE文において実行する場合がなかった (case not found for case
statement) が引き起こされ,<CASE文>の実行は,直ちに終了する。
2) <SQL制御文>を介在しないでSL に単純に含まれる<SQL手続文>の個数をN とする。1からNま
での範囲のi に対して,次による。
a) そのようなi 番目の<SQL手続文>をSiとする。
b) SiをEXECUTING STATEMENTとして,[ISO9075-2] の“13.4 <SQL手続文>”の一般規則を適用
する。
c) Siの実行が処理されない例外条件で終了するならば,<CASE文>の実行は,その条件で終了する。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<CASE文>を含んではならない。
2) 機能P004“拡張CASE文”なしでは,適合するSQL言語中で,<単純CASE文>に直に含まれる<CASE
オペランド>,及び<単純CASE文WHEN句>に直に含まれる<WHENオペランドリスト>に直に含
まれる<WHENオペランド>の両方が,単一の<共通値式>又は<ブール述語オペランド>である<行値
構成子述語オペランド>である<行値述語オペランド>でなければならない。
3) 機能P008“単純CASE文中のコンマで区切られた述語”なしでは,適合するSQL言語中で,<単純
CASE文WHEN句>に直に含まれる<WHENオペランドリスト>は,ただ一つの<WHENオペランド
>を単純に含まなければならない。
15.7 <IF文>
機能
59
X 3005-4:2019 (ISO/IEC 9075-4:2016)
<IF文> (<if statement>) は,<探索条件>の真理値に基づく条件付きの実行を提供する。
形式
<IF文> ::=
IF <探索条件>
<IF文THEN句>
[ <IF文ELSEIF句>... ]
[ <IF文ELSE句> ]
END IF
<IF文THEN句> ::=
THEN <SQL文リスト>
<IF文ELSEIF句> ::=
ELSEIF <探索条件> THEN <SQL文リスト>
<IF文ELSE句> ::=
ELSE <SQL文リスト>
構文規則
1) 一つ以上の<IF文ELSEIF句>が指定されるならば,<IF文>は,次の変換を再帰的に行うことによっ
て,ELSEIFを含まない<IF文>と等価とする。
IF <探索条件>
<IF文THEN句>
ISEC1
[ <IF文ELSEIF句>... ]
[ <IF文ELSE句> ]
END IF
このIF文は,次のIF文と等価とする。
IF <探索条件>
<IF文THEN句>
ELSE
IF SC1
THEN SL1
[ <IF文ELSEIF句>... ]
[ <IF文ELSE句> ]
END IF
END IF
ここで,SC1は,<IF文ELSEIF句> ISEC1に単純に含まれる<探索条件>とし,SL1は,ISEC1に単
純に含まれる<SQL文リスト>とする。
アクセス規則
なし。
一般規則
1) 場合:
a) <IF文>に直に含まれる<探索条件>が真 (True) と評価されるならば,<IF文THEN句>に直に含ま
60
X 3005-4:2019 (ISO/IEC 9075-4:2016)
れる<SQL文リスト>をSLとする。
b) そうでなければ,<IF文ELSE句>が指定されるならば,<IF文ELSE句>に直に含まれる<SQL文
リスト>をSLとする。
注記24 “そうでなければ”は,<IF文>に直に含まれる<探索条件>が偽 (False) 又は不定
(Unknown) と評価されることを意味している。
2) <SQL制御文>を介在しないでSLに単純に含まれる<SQL手続文>の個数をNとする。1からNまで
の範囲のiに対して,次による。
a) そのようなi番目の<SQL手続文>をSiとする。
b) SiをEXECUTING STATEMENTとして,[ISO9075-2] の“13.4 <SQL手続文>”の一般規則を適用
する。
c) Siの実行が処理されない例外条件で終了するならば,<IF文>の実行が終了し,その条件は,有効
なまま残る。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<IF文>を含んではならない。
15.8 <ITERATE文>
機能
<ITERATE文> (<iterate statement>) は,繰返しSQL文の一つの繰返しの実行を終了する。
形式
<ITERATE文> ::=
ITERATE <文ラベル>
構文規則
1) <文ラベル>は,<SQLスキーマ文>を介在しないで<ITERATE文>を含むいずれかの繰返しSQL文IS
の<開始ラベル>でなければならない。
2) ISに単純に含まれる<SQL文リスト>をSSLとする。
アクセス規則
なし。
一般規則
1) SSLの実行を終了する。
注記25 ISの繰返し条件が真 (True) か又はISが繰返し条件をもたないならば,SSLの次の繰返し
が直ちに始まる。ISの繰返し条件が偽 (False) ならば,SSLの次の繰返しはない。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<ITERATE文>を含んではならない。
15.9 <LEAVE文>
機能
<LEAVE文> (<leave statement>) は,ラベル付きの文を抜けることによって,実行を継続する。
形式
<LEAVE文> ::=
LEAVE <文ラベル>
構文規則
1) <文ラベル>は,<SQLスキーマ文>を介在しないで<LEAVE文>Lを含むいずれかの<SQL手続文>S
61
X 3005-4:2019 (ISO/IEC 9075-4:2016)
の<開始ラベル>でなければならない。
アクセス規則
なし。
一般規則
1) Sに含まれ,かつ,<LEAVE文>を含むどの<複合文>CS に対しても,次による。
a) CSの<局所カーソル宣言リスト>中で宣言されるどの開いている元祖SQLサーバカーソルCRに
対しても,CRをCURSORとして,SAVEをDISPOSITIONとして,[ISO9075-2] の“15.4 カー
ソルを閉じることの効果”の一般規則を適用する。
b) CSの<局所宣言リスト>,<局所カーソル宣言リスト>及び<局所ハンドラ宣言リスト>中で指定さ
れる変数,元祖SQLサーバカーソル及びハンドラが破壊される。
2) Sの実行を終了する。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<LEAVE文>を含んではならない。
15.10 <LOOP文>
機能
<LOOP文> (<loop statement>) は,文の実行を繰り返す。
形式
<LOOP文> ::=
[ <開始ラベル> <コロン> ]
LOOP
<SQL文リスト>
END LOOP [ <終了ラベル> ]
構文規則
1) <LOOP文>をLSとする。
2) LSが<開始ラベル>を指定しないならば,LSを含む最も外側の<SQL制御文>に含まれる他のどの<
文ラベル>とも等価でない処理系依存の<開始ラベル>が暗に想定される。
3) <終了ラベル>を指定するならば,<終了ラベル>と等価な<開始ラベル>を指定しなければならない。
4) <開始ラベル>の有効範囲は,LSに含まれる全ての<SQLスキーマ文>を除くLSとする。<開始ラベ
ル>は,LSに含まれる全ての<SQLスキーマ文>を除くLSに含まれる他のどの<開始ラベル>とも等
価であってはならない。
アクセス規則
なし。
一般規則
1) <SQL文リスト>をSSLとし,次の<複合文>をCCSとする。
BEGIN NOT ATOMIC SSL END
CCSをEXECUTING STATEMENTとして,[ISO9075-2] の“13.4 <SQL手続文>”の一般規則を繰
り返し適用する。
注記26 例外条件の発生又は<LEAVE文>の実行がLSの実行を終了させることもある(それぞれ,
[ISO9075-1] の“6.3.3.7 例外”,及び“15.9 <LEAVE文>”参照)。条件ハンドラによってと
られる幾つかの動作も,LSの実行を終了させるかもしれない(“15.2 <ハンドラ宣言>”参
62
X 3005-4:2019 (ISO/IEC 9075-4:2016)
照)。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<LOOP文>を含んではならない。
15.11 <WHILE文>
機能
<WHILE文> (<while statement>) は,指定される条件が真 (True) の間,文の実行を繰り返す。
形式
<WHILE文> ::=
[ <開始ラベル> <コロン> ]
WHILE <探索条件> DO
<SQL文リスト>
END WHILE [ <終了ラベル> ]
構文規則
1) <WHILE文>をWSとする。
2) WSが<開始ラベル>を指定しないならば,WSを含む最も外側の<SQL制御文>に含まれる他のどの<
文ラベル>とも等価でない処理系依存の<開始ラベル>が暗に想定される。
3) <終了ラベル>を指定するならば,<終了ラベル>と等価な<開始ラベル>を指定しなければならない。
4) <開始ラベル>の有効範囲は,WSに含まれる全ての<SQLスキーマ文>を除くWSとする。<開始ラ
ベル>は,WSに含まれる全ての<SQLスキーマ文>を除くWSに含まれる他のどの<開始ラベル>と
も等価であってはならない。
アクセス規則
なし。
一般規則
1) <探索条件>を評価する。
2) 場合:
a) <探索条件>が偽 (False) 又は不定 (Unknown) と評価されるならば,WS の実行を終了する。
b) <SQL文リスト>をSSLとし,次の<複合文>をCCSとする。
BEGIN NOT ATOMIC SSL END
<探索条件>が真 (True) と評価されるならば,CCSをEXECUTING STATEMENTとして,
[ISO9075-2] の“13.4 <SQL手続文>”の一般規則を適用し,WSの実行を繰り返す。
注記27 例外条件の発生又は<LEAVE文>の実行がWSの実行を終了させることもある(それぞれ,
[ISO9075-1] の“6.3.3.7 例外”,及び“15.9 <LEAVE文>”参照)。条件ハンドラによってと
られる幾つかの動作も,WSの実行を終了させるかもしれない(“15.2 <ハンドラ宣言>”参
照)。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<WHILE文>を含んではならない。
15.12 <REPEAT文>
機能
<REPEAT文> (<repeat statement>) は,指定される条件が真 (True) になるまで,文の実行を繰り返す。
形式
63
X 3005-4:2019 (ISO/IEC 9075-4:2016)
<REPEAT文> ::=
[ <開始ラベル> <コロン> ]
REPEAT
<SQL文リスト>
UNTIL <探索条件>
END REPEAT [ <終了ラベル> ]
構文規則
1) <REPEAT文>をRSとする。
2) RSが<開始ラベル>を指定しないならば,RSを含む最も外側の<SQL制御文>に含まれる他のどの<
文ラベル>とも等価でない処理系依存の<開始ラベル>が暗に想定される。
3) <終了ラベル>を指定するならば,<終了ラベル>と等価な<開始ラベル>を指定しなければならない。
4) <開始ラベル>の有効範囲は,RSに含まれる全ての<SQLスキーマ文>を除くRSとする。<開始ラベ
ル>は,RSに含まれる全ての<SQLスキーマ文>を除くRSに含まれる他のどの<開始ラベル>とも等
価であってはならない。
アクセス規則
なし。
一般規則
1) <SQL文リスト>をSSLとし,次の<複合文>をCCSとする。
BEGIN NOT ATOMIC SSL END
CCSをEXECUTING STATEMENTとして,[ISO9075-2] の“13.4 <SQL手続文>”の一般規則を適
用し,その後に<探索条件>を評価する。
注記28 例外条件の発生又は<LEAVE文>の実行がRSの実行を終了させることもある(それぞれ,
[ISO9075-1] の“6.3.3.7 例外”,及び“15.9 <LEAVE文>”参照)。条件ハンドラによってと
られる幾つかの動作も,RSの実行を終了させるかもしれない(“15.2 <ハンドラ宣言>”参
照)。
2) <探索条件>が偽 (False) 又は不定 (Unknown) と評価されるならば,RSの実行を繰り返す。そうで
なければ,RSの実行を終了する。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<REPEAT文>を含んではならない。
15.13 <FOR文>
機能
<FOR文> (<for statement>) は,表の各行に対して,文を実行する。
形式
<FOR文> ::=
[ <開始ラベル> <コロン> ]
FOR [ <FORループ変数名> AS ]
[ <カーソル名> [ <カーソル感度> ] CURSOR FOR ]
<カーソル指定>
DO <SQL文リスト>
END FOR [ <終了ラベル> ]
64
X 3005-4:2019 (ISO/IEC 9075-4:2016)
<FORループ変数名> ::=
<識別子>
構文規則
1) <FOR文>FSの<カーソル指定>をFCSとする。
2) FSが<開始ラベル>を指定しないならば,FSを含む最も外側の<SQL制御文>に含まれる他のどの<
文ラベル>とも等価でない処理系依存の<開始ラベル>が暗に想定される。
3) <終了ラベル>を指定するならば,<終了ラベル>と等価な<開始ラベル>を指定しなければならない。
4) <カーソル名>が指定されるならば,その<カーソル名>をCNとする。そうでなければ,FSを含む
最も外側の<SQLクライアントモジュール定義>又は<SQL呼出しルーチン>中の他のどの<カーソル
名>とも等価でない処理系依存の<カーソル名>をCNとする。
5) FCSの<問合せ式>をQEとする。QEによって指定される表の各列は,QEによって指定される表中
の他のどの<列名>とも等価でない<列名>をもたなければならない。それらの<列名>をV1,V2,...,
Vnとする。それぞれの列の宣言型をDT1,DT2,...,DTnとする。
6) FSの<開始ラベル>,<FORループ変数名>及び<SQL文リスト>を,それぞれ,BL,FLVN及びSLL
とする。
a) FSを含む最も外側の<SQLサーバモジュール定義>,<SQL呼出しルーチン>又は<複合文>に含ま
れる他のどの<SQL変数名>又は<SQLパラメタ名>とも等価でない処理系依存の<SQL変数名>を
AT̲ENDとする。
b) FSを含む最も外側の<SQLサーバモジュール定義>,<SQL呼出しルーチン>又は<複合文>に含ま
れる他のどの<条件名>とも等価でない処理系依存の<条件名>をNOT̲FOUNDとする。
c) 陽に指定されるか又は暗に想定される<カーソル感度>をCSとする。
7) 次のSQLをCOMMON̲CODEとする。
DECLARE V1 DT1;
DECLARE V2 DT2;
.
.
.
DECLARE Vn DTn;
DECLARE AT̲END BOOLEAN DEFAULT FALSE;
DECLARE NOT̲FOUND CONDITION FOR SQLSTATE '02000';
DECLARE OPEN̲ERROR CONDITION;
DECLARE CN CS CURSOR FOR FCS
DECLARE EXIT HANDLER FOR OPEN̲ERROR
RESIGNAL;
BEGIN NOT ATOMIC
DECLARE EXIT HANDLER FOR SQLEXCEPTION
RESIGNAL OPEN̲ERROR;
OPEN CN;
END;
BL:LOOP
65
X 3005-4:2019 (ISO/IEC 9075-4:2016)
BEGIN NOT ATOMIC
DECLARE CONTINUE HANDLER FOR NOT̲FOUND
SET AT̲END = TRUE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN NOT ATOMIC
SET AT̲END = TRUE;
RESIGNAL;
END;
FETCH CN INTO V1, V2, ..., Vn;
END;
IF AT̲END THEN
LEAVE BL;
END IF;
SLL
END LOOP BL;
CLOSE CN;
場合:
a) <FORループ変数名>が指定されるならば,FSは,次のSQLと等価とする。
FLVN: BEGIN NOT ATOMIC
COMMON̲CODE
END FLVN;
b) そうでなければ,FSは,次のSQLと等価とする。
BEGIN NOT ATOMIC
COMMON̲CODE
END
8) SLLは,<SQL呼出しルーチン>又は<SQLスキーマ文>を介在しないで,FLVNを指定する<LEAVE
文>を含んではならない。
9) SLLは,<COMMIT文>又は<ROLLBACK文>を含んではならない。
10) SLLは,<SQL呼出しルーチン>又は<SQLスキーマ文>を介在しないで,CNを指定する<FETCH文
>,<OPEN文>又は<CLOSE文>を含んではならない。
アクセス規則
なし。
一般規則
なし。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<FOR文>を含んではならない。
16 動的SQL
この箇条は,ISO/IEC 9075-2の“20 動的SQL”を修正する。
66
X 3005-4:2019 (ISO/IEC 9075-4:2016)
16.1 <PREPARE文>
この細分箇条は,ISO/IEC 9075-2の“20.7 <PREPARE文>”を修正する。
機能
<PREPARE文> (<prepare statement>) は,実行のために文を準備する。
形式
追加の形式項目なし。
構文規則
追加の構文規則なし。
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則5) の先頭のテキストに付け加える。】<動的パラメタ指定>のデータ型がこの一般規則に
よって決定されるまで,“15.5 <代入文>”で規定する構文上の置換えを適用してはならない。
2) 【一般規則5)a)xxvii) の後に挿入する。】DPが,<代入文>の<複数変数代入>MVAに単純に含まれ
る<文脈型付き行値式>であるか,又はそのような<文脈型付き行値式>の宣言型の下位フィールド
SFの値をDPが表現するならば,i番目のフィールドの宣言型が,MVAの<代入相手リスト>に含ま
れるi番目の<代入相手>に直に含まれる<相手指定>,<修正フィールド参照>又は<変異参照>の宣言
型である行型をRTとする。
場合:
a) DPが,MVAに単純に含まれる<文脈型付き行値式>ならば,DTは,RTとする。
b) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。
3) 【一般規則5)a)xxxi) の後に挿入する。】DPが,<代入文>の<単独変数代入>SVAに単純に含まれる<
代入相手>ならば,次による。
場合:
a) <代入元>が<ナル指定>を直に含むならば,DTは,未定義とする。
b) そうでなければ,DTは,SVAの<代入元>に単純に含まれる<値式>の宣言型とする。
4) 【一般規則5)a)xxxi) の後に挿入する。】DPが,<代入文>の<単独変数代入>SVA中の<代入元>に単
純に含まれる<値式>か,又はそのような<値式>の宣言型の下位フィールドSFの値をDPが表現す
るならば,SVAに単純に含まれる<代入相手>の宣言型をRTとする。
場合:
a) DPが,<代入元>に単純に含まれる<値式>ならば,DTは,RTとする。
b) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。
5) 【一般規則5)a)xxxi) の後に挿入する。】DPが,<単純CASE文>CSに単純に含まれる<CASEオペ
ランド>若しくは<WHENオペランド>か,又はそのような<CASEオペランド>若しくは<WHENオ
ペランド>の宣言型の下位フィールドSFの値をDPが表現するならば,次による。
a) 次の宣言型の集合の和集合をSDTとする。
i)
<CASEオペランド>の宣言型から成る集合。
ii) <行値述語オペランド>であるCSの<WHENオペランド>の宣言型から成る集合。
iii) CSに単純に含まれる<比較述語部分2>,<BETWEEN述語部分2>,<文字LIKE述語部分2>,<
オクテットLIKE述語部分2>,<SIMILAR述語部分2>,<LIKE̲REGEX述語部分2>,<OVERLAPS
67
X 3005-4:2019 (ISO/IEC 9075-4:2016)
述語部分2>,<DISTINCT述語部分2>又は<MEMBER述語部分2>に単純に含まれる<行値述語
オペランド>の宣言型から成る集合。
iv) CSに単純に含まれる<IN述語部分2>,<MATCH述語部分2>又は<限定比較述語部分2>に単純
に含まれる<表副問合せ>の宣言行型から成る集合。
v) CSに単純に含まれる<IN述語部分2>に単純に含まれる<IN値リスト>に単純に含まれる<行値
式>の宣言型から成る集合。
注記29 次の述語“部分2”は,宣言型情報をもつどんな値式ももたない。<NULL述語部分2>,
<NORMALIZED述語部分2>,<SET述語部分2>,<型述語部分2>。
b) SDTをDTSETとして,[ISO9075-2] の“9.5 データ型組合せの結果”の構文規則を適用する。こ
れらの構文規則の適用によって戻されるRESTYPEをRTとする。
c) 場合:
i)
DPが,CSに単純に含まれる<CASEオペランド>又は<WHENオペランド>ならば,DTは,RT
とする。
ii) そうでなければ,DTは,SFに対応するRTの下位フィールドの宣言型とする。
適合性規則
追加の適合性規則なし。
16.2 <入力USING句>
この細分箇条は,ISO/IEC 9075-2の“20.11 <入力USING句>”を修正する。
機能
<入力USING句> (<input using clause>) は,<動的SQL文>に対して入力値を与える。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<USING句の引数>に直に含まれる<一般値指定>は,<ホストパラメ
タ指定>,<SQLパラメタ参照>,<SQL変数参照>又は<埋込み変数指定>のいずれかでなければなら
ない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
16.3 <出力USING句>
この細分箇条は,ISO/IEC 9075-2の“20.12 <出力USING句>”を修正する。
機能
<出力USING句> (<output using clause>) は,<動的SQL文>に対して出力変数を与える。
形式
追加の形式項目なし。
構文規則
1) 【構文規則1) を置き換える。】<INTO句の引数>に直に含まれる<相手指定>は,<ホストパラメタ指
68
X 3005-4:2019 (ISO/IEC 9075-4:2016)
定>,<SQLパラメタ参照>,<SQL変数参照>又は<埋込み変数指定>のいずれかでなければならない。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
17 埋込みSQL
この箇条は,ISO/IEC 9075-2の“21 埋込みSQL”を修正する。
17.1 <SQL埋込みホストプログラム>
この細分箇条は,ISO/IEC 9075-2の“21.1 <SQL埋込みホストプログラム>”を修正する。
機能
<SQL埋込みホストプログラム> (<embedded SQL host program>) は,<SQL埋込みホストプログラム>を
指定する。
形式
追加の形式項目なし。
構文規則
1) 【この構文規則を挿入する。】<識別子>Iと<ホスト識別子>HIとが与えられたとき,IとHIとが等
価かどうかは,処理系定義とする。
2) 【この構文規則を挿入する。】<SQL埋込みホストプログラム>に含まれる<SQL変数宣言>に含まれ
る<SQL変数名>は,<SQL埋込みホストプログラム>中の<埋込みSQL文>に含まれるどの<ホスト
識別子>とも等価であってはならない。
3) 【この構文規則を挿入する。】<複合文>を介在しないで<SQL埋込みホストプログラム>に<ハンドラ
宣言>が含まれるならば,その<ハンドラ宣言>に含まれるどの<条件値>も,その<SQL埋込みホスト
プログラム>に直に含まれる他のどの<ハンドラ宣言>の<条件値>とも等価であってはならない。
4) 【構文規則22)k) の前に挿入する。】Hに含まれる各<SQL変数宣言>に対して,Mは,一つの<SQL
変数宣言>を含む。Mの各<SQL変数宣言>は,Hの対応する<SQL変数宣言>の写しとする。
5) 【構文規則22)l) の前に挿入する。】Hに含まれる各<ハンドラ宣言>に対して,Mは,一つの<ハン
ドラ宣言>を含む。Mの各<ハンドラ宣言>は,Hの対応する<ハンドラ宣言>の写しとする。
6) 【構文規則23)c) を置き換える。】<カーソル宣言>,<動的カーソル宣言>,<SQL変数宣言>,<SQL
呼出しルーチン>又は<一時表宣言>を含む各<埋込みSQL文>が削除され,<埋込み例外宣言>を含む
どの<埋込みSQL文>も,[ISO9075-2] の“21.2 <埋込み例外宣言>”の一般規則で規定する効果をも
つホスト言語の幾つかの文によって置き換えられる。
アクセス規則
追加のアクセス規則なし。
一般規則
追加の一般規則なし。
適合性規則
追加の適合性規則なし。
69
X 3005-4:2019 (ISO/IEC 9075-4:2016)
18 診断管理
この箇条は,ISO/IEC 9075-2の“23 診断管理”を修正する。
18.1 <GET DIAGNOSTICS文>
この細分箇条は,ISO/IEC 9075-2の“23.1 <GET DIAGNOSTICS文>”を修正する。
機能
<GET DIAGNOSTICS文> (<get diagnostics statement>) は,診断領域から例外条件情報又は終了条件情報
を取得する。
形式
<GET DIAGNOSTICS文> ::=
GET [ <どの領域> ] DIAGNOSTICS <SQL診断情報>
<どの領域> ::=
CURRENT
| STACKED
<条件情報項目名> ::=
!! ISO/IEC 9075-2中の全ての代替手段
| CONDITION̲IDENTIFIER
構文規則
1) 【この構文規則 を挿入する。】<どの領域>が指定されないならば,CURRENTが暗に想定される。
2) 表1“<GET DIAGNOSTICS文>で用いるための<条件情報項目名>”は,[ISO 9075-2]の表36“<GET
DIAGNOSTICS文>で用いるための<条件情報項目名>”を修正する。
表1−<GET DIAGNOSTICS文>で用いるための<条件情報項目名>
<識別子>
宣言型
ISO/IEC 9075-2中の全ての代替手段
CONDITION̲IDENTIFIER
処理系定義の最大長をもつ可変長文字列
アクセス規則
追加のアクセス規則なし。
一般規則
1) 【一般規則1) を置き換える。】場合:
a) <どの領域>がCURRENTを指定するならば,1番目の診断領域をDAとする。
b) <どの領域>がSTACKEDを指定するならば,2番目の診断領域をDAとする。
2) 【一般規則1) の後に挿入する。】<どの領域>がSTACKEDを指定し,かつ,どの条件ハンドラも有
効化されていないならば,例外条件:診断例外 (diagnostics exception) − スタック中の診断情報が
有効化されたハンドラなしでアクセスされた (stacked diagnostics accessed without active handler) が
引き起こされる。
3) 表2“SQL文のコード”は,[ISO 9075-2]の表37“SQL文のコード”を修正する。
70
X 3005-4:2019 (ISO/IEC 9075-4:2016)
表2−SQL文のコード
SQL文
識別子
コード
ISO/IEC 9075-2中の全ての代替手段
<代入文>
ASSIGNMENT
5
<CASE文>
CASE
86
<複合文>
BEGIN END
12
<モジュール削除文>
DROP MODULE
28
<FOR文>
FOR
46
<IF文>
IF
88
<ITERATE文>
ITERATE
102
<LEAVE文>
LEAVE
89
<LOOP文>
LOOP
90
<RESIGNAL文>
RESIGNAL
91
<REPEAT文>
REPEAT
95
<SIGNAL文>
SIGNAL
92
<SQLサーバモジュール定義>
CREATE MODULE
51
<WHILE文>
WHILE
97
4) 【一般規則4)n) の前に挿入する。】RETURNED̲SQLSTATEの値が,処理されない利用者定義の例
外 (unhandled user-defined exception) に対応するならば,CONDITION̲IDENTIFIERの値は,利用者
定義の例外の<条件名>とする。
5) 【一般規則4)p) の前に挿入する。】COMMAND̲FUNCTION又はDYNAMIC̲FUNCTIONが
<SIGNAL文>又は<RESIGNAL文>を識別するならば,CLASS̲ORIGIN,SUBCLASS̲ORIGIN,
CONSTRAINT̲CATALOG,CONSTRAINT̲SCHEMA,CONSTRAINT̲NAME,CATALOG̲NAME,
SCHEMA̲NAME,TABLE̲NAME,COLUMN̲NAME,CURSOR̲NAME,MESSAGE̲TEXT,
MESSAGE̲LENGTH及びMESSAGE̲OCTET̲LENGTHの値は,[ISO9075-2] で規定するとおりに設
定されないが,代わりに,この規格の“18.2 <SIGNAL文>”及び“18.3 <RESIGNAL文>”で規定す
るとおりに設定される。
適合性規則
1) 機能P007“拡張診断管理”なしでは,適合するSQL言語は,<どの領域>を含んではならない。
18.2 <SIGNAL文>
機能
<SIGNAL文> (<signal statement>) は,例外条件を信号として送る。
形式
<SIGNAL文> ::=
SIGNAL <信号値> [ <信号情報設定> ]
<信号値> ::=
<条件名>
| <SQLSTATE値>
<信号情報設定> ::=
SET <信号情報項目リスト>
<信号情報項目リスト> ::=
<信号情報項目> [ { <コンマ> <信号情報項目> }... ]
71
X 3005-4:2019 (ISO/IEC 9075-4:2016)
<信号情報項目> ::=
<条件情報項目名> <等号演算子> <単純値指定>
構文規則
1) 場合:
a) <信号値>が<条件名>を直に含むならば,次による。
i)
<SIGNAL文>に含まれる<条件名>をCNとする。
ii) <SIGNAL文>は,CNと等価な<条件名>の有効範囲に含まれなければならない。そのような最
も内側の有効範囲をCNSとする。
b) そうでなければ,<SQLSTATE値>によって定義されるSQLSTATE値をCとし,長さ0の文字列
をCNとする。
2) <条件情報項目名>は,CLASS̲ORIGIN,SUBCLASS̲ORIGIN,CONSTRAINT̲CATALOG,
CONSTRAINT̲SCHEMA,CONSTRAINT̲NAME,CATALOG̲NAME,SCHEMA̲NAME,
TABLE̲NAME,COLUMN̲NAME,CURSOR̲NAME又はMESSAGE̲TEXTを指定しなければなら
ない。<条件情報項目名>のどの代替手段も,<信号情報設定>中に2回以上指定してはならない。
3) <信号情報項目>に含まれる<条件情報項目名>のデータ型は,表1“<GET DIAGNOSTICS文>で用い
るための<条件情報項目名>”で規定するデータ型でなければならない。
アクセス規則
なし。
一般規則
1) 1番目の診断領域が空にされ,1番目の診断領域中の文情報項目に対して次の変更がなされる。
a) NUMBERに1が設定される。
b) MOREに 'N' が設定される。
c) COMMAND̲FUNCTIONに 'SIGNAL' が設定される。
d) DYNAMIC̲FUNCTIONに長さ0の文字列が設定される。
2) 1番目の診断領域中の1番目の条件領域をCAとする。CA中の条件情報項目
CONDITION̲IDENTIFIERにCNが設定される。
場合:
a) CNがSQLSTATE値に対して定義されているとみなされるならば,CA中の条件情報項目
RETURNED̲SQLSTATEに,CNS内でCNが定義されているとみなされるSQLSTATE値が設定さ
れる。
注記30 “定義されているとみなされる”は,“15.3 <条件宣言>”で定義している。
b) <SQLSTATE値>が指定されるならば,CA中の条件情報項目RETURNED̲SQLSTATEに
<SQLSTATE値>が設定される。
c) そうでなければ,CA中の条件情報項目RETURNED̲SQLSTATEに長さ0の文字列が設定される。
3) CA中の条件情報項目CLASS̲ORIGIN,SUBCLASS̲ORIGIN,CONSTRAINT̲CATALOG,
CONSTRAINT̲SCHEMA,CONSTRAINT̲NAME,CATALOG̲NAME,SCHEMA̲NAME,
TABLE̲NAME,COLUMN̲NAME,CURSOR̲NAME及びMESSAGE̲TEXTに長さ0の文字列が設
定される。CA中の条件情報項目MESSAGE̲LENGTH及びMESSAGE̲OCTET̲LENGTHに0が設
定される。
4) PUSHをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診断領
72
X 3005-4:2019 (ISO/IEC 9075-4:2016)
域スタックに対するプッシュ及びポップ”の一般規則を適用する。
5) 条件処理モードがSQLセション中で有効になる。
6) <信号情報設定>が指定されるならば,<信号情報設定>をSSIとする。そうでなければ,長さ0の文
字列をSSIとする。これ以上の構文規則の検査なしで,次の<RESIGNAL文>が実効的に実行される。
RESIGNAL SSI
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<SIGNAL文>を含んではならない。
18.3 <RESIGNAL文>
機能
<RESIGNAL文> (<resignal statement>) は,例外条件を信号として再送する。
形式
<RESIGNAL文> ::=
RESIGNAL [ <信号値> ] [ <信号情報設定> ]
構文規則
1) <RESIGNAL文>をRSとする。
2) <信号値>が指定されるならば,次による。
場合:
a) <信号値>が<条件名>を直に含むならば,次による。
i)
RSに含まれる<条件名>をCNとする。
ii) <RESIGNAL文>は,CNと等価な<条件名>の有効範囲に含まれなければならない。そのような
最も内側の有効範囲をCNS とする。
b) そうでなければ,<SQLSTATE値>によって定義されるSQLSTATE値をCとし,長さ0の文字列
をCNとする。
アクセス規則
なし。
一般規則
1) 条件処理モードが有効でないならば,例外条件:ハンドラが有効でないときにRESIGNALが実行さ
れた (resignal when handler not active) が引き起こされる。
2) POPをOPERATIONとして,診断領域スタックをSTACKとして,[ISO9075-2] の“23.2 診断領域
スタックに対するプッシュ及びポップ”の一般規則を適用する。
3) 1番目の診断領域をDAとし,DA中の文領域をSAとし,DA中1番目の条件領域をCAとする。
4) <信号値>が指定されるならば,次による。
a) SA中の文情報項目NUMBERが1増やされる。
b) 診断領域のための条件領域の最大数に達したならば,SA中の文情報項目MOREに 'Y' が設定さ
れ,DA中の最後の条件領域は,空きにされる。
c) 診断領域のための条件領域の最大数をnとする。n‒1から1までの範囲のiに対して,i番目の条
件領域の内容をi +1番目の条件領域に写す。
注記31 先行する一般規則の評価後に,DA中1番目の条件領域及び2番目の条件領域は,同一
の内容をもつ。CAは,まだ1番目の条件領域を識別している。
d) SA中の文情報項目COMMAND̲FUNCTIONに 'RESIGNAL' が設定される。SA中の文情報項目
73
X 3005-4:2019 (ISO/IEC 9075-4:2016)
DYNAMIC̲FUNCTIONに長さ0の文字列が設定される。CA中の条件情報項目
CONDITION̲IDENTIFIERにCNが設定される。
場合:
i)
CNがSQLSTATE値に対して定義されているとみなされるならば,CA中の条件情報項目
RETURNED̲SQLSTATEに,CNS内でCNが定義されているとみなされるSQLSTATE値が設定
される。
注記32 “定義されているとみなされる”は,“15.3 <条件宣言>”で定義している。
ii) <SQLSTATE値>が指定されるならば,CA中の条件情報項目RETURNED̲SQLSTATEに
<SQLSTATE値>が設定される。
iii) そうでなければ,CA中の条件情報項目RETURNED̲SQLSTATEに長さ0の文字列が設定され
る。
5) <信号情報設定>が指定されるならば,<信号情報設定>中の各<信号情報項目>に対して,次による。
a) <条件情報項目名>によって識別されるCA中の条件情報項目に<単純値指定>の値が設定される。
b) <条件情報項目名>がMESSAGE̲TEXTを指定するならば,CA中の条件情報項目
MESSAGE̲LENGTH及びMESSAGE̲OCTET̲LENGTHに,それぞれ,<単純値指定>の値の文字
単位での長さ及びオクテット単位での長さが設定される。
6) 場合:
a) CA中の条件情報項目RETURNED̲SQLSTATEが長さ0の文字列でないならば,次による。
i)
その値をSとする。
ii) ハンドラHがSに対する最適ハンドラならば,HをMOST APPROPRIATE HANDLERとして,
“8.1 ハンドラ実行”の一般規則を適用する。
iii) 有効化されるハンドラがなく,かつ,例外条件ECに関連付けられたSQLSTATE値をSが識別
するならば,これは,処理されない例外条件 (resignal when handler not active) とし,RSの実行
をもたらすことになった<SQL手続文>は,例外条件ECで終了する。
注記33 終了条件に関連付けられたSQLSTATE値をSが識別するならば,これは,処理されな
い終了条件 (unhandled completion condition) とし,制御の流れを変更しないで処理が
継続される。
b) そうでなければ,次による。
i)
CA中の条件情報項目CONDITION̲IDENTIFIERの値をEとする。
ii) ハンドラHがEに対する最適ハンドラならば,HをMOST APPROPRIATE HANDLERとして,
“8.1 ハンドラ実行”の一般規則を適用する。
iii) Eに対して適切なハンドラがないならば,これは,処理されない例外条件 とし,RSの実行を
もたらすことになった<SQL手続文>は,例外条件:処理されない利用者定義の例外 (unhandled
user-defined exception) で終了する。
適合性規則
1) 機能P002“計算完備性”なしでは,適合するSQL言語は,<RESIGNAL文>を含んではならない。
19 情報スキーマ
この箇条は,ISO/IEC 9075-11の“5 情報スキーマ”を修正する。
74
X 3005-4:2019 (ISO/IEC 9075-4:2016)
19.1 MODULE̲COLUMN̲USAGEビュー
機能
MODULE̲COLUMN̲USAGEビュー (MODULE̲COLUMN̲USAGE view) は,ある利用者によって所有
され,このカタログ中で定義されているSQLサーバモジュールが依存する列を識別する。
定義
CREATE VIEW MODULE̲COLUMN̲USAGE AS
SELECT MCU.MODULE̲CATALOG, MCU.MODULE̲SCHEMA, MCU.MODULE̲NAME,
MCU.TABLE̲CATALOG, MCU.TABLE̲SCHEMA, MCU.TABLE̲NAME, MCU.COLUMN̲NAME
FROM DEFINITION̲SCHEMA.MODULE̲COLUMN̲USAGE AS MCU
JOIN
DEFINITION̲SCHEMA.SCHEMATA AS S
ON ( ( MCU.TABLE̲CATALOG, MCU.TABLE̲SCHEMA ) =
( S.CATALOG̲NAME, S.SCHEMA̲NAME ) )
WHERE ( S.SCHEMA̲OWNER = CURRENT̲USER
OR
S.SCHEMA̲OWNER IN
( SELECT ER.ROLE̲NAME
FROM ENABLED̲ROLES AS ER ) )
AND
MCU.MODULE̲CATALOG =
( SELECT ISCN.CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME AS ISCN );
GRANT SELECT ON TABLE MODULE̲COLUMN̲USAGE
TO PUBLIC WITH GRANT OPTION;
適合性規則
1) 機能F341“USAGE表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COLUMN̲USAGEを参照してはならない。
2) 機能F391“長い識別子”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COLUMN̲USAGEを参照してはならない。
3) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COLUMN̲USAGEを参照してはならない。
19.2 MODULE̲PRIVILEGESビュー
機能
MODULE̲PRIVILEGESビュー (MODULE̲PRIVILEGES view) は,このカタログ中で定義されている
SQLサーバモジュールに関する権限で,ある利用者に利用可能な権限又はある利用者によって付与されて
いる権限を識別する。
定義
CREATE VIEW MODULE̲PRIVILEGES AS
75
X 3005-4:2019 (ISO/IEC 9075-4:2016)
SELECT
GRANTOR, GRANTEE, MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
PRIVILEGE̲TYPE, IS̲GRANTABLE
FROM DEFINITION̲SCHEMA.MODULE̲PRIVILEGES
WHERE ( GRANTEE IN
( 'PUBLIC', CURRENT̲USER )
OR
GRANTEE IN
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES )
OR
GRANTOR = CURRENT̲USER
OR
GRANTOR IN
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES ) )
AND
MODULE̲CATALOG =
( SELECT CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME );
GRANT SELECT ON TABLE MODULE̲PRIVILEGES
TO PUBLIC WITH GRANT OPTION;
適合性規則
1) 機能F231“PRIVILEGES表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲PRIVILEGESを参照してはならない。
2) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲PRIVILEGESを参照してはならない。
19.3 MODULE̲TABLE̲USAGEビュー
機能
MODULE̲TABLE̲USAGEビュー (MODULE̲TABLE̲USAGE view) は,ある利用者によって所有され,
このカタログ中で定義されているSQLサーバモジュールが依存する表を識別する。
定義
CREATE VIEW MODULE̲TABLE̲USAGE AS
SELECT MTU.MODULE̲CATALOG, MTU.MODULE̲SCHEMA, MTU.MODULE̲NAME,
MTU.TABLE̲CATALOG, MTU.TABLE̲SCHEMA, MTU.TABLE̲NAME
FROM DEFINITION̲SCHEMA.MODULE̲TABLE̲USAGE AS MTU
JOIN
DEFINITION̲SCHEMA.SCHEMATA AS S
76
X 3005-4:2019 (ISO/IEC 9075-4:2016)
ON ( ( MTU.TABLE̲CATALOG, MTU.TABLE̲SCHEMA ) =
( S.CATALOG̲NAME, S.SCHEMA̲NAME ) )
WHERE ( S.SCHEMA̲OWNER = CURRENT̲USER
OR
S.SCHEMA̲OWNER IN
( SELECT ER.ROLE̲NAME
FROM ENABLED̲ROLES AS ER ) )
AND
MTU.MODULE̲CATALOG =
( SELECT ISCN.CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME AS ISCN );
GRANT SELECT ON TABLE MODULE̲TABLE̲USAGE
TO PUBLIC WITH GRANT OPTION;
適合性規則
1) 機能F341“USAGE表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲TABLE̲USAGEを参照してはならない。
2) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲TABLE̲USAGEを参照してはならない。
19.4 MODULESビュー
機能
MODULESビュー (MODULES view) は,ある利用者にアクセス可能なこのカタログ中のSQLサーバモ
ジュールを識別する。
定義
CREATE VIEW MODULES AS
SELECT MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
DEFAULT̲CHARACTER̲SET̲CATALOG, DEFAULT̲CHARACTER̲SET̲SCHEMA,
DEFAULT̲CHARACTER̲SET̲NAME,
DEFAULT̲SCHEMA̲CATALOG, DEFAULT̲SCHEMA̲NAME,
CASE
WHEN EXISTS (
SELECT *
FROM DEFINITION̲SCHEMA.SCHEMATA AS S
WHERE ( MODULE̲CATALOG, MODULE̲SCHEMA ) =
( S.CATALOG̲NAME, S.SCHEMA̲NAME )
AND
( S.SCHEMA̲OWNER = CURRENT̲USER
OR
S.SCHEMA̲OWNER IN
77
X 3005-4:2019 (ISO/IEC 9075-4:2016)
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES ) ) )
THEN MODULE̲DEFINITION
ELSE NULL
END AS MODULE̲DEFINITION,
MODULE̲AUTHORIZATION, SQL̲PATH, CREATED
FROM DEFINITION̲SCHEMA.MODULES
WHERE ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME ) IN
( SELECT MP.MODULE̲CATALOG, MP.MODULE̲SCHEMA, MP.MODULE̲NAME
FROM DEFINITION̲SCHEMA.MODULE̲PRIVILEGES AS MP
WHERE ( MP.GRANTEE IN
( 'PUBLIC', CURRENT̲USER )
OR
MP.GRANTEE IN
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES ) ) )
AND
MODULE̲CATALOG =
( SELECT CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME );
GRANT SELECT ON TABLE MODULES
TO PUBLIC WITH GRANT OPTION;
適合性規則
1) 機能F391“長い識別子”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA . MODULES
を参照してはならない。
2) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULESを参照してはならない。
3) 機能T011“情報スキーマ中の時刻印”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULES.CREATEDを参照してはならない。
19.5 PARAMETERSビュー
この細分箇条は,ISO/IEC 9075-11の“5.37 PARAMETERSビュー”を修正する。
機能
PARAMETERSビュー (PARAMETERS view) は,ある利用者又は役割がアクセス可能な,このカタログ
中で定義されているSQL呼出しルーチンのSQLパラメタを識別する。
定義
【VIEW定義の最も外側のWHERE句を置き換える。】
WHERE ( ( ( R.MODULE̲CATALOG, R.MODULE̲SCHEMA, R.MODULE̲NAME ) IS NULL
AND
78
X 3005-4:2019 (ISO/IEC 9075-4:2016)
( SPECIFIC̲CATALOG, SPECIFIC̲SCHEMA, SPECIFIC̲NAME ) IN
( SELECT RP.SPECIFIC̲CATALOG, RP.SPECIFIC̲SCHEMA, RP.SPECIFIC̲NAME
FROM DEFINITION̲SCHEMA.ROUTINE̲PRIVILEGES AS RP
WHERE ( RP.GRANTEE IN
( 'PUBLIC', CURRENT̲USER )
OR
RP.GRANTEE IN
( SELECT ER.ROLE̲NAME
FROM ENABLED̲ROLES AS ER ) ) ) )
OR
( ( R.MODULE̲CATALOG, R.MODULE̲SCHEMA, R.MODULE̲NAME ) IS NOT NULL
AND
( R.MODULE̲CATALOG, R.MODULE̲SCHEMA, R.MODULE̲NAME ) IN
( SELECT MP.MODULE̲CATALOG, MP.MODULE̲SCHEMA, MP.MODULE̲NAME
FROM DEFINITION̲SCHEMA.MODULE̲PRIVILEGES AS MP
WHERE ( MP.GRANTEE IN
( 'PUBLIC', CURRENT̲USER )
OR
MP.GRANTEE IN
( SELECT ER.ROLE̲NAME
FROM ENABLED̲ROLES AS ER ) ) ) ) )
AND SPECIFIC̲CATALOG
= ( SELECT ISCN.CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME AS ISCN );
適合性規則
追加の適合性規則なし。
19.6 ROLE̲MODULE̲GRANTSビュー
機能
ROLE̲MODULE̲GRANTSビュー (ROLE̲MODULE̲GRANTS view) は,このカタログ中で定義されて
いるSQLサーバモジュールに関する権限で,現行の与えられた役割が利用可能な権限又は現行の与えられ
た役割によって付与されている権限を識別する。
定義
CREATE VIEW ROLE̲MODULE̲GRANTS AS
SELECT GRANTOR, GRANTEE, MODULE̲CATALOG,
MODULE̲SCHEMA, MODULE̲NAME, PRIVILEGE̲TYPE,
IS̲GRANTABLE
FROM DEFINITION̲SCHEMA.MODULE̲PRIVILEGES
WHERE ( GRANTEE IN
79
X 3005-4:2019 (ISO/IEC 9075-4:2016)
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES )
OR
GRANTOR IN
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES ) )
AND
MODULE̲CATALOG =
( SELECT CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME );
GRANT SELECT ON TABLE ROLE̲MODULE̲GRANTS
TO PUBLIC WITH GRANT OPTION;
適合性規則
1) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
ROLE̲MODULE̲GRANTSを参照してはならない。
2) 機能T332“拡張役割”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
ROLE̲MODULE̲GRANTSを参照してはならない。
19.7 ROUTINESビュー
この細分箇条は,ISO/IEC 9075-11の“5.54 ROUTINESビュー”を修正する。
機能
ROUTINESビュー (ROUTINES view) は,ある利用者又は役割がアクセス可能なこのカタログ中のSQL
呼出しルーチンを識別する。
定義
【VIEW定義の最も外側のWHERE句を置き換える。】
WHERE ( ( ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME) IS NULL
AND
( SPECIFIC̲CATALOG, SPECIFIC̲SCHEMA, SPECIFIC̲NAME ) IN
( SELECT SPECIFIC̲CATALOG, SPECIFIC̲SCHEMA, SPECIFIC̲NAME
FROM DEFINITION̲SCHEMA.ROUTINE̲PRIVILEGES
WHERE ( GRANTEE IN
( 'PUBLIC', CURRENT̲USER )
OR
GRANTEE IN
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES ) ) ) )
OR
( ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME) IS NOT NULL
AND
80
X 3005-4:2019 (ISO/IEC 9075-4:2016)
( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME ) IN
( SELECT MP.MODULE̲CATALOG, MP.MODULE̲SCHEMA, MP.MODULE̲NAME
FROM DEFINITION̲SCHEMA.MODULE̲PRIVILEGES AS MP
WHERE ( MP.GRANTEE IN
( 'PUBLIC', CURRENT̲USER )
OR
MP.GRANTEE IN
( SELECT ROLE̲NAME
FROM ENABLED̲ROLES ) ) ) ) )
AND SPECIFIC̲CATALOG
= ( SELECT CATALOG̲NAME
FROM INFORMATION̲SCHEMA̲CATALOG̲NAME );
適合性規則
追加の適合性規則なし。
19.8 短い名前のビュー
この細分箇条は,ISO/IEC 9075-11の“5.82 短い名前のビュー”を修正する。
機能
短い名前のビュー (Short name views) は,機能F391“長い識別子”を必要としない識別子だけを用いる
代替ビューを提供する。
定義
CREATE VIEW MODULE̲COL̲USAGE
( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME,
COLUMN̲NAME ) AS
SELECT MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME,
COLUMN̲NAME
FROM MODULE̲COLUMN̲USAGE
GRANT SELECT ON TABLE MODULE̲COL̲USAGE
TO PUBLIC WITH GRANT OPTION;
CREATE VIEW MODULES̲S
( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
DEF̲CHAR̲SET̲CAT, DEF̲CHAR̲SET̲SCH, DEF̲CHAR̲SET̲NAME,
DEF̲SCHEMA̲CATALOG, DEFAULT̲SCHEMA, MODULE̲DEFINITION,
MODULE̲AUTH, SQL̲PATH, CREATED ) AS
SELECT MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
DEFAULT̲CHARACTER̲SET̲CATALOG, DEFAULT̲CHARACTER̲SET̲SCHEMA,
81
X 3005-4:2019 (ISO/IEC 9075-4:2016)
DEFAULT̲CHARACTER̲SET̲NAME,
DEFAULT̲SCHEMA̲CATALOG, DEFAULT̲SCHEMA, MODULE̲DEFINITION,
MODULE̲AUTHORIZATION, SQL̲PATH, MODULE̲CREATED
FROM INFORMATION̲SCHEMA.MODULES;
GRANT SELECT ON TABLE MODULES̲S
TO PUBLIC WITH GRANT OPTION;
適合性規則
1) 機能F341“USAGE表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COL̲USAGEを参照してはならない。
2) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COL̲USAGEを参照してはならない。
3) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULES̲Sを参照してはならない。
4) 機能T011“情報スキーマ中の時刻印”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULES̲S . CREATEDを参照してはならない。
20 定義スキーマ
この箇条は,ISO/IEC 9075-11の“6 定義スキーマ”を修正する。
20.1 MODULE̲COLUMN̲USAGE実表
機能
MODULE̲COLUMN̲USAGE実表 (MODULE̲COLUMN̲USAGE base table) は,SQLサーバモジュール
の<SQLルーチン本体>中で陽に識別されるか又は暗に識別される表の各列に対して一つの行をもつ。
定義
CREATE TABLE MODULE̲COLUMN̲USAGE (
MODULE̲CATALOG INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲SCHEMA INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
TABLE̲CATALOG INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
TABLE̲SCHEMA
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
TABLE̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
COLUMN̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
CONSTRAINT MODULE̲COLUMN̲USAGE̲PRIMARY̲KEY
PRIMARY KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME, COLUMN̲NAME ),
CONSTRAINT MODULE̲COLUMN̲USAGE̲CHECK̲REFERENCES̲COLUMNS
CHECK ( TABLE̲CATALOG <>
ANY ( SELECT CATALOG̲NAME
FROM SCHEMATA )
82
X 3005-4:2019 (ISO/IEC 9075-4:2016)
OR
( TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME, COLUMN̲NAME ) IN
( SELECT TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME, COLUMN̲NAME
FROM COLUMNS ) ),
CONSTRAINT MODULE̲COLUMN̲USAGE̲FOREIGN̲KEY̲MODULE̲TABLE̲USAGE
FOREIGN KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME )
REFERENCES MODULE̲TABLE̲USAGE
)
記述
1) MODULE̲COLUMN̲USAGE表は,記述されているSQLサーバモジュールSMの<SQLルーチン本
体>に含まれる列参照又は列名によって識別される表TABの各列COLに対して一つの行をもつ。
2) MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEの値は,それぞれ,SMのカタロ
グ名,修飾なしスキーマ名及び修飾される識別子とする。
3) TABLE̲CATALOG,TABLE̲SCHEMA及びTABLE̲NAMEの値は,それぞれ,TABのカタログ名,
修飾なしスキーマ名及び修飾される識別子とする。
4) COLUMN̲NAMEの値は,列COLの名前とする。
20.2 MODULE̲PRIVILEGES実表
機能
MODULE̲PRIVILEGES実表 (MODULE̲PRIVILEGES base table) は,SQLサーバモジュールに関する各
EXECUTE権限記述子に対して一つの行をもつ。この表は,EXECUTE権限記述子の表現を実効的に含む。
定義
CREATE TABLE MODULE̲PRIVILEGES (
GRANTOR
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
GRANTEE
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲CATALOG INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲SCHEMA INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
PRIVILEGE̲TYPE INFORMATION̲SCHEMA.CHARACTER̲DATA
CONSTRAINT MODULE̲PRIVILEGES̲TYPE̲CHECK
CHECK ( PRIVILEGE̲TYPE = 'EXECUTE' ),
IS̲GRANTABLE INFORMATION̲SCHEMA.YES̲OR̲NO
CONSTRAINT MODULE̲PRIVILEGES̲GRANTABLE̲NOT̲NULL
NOT NULL,
CONSTRAINT MODULE̲PRIVILEGES̲PRIMARY̲KEY
PRIMARY KEY ( GRANTOR, GRANTEE, MODULE̲CATALOG, MODULE̲SCHEMA,
MODULE̲NAME ),
CONSTRAINT MODULE̲PRIVILEGES̲FOREIGN̲KEY̲TABLES
83
X 3005-4:2019 (ISO/IEC 9075-4:2016)
FOREIGN KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME )
REFERENCES MODULES,
CONSTRAINT MODULE̲PRIVILEGE̲GRANTOR̲CHECK
CHECK ( GRANTOR = '̲SYSTEM'
OR
GRANTOR IN
( SELECT AUTHORIZATION̲NAME
FROM AUTHORIZATIONS ) ),
CONSTRAINT MODULE̲PRIVILEGE̲GRANTEE̲CHECK
CHECK ( GRANTEE = 'PUBLIC'
OR
GRANTEE IN
( SELECT AUTHORIZATION̲NAME
FROM AUTHORIZATIONS ) )
)
記述
1) GRANTORの値は,記述されている権限に対するGRANTEEの値によって識別される利用者若しく
は役割にMODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEによって識別される
SQLサーバモジュールに関するEXECUTE権限を付与した利用者若しくは役割の<認可識別子>か,
又は権限が付与されたオブジェクトの作成者の認可識別子に権限が付与されたことを示す
"̲SYSTEM" とする。
2) GRANTEEの値は,ある利用者又は役割の<認可識別子>か,又は記述されている権限が付与された
のが全ての利用者であることを示す "PUBLIC" とする。
3) MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEの値は,それぞれ,記述されて
いる権限が付与されているSQLサーバモジュールのカタログ名,修飾なしスキーマ名及び修飾され
る識別子とする。
4) PRIVILEGE̲TYPEの値は,次の意味をもつ。
EXECUTE
利用者が,MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAME によって識別
されるSQLサーバモジュールに関するEXECUTE権限をもつ。
5) IS̲GRANTABLEの値は,次の意味をもつ。
YES
記述されている権限がWITH GRANT OPTION付きで付与された。したがって,付与可能で
ある。
NO
記述されている権限がWITH GRANT OPTION付きで付与されなかった。したがって,付与
可能でない。
20.3 MODULE̲TABLE̲USAGE実表
機能
MODULE̲TABLE̲USAGE実表 (MODULE̲TABLE̲USAGE base table) は,SQLサーバモジュールの
<SQLルーチン本体>に含まれる<表参照>に含まれる<表名>によって識別される各表に対して一つの行を
84
X 3005-4:2019 (ISO/IEC 9075-4:2016)
もつ。
定義
CREATE TABLE MODULE̲TABLE̲USAGE (
MODULE̲CATALOG INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲SCHEMA INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
TABLE̲CATALOG INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
TABLE̲SCHEMA
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
TABLE̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
CONSTRAINT MODULE̲TABLE̲USAGE̲PRIMARY̲KEY
PRIMARY KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME,
TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME ),
CONSTRAINT MODULE̲TABLE̲USAGE̲CHECK̲REFERENCES̲TABLES
CHECK ( TABLE̲CATALOG <>
ANY ( SELECT CATALOG̲NAME
FROM SCHEMATA )
OR
( TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME ) IN
( SELECT TABLE̲CATALOG, TABLE̲SCHEMA, TABLE̲NAME
FROM TABLES ) ),
CONSTRAINT MODULE̲TABLE̲USAGE̲FOREIGN̲KEY̲MODULES
FOREIGN KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME )
REFERENCES MODULES
)
記述
1) MODULE̲TABLE̲USAGE表は,記述されているSQLサーバモジュールSMの<SQLルーチン本体
>に含まれる<表名>によって識別される各表TABに対して一つの行をもつ。
2) MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEの値は,それぞれ,SMのカタロ
グ名,修飾なしスキーマ名及び修飾される識別子とする。
3) TABLE̲CATALOG,TABLE̲SCHEMA及びTABLE̲NAMEの値は,それぞれ,TABのカタログ名,
修飾なしスキーマ名及び修飾される識別子とする。
20.4 MODULES実表
機能
MODULES実表 (MODULES base table) は,各SQLサーバモジュールに対して一つの行をもつ。
定義
CREATE TABLE MODULES (
MODULE̲CATALOG
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
MODULE̲SCHEMA
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
85
X 3005-4:2019 (ISO/IEC 9075-4:2016)
MODULE̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER,
DEFAULT̲CHARACTER̲SET̲CATALOG INFORMATION̲SCHEMA.SQL̲IDENTIFIER
CONSTRAINT MODULES̲DEFAULT̲CHARACTER̲SET̲CATALOG̲NOT̲NULL
NOT NULL,
DEFAULT̲CHARACTER̲SET̲SCHEMA
INFORMATION̲SCHEMA.SQL̲IDENTIFIER
CONSTRAINT MODULES̲DEFAULT̲CHARACTER̲SET̲SCHEMA̲NOT̲NULL
NOT NULL,
DEFAULT̲CHARACTER̲SET̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER
CONSTRAINT MODULES̲DEFAULT̲CHARACTER̲SET̲NAME̲NOT̲NULL
NOT NULL,
DEFAULT̲SCHEMA̲CATALOG
INFORMATION̲SCHEMA.SQL̲IDENTIFIER
CONSTRAINT MODULES̲DEFAULT̲SCHEMA̲CATALOG̲NOT̲NULL
NOT NULL,
DEFAULT̲SCHEMA̲NAME
INFORMATION̲SCHEMA.SQL̲IDENTIFIER
CONSTRAINT MODULES̲DEFAULT̲SCHEMA̲NAME̲NOT̲NULL
NOT NULL,
MODULE̲DEFINITION
INFORMATION̲SCHEMA.CHARACTER̲DATA,
MODULE̲AUTHORIZATION
INFORMATION̲SCHEMA.SQL̲IDENTIFIER
CONSTRAINT AUTHORIZATION̲FOREIGN̲KEY̲AUTHORIZATIONS REFERENCES AUTHORIZATIONS,
SQL̲PATH
INFORMATION̲SCHEMA.CHARACTER̲DATA,
CREATED
INFORMATION̲SCHEMA.TIME̲STAMP,
CONSTRAINT MODULES̲PRIMARY̲KEY
PRIMARY KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME ),
CONSTRAINT MODULES̲FOREIGN̲KEY̲SCHEMATA
FOREIGN KEY ( MODULE̲CATALOG, MODULE̲SCHEMA )
REFERENCES SCHEMATA,
CONSTRAINT MODULES̲FOREIGN̲KEY̲CHARACTER̲SETS
FOREIGN KEY ( DEFAULT̲CHARACTER̲SET̲CATALOG, DEFAULT̲CHARACTER̲SET̲SCHEMA,
DEFAULT̲CHARACTER̲SET̲NAME )
REFERENCES CHARACTER̲SETS,
CONSTRAINT MODULES̲FOREIGN̲KEY̲DEFAULT̲SCHEMA̲SCHEMATA
FOREIGN KEY ( DEFAULT̲SCHEMA̲CATALOG, DEFAULT̲SCHEMA̲NAME )
REFERENCES SCHEMATA
)
記述
1) MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEの値は,それぞれ,記述されて
いるSQLサーバモジュールのモジュール名のカタログ名,修飾なしスキーマ名及び修飾される識別
子とする。
2) DEFAULT̲CHARACTER̲SET̲CATALOG
,
DEFAULT̲CHARACTER̲SET̲SCHEMA
及
び
86
X 3005-4:2019 (ISO/IEC 9075-4:2016)
DEFAULT̲CHARACTER̲SET̲NAMEの値は,それぞれ,暗に想定されるか又は陽に指定される
<SQLサーバモジュール文字集合指定>によって識別される文字集合のカタログ名,修飾なしスキー
マ名及び修飾される識別子とする。
3) DEFAULT̲SCHEMA̲CATALOG及びDEFAULT̲SCHEMA̲NAMEの値は,それぞれ,暗に想定され
るか又は陽に指定される<SQLサーバモジュールSCHEMA句>によって識別されるスキーマのカタ
ログ名及び修飾なしスキーマ名とする。
4) 場合:
a) 記述されているSQLサーバモジュールを定義した<SQLサーバモジュール定義>の文字表現が切
捨てなしで表現できるならば,MODULE̲DEFINITIONの値は,その文字表現とする。
b) そうでなければ,MODULE̲DEFINITIONの値は,ナル値とする。
注記34 <SQLサーバモジュール定義>に含まれていたどの暗に想定される<列参照>も,
MODULE̲DEFINITION中では,陽に指定される<列参照>に置き換えられる。
5) 場合:
a) 記述されているSQLサーバモジュール中の<モジュール認可句>中にAUTHORIZATIONが指定さ
れていたならば,MODULE̲AUTHORIZATIONの値は,<モジュール認可識別子>とする。
b) そうでなければ,MODULE̲AUTHORIZATIONの値は,ナル値とする。
6) 場合:
a) この行によって記述されているSQLサーバモジュールを定義した<SQLサーバモジュール定義>
中に<SQLサーバモジュールパス指定>が指定され,かつ,<SQLサーバモジュールパス指定>の文
字表現が切捨てなしで表現できるならば,SQL̲PATHの値は,その文字表現とする。
b) そうでなければ,SQL̲PATHの値は,ナル値とする。
7) CREATEDの値は,次の値とする。
場合:
a) 機能T011“情報スキーマ中の時刻印”が提供され,かつ,記述されているSQLサーバモジュー
ルが作成された時点のCURRENT̲TIMESTAMPの値を処理系が分かっているならば,その値。
b) そうでなければ,ナル値。
20.5 ROUTINES実表
この細分箇条は,ISO/IEC 9075-11の“6.45 ROUTINES実表”を修正する。
機能
ROUTINES実表 (ROUTINES base table) は,各SQL呼出しルーチンに対して一つの行をもつ。
定義
【制約ROUTINES̲FOREIGN̲KEY̲USER̲DEFINED̲TYPESの直前にこの制約を挿入する。】
CONSTRAINT ROUTINES̲FOREIGN̲KEY̲MODULES
FOREIGN KEY ( MODULE̲CATALOG, MODULE̲SCHEMA, MODULE̲NAME )
REFERENCES MODULES
MATCH FULL,
記述
1) 【記述3) を置き換える。】場合:
87
X 3005-4:2019 (ISO/IEC 9075-4:2016)
a) 記述されているSQL呼出しルーチンがSQLサーバモジュール中で定義されていたならば,
MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEの値は,このSQLサーバモジ
ュールの完全修飾付きモジュール名とする。
b) そうでなければ,MODULE̲CATALOG,MODULE̲SCHEMA及びMODULE̲NAMEの値は,ナ
ル値とする。
20.6 SQL̲CONFORMANCE実表
この細分箇条は,ISO/IEC 9075-11の“6.48 SQL̲CONFORMANCE実表”を修正する。
機能
SQL̲CONFORMANCE実表 (SQL̲CONFORMANCE base table) は,この規格群によって識別される各適
合性要素(各規格,機能及び副機能)に対して一つの行をもつ。
定義
追加の定義なし。
記述
追加の記述なし。
表の内容
1) 【この規定を挿入する。】この規格の表6“選択機能の機能分類”中のどの行に対しても,この表中
に一つの行がある。そのような各行中では,次のとおりとする。
a) TYPEは,'FEATURE'とする。
b) IDは,この規格の表6“選択機能の機能分類”中の“機能ID”の値とする。
c) NAMEは,この規格の表6“選択機能の機能分類”中の“機能名”の値とする。
d) SUB̲ID及びSUB̲NAMEは,それぞれ,単一の空白文字から成る文字列とする。
e) IS̲SUPPORTED,IS̲VERIFIED̲BY及びCOMMENTSは,それぞれ,[ISO9075-11] の記述4),
記述5) 及び記述7) で記述しているとおりとする。
21 状態コード
この箇条は,ISO/IEC 9075-2の“24 状態コード”を修正する。
21.1 SQLSTATE
この細分箇条は,ISO/IEC 9075-2の“24.1 SQLSTATE”を修正する。
表3“SQLSTATEのクラス及びサブクラスのコード”は,[ISO 9075-2]の表38“SQLSTATEのクラス及び
サブクラスのコード”を修正する。
88
X 3005-4:2019 (ISO/IEC 9075-4:2016)
表3−SQLSTATEのクラス及びサブクラスのコード
カテゴリ
条件
クラス
部分条件
サブクラス
ISO/IEC 9075-2中の全ての代替手段
X
CASE文において実行する場合がな
かった
20
(サブクラスなし)
000
X
データ例外
22
(サブクラスなし)
000
フィールド参照でナル値
02A
X
診断例外
0Z
(サブクラスなし)
000
スタック中の診断情報が有効化されたハン
ドラなしでアクセスされた
002
X
ハンドラが有効でないときに
RESIGNALが実行された
0K
(サブクラスなし)
000
W
警告
01
(サブクラスなし)
000
X
処理されない利用者定義の例外
45
(サブクラスなし)
000
22 適合性
22.1 SQL/PSMに対する適合性の主張
[ISO9075-1] の“8 適合性”中の要件に加えて,この規格に対する適合性の主張は,次の主張でなけれ
ばならない。
1) 機能P002“計算完備性”に対する適合性の主張。
22.2 SQL/PSMに対するその他の適合性要件
この規格に対するその他の適合性要件はない。
22.3 SQL/PSMの前提機能の関係
表4−SQL/PSMの前提機能の関係
機能ID
機能名
前提機能ID
前提機能名
P001
格納モジュール
P002
計算完備性
P003
情報スキーマビュー
P001
格納モジュール
P004
拡張CASE文
P002
計算完備性
P005
修飾付きSQL変数参照
P002
計算完備性
P006
複数代入
P002
計算完備性
P007
拡張診断管理
P002
計算完備性
P008
単純CASE文中のコンマで区切られた述語 P002
計算完備性
89
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書A
(参考)
SQL適合性の要約
この附属書は,ISO/IEC 9075-2の“附属書A SQL適合性の要約”を修正する。
この附属書の内容は,機能ID及び細分箇条で順序付けて,全ての適合性規則を要約する。
表5“適合性規則の前に適用される構文上の変換”は,適合性規則を適用する前に適用される構文上の
変換を識別する。次の構文規則によって定義される構文上の変換が適合性規則の適用前に適用される。
表5−適合性規則の前に適用される構文上の変換
細分箇条及び構文規則
“15.6 <CASE文>”,構文規則1)
1) 機能F231“PRIVILEGES表”に対する規定
a) “19.2 MODULE̲PRIVILEGESビュー”
i)
機能F231“PRIVILEGES表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲PRIVILEGESを参照してはならない。
2) 機能F341“USAGE表”に対する規定
a) “19.1 MODULE̲COLUMN̲USAGEビュー”
i)
機能F341“USAGE表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COLUMN̲USAGEを参照してはならない。
b) “19.3 MODULE̲TABLE̲USAGEビュー”
i)
機能F341“USAGE表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲TABLE̲USAGEを参照してはならない。
c) “19.8 短い名前のビュー”
i)
機能F341“USAGE表”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COL̲USAGEを参照してはならない。
3) 機能F391“長い識別子”に対する規定
a) “19.1 MODULE̲COLUMN̲USAGEビュー”
i)
機能F391“長い識別子”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COLUMN̲USAGEを参照してはならない。
b) “19.4 MODULESビュー”
i)
機能F391“長い識別子”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA . MODULES
を参照してはならない。
4) 機能P001“格納モジュール”に対する規定
a) “10.21 <SQLサーバモジュール定義>”
i)
機能P001“格納モジュール”なしでは,適合するSQL言語は,<SQLサーバモジュール定義>
を含んではならない。
b) “10.22 <モジュール削除文>”
i)
機能P001“格納モジュール”なしでは,適合するSQL言語は,<モジュール削除文>を含んで
90
X 3005-4:2019 (ISO/IEC 9075-4:2016)
はならない。
c) “11.2 <権限>”
i)
機能P001“格納モジュール”なしでは,適合するSQL言語は,MODULEを含む<オブジェク
ト名>を含んではならない。
5) 機能P002“計算完備性”に対する規定
a) “15.1 <複合文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<複合文>を含んではならない。
b) “15.2 <ハンドラ宣言>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<ハンドラ宣言>を含んではならな
い。
c) “15.3 <条件宣言>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<条件宣言>を含んではならない。
d) “15.4 <SQL変数宣言>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<SQL変数宣言>を含んではならな
い。
e) “15.5 <代入文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<代入文>を含んではならない。
f)
“15.6 <CASE文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<CASE文>を含んではならない。
g) “15.7 <IF文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<IF文>を含んではならない。
h) “15.8 <ITERATE文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<ITERATE文>を含んではならない。
i)
“15.9 <LEAVE文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<LEAVE文>を含んではならない。
j)
“15.10 <LOOP文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<LOOP文>を含んではならない。
k) “15.11 <WHILE文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<WHILE文>を含んではならない。
l)
“15.12 <REPEAT文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<REPEAT文>を含んではならない。
m) “15.13 <FOR文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<FOR文>を含んではならない。
n) “18.2 <SIGNAL文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<SIGNAL文>を含んではならない。
o) “18.3 <RESIGNAL文>”
i)
機能P002“計算完備性”なしでは,適合するSQL言語は,<RESIGNAL文>を含んではならな
い。
6) 機能P003“情報スキーマビュー”に対する規定
a) “19.1 MODULE̲COLUMN̲USAGEビュー”
91
X 3005-4:2019 (ISO/IEC 9075-4:2016)
i)
機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COLUMN̲USAGEを参照してはならない。
b) “19.2 MODULE̲PRIVILEGESビュー”
i)
機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲PRIVILEGESを参照してはならない。
c) “19.3 MODULE̲TABLE̲USAGEビュー”
i)
機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲TABLE̲USAGEを参照してはならない。
d) “19.4 MODULESビュー”
i)
機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULESを参照してはならない。
e) “19.6 ROLE̲MODULE̲GRANTSビュー”
i)
機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
ROLE̲MODULE̲GRANTSを参照してはならない。
f)
“19.8 短い名前のビュー”
i)
機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULE̲COL̲USAGEを参照してはならない。
ii) 機能P003“情報スキーマビュー”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
MODULES̲Sを参照してはならない。
7) 機能P004“拡張CASE文”に対する規定
a) “15.6 <CASE文>”
i)
機能P004“拡張CASE文”なしでは,適合するSQL言語中で,<単純CASE文>に直に含まれ
る<CASEオペランド>,及び<単純CASE文WHEN句>に直に含まれる<WHENオペランドリス
ト>に直に含まれる<WHENオペランド>の両方が,単一の<共通値式>又は<ブール述語オペラ
ンド>である<行値構成子述語オペランド>である<行値述語オペランド>でなければならない。
8) 機能P005“修飾付きSQL変数参照”に対する規定
a) “6.2 <識別子鎖>”
i)
機能P005“修飾付きSQL変数参照”なしでは,適合するSQL言語は,最初の<識別子>が<複
合文>の<開始ラベル>であるSQL変数参照を含んではならない。
b) “7.2 <問合せ指定>”
i)
機能P005“修飾付きSQL変数参照”なしでは,適合するSQL言語は,最初の<識別子>が<複
合文>の<開始ラベル>である<アスタリスク付き識別子鎖>を含んではならない。
9) 機能P006“複数代入”に対する規定
a) “15.5 <代入文>”
i)
機能P006“複数代入”なしでは,適合するSQL言語は,<複数変数代入>を含んではならない。
10) 機能P007“拡張診断管理”に対する規定
a) “18.1 <GET DIAGNOSTICS文>”
i)
機能P007“拡張診断管理”なしでは,適合するSQL言語は,<どの領域>を含んではならない。
11) 機能P008“単純CASE文中のコンマで区切られた述語”に対する規定
a) “15.6 <CASE文>”
92
X 3005-4:2019 (ISO/IEC 9075-4:2016)
i)
機能P008“単純CASE文中のコンマで区切られた述語”なしでは,適合するSQL言語中で,<
単純CASE文WHEN句>に直に含まれる<WHENオペランドリスト>は,ただ一つの<WHENオ
ペランド>を単純に含まなければならない。
12) 機能T011“情報スキーマ中の時刻印”に対する規定
a) “19.4 MODULESビュー”
i)
機能T011“情報スキーマ中の時刻印”なしでは,適合するSQL言語は,
INFORMATION̲SCHEMA . MODULES.CREATEDを参照してはならない。
b) “19.8 短い名前のビュー”
i)
機能T011“情報スキーマ中の時刻印”なしでは,適合するSQL言語は,
INFORMATION̲SCHEMA . MODULES̲S . CREATEDを参照してはならない。
13) 機能T051“行型”に対する規定
a) “15.5 <代入文>”
i)
機能T051“行型”なしでは,適合するSQL言語は,<修正フィールド参照>を含んではならな
い。
14) 機能T332“拡張役割”に対する規定
a) “19.6 ROLE̲MODULE̲GRANTSビュー”
i)
機能T332“拡張役割”なしでは,適合するSQL言語は,INFORMATION̲SCHEMA .
ROLE̲MODULE̲GRANTSを参照してはならない。
93
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書B
(参考)
処理系定義要素
この附属書は,ISO/IEC 9075-2の“附属書B 処理系定義要素”を修正する。
この附属書は,この規格の本体で処理系定義として識別している機能を参照する。
1) “9.1 <ルーチン呼出し>”
a) RがSQLサーバモジュールSに含まれる外部ルーチンならば,SへのPの結合方法及び結合時機
は,処理系定義とする。
2) “9.2 <SQLSTATE値>”
a) <SQLSTATE値>に含まれる<文字列定数>の暗に想定されるか又は陽に指定する文字集合は,
SQLSTATEパラメタの値を戻す処理系定義の文字集合でなければならない。
b) <SQLSTATE値>に含まれる<文字列定数>の値は,処理系定義サブクラスコードが許される
SQLSTATEの規格定義クラスコードと,処理系定義サブクラスコードの形式をもつ3文字とから
成ってもよい。
c) <SQLSTATE値>に含まれる<文字列定数>の値は,最初の2文字が処理系定義クラスコードの形式
をもつ5文字から成ってもよい。
3) “10.21 <SQLサーバモジュール定義>”
a) <SQLサーバモジュールパス指定>が指定されないならば,<SQLサーバモジュール名>の陽に指定
されるか又は暗に想定される<スキーマ名>を含む処理系定義の<スキーマ名リスト>を含む<SQL
サーバモジュールパス指定>が暗に想定される。
4) “17.1 <SQL埋込みホストプログラム>”
a) <ホスト識別子>が<識別子>と等価かどうかは,処理系定義とする。
94
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書C
(参考)
処理系依存要素
この附属書は,ISO/IEC 9075-2の“附属書C 処理系依存要素”を修正する。
この附属書は,規格に適合するSQL処理系の動作が処理系依存であることを,この規格が陽に規定して
いる箇所を参照する。
1) “10.21 <SQLサーバモジュール定義>”
a) SQLサーバモジュールが実際には,陽に指定されるか又は暗に想定される<SQLサーバモジュー
ル文字集合指定>によって識別される文字集合以外の文字集合で表現されるならば,その効果は,
処理系依存とする。
2) “13.5 <SELECT文:単一行>”
a) <選択相手リスト>中の相手への値の代入の順序は,処理系依存とする。
3) “15.1 <複合文>”
a) 陽に指定される<開始ラベル>をもたない<複合文>の暗に想定される<開始ラベル>は,処理系依存
とする。
b) <複合文>の<局所宣言リスト>,<局所カーソル宣言リスト>及び<局所ハンドラ宣言リスト>中で指
定される変数,元祖SQLサーバカーソル及びハンドラが,処理系依存の順序で作成される。
4) “15.10 <LOOP文>”
a) 陽に指定される<開始ラベル>をもたない<LOOP文>の暗に想定される<開始ラベル>は,処理系依
存とする。
5) “15.11 <WHILE文>”
a) 陽に指定される<開始ラベル>をもたない<WHILE文>の暗に想定される<開始ラベル>は,処理系
依存とする。
6) “15.12 <REPEAT文>”
a) 陽に指定される<開始ラベル>をもたない<REPEAT文>の暗に想定される<開始ラベル>は,処理系
依存とする。
7) “15.13 <FOR文>”
a) 陽に指定される<開始ラベル>をもたない<FOR文>の暗に想定される<開始ラベル>は,処理系依
存とする。
b) <FOR文>の<LOOP文>への変換で用いる<カーソル名>は,診断情報を得るために<LOOP文>中で
用いる<条件名>及び<SQL変数名>と同様に,処理系依存とする。
95
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書D
(参考)
削除予定機能
この附属書は,ISO/IEC 9075-2の“附属書D 削除予定機能”を修正する。
次の機能については,この規格の改正で将来削除することを意図している。
なし。
96
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書E
(参考)
ISO/IEC 9075:2011との非互換性
この附属書は,ISO/IEC 9075-2の“附属書E ISO/IEC 9075:2011との非互換性”を修正する。
この規格のこの版は,ISO/IEC 9075-4:2011で規定されたデータベース言語SQLの前の版との幾つかの
非互換機能を導入する。
この附属書中で明記されていない限り,データベース言語SQLの機能及び能力は,ISO/IEC 9075-4:2011
と互換性がある。
なし。
97
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書F
(参考)
SQLの機能の分類
この附属書は,ISO/IEC 9075-2の“附属書F SQLの機能の分類”を修正する。
この附属書は,この規格中で規定している機能の分類を記述する。
表6“選択機能の機能分類”は,この規格中で規定している中核SQL でないSQL言語の機能の分類を
含む。
この表では,最初の列は,表の行の位置を素早く示すために用いてもよい項番を含む。その他の点では,
これらの値は,役に立たず,不変ではない。すなわち,これらの値は,JIS X 3005 (ISO/IEC 9075) 規格群
の将来の版において,又は技術的正誤票によってさえも予告なく変更されることがある。
この表の“機能ID”列は,表に含まれる各機能及び各副機能の正式な識別を示す。
この表の“機能名”列は,機能IDの値に関連付けられている機能又は副機能の簡潔な記述を含む。
表6“選択機能の機能分類”は,機能の定義を与えない。それらの機能の定義は,適合性規則中に含ま
れ,“附属書A SQL適合性の要約”中で更に要約されている。
98
X 3005-4:2019 (ISO/IEC 9075-4:2016)
表6−選択機能の機能分類
機能ID
機能名
1
P001
格納モジュール
2
P001-01
<SQLサーバモジュール定義>
3
P001-02
<モジュール削除文>
4
P002
計算完備性
5
P002-01
<複合文>
6
P002-02
<ハンドラ宣言>
7
P002-03
<条件宣言>
8
P002-04
<SQL変数宣言>
9
P002-05
<代入文>
10
P002-06
<CASE文>
11
P002-07
<IF文>
12
P002-08
<ITERATE文>
13
P002-09
<LEAVE文>
14
P002-10
<LOOP文>
15
P002-11
<REPEAT文>
16
P002-12
<WHILE文>
17
P002-13
<FOR文>
18
P002-14
<SIGNAL文>
19
P002-15
<RESIGNAL文>
20
P002-16
外部呼出し手続のSQL文としての<SQL制御文>
21
P003
情報スキーマビュー
22
P003-01
MODULESビュー
23
P003-02
MODULE̲TABLE̲USAGEビュー
24
P003-03
MODULE̲COLUMN̲USAGEビュー
25
P003-04
MODULE̲PRIVILEGESビュー
26
P004
拡張CASE文
27
P005
修飾付きSQL変数参照
28
P006
複数代入
29
P007
拡張診断管理
30
P008
単純CASE文中のコンマで区切られた述語
99
X 3005-4:2019 (ISO/IEC 9075-4:2016)
附属書G
(参考)
JIS X 3005 (ISO/IEC 9075) 規格群のこの版で取り込まれていない欠陥報告
この附属書中の各項目は,この規格の前の版で報告され,この版で残ったままになっている欠陥を記述
する。
1) “11.3 <REVOKE文>”
この細分箇条は,[ISO9075-2] の“12.7 <REVOKE文>”を拡張するが,トリガの<被トリガ動作>
が,(例えば,)あるスキーマオブジェクトを参照する<スカラ副問合せ>を含むSQL制御文であるか
もしれないという事実を考慮する拡張を,その細分箇条の一般規則19) に対して行うことに失敗し
ている。したがって,そのようなスキーマオブジェクトを破壊することになるSQL手続文の構文規
則及び一般規則は,その破壊の結果としてトリガが正しくなくなるかもしれないということを必ず
しも考慮していない。