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

785

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

注記 523  保存点水準の破壊は,その水準で確立されている既存の全ての保存点を破壊する。

d)  有効な,どの位置付け子も,無効とマーク付けされる。

e)

現行

SQL セションの文脈のスタック中の開いているどのカーソル CR に対しても,CR を CURSOR

として,

DESTROY を DISPOSITION として,“15.4  カーソルを閉じることの効果”の一般規則を

適用する。

f)

被準備文が解放されるかどうかは,処理系定義とする。

g)  現行 SQL トランザクションを終了させる。

h)  場合:

i) <ROLLBACK 文>が AND CHAIN を含むならば,SQL トランザクションが開始させる。SQL ト

ランザクションのどの分岐トランザクションも,終了したばかりの

SQL トランザクションの対

応する分岐と同じトランザクションアクセスモード,トランザクション隔離性水準及び診断領

域限界で開始させる。

ii)  そうでなければ,次による。

1)  現行 SQL セション文脈の現行トランザクションアクセスモード,現行トランザクション隔離

性水準及び現行条件領域限界には,それぞれ,現行

SQL セションの持続トランザクション特

性のトランザクションアクセスモード,トランザクション隔離性水準及び条件領域限界が設

定される。

2)  どの制約 に対しても,現行 SQL セション文脈中の の制約モードには,の制約記述子

に含まれる初期制約モードが設定される。

3) <SAVEPOINT 句>が指定されるならば,次による。

a) <保存点名>を とする。

b)  現行保存点水準内で確立された保存点を が指定しないならば,例外条件:保存点例外  (savepoint 

exception)  -  指定が正しくない  (invalid specification)  が引き起こされる。

c)

基本単位の実行文脈が動作中で,かつ,最も新しい基本単位の実行文脈の開始前に確立された保

存点を が指定するならば,例外条件:保存点例外  -  指定が正しくない  が引き起こされる。

d)  の確立の後で現行 SQL トランザクションによってなされた SQL データ又はスキーマに対する全

ての変更が取り消される。

e)

の確立の後で現行 SQL トランザクションによって確立された全ての保存点が破壊される。

注記 524  保存点水準の破壊は,その水準で確立されている既存の全ての保存点を破壊する。

f)

の確立の後で現行 SQL トランザクション中で生成された有効な,どの位置付け子も,無効とマ

ーク付けされる。

g)  現行 SQL セションの文脈のスタック中の保持可能カーソルでない開いているどのカーソルに対

しても,CR を CURSOR として,DESTROY を DISPOSITION として,“15.4  カーソルを閉じるこ

との効果”の一般規則を適用する。

h)  の確立前に現行 SQL トランザクションによって開かれた,

現行

SQL セションの文脈のスタック

中の開いているカーソルの状態は,処理系定義とする。

i)

の確立前に準備された被準備文が解放されるかどうかは,処理系定義とする。

j)

の確立の後で準備された被準備文が解放されるかどうかは,処理系定義とする。

注記 525  現行 SQL トランザクションは,終了しないし,SQL データ又はスキーマに関する他の効

果はない。


786

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

適合性規則

1)  機能 T271“保存点”なしでは,適合する SQL 言語は,<SAVEPOINT 句>を含んではならない。

2)  機能 T261

“連鎖トランザクション”なしでは,

適合する

SQL 言語は,CHAIN を直に含む<ROLLBACK

>を含んではならない。

18  コネクション管理

18.1  <CONNECT 文>

機能

<CONNECT 文> (<connect statement>)  は,SQL セションを確立する。

形式

<CONNECT 文> ::=

  CONNECT  TO  <コネクション相手>

<コネクション相手> ::=

  <SQL サーバ名> [ AS <コネクション名> ] [ USER <コネクション利用者名> ]

 |

DEFAULT

構文規則

1) <コネクション利用者名>が指定されないならば,SQL コネクションに対する処理系定義の<コネク

ション利用者名

>が暗に想定される。

アクセス規則

なし。 

一般規則

1)  現行 SQL トランザクションによって実行される最初のトランザクション開始 SQL 文の後で

<CONNECT 文>が実行され,二つ以上の SQL サーバに影響を与えるトランザクションを,SQL 処

理系が提供していないならば,例外条件:

サポートされていない機能  (feature not supported)  -  複

数サーバトランザクション  (multiple server transactions)  が引き起こされる。

2) <コネクション利用者名>が指定されるならば,<コネクション利用者名>を とし,次の TRIM 関数

の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

3) <利用者識別子>の形式及び構文規則に が適合しないならば,例外条件:認可指定が正しくない

(invalid authorization specification)  が引き起こされる。

4) <CONNECT 文>を含む<外部呼出し手続>を含む SQL クライアントモジュールが<モジュール認可識

別子

>を指定するならば,<コネクション利用者名>の値に関する他の制限と同じように,<コネクシ

ョン利用者名

>がその<モジュール認可識別子>と同一でなければならないかどうかは,処理系定義

とする。そうでなければ,

<コネクション利用者名>の値に関する制限は,処理系定義とする。

5) <コネクション利用者名>の値が処理系定義の制限に適合しないならば,例外条件:認可指定が正し

くない  が引き起こされる。

6) <コネクション名>が指定されたならば,<コネクション名>に直に含まれる<単純値指定>を CV とす

る。

DEFAULT も,<コネクション名>も,指定されなかったならば,<SQL サーバ名>を CV とする。

次の

TRIM 関数の結果を CN とする。

TRIM ( BOTH ' ' FROM CV )


787

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

<識別子>の形式及び構文規則に CN が適合しないならば,例外条件:コネクション名が正しくない

(invalid connection name)  が引き起こされる。

7)  名前 CN をもつ SQL コネクションが現行の SQL エージェントによって既に確立されていて,切断

されていないか,又は

DEFAULT が指定され,既定 SQL コネクションが現行の SQL エージェント

によって既に確立されていて,切断されていないならば,例外条件:

コネクション例外  (connection 

exception)  -  使用中のコネクション名  (connection name in use)  が引き起こされる。

8)  場合:

a) DEFAULT が指定されるならば,既定 SQL セションが開始され,既定 SQL サーバに関連付けられ

る。既定

SQL サーバを決定する方法は,処理系定義とする。

b)  そうでなければ,SQL セションが開始され,<SQL サーバ名>によって識別される SQL サーバに

関連付けられる。適切な

SQL サーバを決定するために<SQL サーバ名>を用いる方法は,処理系

定義とする。

9) <CONNECT 文>が SQL セションの開始に成功するならば,次による。

a)  現行 SQL コネクション CC 及び現行 SQL セションがあるならば,それらは,それぞれ,休眠 SQL

コネクション及び休眠

SQL セションになる。CC に対する SQL セション文脈は,保存され,開始

された

SQL コネクション上で行われる操作によって,どのような影響も受けない。

注記 526 SQL セション文脈は,“4.38 SQL セション”で定義している。

b) <CONNECT 文>によって開始された SQL セションは,現行 SQL セションになり,その SQL セシ

ョンに対して確立された

SQL コネクションは,現行 SQL コネクションになる。

c)

現行

SQL セションの持続トランザクション特性のトランザクションアクセスモード,トランザク

ション隔離性水準及び条件領域限界は,それぞれ,読み書き可能,

SERIALIZABLE,及び 1 以上

の処理系依存の値とする。

注記 527 <CONNECT 文>が SQL セションの開始に失敗するならば,現行 SQL コネクション及び

現行

SQL セションがあるとき,それらは,変更されないままである。

10) SQL クライアントが SQL コネクションを確立できないならば,

例外条件:

コネクション例外  -  SQL

クライアントが SQL コネクションを確立できない  (SQL-client unable to establish SQL-connection)  が

引き起こされる。

11) SQL サーバが SQL コネクションの確立を拒絶するならば,例外条件:コネクション例外  -  SQL

サーバが SQL コネクションの確立を拒絶した  (SQL-server rejected establishment of SQL-connection)

が引き起こされる。

12) SQL エージェントに関連付けられたどの SQL クライアントモジュール中の<外部呼出し手続>の後

続する実行に対しても,

SQL サーバには,<SQL サーバ名>によって識別される SQL サーバが設定

される。

13)  現行 SQL セションの現行 SQL セション文脈は,次のとおりに,初期化される。

a)  認可スタックには,利用者識別子の<コネクション利用者名>を含む単一のセルが設定される。

b)  現行トランザクションアクセスモード,現行トランザクション隔離性水準及び現行条件領域限界

には,それぞれ,現行

SQL セションの持続トランザクション特性のトランザクションアクセスモ

ード,トランザクション隔離性水準及び条件領域限界が設定される。

14)  新しい保存点水準が確立される。

適合性規則


788

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

1)  機能 F771“コネクション管理”なしでは,適合する SQL 言語は,<CONNECT 文>を含んではなら

ない。

18.2  <SET CONNECTION 文>

機能

<SET CONNECTION 文> (<set connection statement>)  は,利用可能な SQL コネクションから一つの SQL

コネクションを選択する。

形式

<SET CONNECTION 文> ::=

  SET  CONNECTION  <コネクション対象>

<コネクション対象> ::=

  DEFAULT

 |

<コネクション名>

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  現行 SQL トランザクションによって実行される最初のトランザクション開始 SQL 文の後で,<SET

CONNECTION 文>が実行され,二つ以上の SQL サーバに影響を与えるトランザクションを,SQL

処理系が提供していないならば,例外条件:

サポートされていない機能  (feature not supported)  -  複

数サーバトランザクション  (multiple server transactions)  が引き起こされる。

2)  場合:

a) DEFAULT が指定され,現行の SQL エージェントに対して現行又は休眠である既定 SQL コネクシ

ョンが存在しないならば,例外条件:

コネクション例外  (connection exception)  -  コネクション

が存在しない  (connection does not exist)  が引き起こされる。

b)  そうでなければ,現行の SQL エージェントに対して現行又は休眠である SQL セションを<コネク

ション名

>が識別しないならば,例外条件:コネクション例外  -  コネクションが存在しない  が

引き起こされる。

3) <コネクション対象>によって識別される SQL コネクションを選択できないならば,例外条件:コネ

クション例外  -  コネクション失敗  (connection failure)  が引き起こされる。

4)  現行 SQL コネクション及び現行 SQL セションは,それぞれ,休眠 SQL コネクション及び休眠 SQL

セションになる。

SQL セション文脈は,保存され,選択された SQL コネクション上で行われる操作

によって,どのような影響も受けない。

注記 528 SQL セション文脈は,“4.38 SQL セション”で定義している。

5) <コネクション対象>によって識別される SQL コネクションは,現行 SQL コネクションになり,そ

SQL コネクションに関連付けられた SQL セションは,現行 SQL セションになる。SQL コネクシ

ョンが休眠になった時点と同じ状態に,

SQL セション文脈が復元される。

注記 529 SQL セション文脈は,“4.38 SQL セション”で定義している。

6) SQL エージェントに関連付けられたどの SQL クライアントモジュール中の<外部呼出し手続>の後

続する実行に対しても,

SQL サーバには,現行 SQL コネクションの SQL サーバが設定される。


789

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

適合性規則

1)  機能 F771“コネクション管理”なしでは,適合する SQL 言語は,<SET CONNECTION 文>を含ん

ではならない。

18.3  <DISCONNECT 文>

機能

<DISCONNECT 文> (<disconnect statement>)  は,SQL コネクションを終了させる。

形式

<DISCONNECT 文> ::=

  DISCONNECT  <切断対象>

<切断対象> ::=

  <コネクション対象>

 |

ALL

 |

CURRENT

構文規則

なし。 

アクセス規則

なし。 

一般規則

1) <コネクション名>が指定され,<コネクション名>が現行の SQL エージェントに対して現行又は休

眠である

SQL コネクションを識別しないならば,例外条件:コネクション例外  (connection exception)

  コネクションが存在しない  (connection does not exist)  が引き起こされる。

2) DEFAULT が指定され,現行の SQL エージェントに対して現行又は休眠である既定 SQL コネクショ

ンが存在しないならば,例外条件:

コネクション例外  -  コネクションが存在しない  が引き起こさ

れる。

3) CURRENT が指定され,現行の SQL エージェントに対して現行 SQL コネクションが存在しないな

らば,例外条件:

コネクション例外  -  コネクションが存在しない  が引き起こされる。

4)  現行 SQL コネクションを とする。

5) SQL コネクションのリストを とする。<コネクション名>が指定されるならば,は,その SQL

コネクションとする。

CURRENT が指定されるならば,は,現行 SQL コネクションとする。ALL

が指定されるならば,は,現行の SQL エージェントに対して現行又は休眠である全ての SQL コ

ネクションを,処理系依存の順序で表現するリストとする。

DEFAULT が指定されるならば,は,

既定

SQL コネクションとする。

6)  中のいずれかの SQL コネクションが動作中ならば,例外条件:トランザクション状態が正しくな

い  (invalid transaction state)  -  SQL トランザクションが動作中  (active SQL-transaction)  が引き起こ

される。

7)  中のどの SQL コネクション C1 に対しても,C1 によって識別される SQL セション S1 を現行 SQL

セションとして扱って,

SQL エージェントによる<外部呼出し手続>の最後の呼出しの後で必要とな

る動作の全てが,

<ROLLBACK 文>又は<COMMIT 文>の実行を除いて,実行される。C1 は,切断

処理中に引き起こされるかもしれない例外条件にかかわらず,終了する。

注記 530 SQL エージェントによる<外部呼出し手続>の最後の呼出しの後に実行される動作に関


790

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

しては,“13.1 <SQL クライアントモジュール定義>”の一般規則参照。

8) <DISCONNECT 文>の実行中に誤りが検知されるならば,終了条件:警告  (warning)  -  切断誤り

(disconnect error)  が引き起こされる。

9)  が に含まれるならば,

<DISCONNECT 文>の実行に続く現行 SQL コネクションは,存在しない。

そうでなければ,は,現行 SQL コネクションのままとする。

適合性規則

1)  機能 F771“コネクション管理”なしでは,適合する SQL 言語は,<DISCONNECT 文>を含んではな

らない。

19  セション管理

この箇条は,ISO/IEC 9075-9 の“16  セション管理”によって修正される。

この箇条は,ISO/IEC 9075-14 の“16  セション管理”によって修正される。

19.1  <SET SESSION CHARACTERISTICS 文>

機能

<SET SESSION CHARACTERISTICS 文> (<set session characteristics statement>)  は,現行 SQL セションの

一つ以上の特性を設定する。

形式

<SET SESSION CHARACTERISTICS 文> ::=

  SET SESSION CHARACTERISTICS AS <セション特性リスト>

<セション特性リスト> ::=

  <セション特性> [ { <コンマ> <セション特性> }... ]

<セション特性> ::=

  <セショントランザクション特性>

<セショントランザクション特性> ::=

  TRANSACTION  <トランザクションモード> [ { <コンマ> <トランザクションモード> }... ]

構文規則

1) <セショントランザクション特性>は,高々一つの<隔離性水準指定>,高々一つの<トランザクショ

ンアクセスモード

>及び高々一つの<診断領域サイズ>を含まなければならない。

アクセス規則

なし。 

一般規則

1) <セショントランザクション特性>を SCL とする。現行 SQL セションの持続セション特性を ESC 

する。

2)  SCL が<隔離性水準指定> IL を含むならば,ESC のトランザクション隔離性水準には,IL に含まれ

<隔離性水準>が設定される。

3)  SCL が<トランザクションアクセスモード> AM を含むならば,ESC のトランザクションアクセスモ

ードには,AM が READ ONLY を含むか又は READ WRITE を含むかに従って,それぞれ,読込み専

用又は読み書き可能が設定される。

4)  SCL が<診断領域サイズ>  DS を含むならば,ESC の条件領域限界には,DS に含まれる<条件数>が

設定される。


791

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

適合性規則

1)  機能 F761“セション管理”なしでは,適合する SQL 言語は,<SET SESSION CHARACTERISTICS

>を含んではならない。

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

機能

<セション利用者識別子設定文> (<set session user identifier statement>)  は,現行 SQL セション文脈の SQL

セション利用者識別子及び現行利用者識別子を設定する。

形式

<セション利用者識別子設定文> ::=

  SET SESSION AUTHORIZATION <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

アクセス規則

なし。 

一般規則

1) <セション利用者識別子設定文>が実行され,SQL トランザクションが現在動作中ならば,例外条

件:

トランザクション状態が正しくない  (invalid transaction state)  -  SQL トランザクションが動作

中  (active SQL-transaction)  が引き起こされる。

2) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

3) <認可識別子>の形式及び構文規則に が適合しないならば,例外条件:認可指定が正しくない

(invalid authorization specification)  が引き起こされる。

4)  が,現行 SQL セション文脈の SQL セション利用者識別子の現在の値と等しくないならば,

対して許される値に関する制限は,処理系定義とする。

5)  利用者識別子に を設定することを,現行利用者識別子及び現行役割名が制限されているならば,

例外条件:

認可指定が正しくない  が引き起こされる。

6)  現行 SQL セション文脈の SQL セション利用者識別子には,が設定される。

7)  現行利用者識別子には,が設定される。

8)  現行役割名は,取り除かれる。

注記 531  現行役割名は,SQL セション役割名でもある。

適合性規則

1)  機能 F321“利用者認可”なしでは,適合する SQL 言語は,<セション利用者識別子設定文>を含ん

ではならない。

19.3  <SET ROLE 文>

機能

<SET ROLE 文> (<set role statement>)  は,現行 SQL セション文脈の SQL セション役割名及び現行役割名

を設定する。

形式

<SET ROLE 文> ::=

  SET  ROLE  <役割指定>


792

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

<役割指定> ::=

  <値指定>

 |

NONE

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

アクセス規則

なし。 

一般規則

1) <SET

ROLE 文>が実行され,SQL トランザクションが現在動作中ならば,例外条件:トランザクシ

ョン状態が正しくない   (invalid transaction state)  -  SQL トランザクションが動作中  (active 

SQL-transaction)  が引き起こされる。

2)  現行利用者識別子が存在しないならば,例外条件:役割指定が正しくない  (invalid role specification)

が引き起こされる。

3) <役割指定>が<値指定>を含むならば,次による。

a) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

b) <役割名>の形式及び構文規則に が適合しないならば,例外条件:役割指定が正しくない  が引

き起こされる。

c)

によって識別される役割が現行利用者識別子又は PUBLIC のいずれかに付与されたことを示す

役割認可記述子が存在しないならば,例外条件:

役割指定が正しくない  が引き起こされる。

d) SQL セション役割名及び現行役割名には,が設定される。

4) NONE が指定されるならば,現行役割名が取り除かれる。

適合性規則

1)  機能 T331“基本役割”なしでは,適合する SQL 言語は,<SET ROLE 文>を含んではならない。

19.4  <地方時刻帯設定文>

機能

<地方時刻帯設定文> (<set local time zone statement>)  は,現行 SQL セションに対する現行既定時刻帯時

差を設定する。

形式

<地方時刻帯設定文> ::=

  SET TIME ZONE <時刻帯値設定>

<時刻帯値設定> ::=

  <時間隔値式>

 |

LOCAL

構文規則

1) <時刻帯値設定>に直に含まれる<時間隔値式>の宣言型は,INTERVAL HOUR TO MINUTE でなけれ

ばならない。

アクセス規則

なし。 

一般規則


793

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

1)  場合:

a) LOCAL が指定されるならば,現行 SQL セションの現行既定時刻帯時差には,現行 SQL セション

の原時刻帯時差が設定される。

b)  そうでなければ,次による。

場合:

i) <時間隔値式>の値がナル値でなく,INTERVAL –'14:00'  から INTERVAL +'14:00'までの範囲にあ

るならば,現行

SQL セションの現行既定時刻帯時差には,<時間隔値式>の値が設定される。

ii)  そうでなければ,例外条件:データ例外  (data exception)  -  時刻帯時差値が正しくない  (invalid 

time zone displacement value)  が引き起こされる。

適合性規則

1)  機能 F411“時刻帯指定”なしでは,適合する SQL 言語は,<地方時刻帯設定文>を含んではならな

い。

19.5  <SET CATALOG 文>

機能

<SET CATALOG 文> (<set catalog statement>)  は,<EXECUTE IMMEDIATE 文>又は<PREPARE 文>によっ

て現行

SQL セション中で準備される<準備可能文>中,及び直接起動される<直接 SQL 文>中の修飾なし<

スキーマ名

>の既定カタログ名を設定する。

形式

<SET CATALOG 文> ::=

  SET  <カタログ名特性>

<カタログ名特性> ::=

  CATALOG  <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

アクセス規則

なし。 

一般規則

1) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

2) <カタログ名>の形式及び構文規則に が適合しないならば,例外条件:カタログ名が正しくない

(invalid catalog name)  が引き起こされる。

3)  現行 SQL セションの既定カタログ名には,が設定される。

適合性規則

1)  機能 F651“カタログ名修飾子”なしでは,適合する SQL 言語は,<SET CATALOG 文>を含んでは

ならない。

2)  機能 F761“セション管理”なしでは,適合する SQL 言語は,<SET CATALOG 文>を含んではなら

ない。

19.6  <SET SCHEMA 文>

機能

<SET SCHEMA 文> (<set schema statement>)  は,<EXECUTE IMMEDIATE 文>又は<PREPARE 文>によっ


794

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

て現行

SQL セション中で準備される<準備可能文>中,及び直接起動される<直接 SQL 文>中の修飾なし<

スキーマ修飾付き名前

>の既定スキーマ名を設定する。

形式

<SET SCHEMA 文> ::=

  SET  <スキーマ名特性>

<スキーマ名特性> ::=

  SCHEMA  <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

アクセス規則

なし。 

一般規則

1) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

2) <スキーマ名>の形式及び構文規則に が適合しないならば,例外条件:スキーマ名が正しくない

(invalid schema name)  が引き起こされる。

3)  場合:

a) <カタログ名>を含む<スキーマ名>に対する形式及び構文規則に が適合するならば,の<カタ

ログ名

>の部分を とし,<修飾なしスキーマ名>の部分を とする。次の文が暗に実行され,

SET CATALOG 'X'

<SET SCHEMA 文>は,次の文によって実効的に置き換えられる。

SET SCHEMA 'Y'

b)  そうでなければ,現行 SQL セションの既定修飾なしスキーマ名には,が設定される。

適合性規則

1)  機能 F761“セション管理”なしでは,適合する SQL 言語は,<SET SCHEMA 文>を含んではならな

い。

19.7  <SET NAMES 文>

機能

<SET NAMES 文> (<set names statement>)  は,<EXECUTE IMMEDIATE 文>又は<PREPARE 文>によって

現行

SQL セション中で準備される<準備可能文>中,及び直接起動される<直接 SQL 文>中の<文字列定数>

の既定文字集合名を設定する。

形式

<SET NAMES 文> ::=

  SET  <文字集合名特性>

<文字集合名特性> ::=

  NAMES  <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

アクセス規則

なし。 


795

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

一般規則

1) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

2) <文字集合名>の形式及び構文規則に が適合しないならば,例外条件:文字集合名が正しくない

(invalid character set name)  が引き起こされる。

3)  現行 SQL セションの既定文字集合名には,が設定される。

適合性規則

1)  機能 F461“名前付き文字集合”なしでは,適合する SQL 言語は,<SET NAMES 文>を含んではな

らない。

2)  機能 F761“セション管理”なしでは,適合する SQL 言語は,<SET NAMES 文>を含んではならな

い。

19.8  <SET PATH 文>

機能

<SET PATH 文> (<set path statement>)  は,<EXECUTE IMMEDIATE 文>又は<PREPARE 文>によって現行

SQL セション中で準備される<準備可能文>中,及び直接起動される<直接 SQL 文>中の,修飾なし<ルーチ

ン名

>をもつ<ルーチン呼出し>の,当該ルーチンを決定するための SQL パスを設定する。この SQL パスは,

別の

SQL パスの設定が成功するまでは,SQL セションの現行 SQL パスのままとする。

形式

<SET PATH 文> ::=

  SET  <SQL パス特性>

<SQL パス特性> ::=

  PATH  <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

アクセス規則

なし。 

一般規則

1) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM ( BOTH ' ' FROM S )

a) <スキーマ名リスト>の形式及び構文規則に が適合しないならば,例外条件:スキーマ名リスト

の指定が正しくない  (invalid schema name list specification)  が引き起こされる。

b)  現行 SQL セションの SQL パスには,が設定される。

注記 532 <PREPARE 文>と<EXECUTE 文>との間に実行される<SET PATH 文>は,被準備文に対し

てどんな効果も与えない。

適合性規則

1)  機能 S071“関数及び型の名前解決での SQL パス”なしでは,適合する SQL 言語は,<SET PATH 文

>を含んではならない。

19.9  <SET TRANSFORM GROUP 文>

機能

<SET TRANSFORM GROUP 文> (<set transform group statement>)  は,利用者定義型の値を既定義データ


796

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

型に対応付けるための変換関数のグループを識別するグループ名を設定する。

形式

<SET TRANSFORM GROUP 文> ::=

  SET  <変換グループ特性>

<変換グループ特性> ::=

  DEFAULT TRANSFORM GROUP <値指定>

| TRANSFORM GROUP FOR TYPE <パス解決利用者定義型名> <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。

2) <パス解決利用者定義型名>が指定されるならば,<パス解決利用者定義型名>によって識別される利

用者定義型を UDT とする。

アクセス規則

なし。 

一般規則

1) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM( BOTH ' ' FROM S )

a) <グループ名>の形式及び構文規則に が適合しないならば,例外条件:変換グループ名指定が正

しくない  (invalid transform group name specification)  が引き起こされる。

b)  場合:

i) <パス解決利用者定義型名>が指定されるならば,現行 SQL セションに対する,UDT の全ての

下位型に対応する変換グループ名には,が設定される。

ii)  そうでなければ,現行 SQL セションに対する既定変換グループ名には,が設定される。

注記 533 <PREPARE 文>の後に実行される<SQL TRANSFORM GROUP 文>は,被準備文に対して

どんな効果も与えない。

適合性規則

1)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<SQL TRANSFORM GROUP 文>を含んで

はならない。

19.10

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

機能

<セション照合順設定文> (<set session collation statement>)  は,一つ以上の文字集合に対する SQL セショ

ンの

SQL セション照合順を設定する。SQL セション照合順は,同じ文字集合に対する別の SQL セション

照合順の設定が成功するまでは,実効的なままとする。

形式

<セション照合順設定文> ::=

  SET  COLLATION  <照合順指定> [ FOR <文字集合指定リスト> ]

| SET NO COLLATION [ FOR <文字集合指定リスト> ]

<照合順指定>  ::=

  <値指定>

構文規則

1) <値指定>の宣言型は,文字列型でなければならない。


797

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

アクセス規則

なし。 

一般規則

1) <値指定>を とし,次の TRIM 関数の値である文字列を とする。

TRIM( BOTH ' ' FROM S )

a) <照合順名>の形式及び構文規則に が適合しないならば,例外条件:照合順名が正しくない

(invalid collation name)  が引き起こされる。

b)  に含まれる<照合順名>によって識別される照合順を CO とする。

場合:

i) <文字集合指定リスト>が指定されるならば,次による。

場合:

1)  CO によって識別される照合順が,<文字集合指定>によって識別されるいずれかの文字集合

に適用可能でないならば,例外条件:

照合順名が正しくない  が引き起こされる。

2)  そうでなければ,指定される各文字集合に対して,現行 SQL セション中のその文字集合に対

する

SQL セション照合順には,CO が設定される。

ii)  そうでなければ,SQL セション照合順に CO が設定される文字集合は,処理系定義とする。

2) SET

NO

COLLATION が指定されるならば,次による。

場合:

a) <文字集合指定リスト>が指定されるならば,指定される各文字集合に対して,現行 SQL セション

中のその文字集合に対する

SQL セション照合順には,なし  が設定される。

b)  そうでなければ,

現行

SQL セション中の全ての文字集合に対する SQL セション照合順に,なし  が

設定される。

適合性規則

1)  機能 F693“SQL セション及びクライアントモジュールの照合順”なしでは,適合する SQL 言語は,

<セション照合順設定文>を含んではならない。

20  動的 SQL

20.1  SQL 記述子領域の記述

この細分箇条は,ISO/IEC 9075-9 の“17.1 SQL 記述子領域の記述”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“17.1 SQL 記述子領域の記述”によって修正される。 

機能

SQL 記述子領域の記述  (Description of SQL descriptor areas)  は,SQL 項目記述子領域中で用いる識別子,

データ型及びコードを規定する。

構文規則

1) SQL 項目記述子領域は,表 24“SQL 項目記述子領域中で用いる<キーワード>のデータ型”で規定

する項目から成る。

2) SQL 記述子領域は,表 23“SQL 記述子領域のヘッダ中で用いる<キーワード>のデータ型”で規定

する項目,及び一つ以上の

SQL 項目記述子領域から成る。

3) LEVEL の値が の SQL 項目記述子領域 IDA が与えられると,IDA の直に下位にある記述子領域

(immediately subordinate descriptor area)  は,LEVEL の値が N+1 で,かつ,SQL 記述子領域中の位置


798

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

が IDA の位置の後に続き,LEVEL の値が N+1 未満の SQL 項目記述子領域の位置より前にある SQL

項目記述子領域とする。

IDA の下位にある記述子領域  (subordinate descriptor area)  は,IDA の直に下位にある記述子領域,

又は IDA の直に下位にある SQL 項目記述子領域の下位にある記述子領域とする。

4)  データ型 DT 及びそれの記述子 DE が与えられると,DE の直に下位にある記述子  (immediately 

subordinate descriptor)  が次のとおり定義される。

場合:

a)  DT が行型ならば,DT のフィールドのフィールド記述子とする。番目の直に下位にある記述子

は,DT の 番目のフィールドの記述子とする。

b)  DT が集まり型ならば,DT の関連する要素型の記述子とする。

DE の下位にある記述子  (subordinate descriptor)  は,DE の直に下位にある記述子か,又は DE の直

に下位にある記述子の下位にある記述子かのいずれかである記述子とする。

5)  記述子 DE が与えられると,それの 番目の直に下位にある記述子を SDEj で表現する。DE の下位

にある記述子には,暗に想定される次のような順序付けがある。

a)  SDE

1

は,

1 番目の順序位置にある。

b)  SDEj+

1

の順序位置は,K + NS +1 である。ここで,は,SDEj の順序位置とし,NS は,SDEj

の下位にある記述子の個数とする。SDEj の暗に順序付けられた下位にある記述子は,K+1 の位置
から始まる連続する順序位置を占める。

6)  項目記述子領域 IDA が正しいことは,表 25“動的 SQL 中で SQL データ型のために用いるコード”

で定義されるコードを

TYPE が示し,かつ,次のうちの一つが真であることと同値とする。

場合:

a) TYPE が CHARACTER,CHARACTER VARYING 又は CHARACTER LARGE OBJECT を示し,

LENGTH が , TYPE に 対 し て 正 し い 長 さ の 値 で , か つ , CHARACTER_SET_CATALOG ,

CHRACTER_SET_SCHEMA 及び CHARACTER_SET_NAME が TYPE に対して正しい文字集合の

完全修飾付きの名前である。

b) TYPE が CHARACTER LARGE OBJECT LOCATOR を示す。

c) TYPE が BINARY,BINARY VARYING 又は BINARY LARGE OBJECT を示し,かつ,LENGTH が

TYPE に対して正しい長さの値である。

d) TYPE が BINARY LARGE OBJECT LOCATOR を示す。

e) TYPE が NUMERIC を示し,かつ,PRECISION 及び SCALE が NUMERIC データ型に対して正し

い精度及び位取りの値である。

f) TYPE が DECIMAL を示し,かつ,PRECISION 及び SCALE が DECIMAL データ型に対して正し

い精度及び位取りの値である。

g) TYPE が SMALLINT,INTEGER,BIGINT,REAL 又は DOUBLE PRECISION を示す。

h) TYPE が FLOAT を示し,かつ,PRECISION が FLOAT データ型に対して正しい精度の値である。

i) TYPE が BOOLEAN を示す。

j) TYPE が<日時型>を示し,DATETIME_INTERVAL_CODE が,表 26“動的 SQL 中で日時データ型

に関連付けられるコード”で規定するコードで,かつ,

PRECISION が,示された日時データ型の

<時刻精度>又は<時刻印精度>に対して正しい値である。

k) TYPE が<時間隔型>を示し,DATETIME_INTERVAL_CODE が,表 27“動的 SQL 中で<時間隔修


799

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

飾子

>のために用いるコード”で規定するコードで,かつ,DATETIME_INTERVAL_PRECISION

及び

PRECISION が,<時間隔修飾子>に対する<時間隔先行フィールド精度>及び<時間隔小数秒精

>に対して正しい値である。

l) TYPE が USER-DEFINED TYPE LOCATOR を示し,かつ,USER_DEFINED_TYPE_CATALOG,

USER_DEFINED_TYPE_SCHEMA 及び USER_DEFINED_TYPE_NAME が,正しい利用者定義型の

完全修飾付きの名前である。

m) TYPE が REF を 示 し , LENGTH が , REF 型 に 対 す る オ ク テ ッ ト 単 位 の 長 さ で ,

USER_DEFINED_TYPE_CATALOG

USER_DEFINED_TYPE_SCHEMA

USER_DEFINED_TYPE_NAME が , 正 し い 完 全 修 飾 付 き 利 用 者 定 義 型 名 で , か つ ,

SCOPE_CATALOG,SCOPE_SCHEMA 及び SCOPE_NAME が,正しい完全修飾付き表名である。

n) TYPE が ROW を示し,DEGREE の値 が,行型の次数に対して正しい値で,IDA の直に下位に

ある記述子領域が正確に 個あり,かつ,それらの SQL 項目記述子領域が正しい。

o) TYPE が ARRAY 又は ARRAY LOCATOR を示し,CARDINALITY の値が,配列の基数に対して正

しい値で,IDA の直に下位にある記述子領域がただ一つあり,かつ,その SQL 項目記述子領域が

正しい。

p) TYPE が MULTISET 又は MULTISET LOCATOR を示し,IDA の直に下位にある記述子領域がただ

一つあり,かつ,その

SQL 項目記述子領域が正しい。

q)

09

 TYPE が処理系定義のデータ型を示す。

7) <単純値指定>又は<単純相手指定>  SVT の宣言型 が,正しい項目記述子領域 IDA によって指定さ

れるデータ型と

一致する  (match)  ということは,次の条件のうちの一つが真であることと同値とす

る。

場合:

a) TYPE が CHARACTER を 示 し , か つ , が CHARACTER(L)  に よ っ て 指 定 さ れ , か つ ,

CHARACTER_SET_CATALOG,CHRACTER_SET_SCHEMA 及び CHARACTER_SET_NAME の値

によって形成される

<文字集合指定>が,SVT の文字集合を識別する。ここで,は,LENGTH の

値とする。

b) TYPE が CHARACTER VARYING を示し,かつ,が CHARACTER VARYING(L)  によって指定さ

れるか,又は

TYPE が CHARACTER LARGE OBJECT を示し,かつ,が CHARACTER LARGE

OBJECT(L)  に よ っ て 指 定 さ れ る か の い ず れ か で , CHARACTER_SET_CATALOG ,

CHRACTER_SET_SCHEMA 及び CHARACTER_SET_NAME の値によって形成される<文字集合指

>が SVT の文字集合を識別し,かつ,次の条件が成り立つ。

場合:

i)

SVT が<単純値指定>で,かつ,が LENGTH の値である。

ii)  SVT が<単純相手指定>で,かつ,が LENGTH の値以上である。

c) TYPE が CHARACTER LARGE OBJECT LOCATOR を示し,かつ,が CHARACTER LARGE

OBJECT LOCATOR によって指定される。

d) TYPE が BINARY を示し,かつ,が BINARY (L)  によって指定される。ここで,は,LENGTH

の値とする。

e) TYPE が BINARY VARYING を示し,かつ,が BINARY VARYING(L)  によって指定されるか,

又は

TYPE が BINARY LARGE OBJECT を示し,かつ,が BINARY LARGE OBJECT(L)  によっ


800

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

て指定されるかのいずれかで,かつ,次の条件が成り立つ。

場合:

i)

SVT が<単純値指定>で,かつ,が LENGTH の値である。

ii)  SVT が<単純相手指定>で,かつ,が LENGTH の値以上である。

f) TYPE が BINARY LARGE OBJECT LOCATOR を示し,かつ,が BINARY LARGE OBJECT

LOCATOR によって指定される。

g) TYPE が NUMERIC を示し,かつ,が NUMERIC(P,S)  によって指定される。ここで,は,

PRECISION の値とし,は,SCALE の値とする。

h) TYPE が DECIMAL を示し,かつ,が DECIMAL(P,S)  によって指定される。ここで,は,

PRECISION の値とし,は,SCALE の値とする。

i) TYPE が SMALLINT を示し,かつ,が SMALLINT によって指定される。

j) TYPE が INTEGER を示し,かつ,が INTEGER によって指定される。

k) TYPE が BIGINT を示し,かつ,が BIGINT によって指定される。

l) TYPE が FLOAT を示し,かつ,が FLOAT (P)  によって指定される。ここで,は,PRECISION

の値とする。

m) TYPE が REAL を示し,かつ,が REAL によって指定される。

n) TYPE が DOUBLE PRECISION を示し,かつ,が DOUBLE PRECISION によって指定される。

o) TYPE が BOOLEAN を示し,かつ,が BOOLEAN によって指定される。

p) TYPE が USER-DEFINED TYPE LOCATOR を示し,かつ,が USER-DEFINED TYPE LOCATOR

よって指定され,

USER_DEFINED_TYPE_CATALOG,USER_DEFINED_TYPE_SCHEMA 及び

USER_DEFINED_TYPE_NAME の値が,SVT の関連する利用者定義型の完全修飾付きの名前であ

る。

q) TYPE が REF を示し,が REF に よっ て指定 され , USER_DEFINED_TYPE_CATALOG ,

USER_DEFINED_TYPE_SCHEMA 及び USER_DEFINED_TYPE_NAME の値によって形成される<

利用者定義型名

>が,SVT の被参照型を識別し,かつ,SCOPE_CATALOG,SCOPE_SCHEMA 及

SCOPE_NAME が参照型の有効範囲を識別する。

r) TYPE が ROW を示し,が次数 の行型で,かつ,SVT の 番目のフィールドのデータ型が,IDA

の 番目の直に下位にある記述子領域によって指定されるデータ型と一致する。ここで,は,

DEGREE の値とする。

s) TYPE が ARRAY を示し,が最大基数 の配列型で,の要素型のデータ型が,IDA の直に下位

にある記述子領域によって指定されるデータ型と一致し,かつ,次の条件が成り立つ。

場合:

i)

SVT が<単純値指定>で,かつ,が CARDINALITY の値である。

ii)  SVT が<単純相手指定>で,かつ,が CARDINALITY の値以上である。

t) TYPE が ARRAY LOCATOR を示し,が,最大基数 の関連する配列型をもつ配列位置付け子型

で,の関連する配列型の要素型のデータ型が,IDA の直に下位にある記述子領域によって指定

されるデータ型と一致し,かつ,次の条件が成り立つ。

場合:

i)

SVT が<単純値指定>で,かつ,が CARDINALITY の値である。

ii)  SVT が<単純相手指定>で,かつ,が CARDINALITY の値以上である。


801

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

u) TYPE が MULTISET を示し,がマルチ集合型で,かつ,の要素型のデータ型が,IDA の直に

下位にある記述子領域によって指定されるデータ型と一致する。

v) TYPE が MULTISET LOCATOR を示し,がマルチ集合位置付け子型で,かつ,の要素型のデ

ータ型が,IDA の直に下位にある記述子領域によって指定されるデータ型と一致する。

w)  表 25“動的 SQL 中で SQL データ型のために用いるコード”中の処理系定義のデータ型以外のデ

ータ型を

TYPE が示し,かつ,そのデータ型との一致のための処理系定義の規則を が満たす。

x)

09

 TYPE が処理系定義のデータ型を示し,かつ,そのデータ型との一致のための処理系定義の規

則を が満たす。

8)  データ型 DT の<単純値指定>が SQL 項目記述子領域と一致するならば,データ型 DT は,SQL 項目

記述子領域によって

表現される  (represented)  という。

表 23SQL 記述子領域のヘッダ中で用いる<キーワード>のデータ型

<キーワード

データ型 

COUNT

位取り

0 の真数

DYNAMIC_FUNCTION

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

DYNAMIC_FUNCTION_CODE

位取り

0 の真数

KEY_TYPE

位取り

0 の真数

TOP_LEVEL_COUNT

位取り

0 の真数

表 24SQL 項目記述子領域中で用いる<キーワード>のデータ型

<キーワード

データ型 

CARDINALITY

位取り

0 の真数

CHARACTER_SET_CATALOG

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

CHARACTER_SET_NAME

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

CHARACTER_SET_SCHEMA

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

COLLATION_CATALOG

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

COLLATION_NAME

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

COLLATION_SCHEMA

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

DATA SQL 項目記述子領域によって表現されるデータ型と一致する 
DATETIME_INTERVAL_CODE

位取り

0 の真数

DATETIME_INTERVAL_PRECISION

位取り

0 の真数

DEGREE

位取り

0 の真数

INDICATOR

位取り

0 の真数

KEY_MEMBER

位取り

0 の真数

LENGTH

位取り

0 の真数

LEVEL

位取り

0 の真数

NAME

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

NULLABLE

位取り

0 の真数

OCTET_LENGTH

位取り

0 の真数

PARAMETER_MODE

位取り

0 の真数

PARAMETER_ORDINAL_POSITION

位取り

0 の真数

PARAMETER_SPECIFIC_CATALOG

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

PARAMETER_SPECIFIC_NAME

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

PARAMETER_SPECIFIC_SCHEMA

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

PRECISION

位取り

0 の真数

RETURNED_CARDINALITY

位取り

0 の真数


802

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

表 24SQL 項目記述子領域中で用いる<キーワード>のデータ型(続き)

<キーワード

データ型 

RETURNED_LENGTH

位取り

0 の真数

RETURNED_OCTET_LENGTH

位取り

0 の真数

SCALE

位取り

0 の真数

SCOPE_CATALOG

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

SCOPE_NAME

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

SCOPE_SCHEMA

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

TYPE

位取り

0 の真数

UNNAMED

位取り

0 の真数

USER_DEFINED_TYPE_CATALOG

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

USER_DEFINED_TYPE_NAME

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

USER_DEFINED_TYPE_SCHEMA

文字集合が

SQL_IDENTIFIER で,かつ,長さが 128 文字以上の文字列

USER_DEFINED_TYPE_CODE

位取り

0 の真数

注記 534  データ型と SQL 項目記述子領域との間の関係に対して適用される“一致する”及び“によって表現さ

れる”は,この細分箇条の構文規則で定義している。

アクセス規則

なし。 

一般規則

1)

09

14

  表 25“動的 SQL 中で SQL データ型のために用いるコード”は,SQL データ型に関連付けられ

るコードを規定する。

09

14

  表 25-動的 SQL 中で SQL データ型のために用いるコード

データ型 

コード 

処理系定義のデータ型

 <

0

ARRAY 50 
ARRAY LOCATOR

51

BIGINT 25 
BINARY 60 
BINARY VARYING

61

BINARY LARGE OBJECT

30

BINARY LARGE OBJECT LOCATOR

31

BOOLEAN 16 
CHARACTER 1 
CHARACTER VARYING

12

CHARACTER LARGE OBJECT

40

CHARACTER LARGE OBJECT LOCATOR

41

DATE , TIME WITHOUT TIME ZONE , TIME WITH TIME ZONE ,
TIMESTAMP WITHOUT TIME ZONE 又は TIMESTAMP WITH TIME ZONE

9

DECIMAL 3 
DOUBLE PRECISION

8

FLOAT 6 
INTEGER 4 
INTERVAL 10 
MULTISET 55 
MULTISET LOCATOR

56

NUMERIC 2


803

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

09

14

  表 25-動的 SQL 中で SQL データ型のために用いるコード

データ型 

コード 

REAL 7 
SMALLINT 5 
USER-DEFINED TYPE LOCATOR

18

ROW TYPE

19

REF 20 
利用者定義型

 17

2)  表 26“動的 SQL 中で日時データ型に関連付けられるコード”は,日時データ型に関連付けられる

コードを規定する。

表 26-動的 SQL 中で日時データ型に関連付けられるコード

日時データ型

   

コード

DATE 1 
TIME WITH TIME ZONE

4

TIME WITHOUT TIME ZONE

2

TIMESTAMP WITH TIME ZONE

5

TIMESTAMP WITHOUT TIME ZONE

3

3)  表 27“動的 SQL 中で<時間隔修飾子>のために用いるコード”は,時間隔データ型の<時間隔修飾子

>に関連付けられるコードを規定する。

11

 表

27-動的 SQL 中で<時間隔修飾子>のために用いるコード

時間隔修飾子

   

コード

DAY 3 
DAY TO HOUR

8

DAY TO MINUTE

9

DAY TO SECOND

10

HOUR 4 
HOUR TO MINUTE

11

HOUR TO SECOND

12

MINUTE 5 
MINUTE TO SECOND

13

MONTH 2 
SECOND 6 
YEAR 1 
YEAR TO MONTH

7

4) DYNAMIC_FUNCTION の値は,準備又は実行された SQL 文の種別を識別する文字列とする。表 32

SQL 文のコード”が SQL 文の識別子を規定する。

5) DYNAMIC_FUNCTION_CODE の値は,準備又は実行された SQL 文の種別を識別する番号とする。

表 32“SQL 文のコード”が SQL 文のコードを規定する。

6)  表 28“動的 SQL 中で入力/出力 SQL パラメタモードのために用いるコード”は,<CALL 文>を記

述するときに

PARAMETER_MODE 項目記述子フィールドのために用いるコードを規定する。


804

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

表 28-動的 SQL 中で入力/出力 SQL パラメタモードのために用いるコード

パラメタモード 

コード

PARAMETER_MODE_IN 1 
PARAMETER_MODE_INOUT 2 
PARAMETER_MODE_OUT 4

7)  表 29“動的 SQL 中で利用者定義型に関連付けられるコード”は,利用者定義型に関連付けられる

コードを規定する。

表 29-動的 SQL 中で利用者定義型に関連付けられるコード

利用者定義型 

コード

DISTINCT 1 
STRUCTURED 2

適合性規則

なし。 

20.2  <ALLOCATE DESCRIPTOR 文>

機能

<ALLOCATE DESCRIPTOR 文> (<allocate descriptor statement>)  は,SQL 記述子領域を割り当てる。

形式

<ALLOCATE DESCRIPTOR 文> ::=

  ALLOCATE [ SQL ] DESCRIPTOR <記述子名> [ WITH MAX <実現値> ]

<実現値>  ::=

  <単純値指定>

構文規則

1) <実現値>の宣言型は,位取り 0 の真数でなければならない。

2)  WITH MAX <実現値>  が指定されないならば,<実現値>に対する 0 より大きい処理系定義の既定値

が暗に想定される。

アクセス規則

なし。 

一般規則

1)  場合:

a) <記述子名>が<拡張記述子名>ならば,<拡張記述子名>に直に含まれる<単純値指定>を とし,次

TRIM 関数の結果である文字列を とする。

TRIM( BOTH ' ' FROM S )

場合:

i) <識別子>の形式及び構文規則に が適合しないならば,例外条件:SQL 記述子名が正しくない

(invalid SQL descriptor name)  が引き起こされる。

ii)  そうでなければ,<拡張記述子名>を DN とする。DN の値は,とする。

b)  そうでなければ,<非拡張記述子名>を DN とする。

2) <実現値>が 1 未満か又は処理系定義の最大値を超えるならば,例外条件:動的 SQL 誤り  (dynamic 

SQL error)  -  記述子索引が正しくない    (invalid descriptor index)  が引き起こされる。一度に割り当


805

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

てることができる

SQL 記述子領域の最大個数は,処理系定義とする。

3)  場合:

a)  DN が SQL 記述子領域を識別するならば,例外条件:SQL 記述子名が正しくない  が引き起こさ

れる。

b)  そうでなければ,DN によって識別される SQL 記述子領域が作成される。SQL 記述子領域は,少

なくとも

<実現値>の個数の SQL 項目記述子領域をもつ。項目記述子領域のそれぞれの LEVEL に

は,値

0 が設定される。SQL 記述子領域中の他の全てのフィールドの値は,処理系依存とする。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<定数>でない<実現値>を含んではな

らない。

2)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<ALLOCATE DESCRIPTOR 文>を含

んではならない。

20.3  <DEALLOCATE DESCRIPTOR 文>

機能

<DEALLOCATE DESCRIPTOR 文> (<deallocate descriptor statement>)  は,SQL 記述子領域を解放する。

形式

<DEALLOCATE DESCRIPTOR 文> ::=

  DEALLOCATE [ SQL ] DESCRIPTOR <記述子名>

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  場合:

a) <記述子名>が SQL 記述子領域を識別しないならば,

例外条件:SQL 記述子名が正しくない  (invalid 

SQL descriptor name)  が引き起こされる。

b)  そうでなければ,<記述子名>によって識別される SQL 記述子領域が破壊される。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<DEALLOCATE DESCRIPTOR 文>を

含んではならない。

20.4  <GET DESCRIPTOR 文>

機能

<GET DESCRIPTOR 文> (<get descriptor statement>)  は,SQL 記述子領域から情報を取得する。

形式

<GET DESCRIPTOR 文> ::=

  GET [ SQL ] DESCRIPTOR <記述子名> <記述子取得情報>

<記述子取得情報> ::=

  <取得ヘッダ情報> [ { <コンマ> <取得ヘッダ情報> }... ]

| VALUE <項目番号> <取得項目情報>

      [ { <コンマ> <取得項目情報> }... ]


806

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

<取得ヘッダ情報> ::=

  <単純相手指定 1> <等号演算子> <ヘッダ項目名>

<ヘッダ項目名> ::=

  COUNT

 |

KEY_TYPE

 |

DYNAMIC_FUNCTION

 |

DYNAMIC_FUNCTION_CODE

 |

TOP_LEVEL_COUNT

<取得項目情報> ::=

  <単純相手指定 2> <等号演算子> <記述子項目名>

<項目番号> ::=

  <単純値指定>

<単純相手指定 1> ::=

  <単純相手指定>

<単純相手指定 2> ::=

  <単純相手指定>

<記述子項目名> ::=

  CARDINALITY

 |

CHARACTER_SET_CATALOG

 |

CHARACTER_SET_NAME

 |

CHARACTER_SET_SCHEMA

 |

COLLATION_CATALOG

 |

COLLATION_NAME

 |

COLLATION_SCHEMA

 |

DATA

 |

DATETIME_INTERVAL_CODE

 |

DATETIME_INTERVAL_PRECISION

 |

DEGREE

 |

INDICATOR

 |

KEY_MEMBER

 |

LENGTH

 |

LEVEL

 |

NAME

 |

NULLABLE

 |

OCTET_LENGTH

 |

PARAMETER_MODE

 |

PARAMETER_ORDINAL_POSITION

 |

PARAMETER_SPECIFIC_CATALOG

 |

PARAMETER_SPECIFIC_NAME

 |

PARAMETER_SPECIFIC_SCHEMA


807

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

 |

PRECISION

 |

RETURNED_CARDINALITY

 |

RETURNED_LENGTH

 |

RETURNED_OCTET_LENGTH

 |

SCALE

 |

SCOPE_CATALOG

 |

SCOPE_NAME

 |

SCOPE_SCHEMA

 |

TYPE

 |

UNNAMED

 |

USER_DEFINED_TYPE_CATALOG

 |

USER_DEFINED_TYPE_NAME

 |

USER_DEFINED_TYPE_SCHEMA

 |

USER_DEFINED_TYPE_CODE

構文規則

1) <項目番号>の宣言型は,位取り 0 の真数でなければならない。

2)  各<取得ヘッダ情報>に対して,<単純相手指定 1>の宣言型は,表 23“SQL 記述子領域のヘッダ中で

用いる

<キーワード>のデータ型”中で,<ヘッダ項目名>と等価な“<キーワード>”列値をもつ行の

“データ型”列中で示されるデータ型でなければならない。

3)  各<取得項目情報>に対して,<単純相手指定 2>の宣言型は,表 24“SQL 項目記述子領域中で用いる

<キーワード>のデータ型”中で,<記述子項目名>と等価な“<キーワード>”列値をもつ行の“デー

タ型”列中で示されるデータ型でなければならない。

アクセス規則

なし。 

一般規則

1) <記述子名>が SQL 記述子領域を識別しないならば,例外条件:SQL 記述子名が正しくない  (invalid 

SQL descriptor name)  が引き起こされる。

2) <GET

DESCRIPTOR 文>中に指定される<項目番号>が,<記述子名>によって識別される SQL 記述子

領域が割り当てられたときに指定された

<実現値>の値を超えるか又は 1 未満ならば,例外条件:動

的 SQL 誤り  (dynamic SQL error)  -  記述子索引が正しくない  (invalid descriptor index)  が引き起こ

される。

3) <GET

DESCRIPTOR 文>中に指定される<項目番号>が,COUNT の値を超えるならば,終了条件:デ

ータなし  (no data)  が引き起こされる。

4)  キーワード DATA に関連付けられる<単純相手指定>の宣言型が,項目記述子領域によって表現され

るデータ型と一致しないならば,例外条件:

データ例外  (data exception)  -  代入中の誤り  (error in 

assignment)  が引き起こされる。

注記 535  “一致する”及び“によって表現される”は,“20.1 SQL 記述子領域の記述”の構文規

則で定義している。

5) <記述子取得情報>に含まれる<項目番号>の値を とする。番目の項目記述領域を IDA とする。<

取得項目情報

>が DATA を指定するならば,次による。


808

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

a) TYPE フィールドが ARRAY,ARRAY LOCATOR,MULTISET 又は MULTISET LOCATOR を示す

項目記述子領域の下位に,IDA があるならば,例外条件:動的 SQL 誤り  -  DATA の値が未定義

(undefined DATA value)  が引き起こされる。

b)  IDA 中の TYPE が ROW を示すならば,例外条件:動的 SQL 誤り  -  DATA の値が未定義  が引き

起こされる。

c) INDICATOR の値が負で,かつ,どの<取得項目情報>も,INDICATOR を指定しないならば,例外

条件:

データ例外  -  ナル値,標識パラメタなし  (null value, no indicator parameter)  が引き起こさ

れる。

6) <GET

DESCRIPTOR 文>中で例外条件が引き起こされるならば,<単純相手指定 1>及び<単純相手指

2>によって指定される全ての相手の値は,処理系依存とする。

7) <GET

DESCRIPTOR 文>は,<記述子名>によって指定される SQL 記述子領域から値を取り出す。取

り出す値は,

<記述子取得情報>によって指定する。<記述子取得情報>が一つ以上の<取得ヘッダ情

>を指定するならば,取り出される値は,それらの<取得ヘッダ情報>に含まれる<ヘッダ項目名>

によって識別される値とする。

<記述子取得情報>が一つ以上の<取得項目情報>を指定するならば,

取り出される値は,

<項目番号>によって識別される SQL 項目記述子領域中の,それらの<取得項目

情報

>に含まれる<記述子項目名>によって識別される値とする。各項目に対して,取り出される値

は,指定された

SQL 記述子領域を参照する最も新しく実行された<ALLOCATE DESCRIPTOR 文>,

<SET DESCRIPTOR 文>又は<記述文>によって確立されたものとする。値が未定義のどのフィール

ドに対しても,

<GET DESCRIPTOR 文>によって取り出される値は,処理系依存とする。

場合:

a) <記述子取得情報>が一つ以上の<取得ヘッダ情報>を含むならば,指定される各<取得ヘッダ情報>

に対して,

<単純相手指定 1>を TARGET として,<ヘッダ項目名>によって識別されるフィールド

SQL 記述子領域中の値 を VALUE として,“9.2 格納代入”の一般規則を適用する。

b) <記述子取得情報>が一つ以上の<取得項目情報>を含むならば,次による。

i) <記述子取得情報>に含まれる<項目番号>の値を とする。

ii)  指定される各<取得項目情報>に対して,<単純相手指定 2>を TARGET として,<記述子項目名>

によって識別されるフィールドの 番目の SQL 項目記述子領域中の値 を VALUE として“9.2

格納代入”の一般規則を適用する。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<GET DESCRIPTOR 文>を含んでは

ならない。

2)  機能 T301“関数従属性”なしでは,適合する SQL 言語は,KEY_MEMBER を含む<記述子項目名>

を含んではならない。

20.5  <SET DESCRIPTOR 文>

機能

<SET DESCRIPTOR 文> (<set descriptor statement>)  は,SQL 記述子領域中に情報を設定する。

形式

<SET DESCRIPTOR 文> ::=

  SET [ SQL ] DESCRIPTOR <記述子名> <記述子設定情報>

<記述子設定情報> ::=


809

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

  <設定ヘッダ情報> [ { <コンマ> <設定ヘッダ情報> }... ]

| VALUE <項目番号> <設定項目情報>

  [  {  <コンマ> <設定項目情報> }... ]

<設定ヘッダ情報> ::=

  <ヘッダ項目名> <等号演算子> <単純値指定 1>

<設定項目情報> ::=

  <記述子項目名> <等号演算子> <単純値指定 2>

<単純値指定 1> ::=

  <単純値指定>

<単純値指定 2> ::=

  <単純値指定>

構文規則

1)  各 < 設 定 ヘ ッ ダ 情 報 > に 対 し て , < ヘ ッ ダ 項 目 名 > は , KEY_TYPE , TOP_LEVEL_COUNT ,

DYNAMIC_FUNCTION 又は DYNAMIC_FUNCTION_CODE であってはならず,かつ,<単純値指定

1>の宣言型は,表 23“SQL 記述子領域のヘッダ中で用いる<キーワード>のデータ型”中で,<ヘッ

ダ項目名

>と等価な“<キーワード>”列値をもつ行の“データ型”列中で示されるデータ型でなけ

ればならない。

2)  各 < 設 定 項 目 情 報 > に 対 し て , < 記 述 子 項 目 名 > は , RETURNED_LENGTH ,

RETURNED_OCTET_LENGTH , RETURNED_CARDINALITY , OCTET_LENGTH , NULLABLE ,

KEY_MEMBER,COLLATION_CATALOG,COLLATION_SCHEMA,COLLATION_NAME,NAME,

UNNAMED

PARAMETER_MODE

PARAMETER_ORDINAL_POSITION

PARAMETER_SPECIFIC_CATALOG

PARAMETER_SPECIFIC_SCHEMA

PARAMETER_SPECIFIC_NAME 又は USER_DEFINED_TYPE_CODE であってはならない。<記述子

項目名

>の他の代替手段を,<SET DESCRIPTOR 文>中に 2 回以上指定してはならない。<単純値指

2>の宣言型は,表 24“SQL 項目記述子領域中で用いる<キーワード>のデータ型”中で,<記述子

項目名

>と等価な“<キーワード>”列値をもつ行の“データ型”列中で示されるデータ型でなけれ

ばならない。

3) <記述子項目名>が DATA を指定するならば,<単純値指定 2>は,<定数>であってはならない。

アクセス規則

なし。 

一般規則

1) <記述子名>が SQL 記述子領域を識別しないならば,例外条件:SQL 記述子名が正しくない  (invalid 

SQL descriptor name)  が引き起こされる。

2) <SET

DESCRIPTOR 文>中に指定される<項目番号>が,<記述子名>によって識別される SQL 記述子

領域が割り当てられたときに指定された

<実現値>の値を超えるか又は 1 未満ならば,例外条件:動

的 SQL 誤り (dynamic SQL error) -  記述子索引が正しくない (invalid descriptor index) が引き起こ

される。

3)  単一の<SET DESCRIPTOR 文>中で二つ以上の値が設定されるとき,それらの値は,次の順序で実効

的に代入される。

LEVEL,TYPE,DATETIME_INTERVAL_CODE,

DATETIME_INTERVAL_PRECISION,PRECISION,SCALE,CHARACTER_SET_CATALOG,


810

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

CHARACTER_SET_SCHEMA , CHARACTER_SET_NAME , USER_DEFINED_TYPE_CATALOG ,

SER_DEFINED_TYPE_SCHEMA,USER_DEFINED_TYPE_NAME,SCOPE_CATALOG,

SCOPE_SCHEMA,SCOPE_NAME,LENGTH,INDICATOR,DEGREE,CARDINALITY,DATA の

順序。

DATA 以外のいずれかの値が設定されるとき,DATA の値は,未定義になる。

4)  指定されるどの<設定項目情報>に対しても,<記述子項目名>を DIN とし,<単純値指定 2>の値を V

とし,

<項目番号>の値を とし,番目の項目記述子領域を IDA とする。

場合:

a)  DIN が DATA ならば,次による。

i) TYPE フィールドが ARRAY,ARRAY LOCATOR,MULTISET 又は MULTISET LOCATOR を示

す項目記述子領域の下位に,IDA があるならば,例外条件:動的 SQL 誤り  -  DATA の相手が

正しくない  (invalid data target)  が引き起こされる。

ii)  IDA 中の TYPE が ROW を示すならば,例外条件:動的 SQL 誤り  -  DATA の相手が正しくな

い  が引き起こされる。

iii)  の最特定型が,項目記述子領域によって指定されるデータ型と一致しないならば,例外条件:

データ例外  (data exception)  -  代入中の誤り  (error in assignment)  が引き起こされる。

注記 536  “一致する”は,“20.1 SQL 記述子領域の記述”の構文規則で定義している。

iv)  IDA 中の DATA には,値 が設定される。

b)  DIN が LEVEL ならば,次による。

i)

が 1 で,かつ,が 0 でないならば,例外条件:動的 SQL 誤り  -  LEVEL 値が正しくない

(invalid LEVEL value)  が引き起こされる。

ii)  が 1 より大きいならば,IDA の直に先行する項目記述子領域を PIDA とし,それの LEVEL

値を とする。

1)  V = K + 1 で,かつ,PIDA 中の TYPE が ROW,ARRAY,ARRAY LOCATOR,MULTISET,

MULTISET LOCATOR を示さないならば,例外条件:動的 SQL 誤り  -  LEVEL 値が正しく

ない  が引き起こされる。

2)  V > K + 1 ならば,例外条件:動的 SQL 誤り  -  LEVEL 値が正しくない  が引き起こされる。

3)  V < K + 1 ならば,PIDA が下位にあり,かつ,TYPE フィールドが ROW を示す 番目の項目

記述子領域を OIDAi とし,OIDAi と IDA との間の,OIDAi の直に下位にある記述子領域の
個数を NSi とし,OIDAi 中の DEGREE の値を Di とする。

A) LEVEL 値が より大きい各 OIDAi に対して,Di が NSi と等しくないならば,例外条件:

動的 SQL 誤り  -  LEVEL 値が正しくない  が引き起こされる。

B)  が 0 でないならば,LEVEL 値が である OIDAi を OIDAj とする。そのような OIDAj

が存在しないか,又は Dj が NSj 以下ならば,例外条件:動的 SQL 誤り  -  LEVEL 値が正
しくない  が引き起こされる。

iii)  IDA 中の LEVEL には,値 が設定される。

c)

DIN が TYPE ならば,次による。

i)

IDA 中の TYPE には,値 が設定される。

ii)  IDA 中の TYPE 及び LEVEL 以外の全てのフィールドには,処理系依存の値が設定される。

iii)  場合:


811

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

1)  が CHARACTER,CHARACTER VARYING 又は CHARACTER LARGE OBJECT を示すなら

ば , IDA 中 の CHARACTER_SET_CATALOG , CHARACTER_SET_SCHEMA 及 び

CHARACTER_SET_NAME には,SQL セションの既定文字集合名の値が設定され,IDA 中の

LENGTH には,1 が設定される。

2)  が CHARACTER LARGE OBJECT LOCATOR を示すならば,IDA 中の LENGTH には,1 が

設定される。

3)  が BINARY,BINARY VARYING 又は BINARY LARGE OBJECT を示すならば,IDA 中の

LENGTH には,1 が設定される。

4)  が BINARY LARGE OBJECT LOCATOR を示すならば,IDA 中の LENGTH には,1 が設定

される。

5)  が DATETIME を示すならば,IDA 中の PRECISION には,0 が設定される。

6)  が INTERVAL を示すならば,IDA 中の DATETIME_INTERVAL_PRECISION には,2 が設定

される。

7)  が NUMERIC 又は DECIMAL を示すならば,IDA 中の SCALE には,0 が設定され,IDA 

PRECISION には,それぞれ,NUMERIC 又は DECIMAL データ型の精度に対する処理系定

義の既定値が設定される。

8)  が FLOAT を示すならば,IDA 中の PRECISION には,FLOAT データ型の精度に対する処理

系定義の既定値が設定される。

d)  DIN が DATETIME_INTERVAL_CODE ならば,次による。

場合:

i)

IDA 中の TYPE が DATETIME を示すならば,次による。

場合:

1)  が DATE,TIME 又は TIME WITH TIME ZONE を示すならば,IDA 中の PRECISION には,

0 が設定され,IDA 中の DATETIME_INTERVAL_CODE には,が設定される。

2)  が TIMESTAMP 又は TIMESTAMP WITH TIME ZONE を示すならば,IDA 中の PRECISION

には,

6 が設定され,IDA 中の DATETIME_INTERVAL_CODE には,が設定される。

3)  そうでなければ,例外条件:動的 SQL 誤り  -  DATETIME_INTERVAL_CODE が正しくない

(invalid DATETIME_INTERVAL_CODE)  が引き起こされる。

ii)  IDA 中の TYPE が INTERVAL を示すならば,次による。

場合:

1)  が DAY TO SECOND,HOUR TO SECOND,MINUTE TO SECOND 又は SECOND を示すな

らば,IDA 中の PRECISION には,6 が設定され,IDA 中の DATETIME_INTERVAL_PRECISION

には,

2 が設定され,IDA 中の DATETIME_INTERVAL_CODE には,が設定される。

2)  が YEAR,MONTH,DAY,HOUR,MINUTE,YEAR TO MONTH,DAY TO HOUR,DAY

TO MINUTE 又は HOUR TO MINUTE を示すならば,IDA 中の PRECISION には,0 が設定さ

れ , IDA 中 の DATETIME_INTERVAL_PRECISION に は , 2 が 設 定 さ れ , IDA 中 の

DATETIME_INTERVAL_CODE には,が設定される。

3)  そうでなければ,例外条件:動的 SQL 誤り  -  DATETIME_INTERVAL_CODE が正しくない

が引き起こされる。

iii)  そうでなければ,例外条件:動的 SQL 誤り  -  DATETIME_INTERVAL_CODE が正しくない  が


812

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

引き起こされる。

e)

そうでなければ,DIN によって識別される IDA のフィールドを TARGET として,を VALUE 

して,

9.2  格納代入”の一般規則を適用する。

5)  指定された各<設定ヘッダ情報>に対して,<ヘッダ項目名>によって識別されるフィールドを

TARGET として,

<単純値指定 1>の値 を VALUE として,“9.2  格納代入”の一般規則を適用する。

6) <SET

DESCRIPTOR 文>中で例外条件が引き起こされるならば,<SET DESCRIPTOR 文>中で指定さ

れる項目記述子領域の全ての要素の値は,処理系依存とする。

7) < 記 述 文 > の 実 行 の 結 果 と し て 得 ら れ る TYPE , LENGTH , PRECISION , SCALE ,

DATETIME_INTERVAL_CODE,DATETIME_INTERVAL_PRECISION,CHARACTER_SET_CATALOG,

CHARACTER_SET_SCHEMA , CHARACTER_SET_NAME , USER_DEFINED_TYPE_CATALOG ,

USER_DEFINED_TYPE_SCHEMA , USER_DEFINED_TYPE_NAME , SCOPE_CATALOG ,

SCOPE_SCHEMA 及び SCOPE_NAME の値を,<EXECUTE 文>,<動的 OPEN 文>又は<動的 FETCH

>の実行前に変更することに関する制限は,処理系定義とする。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<SET DESCRIPTOR 文>を含んではな

らない。

20.6  <PREPARE 文>

この細分箇条は,ISO/IEC 9075-4 の“15.1 <PREPARE >”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“17.2 <PREPARE >”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“17.4 <PREPARE >”によって修正される。 

機能

<PREPARE 文> (<prepare statement>)  は,実行のために文を準備する。

形式

<PREPARE 文> ::=

  PREPARE  <SQL 文名> [ <ATTRIBUTES 指定> ]

      FROM  <SQL 文変数>

<ATTRIBUTES 指定> ::=

  ATTRIBUTES  <属性変数>

<属性変数> ::=

  <単純値指定>

<SQL 文変数> ::=

  <単純値指定>

<準備可能文> ::=

  <準備可能 SQL データ文>

 |

<準備可能 SQL スキーマ文>

 |

<準備可能 SQL トランザクション文>

 |

<準備可能 SQL 制御文>

 |

<準備可能 SQL セション文>

 |

<準備可能処理系定義文>

<準備可能 SQL データ文> ::=


813

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

  <DELETE 文:探索>

 |

<動的単一行 SELECT 文>

 |

<INSERT 文>

 |

<動的 SELECT 文>

 |

<UPDATE 文:探索>

| <TRUNCATE TABLE 文>

 |

<MERGE 文>

 |

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

 |

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

| <HOLD LOCATOR 文>

| <FREE LOCATOR 文>

<準備可能 SQL スキーマ文> ::=

  <SQL スキーマ文>

<準備可能 SQL トランザクション文> ::=

  <SQL トランザクション文>

<準備可能 SQL 制御文> ::=

  <SQL 制御文>

<準備可能 SQL セション文> ::=

  <SQL セション文>

<動的 SELECT 文> ::=

  <カーソル指定>

<準備可能処理系定義文> ::=

  !!

構文規則参照。

構文規則

1) <SQL 文変数>の<単純値指定>は,<定数>であってはならない。

2) <SQL 文変数>及び<属性変数>のそれぞれの宣言型は,文字列でなければならない。

3) <準備可能処理系定義文>の形式及び構文規則は,処理系定義とする。

4) <準備可能 SQL 制御文>は,<準備可能文>でない<SQL 手続文>を含んではならず,<動的単一行

SELECT 文>又は<動的 SELECT 文>も,含んではならない。

アクセス規則

なし。 

一般規則

1)

09

 <SQL 文変数>の内容を とする。が<SQL 制御文>ならば,に含まれる<SQL 手続文>を PS 

する。

2)  行型 RT1 及び RT2 の二つの下位フィールド SF1 及び SF2 が,それぞれ,RT1 及び RT2 の,位置で

対応するフィールドであるか,又は RT1SF1 及び RT2SF2 が,それぞれ,RT1 及び RT2 の対応する

下位フィールドの宣言型で,かつ,SF1 及び SF2 が,RT1SF1 及び RT2SF2 の,位置で対応するフ

ィールドであるかのいずれかならば,SF1 及び SF2 は,対応する下位フィールド  (corresponding 

subfield)  とする。

3)  既定変換グループ名を DTGN とし,中で参照される全ての利用者定義型に対する変換関数のグル


814

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

ープを識別するために用いる

 { 利用者定義型名  -  変換グループ名 } の対のリストを TFL とす

る。DTGN 及び TFL は,が準備された後の<SET TRANSFORM GROUP 文>の実行によって影響を

受けない。

4) <動的パラメタ指定>,又は任意の個数の<左括弧><右括弧>の対に直に含まれる<動的パラメタ指定>

のいずれかである

<値式>を DPV とする。最初は,このような<値式>の宣言型は,定義によって,

未定義とする。データ型は,この規格中で定義されるデータ型でも処理系によって定義されるデー

タ型でもないならば,

未定義  (undefined)  とする。

5)

04

 NUMERIC データ型に対する<精度>の処理系定義の最大値を MP とする。可変長文字列の処理系

定義の最大長を ML とする。DPV に対する基準を満たす,又は PS 中の各<値式>  DP に対して,

それの宣言型を DT で示す。<動的パラメタ指定>のデータ型がこの一般規則によって決定されるま

で,“14.15 <設定句リスト>”で規定する構文上の置換えを適用してはならない。

a)  場合:

i)

DP の直後に<時間隔修飾子> IQ が続くならば,DT は,INTERVAL IQ とする。

ii)  DP が<配列要素参照>に単純に含まれる<数値式>ならば,DT は,NUMERIC (MP, 0)  とする。

iii)  DP が,<CHAR_LENGTH 式>又は<OCTET_LENGTH 式>に単純に含まれる<データ列値式>なら

ば,DT は,処理系定義の文字集合の CHARACTER VARYING (ML)  とする。

iv)  DP が,

<剰余式>に単純に含まれる<数値式被除数> X1 又は<数値式除数> X2 のいずれかならば,

DT は,それぞれ,X2 の宣言型又は X1 の宣言型とする。

v)  DP が,

POSITION ( X1 IN X2 )”という形式の<POSITION 式>中の X1 又は X2 のいずれかなら

ば,次による。

場合:

1)  X2 の宣言型又は X1 の宣言型が,文字集合 CS の CHARACTER 又は CHARACTER VARYING

ならば,DT は,文字集合 CS の CHARACTER VARYING (ML)  とする。

2)  そうでなければ,DT は,それぞれ,X2 又は X1 の宣言型とする。

vi)  DP が,

SUBSTRING ( X1 FROM X2 FOR X3 )”又は“SUBSTRING ( X1 FROM X2 )”という形

式の

<データ列値関数>中の X2 又は X3 のいずれかならば,DT は,NUMERIC (MP, 0)  とする。

vii)  DP が,

SUBSTRING ( X1 SIMILAR X2 ESCAPE X3 )”という形式の<データ列値関数>中の X1

X2 又は X3 のいずれかならば,次による。

1)  場合:

A)  X1 の宣言型が CHARACTER,CHARACTER VARYING 又は CHARACTER LARGE OBJECT

ならば,X1 の文字集合を CS とする。

B)  X2 の宣言型が CHARACTER,CHARACTER VARYING 又は CHARACTER LARGE OBJECT

ならば,X1 の文字集合を CS とする。

C)  X3 の宣言型が CHARACTER,CHARACTER VARYING 又は CHARACTER LARGE OBJECT

ならば,X1 の文字集合を CS とする。

D)  そうでなければ,CS の文字集合は,未定義とする。

2)  CS が定義されるならば,次による。

A)  DP が X1 又は X2 ならば,DT は,文字集合 CS の CHARACTER VARYING (ML)  とする。

B)  DP が X3 ならば,DT は,文字集合 CS の CHARACTER (1)  とする。

viiiDP が,

OVERLAY ( X1 PLACING X2 FROM X3 FOR X4 )”又は“OVERLAY ( X1 PLACING X2


815

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

FROM  X3  )”という形式の<データ列値関数>中の X1X2X3 又は X4 のいずれかならば,次

による。

場合:

1)  DP が X1 又は X2 ならば,次による。

場合:

A)  それぞれ,X2 又は X1 の宣言型が,文字集合 CS の CHARACTER 又は CHARACTER

VARYING ならば,DT は,文字集合 CS の CHARACTER VARYING (ML)  とする。

B)  そうでなければ,DT は,それぞれ,X2 又は X1 の宣言型とする。

2)  そうでなければ,DT は,NUMERIC (MP, 0)  とする。

ix)  DP が,

X1 || X2”という形式の<値式>中の X1 又は X2 のいずれかならば,次による。

場合:

1)  それぞれ,

X2 又は X1 の宣言型が,

文字集合 CS の CHARACTER 又は CHARACTER VARYING

ならば,DT は,文字集合 CS の CHARACTER VARYING (ML)  とする。

2)  そうでなければ,DT は,それぞれ,X2 又は X1 の宣言型とする。

x)  DP が,

X1 * X2”又は“X1 / X2”という形式の<値式>中の X1 又は X2 のいずれかならば,次

による。

場合:

1)  DP が X1 ならば,DT は,X2 の宣言型とする。

2)  そうでなければ,次による。

場合:

A)  X1 の宣言型が時間隔型ならば,DT は,NUMERIC (MP, 0)  とする。

B)  そうでなければ,DT は,それぞれ,X2 又は X1 の宣言型とする。

xi)  DP が,

X1 + X2”又は“X1X2”という形式の<値式>中の X1 又は X2 のいずれかならば,次

による。

場合:

1)  DP が,

X1X2”という形式の式中の X1 ならば,DT は,X2 の宣言型とする。

2)  そうでなければ,次による。

場合:

A)  それぞれ,X2 又は X1 の宣言型が日付ならば,DT は,INTERVAL YEAR (PR) TO MONTH

とする。ここで,PR は,処理系定義の最大<時間隔先行フィールド精度>とする。

B)  それぞれ,X2 又は X1 の宣言型が時刻又は時刻印ならば,DT は,INTERVAL DAY (PR) TO

SECOND (FR)  とする。ここで,PR 及び FR は,それぞれ,処理系定義の最大<時間隔先

行フィールド精度

>及び最大<時間隔小数秒精度>とする。

C)  そうでなければ,DT は,それぞれ,X2 又は X1 の宣言型とする。

xii)  DP が,<ブール一次子>に単純に含まれる<値式一次子>ならば,DT は,BOOLEAN とする。

xiiiDP が,<配列要素リスト> AEL に単純に含まれる<配列要素>であるか,又は<配列要素リスト>

AEL に単純に含まれる<配列要素>の宣言型の下位フィールド SF の値を DP が表現するならば,

AEL に単純に含まれる<配列要素>の宣言型を DTSET として,

9.5  データ型組合せの結果”の

構文規則を適用する。これらの構文規則の適用によって戻される RESTYPE を ET とする。

場合:


816

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

1)  DP が,AEL の<配列要素>ならば,DT は,ET とする。

2)  そうでなければ,DT は,SF に対応する ET の下位フィールドの宣言型とする。

xiv)  DP が,<マルチ集合要素リスト> MEL に単純に含まれる<マルチ集合要素>であるか,又は<マ

ルチ集合要素リスト

>  MEL に単純に含まれる<マルチ集合要素>の宣言型の下位フィールド SF

の値を DP が表現するならば,MEL に単純に含まれる<マルチ集合要素>の宣言型を DTSET 

して,

9.5  データ型組合せの結果”の構文規則を適用する。これらの構文規則の適用によって

戻される RESTYPE を ET とする。

場合:

1)  DP が,MEL の<マルチ集合要素>ならば,DT は,ET とする。

2)  そうでなければ,DT は,SF に対応する ET の下位フィールドの宣言型とする。

xv)  DP が,<CAST 指定> CS に単純に含まれる<CAST オペランド>であるか,又は<CAST 指定> CS

に単純に含まれる

<CAST オペランド>の宣言型の下位フィールド SF の値を DP が表現するなら

ば,CS の単純に含まれる<CAST 相手>を CT とする。

1)  次のとおりに決定されるデータ型を RT とする。

場合:

A)  CT が ARRAY 又は MULTISET を直に含むならば,RT は,未定義とする。

B)  CT が<データ型>を直に含むならば,RT は,そのデータ型とする。

C)  CT が<定義域名> を単純に含むならば,RT は,によって識別される定義域の宣言型と

する。

2)  場合:

A)  DP が CS の<CAST オペランド>ならば,DT は,RT とする。

B)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xvi)  DP が,<CASE 略式>  CA に単純に含まれる<値式>であるか,又はそのような<値式>の宣言型

の下位フィールド SF の値を DP が表現するならば,CA に単純に含まれる<値式>の宣言型を

DTSET として,

9.5  データ型組合せの結果”の構文規則を適用する。これらの構文規則の適

用によって戻される RESTYPE を RT とする。

場合:

1)  DP が,CA に単純に含まれる<値式>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xvii)  DP が,<CASE 指定> CE に単純に含まれる<結果式>であるか,又はそのような<結果式>の宣

言型の下位フィールド SF の値を DP が表現するならば,CE に単純に含まれる<結果式>の宣

言型を DTSET として,“9.5  データ型組合せの結果”の構文規則を適用する。これらの構文

規則の適用によって戻される RESTYPE を RT とする。

場合:

1)  DP が,CE に単純に含まれる<結果式>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xviii)  DP が,<単純 CASE>  CE に単純に含まれる<CASE オペランド>又は<WHEN オペランド>で

あるか,又はそのような

<CASE オペランド>又は<WHEN オペランド>の宣言型の下位フィー

ルド SF の値を DP が表現するならば,次による。

1)  次の宣言型の集合の和集合を SDT とする。


817

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

A) <CASE オペランド>の宣言型から成る集合。

B) <行値述語オペランド>である CE の<WHEN オペランド>の宣言型から成る集合。

C)  CE に単純に含まれる<比較述語部分 2>,<BETWEEN 述語部分 2>,<文字 LIKE 述語部分

2>,<オクテット LIKE 述語部分 2>,<SIMILAR 述語部分 2>,<LIKE_REGEX 述語部分 2>,

<OVERLAPS 述語部分 2>,<DISTINCT 述語部分 2>又は<MEMBER 述語部分 2>に単純に含

まれる

<行値述語オペランド>の宣言型から成る集合。

D)  CE に単純に含まれる<IN 述語部分 2>,<MATCH 述語部分 2>又は<限定比較述語部分 2>に

単純に含まれる

<表副問合せ>の宣言行型から成る集合。

E)  CE に単純に含まれる<IN 述語部分 2>に単純に含まれる<IN 値リスト>に単純に含まれる<

行値式

>の宣言型から成る集合。

14

  注記 537  次の述語“部分 2”は,宣言型情報をもつどんな値式ももたない。<NULL 述語

部分

2>,<NORMALIZED 述語部分 2>,<SET 述語部分 2>,<型述語部分 2>。

2)  SDT を DTSET として,

9.5  データ型組合せの結果”の構文規則を適用する。これらの構文

規則の適用によって戻される RESTYPE を RT とする。

3)  場合:

A)  DP が,

CE に単純に含まれる<CASE オペランド>又は<WHEN オペランド>ならば,

DT は,

RT とする。

B)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xix)

DP が,<表値構成子>若しくは<文脈型付き表値構成子> TVC に単純に含まれる<行値式>若し

くは

<文脈型付き行値式>であるか,又はそのような<行値式>若しくは<文脈型付き行値式>の

宣言型の下位フィールド SF の値を DP が表現するならば,次による。

場合:

1)  次のとおりに決定されるデータ型を RT とする。

場合:

A) <INSERT 文>  IS に単純に含まれる<問合せ式>に TVC が単純に含まれるか,又は<INSERT

IS の<挿入列及び挿入元>に TVC が直に含まれるならば,RT は,番目のフィールドの

宣言型が,IS の陽に指定されるか又は暗に想定される<挿入列リスト>中の 番目の列の宣

言型である行型とし,RT の次数は,IS の陽に指定されるか又は暗に想定される<挿入列リ

スト

>の列の個数と等しい。

B)  そうでなければ,TVC に単純に含まれる<行値式>又は<文脈型付き行値式>の宣言型を

DTSET として,

9.5  データ型組合せの結果”の構文規則を適用する。RT は,これらの構

文規則の適用によって戻される RESTYPE とする。

2)  場合:

A)  DP が,TVC に単純に含まれる<行値式>又は<文脈型付き行値式>ならば,DT は,RT とす

る。

B)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xx)

DP が,<MERGE 文>の<併合挿入指定> MIS の<併合挿入値リスト>に単純に含まれる<値式>

であるか,又はそのような

<値式>の宣言型の下位フィールド SF の値を DP が表現するなら

ば,MIS に含まれる陽に指定されるか又は暗に想定される<挿入列リスト>中の位置で対応す

る列の列記述子中で示されるデータ型を RT とする。


818

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

場合:

1)  DP が,MIS に単純に含まれる<値式>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxi)

DP が,<比較述語>,<DISTINCT 述語>又は<BETWEEN 述語> PR に単純に含まれる<行値述

語オペランド

>であるか,又はそのような<行値述語オペランド>の宣言型の下位フィールド

SF の値を DP が表現するならば,PR に単純に含まれる<行値述語オペランド>の宣言型を

DTSET として,

9.5  データ型組合せの結果”の構文規則を適用する。これらの構文規則の

適用によって戻される RESTYPE を RT とする。

場合:

1)  DP が,PR に単純に含まれる<行値述語オペランド>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxii)  DP が,<限定比較述語>又は<MATCH 述語> PR に単純に含まれる<行値述語オペランド>であ

るか,又はそのような

<行値述語オペランド>の宣言型の下位フィールド SF の値を DP が表

現するならば,PR に単純に含まれる<表副問合せ>の宣言型を RT とする。

場合:

1)  DP が,PR に単純に含まれる<行値述語オペランド>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxiii)  DP が,<IN 述語>  PR に単純に含まれる<行値述語オペランド>であるか,又はそのような<

行値述語オペランド

>の宣言型の下位フィールド SF の値を DP が表現するならば,PR に単

純に含まれる

<行値述語オペランド>の宣言型及び PR に単純に含まれる<表副問合せ>(があ

るならば,その

<表副問合せ>)の宣言行型を DTSET として,“9.5  データ型組合せの結果”

の構文規則を適用する。これらの構文規則の適用によって戻される RESTYPE を RT とする。

場合:

1)  DP が,PR に単純に含まれる<行値述語オペランド>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxiv)  DP が,<OVERLAPS 述語>  PR 中の<行値述語オペランド 1>  RV1 又は<行値述語オペランド

2> RV2 のいずれかに単純に含まれる 1 番目の<行値構成子要素>ならば,次による。

場合:

1)  DPV に対する基準を 1 番目の<行値構成子要素>が満たす<行値構成子述語オペランド>を,

RV1 及び RV2 の両方が単純に含むならば,DT は,TIMESTAMP WITH TIME ZONE とする。

2)  そうでなければ,DP が RV1 又は RV2 に単純に含まれるならば,DT は,それぞれ,RV2 

は RV1 の 1 番目のフィールドの宣言型とする。

xxv)  DP が<文字 LIKE 述語>,<オクテット LIKE 述語>又は<SIMILAR 述語>  PR に単純に含まれ

るならば,PR に直に含まれる<行値述語オペランド>を X1 で表現し,<文字パターン>,<オ

クテットパターン

>又は<類似パターン>を X2 で表現し,<エスケープ文字>又は<エスケープ

オクテット

>を X3 で表現する。

場合:

1)  DPV に対する基準を全ての X1X2 及び X3 が満たすならば,DT は,処理系定義の文字集合

CHARACTER VARYING (ML)  とする。

2)  そうでなければ,X1X2 及び X3 の宣言型を DTSET として,

9.5  データ型組合せの結果”


819

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

の構文規則を適用する。これらの構文規則の適用によって戻される RESTYPE を RT とする。

場合:

A)  RT が,文字集合 CS の CHARACTER 又は CHARACTER VARYING ならば,DT は,文字集

合 CS の CHARACTER VARYING (ML)  とする。

B)  そうでなければ,DT は,RT とする。

xxvi)  DP が,<設定句>  SC の<更新元>に単純に含まれる<値式>であるか,又はそのような<値式>

の宣言型の下位フィールド SF の値を DP が表現するならば,SC 中に指定された<更新相手>

又は

<変異設定句>の宣言型を RT とする。

場合:

1)  DP が,SC に単純に含まれる<値式>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxvii)

04

 DP が,<設定句> SC の<複数列代入> MCA に単純に含まれる<文脈型付き行値式>であるか,

又はそのような

<文脈型付き行値式>の宣言型の下位フィールド SF の値を DP が表現するな

らば,番目のフィールドの宣言型が,MCA の<設定相手リスト>に含まれる 番目の<設定相

>に直に含まれる<更新相手>又は<変異設定句>の宣言型である行型を RT とする。

場合:

1)  DP が,MCA に単純に含まれる<文脈型付き行値式>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxviiiDP が,<カタログ名特性>,<スキーマ名特性>,<文字集合名特性>,<SQL パス特性>,<変

換グループ特性

>,<役割指定>又は<セション利用者識別子設定文>に直に含まれる<値指定>

ならば,DT は,処理系定義の文字集合の CHARACTER VARYING (ML)  とする。

xxix)  DP が,<地方時刻帯設定文>に直に含まれる<時間隔値式>ならば,DT は,INTERVAL HOUR

TO MINUTE とする。

xxx) <ルーチン呼出し>  RI を ROUTINE  INVOCATION として,

10.4  ルーチン呼出し”の構文規

則を呼び出して,当該ルーチン SR を生成する。

xxxi)

04

  DP が RI の<SQL 引数>であるか又はそのような<SQL 引数>に直に含まれる<値式>の宣言

型の下位フィールド SF の値を DP が表現し,かつ,DP が RI の 番目の<SQL 引数>である

か又は RI の 番目の<SQL 引数>に含まれるならば,SR の 番目の SQL パラメタの宣言型を

RT で示す。

場合:

1)  DP が RI の 番目の<SQL 引数>ならば,DT は,RT とする。

2)  そうでなければ,DT は,SF に対応する RT の下位フィールドの宣言型とする。

xxxii) < ウ ィ ン ド ウ 指 定 >  WS に 含 ま れ る < ウ ィ ン ド ウ 枠 PRECEDING> 又 は < ウ ィ ン ド ウ 枠

FOLLOWING>に DP が含まれるならば,次による。

場合:

1)  WS が ROWS 又は GROUPS を指定するならば,DT は,NUMERIC (MP, 0)  とする。

2)  そうでなければ,WS に含まれる単一の<ソートキー>の宣言型を SDT とする。

場合:

A)  SDT が数型ならば,DT は,SDT とする。

B)  SDT が DATE ならば,DT は,INTERVAL DAY とする。


820

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

C)  SDT が TIME(P) WITHOUT TIME ZONE 又は TIME(P) WITH TIME ZONE ならば,DT は,

INTERVAL HOUR TO SECOND (P)  とする。

D)  SDT が TIMESTAMP(P) WITHOUT TIME ZONE 又は TIMESTAMP(P) WITH TIME ZONE な

らば,DT は,INTERVAL DAY TO SECOND (P)  とする。

E)  SDT が時間隔型ならば,DT は,SDT とする。

xxxiiiDP が,<NTILE 関数>に単純に含まれる<タイル数>か又は<NTH_VALUE 関数>に単純に含ま

れる

<n 番目の行>ならば,DT は,INTEGER とする。

xxxiv)  DP が<行マーカ変位>ならば,DT は,NUMERIC (MP, 0)  とする。

xxxv)  DP が,

<VALUE_OF 式 AT 行> VOF に単純に含まれる<VALUE_OF の既定値>ならば,DT は,

VOF に直に含まれる<値式>の宣言型とする。

xxxvi)  DP が,<HOLD LOCATOR 文>又は<FREE LOCATOR 文>に単純に含まれる<位置付け子参照>

ならば,DT は,INTEGER とする。

xxxviiDP が,<OCCURRENCES_REGEX 関数>,<POSITION_REGEX 式>,<SUBSTRING_REGEX

関数

>,<TRANSLATE_REGEX 関数>又は<LIKE_REGEX 述語> FUN に直に含まれる<XQuery

パターン

>,<XQuery オプションフラグ>,<REGEX 当該文字列>又は<XQuery 置換文字列>

であり,かつ,

FUN に直に含まれる<XQuery パターン>,

<XQuery オプションフラグ>,<REGEX

当該文字列

>又は<XQuery 置換文字列>が存在するならば,<動的パラメタ指定>でない

<XQuery パターン>,<XQuery オプションフラグ>,<REGEX 当該文字列>又は<XQuery 置換

文字列

>の文字集合を CS とする。DT は,CHARACTER VARYING(ML) CHARACTER SET CS

とする。

xxxviii)

14

  DP が , <OCCURRENCES_REGEX 関 数 > , <POSITION_REGEX 式 > ,

<SUBSTRING_REGEX 関数>又は<TRANSLATE_REGEX 関数>に直に含まれる<開始位置>,

<REGEX 出現回数>又は<REGEX キャプチャグループ>ならば,DT は,NUMERIC(MP)  とす

る。

b)  DT が未定義ならば,例外条件:構文誤り又はアクセス規則違反  (syntax error or access rule 

violation)  が引き起こされる。

6) <準備可能文>の形式,構文規則及びアクセス規則に が適合しないか,又は が<単純注釈>を含む

ならば,次による。

場合:

a)  曖昧な<準備可能動的カーソル名>を が含むならば,例外条件:曖昧なカーソル名  (ambiguous 

cursor name)  が引き起こされる。

b)  正しくない<準備可能動的カーソル名>を が含むならば,例外条件:カーソル名が正しくない

(invalid cursor name)  が引き起こされる。

c)

そうでなければ,例外条件:

構文誤り又はアクセス規則違反  が引き起こされる。

7) <動的パラメタ指定>が入力引数か,出力引数か,又は入出力引数(入力引数で,かつ,出力引数)

かは,次のとおりに決定される。

場合:

a)  が<CALL 文>ならば,次による。

i)

に直に含まれる<ルーチン呼出し> RI の当該ルーチンを SR とする。RI に直に含まれる<SQL

引数リスト

>中の<SQL 引数>の個数を とする。


821

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

ii)  RI に直に含まれる<SQL 引数リスト>の 番目の<SQL 引数>を Ay,1 ≤ y ≤ とする。

iii) <SQL 引数> Ak,1 ≤ k ≤ に含まれる各<動的パラメタ指定> に対して,次による。

1)  SR の 番目の SQL パラメタの<パラメタモード>が IN 又は INOUT ならば,は,入力<動

的パラメタ指定

>とする。

2)  SR の 番目の SQL パラメタの<パラメタモード>が OUT 又は INOUT ならば,は,出力<

動的パラメタ指定

>とする。

b)  そうでなければ,次による。

i) <動的パラメタ指定>が<相手指定>に含まれるならば,それは,出力<動的パラメタ指定>とする。

ii) <動的パラメタ指定>が<値指定>に含まれるならば,それは,入力<動的パラメタ指定>とする。

8) <SQL 文名>に対して<拡張文名>が指定されるならば,<単純値指定>を とし,次の TRIM 関数の結

果である文字列を とする。

TRIM ( BOTH ' ' FROM S )

場合:

a) <識別子>の形式及び構文規則に が適合しないならば,例外条件:SQL 文識別子が正しくない

(invalid SQL statement identifier)  が引き起こされる。

b)  そうでなければ,<拡張文名>を ESN とする。ESN の値は,とする。

9) <SQL 文名>が被準備文 PS を識別するならば,暗に想定される次の文が実行される。

DEALLOCATE PREPARE SSN

ここで,SSN は,PS を識別する<SQL 文名>とする。

10)  は,実行のために準備され,被準備文 PRP になる。

場合:

a) <PREPARE 文>が<SQL 呼出しルーチン> に含まれるならば,次による。

場合:

i)

の安全保護特性が DEFINER ならば,PRP の所有者には,の所有者が設定される。

ii)  そうでなければ,PRP には,所有者はない。

b) <PREPARE 文>が被トリガ動作に含まれるならば,PRP の所有者には,トリガの所有者が設定さ

れる。

c)

そうでなければ,次による。

注記 538 <PREPARE 文>が上記のどちらでもないならば,それは,必然的に,外部呼出し手続

に直に含まれるはずである。

場合:

i) <PREPARE 文>を含む SQL クライアントモジュールが<モジュール認可識別子>  MAI をもち,

かつ,

<SQL クライアントモジュール定義>中で FOR STATIC ONLY が指定されなかったならば,

PRP の所有者は,MAI とする。

ii)  そうでなければ,PRP には,所有者はない。

11) <ATTRIBUTES 指定>が指定されるならば,<属性変数>の内容を ATV とする。ATV が長さ 0 の文字

列でなく,かつ,“20.7 <カーソル属性の並び>”の形式及び構文規則に ATV が適合しないならば,

例外条件:

構文誤り又はアクセス規則違反  が引き起こされる。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<PREPARE 文>を含んではならない。


822

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

2)  機能 B034“カーソル属性の動的指定”なしでは,適合する SQL 言語は,<ATTRIBUTES 指定>を含

んではならない。

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

機能

<カーソル属性の並び> (<cursor attributes>)  は,カーソル属性のリストを指定する。

形式

<カーソル属性の並び> ::=

  <カーソル属性>...

<カーソル属性> ::=

  <カーソル感度>

 |

<カーソルスクロール可能性>

 |

<カーソル保持可能性>

 |

<カーソル戻り可能性>

構文規則

1) <カーソル感度>,<カーソルスクロール可能性>,<カーソル保持可能性>及び<カーソル戻り可能性>

のそれぞれを,高々

1 回指定しなければならない。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

20.8  <DEALLOCATE PREPARE 文>

この細分箇条は,ISO/IEC 9075-9 の“17.3 <DEALLOCATE PREPARE >”によって修正される。 

機能

<DEALLOCATE PREPARE 文> (<deallocate prepared statement>)  は,<PREPARE 文>で準備された SQL 文

を解放する。

形式

<DEALLOCATE PREPARE 文> ::=

  DEALLOCATE  PREPARE  <SQL 文名>

構文規則

1) <SQL 文名>が<文名>ならば,次による。

場合:

a) <DEALLOCATE

PREPARE 文>が<SQL 呼出しルーチン>に含まれるならば,<DEALLOCATE

PREPARE 文>を含む最も内側の<SQL 呼出しルーチン>は,<DEALLOCATE PREPARE 文>の<文名

>と等価な<文名>をもつ<PREPARE 文>を含まなければならない。

b)  そうでなければ,<DEALLOCATE PREPARE 文>を含む<SQL クライアントモジュール定義>は,

<DEALLOCATE PREPARE 文>の<文名>と等価な<文名>をもつ<PREPARE 文>を含まなければな

らない。

アクセス規則


823

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

なし。 

一般規則

1)

09

 <SQL 文名>が被準備文を識別しないならば,例外条件:SQL 文名が正しくない  (invalid SQL 

statement name)  が引き起こされる。

2) <SQL 文名>が,開いているカーソルの<カーソル指定>である被準備文を識別するならば,例外条

件:

カーソル状態が正しくない  (invalid cursor state)  が引き起こされる。

3) <SQL 文名>によって識別される被準備文が破壊される。被準備文に関連付けられているどの宣言動

的カーソルのカーソル実現値記述子も,破壊される。

<SQL 文名>によって識別される被準備文に関

連付けられているどの拡張動的カーソルのカーソル宣言記述子及びカーソル実現値記述子も,破壊

される。

<SQL 文名>の値が,<カーソル指定>である既存の被準備文を識別するならば,そのカーソ

ルを参照するどの被準備文も,破壊される。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<DEALLOCATE PREPARE 文>を含ん

ではならない。

20.9  <記述文>

この細分箇条は,ISO/IEC 9075-9 の“17.4 <記述文>”によって修正される。 

機能

<記述文> (<describe statement>)  は,被準備文に含まれる<選択リスト>の列若しくは<動的パラメタ指定>

についての情報,又はカーソルに関連付けられた結果集合の列についての情報を得る。

形式

<記述文> ::=

  <入力 DESCRIBE 文>

 |

<出力 DESCRIBE 文>

<入力 DESCRIBE 文> ::=

  DESCRIBE  INPUT  <SQL 文名> <USING 記述子> [ <入れ子選択肢> ]

<出力 DESCRIBE 文> ::=

  DESCRIBE [ OUTPUT ] <記述対象> <USING 記述子> [ <入れ子選択肢> ]

<入れ子選択肢> ::=

  WITH  NESTING

| WITHOUT NESTING

<USING 記述子> ::=

  USING [ SQL ] DESCRIPTOR <記述子名>

<記述対象> ::=

  <SQL 文名>

| CURSOR <カーソル名> STRUCTURE

構文規則

1) <SQL 文名>が<文名>ならば,次による。

場合:

a) <記述文>が<SQL 呼出しルーチン>に含まれるならば,<記述文>を含む最も内側の<SQL 呼出しル

ーチン

>は,<記述文>の<文名>と等価な<文名>をもつ<PREPARE 文>を含まなければならない。


824

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

b)  そうでなければ,<記述文>を含む<SQL クライアントモジュール定義>は,<記述文>の<文名>と

等価な

<文名>をもつ<PREPARE 文>を含まなければならない。

2) <入れ子選択肢>が指定されないならば,WITHOUT NESTING が暗に想定される。

3) <記述対象>が<カーソル名>  CN を単純に含むならば,CN は,受取りカーソルを識別しなければな

らない。

アクセス規則

なし。 

一般規則

1)

09

 <SQL 文名>が指定され,かつ,被準備文 PS を識別しないならば,例外条件:SQL 文名が正しく

ない  (invalid SQL statement name)  が引き起こされる。

2) <カーソル名> CN が指定されるならば,次による。

a)  CN によって識別される受取りカーソルを CR とする。CR が開いている状態でないならば,例外

条件:

カーソル状態が正しくない  (invalid cursor state)  が引き起こされる。

b)  CR の結果集合記述子に含まれる<カーソル指定>を CS とする。SQL セション中の他のどの<SQL

文名

>とも異なる処理系依存の<SQL 文名>を ISSN とする。次の文が実行され,結果として被準備

文 PS をもたらす。

PREPARE ISSN FROM CS

3) <記述子名>が SQL 記述子領域を識別しないならば,例外条件:SQL 記述子名が正しくない  (invalid 

SQL descriptor name)  が引き起こされる。

4) <記述子名>によって識別される記述子領域を DA とする。DA が割り当てられたときに指定された<

実現値

>を とする。

5)  場合:

a)  実行されている文が<入力 DESCRIBE 文>ならば,PS の入力<動的パラメタ指定>のための記述子

が DA に格納される。この規格群のこの規格又は他の規格の構文規則で規定するどの構文上の変

換よりも前の PS 中の入力<動的パラメタ指定>の個数を とする。WITH NESTING が指定される

ならば,番目の入力動的パラメタのための記述子の下位にある記述子の個数を NSi,1 ≤ i ≤ 
する。そうでなければ,

0 を NSi とする。

注記 539  構文上の変換が,<動的パラメタ指定>を複製するという明確な影響を与えるならば,

<動的パラメタ指定>の各複製が同じ動的パラメタを表現し,新しい動的パラメタを構

成しないことが分かっている。例えば,次の

BETWEEN 述語

? BETWEEN 1 AND 3

は,“8.3 <BETWEEN 述語>”の構文規則によって,次の探索条件に変換されるが,こ

の変換の結果として,動的パラメタは,二つではなく,一つだけのままである。

(? >= 1 AND ? <= 3)

b)  実行されている文が<出力 DESCRIBE 文>で,かつ,PS が<動的 SELECT 文>又は<動的単一行

SELECT 文>ならば,PS の<選択リスト>の列のための記述子が DA に格納される。PS によって定

義される表を とし,の次数を とする。WITH NESTING が指定されるならば,の 番目の

列のための記述子の下位にある記述子の個数を NSi,1 ≤ i ≤ とする。そうでなければ,0 を NSi
とする。

c)

そうでなければ,PS の出力<動的パラメタ指定>のための記述子が DA に格納される。PS 中の出


825

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

<動的パラメタ指定>の個数を とする。WITH NESTING が指定されるならば,番目の出力動

的パラメタのための記述子の下位にある記述子の個数を NSi,1 ≤ i ≤ とする。そうでなければ,
0 を NSi とする。

6)  DA は,次のとおりに設定される。

a)  D + NS

1

 + NS

2

 + ... + NSD の値を TD とする。COUNT には,TD が設定される。

b) TOP_LEVEL_COUNT には,が設定される。

c) DYNAMIC_FUNCTION 及び DYNAMIC_FUNCTION_CODE には,それぞれ,表 32“SQL 文のコ

ード”で示すとおりの,PS に対する識別子及びコードが設定される。準備されたが,まだ動的に

実行されていない

<動的 SELECT 文>又は<動的単一行 SELECT 文>を記述するために,<動的

SELECT 文>又は<動的単一行 SELECT 文>に対する表 32“SQL 文のコード”の識別子及びコード

が用いられるかどうかは,処理系定義とする。

d)  実行されている文が<出力 DESCRIBE 文>で,かつ,PS が<動的 SELECT 文>又は<動的単一行

SELECT 文>ならば,次による。

場合:

i)

の列の部分集合が の主キーならば,KEY_TYPE には,1 が設定される。

ii)  の列の部分集合が の優先候補キーならば,KEY_TYPE には,2 が設定される。

iii)  そうでなければ,KEY_TYPE には,0 が設定される。

注記 540  主キー及び優先候補キーは,“4.19  関数従属性”で定義している。

e)

TD が を超えるならば,終了条件:警告  (warning)  -  不十分な項目記述子領域  (insufficient item 

descriptor areas)  が引き起こされる。

f)

TD が 0 か又は TD が を超えるならば,どの項目記述子領域にも設定されない。そうでなけれ

ば,次による。

i)

最初の TD 個の項目記述子領域には,次の項目に対する記述子からの値,及び選択的に,下位

にある記述子からの値が設定される。

場合:

1)  実行されている文が<入力 DESCRIBE 文>ならば,入力<動的パラメタ指定>。

2)  実行されている文が<出力 DESCRIBE 文>で,かつ,記述されている文が<動的 SELECT 文>

又は

<動的単一行 SELECT 文>ならば,の列。

3)  そうでなければ,出力<動的パラメタ指定>。

ii)  そのような 1 番目の列又は<動的パラメタ指定>のための記述子は,1 番目の項目記述子領域に

代入される。

iii)  番目の列又は<動的パラメタ指定>のための記述子が 番目の項目記述子領域に代入されるな

らば,次による。

1) (j+1)番目の列又は<動的パラメタ指定>のための記述子は,(k+NSj+1)  番目の項目記述子領域

に代入される。

2) WITH

NESTING が指定されるならば,番目の列又は<動的パラメタ指定>のための,暗に順

序付けられた下位にある記述子が,

(k+1)  番目の項目記述子領域から始まる連続する項目記

述子領域に代入される。

7) SQL 項目記述子領域が設定されるならば,

それは,

LEVEL,TYPE,NULLABLE,NAME,UNNAMED,

PARAMETER_ORDINAL_POSITION,PARAMETER_SPECIFIC_CATALOG,


826

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

PARAMETER_SPECIFIC_SCHEMA,PARAMETER_SPECIFIC_NAME,及び下記に記述するとおり

TYPE の値に依存する他のフィールドの値から成る。DATA 及び INDICATOR フィールドは,関

係しない。これらのフィールド及び

TYPE の特定の値に対して適用可能でないフィールドには,処

理系依存の値が設定される。

a) SQL 項目記述子領域に,LEVEL 値が である別の記述子の直に下位にある記述子が設定される

ならば,

LEVEL には,K+1 が設定される。そうでなければ,LEVEL には,0 が設定される。

b) TYPE には,列,<動的パラメタ指定>又は下位にある記述子の宣言型を示すための,表 25“動的

SQL 中で SQL データ型のために用いるコード”で規定するとおりのコードが設定される。

c)

場合:

i) LEVEL 値が 0 で,かつ,項目記述子領域が列を記述するならば,次による。

1)  列が潜在的にナル可能ならば,NULLABLE には,1 が設定される。そうでなければ,

NULLABLE には,0 が設定される。

2)  列名が処理系依存ならば,

NAME には,列の処理系依存の名前が設定され,UNNAMED には,

1 が設定される。そうでなければ,NAME には,列に対する<導出列>の名前が設定され,

UNNAMED には,0 が設定される。

3)  列が の主キーの要素で,かつ,KEY_TYPE に 1 が設定されたか,又は列が の優先候補キ

ーの要素で,かつ,

KEY_TYPE に 2 が設定されたならば,KEY_MEMBER には,1 が設定さ

れる。そうでなければ,

KEY_MEMBER には,0 が設定される。

ii) LEVEL の値が 0 で,

かつ,項目記述子領域が

<動的パラメタ指定>を記述するならば,次による。

1) NULLABLE には,1 が設定される。

注記 541  これは,<動的パラメタ指定>がナル値をもつことができることを示す。

2) UNNAMED には,1 が設定され,NAME には,処理系依存の名前が設定される。

3) KEY_MEMBER には,0 が設定される。

iii)  そうでなければ,次による。

1) NULLABLE には,1 が設定される。

2)  場合:

A)  項目記述子領域が行のフィールドを記述するならば,次による。

場合:

I)

フィールドの名前が処理系依存ならば,

NAME には,フィールドの処理系依存の名前が

設定され,

UNNAMED には,1 が設定される。

II)  そうでなければ,NAME には,フィールドの名前が設定され,UNNAMED には,0 が設

定される。

B)  そうでなければ,UNNAMED には,1 が設定され,NAME には,処理系依存の名前が設定

される。

3) KEY_MEMBER には,0 が設定される。

d)  場合:

i) TYPE が<文字列型>を示すならば,次による。

1) LENGTH には,文字列型の文字単位での長さ又は最大長が設定される。

2) OCTET_LENGTH には,文字列型のオクテット単位での可能な最大長が設定される。

3) CHARACTER_SET_CATALOG,

CHARACTER_SET_SCHEMA 及び CHARACTER_SET_NAME


827

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

には,文字列型の文字集合の完全修飾付きの名前が設定される。

4) COLLATION_CATALOG,COLLATION_SCHEMA 及び COLLATION_NAME には,文字列型

の宣言型照合順があるならば,その宣言型照合順の完全修飾付きの名前が設定され,そうで

なければ,長さ

0 の文字列が設定される。

当該

<LANGUAGE 句>が C を指定するならば,LENGTH 及び OCTET_LENGTH 中で指定さ

れる長さは,

C 文字列を終了させる処理系定義のナル文字を含まない。

ii) TYPE が<2 進オクテット列型>を示すならば,LENGTH 及び OCTET_LENGTH には,2 進オク

テット列のオクテット単位での長さ又は最大長が設定される。

iii) TYPE が<真数型>を示すならば,PRECISION 及び SCALE には,真数の精度及び位取りが設定

される。

iv) TYPE が<概数型>を示すならば,PRECISION には,概数の精度が設定される。

v) TYPE が<日時型>を示すならば,LENGTH には,日時型の位置単位での長さが設定され,

DATETIME_INTERVAL_CODE には,特定の日時データ型を示すための,表 26“動的 SQL 中で

日時データ型に関連付けられるコード”で規定するとおりのコードが設定され,

PRECISION に

は,

<時刻精度>又は<時刻印精度>のいずれかが,適用可能ならば,設定される。

vi) TYPE が<時間隔型>を示すならば,LENGTH には,時間隔型の位置単位での長さが設定され,

DATETIME_INTERVAL_CODE には,時間隔データ型の<時間隔修飾子>を示すための,表 27“動

SQL 中で<時間隔修飾子>のために用いるコード”で規定するとおりのコードが設定され,

DATETIME_INTERVAL_PRECISION に は , < 時 間 隔 先 行 フ ィ ー ル ド 精 度 > が 設 定 さ れ ,

PRECISION には,適用可能ならば,<時間隔小数秒精度>が設定される。

vii) TYPE

が 利 用 者 定 義 型 を 示 す な ら ば ,

USER_DEFINED_TYPE_CATALOG ,

USER_DEFINED_TYPE_SCHEMA 及び USER_DEFINED_TYPE_NAME には,利用者定義型の完

全修飾付きの名前が設定され,

USER_DEFINED_TYPE_CODE には,利用者定義型のカテゴリ

を示すための,表 29“動的 SQL 中で利用者定義型に関連付けられるコード”で規定するとお

りのコードが設定される。

viii) TYPE が<参照型>を示すならば,次による。

1) USER_DEFINED_TYPE_CATALOG,USER_DEFINED_TYPE_SCHEMA 及び

USER_DEFINED_TYPE_NAME には,被参照型の完全修飾付きの名前が設定される。

2) SCOPE_CATALOG,SCOPE_SCHEMA 及び SCOPE_NAME には,参照可能表の完全修飾付き

の名前が設定される。

3) LENGTH 及び OCTET_LENGTH には,<参照型>のオクテット単位での長さが設定される。

ix) TYPE が ROW を示すならば,DEGREE には,行型の次数が設定される。

x)

09

 TYPE が ARRAY を示すならば,CARDINALITY には,配列型の最大基数が設定される。

e) LEVEL が 0 で,かつ,PS が<CALL 文>ならば,次による。

i) <CALL 文>の<ルーチン呼出し>の当該ルーチンを SR とする。

ii) <CALL 文>の SQL 引数 Ay に単純に含まれる 番目の<動的パラメタ指定>を Dx とする。

iii)  SR の 番目の SQL パラメタを Py とする。

注記 542 IN である<パラメタモード>をもつ は,0 個又は 1 個以上の<動的パラメタ指定>を

含む

<値式>の可能性がある。したがって,次のとおりである。

  どの Dx も,一つの,かつ,唯一の Py に対応する。


828

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

  幾つかの Dx の実現値が同じ Py に対応する可能性がある。

  対応する Dx の実現値をもたない Py の実現値が存在する可能性がある。

iv)  各 Dx に対する記述子中の PARAMETER_MODE の値には,表 28“動的 SQL 中で入力/出力 SQL

パラメタのために用いるコード”中の,Py の<パラメタモード>を示す値が設定される。

v)  各 Dx に対する記述子中の PARAMETER_ORDINAL_POSITION には,Py の順序位置が設定され

る。

vi)  各 Dx に対する記述子中の PARAMETER_SPECIFIC_CATALOG,

PARAMETER_SPECIFIC_SCHEMA 及び PARAMETER_SPECIFIC_NAME には,SR のカタログ

名,スキーマ名及び特定名を識別する値が設定される。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<入力 DESCRIBE 文>を含んではなら

ない。

2)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<SQL 文名>である<記述対象>を含む

<出力 DESCRIBE 文>を含んではならない。

3)  機能 T472“DESCRIBE CURSOR”なしでは,適合する SQL 言語は,<カーソル名>を含む<記述対象

>を含む<出力 DESCRIBE 文>を含んではならない。

20.10

<入力 USING 句>

この細分箇条は,ISO/IEC 9075-4 の“15.2 <入力 USING >”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“17.5 <入力 USING >”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“17.2 <入力 USING >”によって修正される。 

機能

<入力 USING 句> (<input using clause>)  は,<動的 SQL 文>に対して入力値を与える。

形式

<入力 USING 句> ::=

  <USING 引数>

 |

<USING 入力記述子>

<USING 引数> ::=

  USING  <USING 句の引数> [ { <コンマ> <USING 句の引数> }... ]

<USING 句の引数> ::=

  <一般値指定>

<USING 入力記述子> ::=

  <USING 記述子>

構文規則

1)

04

 <USING 句の引数>に直に含まれる<一般値指定>は,<ホストパラメタ指定>,<SQL パラメタ参照

>又は<埋込み変数指定>のいずれかでなければならない。

アクセス規則

なし。 

一般規則

1)

09

 <記述子名>が SQL 記述子領域を識別しないならば,例外条件:SQL 記述子名が正しくない  (invalid 

SQL descriptor name)  が引き起こされる。


829

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

2) <入力 USING 句>が<動的 OPEN 文>中で用いられるとき又は<EXECUTE 文>中の<パラメタ USING

>として用いられるとき,<入力 USING 句>は,それぞれ,<動的 OPEN 文>又は<EXECUTE 文>

に対する入力

<動的パラメタ指定>の値を記述する。<動的 OPEN 文>によって参照される被準備<動

SELECT 文>,又は<EXECUTE 文>によって参照される被準備文を,PS とする。

3)  この規格群の構文規則で規定するどの構文上の変換よりも前の PS 中の入力<動的パラメタ指定>の

個数を とする。

4) <USING 引数>が指定され,かつ,<USING 句の引数>の個数が でないならば,例外条件:動的 SQL

誤り  (dynamic SQL error)  -  USING 句が動的パラメタ指定と一致しない  (using clause does not 

match dynamic parameter specifications)  が引き起こされる。

5) <USING 入力記述子>が指定されるならば,次による。

a) COUNT の値を とする。

b)  が,<記述子名>によって識別される SQL 記述子領域が割り当てられたときに指定された<実現

>の値を超えるか又は 0 未満ならば,例外条件:動的 SQL 誤り  -  記述子数が正しくない  (invalid 

descriptor count)  が引き起こされる。

c)

最初の 個の項目記述子領域が,“20.1 SQL 記述子領域の記述”で規定するとおりに正しくない

ならば,例外条件:

動的 SQL 誤り  -  USING 句が動的パラメタ指定と一致しない  が引き起こさ

れる。

d)  最初の 個の項目記述子領域中で,次による。

i) LEVEL の値が 0 である項目記述子領域の個数が でないならば,例外条件:動的 SQL 誤り  -

USING 句が動的パラメタ指定と一致しない  が引き起こされる。

ii) INDICATOR の値が負ではなく,TYPE が ROW を示さず,その項目記述子領域が,INDICATOR

の値が負であるか又は

TYPE フィールドが ARRAY,ARRAY LOCATOR,MULTISET 又は

MULTISET LOCATOR を示す項目記述子領域の下位にはなく,かつ,DATA の値が,項目記述

子領域によって表現されるデータ型の正しい値でないならば,例外条件:

動的 SQL 誤り  -

USING 句が動的パラメタ指定と一致しない  が引き起こされる。

6) 1

≤ i ≤ に対して,次による。

a)  PS の 番目の入力<動的パラメタ指定>の記述を反映するために<入力 DESCRIBE 文>によって設

定される項目記述子領域及びそれの下位にある記述子領域によって表現される型として定義され

る 番目の入力<動的パラメタ指定>の実効的な宣言型を,TDT とする。

注記 543  “20.9 <記述文>”の一般規則参照。

注記 544  データ型と項目記述子領域との間の関係に適用される“によって表現される”は,

20.1 SQL 記述子領域の記述”の構文規則で定義している。

b)  場合:

i) <USING 入力記述子>が指定されるならば,次による。

1) LEVEL の値が 0 である 番目の項目記述子領域を IDA とする。

2)  IDA によって表現される実効的な宣言型を SDT とする。

注記 545  データ型と項目記述子領域との間の関係に適用される“によって表現される”は,

20.1 SQL 記述子領域の記述”の構文規則で定義している。

3)  IDA の関連する値  (associated value)  を SV とする。

場合:


830

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

A) INDICATOR の値が負ならば,SV は,ナル値とする。

B)  そうでなければ,次による。

場合:

I) TYPE が ROW を示すならば,SV は,型が SDT で,かつ,フィールド値が,IDA の直に

下位にある記述子領域の関連する値である行とする。

II)  そうでなければ,SV は,データ型 SDT をもつ DATA の値とする。

ii) <USING 引数>が指定されるならば,番目の<USING 句の引数>の宣言型及び値を,それぞれ,

SDT 及び SV とする。

c)

場合:

i)

SDT が位置付け子型ならば,次による。

場合:

1)  SV がナル値でないならば,SV の値を 番目の動的パラメタの値とする。

2)  そうでなければ,ナル値を 番目の動的パラメタの値とする。

ii)

14

 SDT 及び TDT が既定義データ型ならば,次による。

場合:

1)  次の<CAST 指定>が“6.13 <CAST 指定>”の構文規則に適合しないで,かつ,型 STD から型

TDT への処理系定義の変換が存在するならば,

その処理系定義の変換が実効的に実行されて,

SV が型 TDT に変換され,その結果は,番目の入力動的パラメタの値 TV とする。

CAST ( SV AS TDT )

2)  そうでなければ,次による。

A)  次の<CAST 指定>が“6.13 <CAST 指定>”の構文規則に適合しないならば,例外条件:動

的 SQL 誤り  -  制限されたデータ型属性違反  (restricted data type attribute violation)  が引き

起こされる。

CAST ( SV AS TDT )

B)  次の<CAST 指定>が実効的に実行され,それは,番目の入力動的パラメタの値とする。

CAST ( SV AS TDT )

iii)  SDT が既定義データ型で,かつ,TDT が利用者定義型ならば,次による。

1)  TDT によって識別されるデータ型を DT とする。

2)  DT の利用者定義型名に対応するグループ名を現行 SQL セションがもつならば,そのグルー

プ名を GN とする。そうでなければ,現行 SQL セションに関連付けられた既定変換グループ

名を GN とする。

3)  DT を TYPEGN を GROUP として,

9.23 TO-SQL 関数の決定”の構文規則を適用する。

場合:

A)  適用可能な TO-SQL 関数が存在するならば,その TO-SQL 関数を TSF とする。TSF が SQL

呼出しメソッドならば,TSF の 2 番目の SQL パラメタの宣言型を TSFPT とする。そうで

なければ,TSF の 1 番目の SQL パラメタの宣言型を TSFPT とする。

場合:

I)

TSFPT が SDT と互換であるならば,次による。

場合:

1)  TSF が SQL 呼出しメソッドならば,次の関数呼出しによって戻される値を 1 番目のパ


831

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

ラメタとして,SV を第 2 番目のパラメタとして,TSF が実効的に呼び出される。

DT()

<戻り値>は,番目の入力動的パラメタの値とする。

2)  そうでなければ,SV を 1 番目のパラメタとして,TSF が実効的に呼び出される。<戻

り値

>は,番目の入力動的パラメタの値とする。

II)  そうでなければ,例外条件:動的 SQL 誤り  -  制限されたデータ型属性違反  が引き起

こされる。

B)  そうでなければ,

例外条件:

動的 SQL 誤り  -  データ型の変換関数違反  (data type transform 

function violation)  が引き起こされる。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<入力 USING 句>を含んではならな

い。

20.11

<出力 USING 句>

この細分箇条は,ISO/IEC 9075-4 の“15.3 <出力 USING >”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“17.6 <出力 USING >”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“17.3 <出力 USING >”によって修正される。 

機能

<出力 USING 句> (<output using clause>)  は,<動的 SQL 文>に対して出力変数を与える。

形式

<出力 USING 句> ::=

  <INTO 引数>

 |

<INTO 記述子>

<INTO 引数> ::=

  INTO  <INTO 句の引数> [ { <コンマ> <INTO 句の引数> }... ]

<INTO 句の引数> ::=

  <相手指定>

<INTO 記述子> ::=

  INTO [ SQL ] DESCRIPTOR <記述子名>

構文規則

1)

04

 <INTO 句の引数>に直に含まれる<相手指定>は,<ホストパラメタ指定>,<SQL パラメタ参照>又

<埋込み変数指定>のいずれかでなければならない。

アクセス規則

なし。 

一般規則

1)

09

 <出力 USING 句>が<動的 FETCH 文>中で用いられるとき又は<EXECUTE 文>の<結果 USING 句>

として用いられるとき,それぞれ,

<動的 FETCH 文>によって参照される被準備<動的 SELECT 文>,

又は

<EXECUTE 文>によって参照される被準備<動的単一行 SELECT 文>を,PS とする。

2)  場合:

a)  PS が<動的 SELECT 文>又は<動的単一行 SELECT 文>ならば,PS によって指定される表の次数を

とする。


832

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

b)  そうでなければ,PS に含まれる出力<動的パラメタ指定>の個数を とする。

3) <INTO 引数>が指定され,かつ,<INTO 句の引数>の個数が でないならば,例外条件:動的 SQL

誤り  (dynamic SQL error)  -  USING 句が相手指定と一致しない  (using clause does not match target 

specifications)  が引き起こされる。

4) <INTO 記述子>が指定されるならば,次による。

a) <記述子名>が SQL 記述子領域を識別しないならば,

例外条件:SQL 記述子名が正しくない  (invalid 

SQL descriptor name)  が引き起こされる。

b) COUNT の値を とする。

c)

が,<記述子名>によって識別される SQL 記述子領域が割り当てられたときに指定された<実現

>の値を超えるか又は 0 未満ならば,例外条件:動的 SQL 誤り  -  記述子数が正しくない  (invalid 

descriptor count)  が引き起こされる。

d)  最初の 個の項目記述子領域が,

20.1 SQL 記述子領域の記述”で規定するとおりに正しくない

ならば,例外条件:

動的 SQL 誤り  -  USING 句が相手指定と一致しない  が引き起こされる。

e)

最初の 個の項目記述子領域中で,LEVEL の値が 0 である項目記述子領域の個数が でないな

らば,例外条件:

動的 SQL 誤り  -  USING 句が相手指定と一致しない  が引き起こされる。

5) 1

≤ i ≤ に対して,次による。

a)  次の<出力 DESCRIBE 文>によって設定された項目記述子領域及びそれの下位にある記述子領域

によって表現される型として定義される 番目の<選択リスト>列又は出力<動的パラメタ指定>の

実効的な宣言型を SDT とする。

場合:

i)

PS が<動的 SELECT 文>又は<動的単一行 SELECT 文>ならば,番目の<選択リスト>列の記述

を反映する

<出力 DESCRIBE 文>。データ型 SDT をもつその<選択リスト>列の値を SV とする。

ii)  そうでなければ,番目の出力<動的パラメタ指定>の記述を反映する<出力 DESCRIBE 文>。デ

ータ型 SDT をもつその<動的パラメタ指定>の値を SV とする。

注記 546  データ型と項目記述子領域との間の関係に適用される“によって表現される”は,

20.1 SQL 記述子領域の記述”の構文規則で定義している。

b)  場合:

i) <INTO 記述子>が指定されるならば,LEVEL の値が 0 である 番目の項目記述子領域 IDA によ

って表現されるとおりの 番目の<相手指定>の宣言型を TDT とする。

注記 547  データ型と項目記述子領域との間の関係に適用される“によって表現される”は,

20.1 SQL 記述子領域の記述”の構文規則で定義している。

ii) <INTO 引数>が指定されるならば,番目の<INTO 句の引数>の宣言型を TDT とする。

c) <出力 USING 句>が<動的 FETCH 文>に直接含まれるならば,<動的 FETCH 文>によって識別され

る動的カーソルを CR とし,カーソル CR に対して,現在の実行に先立って最も新しく実行され

<動的 FETCH 文>があるならば,それの 番目の<相手指定>又は<INTO 句の引数>の最特定型を

LTDT とする。次のいずれかが真ならば,例外条件:動的 SQL 誤り  -  制限されたデータ型属性

違反  (restricted data type attribute violation)  が引き起こされるかどうかは,処理系定義とする。

i)

LTDT 及び TDT の両方が 2 進オクテット長大オブジェクト型を識別し,かつ,LTDT 及び TDT

のうちの一方だけが

2 進オクテット長大オブジェクト位置付け子である。

ii)  LTDT 及び TDT の両方が文字長大オブジェクト型を識別し,かつ,LTDT 及び TDT のうちの一


833

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

方だけが文字長大オブジェクト位置付け子である。

iii)  LTDT 及び TDT の両方が配列型を識別し,かつ,LTDT 及び TDT のうちの一方だけが配列位置

付け子である。

iv)  LTDT 及び TDT の両方がマルチ集合型を識別し,かつ,LTDT 及び TDT のうちの一方だけがマ

ルチ集合位置付け子である。

v)  LTDT 及び TDT の両方が利用者定義型を識別し,かつ,LTDT 及び TDT のうちの一方だけが利

用者定義型位置付け子である。

d)  場合:

i)

TDT が位置付け子型ならば,次による。

場合:

1)  SV がナル値でないならば,SV を一意に識別する位置付け子 が生成され,それは,番目の

<相手指定>の値 TV とする。

2)  そうでなければ,番目の<相手指定>の値 TV は,ナル値とする。

ii)

14

 STD 及び TDT が既定義データ型ならば,次による。

場合:

1)  次の<CAST 指定>が“6.13 <CAST 指定>”の構文規則に適合しないで,かつ,型 STD から型

TDT への処理系定義の変換が存在するならば,

その処理系定義の変換が実効的に実行されて,

SV が型 TDT に変換され,その結果は,番目の<相手指定>の値 TV とする。

CAST ( SV AS TDT )

2)  そうでなければ,次による。

A)  次の<CAST 指定>が“6.13 <CAST 指定>”の構文規則に適合しないならば,例外条件:動

的 SQL 誤り  -  制限されたデータ型属性違反  が引き起こされる。

CAST ( SV AS TDT )

B)  次の<CAST 指定>が実効的に実行され,それは,番目の<相手指定>の値 TV とする。

CAST ( SV AS TDT )

iii)  SDT が利用者定義型で,かつ,TDT が既定義データ型ならば,次による。

1)  SDT によって識別されるデータ型を DT とする。

2)  DT の利用者定義型名に対応するグループ名を現行 SQL セションがもつならば,そのグルー

プ名を GN とする。そうでなければ,現行 SQL セションに関連付けられた既定変換グループ

名を GN とする。

3)  DT を TYPE として,GN を GROUP として,

9.21 FROM-SQL 関数の決定”の構文規則を適

用する。

場合:

A)  適用可能な FROM-SQL 関数が存在するならば,その FROM-SQL 関数を FSF とする。FSF

<戻りデータ型>を FSFRT とする。

場合:

I)

FSFRT が TDT と互換であるならば,FROM-SQL 関数 FSF が,SV をそれの入力 SQL パ

ラメタとして実効的に呼び出され,

<戻り値>は,番目の<相手指定>の値 TV とする。

II)  そうでなければ,例外条件:動的 SQL 誤り  -  制限されたデータ型属性違反  が引き起

こされる。


834

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

B)  そうでなければ,

例外条件:

動的 SQL 誤り  -  データ型の変換関数違反  (data type transform 

function violation)  が引き起こされる。

e)

場合:

i) <INTO 記述子>が指定されるならば,IDA には,次のとおりに TV の値を反映するように設定され

る。

場合:

1) TYPE が ROW を示すならば,次による。

場合:

A)  TV がナル値ならば,IDA 中の INDICATOR,及び TYPE が ARRAY,ARRAY LOCATOR,

MULTISET 又は MULTISET LOCATOR を示す項目記述子領域の下位にはない,IDA の下位に

ある全ての記述子領域中の

INDICATOR には,-1 の値が設定される。

B)  そうでなければ,IDA の 番目の下位にある記述子領域には,IDA の 番目の下位にある記

述子領域を IDA として,TV の 番目のフィールドの値を TV として,SV の 番目のフィー

ルドの値を SV として,SV の 番目のフィールドのデータ型を SDT として,(最も外側の“場

合”で始まる)この部分規則を適用することによって,TV の 番目のフィールドの値を反映

するように設定される。

2)  そうでなければ,次による。

場合:

A)  TV がナル値ならば,INDICATOR には,-1 が設定される。

B)  TV がナル値でないならば,次による。

I) INDICATOR には,0 が設定される。

II)  場合:

1) TYPE が位置付け子型を示すならば,TV を一意に識別する位置付け子 が生成され,

DATA には,を表現する処理系依存の 4 オクテットの整数値が設定される。

2)  そうでなければ,DATA には,TV が設定される。

III)  場合:

1) TYPE が CHARACTER VARYING,CHARACTER LARGE OBJECT,BINARY VARYING

又は

BINARY LARGE OBJECT を示すならば,RETURNED_LENGTH には,それぞれ,

TV の文字単位又はオクテット単位での長さが設定され,RETURNED_OCTET_LENGTH

には,TV のオクテット単位での長さが設定される。

2)  SDT が CHARACTER VARYING,CHARACTER LARGE OBJECT,BINARY VARYING 又

BINARY LARGE OBJECT ならば,RETURNED_LENGTH には,それぞれ,SV の文字

単位又はオクテット単位での長さが設定され,

RETURNED_OCTET_LENGTH には,SV

のオクテット単位での長さが設定される。

3) TYPE が ARRAY,ARRAY LOCATOR,MULTISET 又は MULTISET LOCATOR を示すな

らば,

RETURNED_CARDINALITY には,TV の基数が設定される。

ii) <INTO 引数>が指定されるならば,番目の<INTO 句の引数>を TARGET として,TV を VALUE

として,“9.1 取出し代入”の一般規則を適用する。

注記 548 SQL 記述子領域の他の全ての値は,変更されない。

適合性規則


835

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

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<出力 USING 句>を含んではならな

い。

20.12

<EXECUTE 文>

この細分箇条は,ISO/IEC 9075-9 の“17.7 <EXECUTE >”によって修正される。 

機能

<EXECUTE 文> (<execute statement>)  は,入力 SQL パラメタ及び出力相手を被準備文に関連付けて,文

を実行する。

形式

<EXECUTE 文> ::=

  EXECUTE  <SQL 文名> [ <結果 USING 句> ] [ <パラメタ USING 句> ]

<結果 USING 句> ::=

  <出力 USING 句>

<パラメタ USING 句> ::=

  <入力 USING 句>

構文規則

1) <SQL 文名>が<文名>ならば,次による。

場合:

a) <EXECUTE 文>が<SQL 呼出しルーチン>に含まれるならば,<EXECUTE 文>を含む最も内側の

<SQL 呼出しルーチン>は,<EXECUTE 文>の<文名>と等価な<文名>をもつ<PREPARE 文>を含ま

なければならない。

b)  そうでなければ,<EXECUTE 文>を含む<SQL クライアントモジュール定義>は,<EXECUTE 文>

<文名>と等価な<文名>をもつ<PREPARE 文>を含まなければならない。

アクセス規則

なし。 

一般規則

1)

09

 <SQL 文名>が被準備文 を識別しないならば,例外条件:SQL 文名が正しくない  (invalid SQL 

statement name)  が引き起こされる。

2) <SQL 文名>を用いてあらかじめ準備される文を PS とする。

3)  PS が<動的 SELECT 文>ならば,次による。

a) <動的単一行 SELECT 文>の形式及び構文規則に PS が適合しないならば,例外条件:動的 SQL 

り  (dynamic SQL error)  -  カーソル指定が実行できない  (cursor specification cannot be executed)

が引き起こされる。

b)  そうでなければ,PS は,<動的単一行 SELECT 文>として扱われる。

4)  作成局所一時表又は宣言局所一時表の<表名>を PS が含み,被準備文を準備した<PREPARE 文>と同

<SQL クライアントモジュール定義>中に<EXECUTE 文>がないならば,例外条件:構文誤り又は

アクセス規則違反  (syntax error or access rule violation)  が引き起こされる。

5)  PS が入力<動的パラメタ指定>を含み,<パラメタ USING 句>が指定されないならば,例外条件:動

的 SQL 誤り  -  動的パラメタに対する USING 句が必要  (using clause required for dynamic 

parameters)  が引き起こされる。

6)  PS が<動的単一行 SELECT 文>であるか又はそれが出力<動的パラメタ指定>を含み,<結果 USING


836

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

>が指定されないならば,例外条件:動的 SQL 誤り  -  結果フィールドに対する USING 句が必要

(using clause required for result fields)  が引き起こされる。

7) <パラメタ USING 句>が指定されるならば,<EXECUTE 文>中の<パラメタ USING 句>に対して,

20.10 <入力 USING 句>”で規定する一般規則を適用する。

8)  最上部セルの写しが認可スタックに押し込まれる。PS が所有者をもつならば,認可スタックの最上

部セルには,PS の所有者の認可識別子だけが含まれるように設定される。

9)  PS を EXECUTING  STATEMENT として,

13.4 <SQL 手続文>”の一般規則を適用する。この評価

の間に,元の

SQL 文に含まれる各<動的パラメタ指定>  DPS に対して,元の SQL 文中の<動的パラ

メタ指定

>の集まり内での DPS の順序位置を とする。この規格群中の構文規則で規定するいずれ

かの構文上の変換の結果として DPS が複製されるならば,複製されたこのような全ての入力動的パ

ラメタには,番目の入力動的パラメタの同一の値が設定される。

10) <結果 USING 句>が指定されるならば,<EXECUTE 文>中の<結果 USING 句>に対して,

20.11  <出

USING 句>”で規定する一般規則を適用する。

11)  実行の完了時点に,認可スタック中の最上部セルが取り除かれる。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<結果 USING 句>を含んではならな

い。

2)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<EXECUTE 文>を含んではならない。

20.13

<EXECUTE IMMEDIATE 文>

機能

<EXECUTE IMMEDIATE 文> (<execute immediate statement>)  は,準備可能文を動的に準備し,実行する。

形式

<EXECUTE IMMEDIATE 文> ::=

  EXECUTE  IMMEDIATE  <SQL 文変数>

構文規則

1) <SQL 文変数>の宣言型は,文字列でなければならない。

アクセス規則

なし。 

一般規則

1) <SQL 文変数>の内容を とする。

2)  次のうちの一つ以上が真ならば,例外条件:構文誤り又はアクセス規則違反  (syntax error or access 

rule violation)  が引き起こされる。

a)  が<動的 SELECT 文>又は<動的単一行 SELECT 文>である。

b)  が<動的パラメタ指定>を含む。

3) <SQL 文変数>を SV とする。<EXECUTE IMMEDIATE 文>は,次と等価とする。

PREPARE IMMEDIATE_STMT FROM SV ;

EXECUTE IMMEDIATE_STMT ;

DEALLOCATE PREPARE IMMEDIATE_STMT ;

ここで,IMMEDIATE_STMT は,既存のどの被準備文も識別しない処理系依存の<文名>とする。

注記 549 PREPARE 又は EXECUTE の結果として生じる例外条件又は終了条件の情報は,診断領域


837

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

中に反映される。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<EXECUTE IMMEDIATE 文>を含ん

ではならない。

20.14

<動的カーソル宣言>

この細分箇条は,ISO/IEC 9075-9 の“17.8 <動的カーソル宣言>”によって修正される。 

機能

<動的カーソル宣言> (<dynamic declare cursor>)  は,次々に<カーソル指定>に関連付けられてもよい<文

>に関連付けられる宣言動的カーソルを宣言する。

形式

<動的カーソル宣言> ::=

  DECLARE  <カーソル名>

      <カーソル特性>

      FOR  <文名>

構文規則

1) <カーソル名>は,同じ<SQL クライアントモジュール定義> 中の他のどの<カーソル宣言>,<動的

カーソル宣言

>又は<受取りカーソル割当て文>中で指定される<カーソル名>とも同一であってはな

らない。

<カーソル名>の有効範囲は,に含まれる<SQL スキーマ文>を除く とする。

2) <動的カーソル宣言>に単純に含まれる<文名>を SN とする。<動的カーソル宣言>を含む<SQL クラ

イアントモジュール定義

>は,<SQL スキーマ文>を介在しないで,SN と等価な<文名>をもつ

<PREPARE 文>を含まなければならない。

アクセス規則

なし。 

一般規則

1)

09

  カーソル宣言記述子 CDD が作成される。CDD は,次のことを示す標識を含む。

a)  カーソルの種類が宣言動的カーソルであること。

b)  カーソルの出所が,<動的カーソル宣言>を含む<SQL クライアントモジュール定義>をもつ SQL

クライアントモジュールを示す標識であること。

c)

カーソルの名前が

<カーソル名>であること。

d)  カーソルの起源が SN であること。

e)

カーソルの宣言特性が,

<カーソル特性>によって決定されるとおりであること。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的カーソル宣言>を含んではなら

ない。

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

この細分箇条は,ISO/IEC 9075-9 の“17.9 <ALLOCATE CURSOR >”によって修正される。 

機能

<拡張動的カーソル割当て文> (<allocate extended dynamic cursor statement>)  は,<カーソル指定>に対して

被準備文を基にするカーソルを定義する。

形式


838

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

<拡張動的カーソル割当て文> ::=

  ALLOCATE  <拡張カーソル名>

      <カーソル特性>

      FOR  <拡張文名>

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)

09

 <拡張カーソル名>に直に含まれる<単純値指定>を とする。次の TRIM 関数の結果の文字列を V

とする。

TRIM ( BOTH ' ' FROM S )

場合:

a) <識別子>の形式及び構文規則に が適合しないならば,例外条件:カーソル名が正しくない

(invalid cursor name)  が引き起こされる。

b)  そうでなければ,<拡張カーソル名>を ECN とする。ECN の値は,とする。

2)  ECN がカーソルを識別するならば,例外条件:カーソル名が正しくない  が引き起こされる。

3) <拡張文名>が被準備文を識別しないならば,例外条件:SQL 文名が正しくない  (invalid SQL statement 

name)  が引き起こされる。

4) <拡張文名>によって識別される被準備文 が<カーソル指定>でないならば,例外条件:動的 SQL

誤り  (dynamic SQL error)  -  準備された文がカーソル指定ではない  (prepared statement not a cursor 

specification)  が引き起こされる。

5)  が次のとおりに再準備される。

14.3  <カーソル指定>”の構文規則に が適合しないならば,例

外条件:

構文誤り又はアクセス規則違反  (syntax error or access rule violation)  が引き起こされる。

6)  カーソル宣言記述子 CDD が作成される。CDD は,次のことを示す標識を含む。

a)  カーソルの種類が拡張動的カーソルであること。

b)  カーソルの出所が次のとおりであること。

場合:

i) <拡張カーソル名>に含まれる<有効範囲選択肢>が GLOBAL ならば,

現行

SQL セション識別子。

ii)  そうでなければ,<拡張動的カーソル割当て文>を含む<SQL クライアントモジュール定義>をも

SQL クライアントモジュールを示す標識。

c)

カーソルの名前が拡張名 であること,及び<拡張カーソル名>の陽に指定されるか又は暗に想定

される

<有効範囲選択肢>。

d)  カーソルの起源が であること。

e)

カーソルの宣言特性が,

<カーソル特性>によって決定されるとおりであること。

7)  カーソル実現値記述子 CID が作成される。CID は,次のことを示す標識を含む。

a)  カーソル宣言記述子が CDD であること。

b) SQL セション識別子が現行 SQL セション識別子であること。

c)

カーソルの状態が閉じていること。

8) <拡張カーソル名>の値と<拡張カーソル名>の有効範囲中の被準備文との間に関連付けが行われる。


839

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

その関連付けは,被準備文が破壊されるまで保持され,その時点で,

<拡張カーソル名>によって識

別されるカーソルのカーソル宣言記述子及びカーソル実現値記述子も,破壊される。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<拡張動的カーソル割当て文>を含ん

ではならない。

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

機能

<受取りカーソル割当て文> (<allocate received cursor statement>)  は,SQL 呼出し手続から戻される結果集

合並びにカーソルを割り当てる。

形式

<受取りカーソル割当て文> ::=

  ALLOCATE  <カーソル名>

  [ CURSOR ] FOR PROCEDURE <特定ルーチン指示子>

構文規則

1) <カーソル名>は,同じ<SQL クライアントモジュール定義> 中の他のどの<カーソル宣言>,<動的

カーソル宣言

>又は<受取りカーソル割当て文>中で指定される<カーソル名>とも同一であってはな

らない。

<カーソル名>の有効範囲は,に含まれる<SQL スキーマ文>を除く とする。

2) <特定ルーチン指示子>によって識別される SQL 呼出しルーチンは,SQL 呼出し手続でなければな

らない。

アクセス規則

なし。 

一般規則

1) <特定ルーチン指示子>によって識別される SQL 呼出し手続を SIP とする。

現行ルーチン実行文脈の

動作中

SQL 呼出ルーチンを INV とする。

2)  現行 SQL セションの SQL セション文脈が,INV による SIP の呼出しによって生じる結果集合並び

RSS を含まないならば,例外条件:SQL 呼出し手続参照が正しくない  (invalid SQL-invoked procedure 

reference)  が引き起こされる。

3)  RSS が空ならば,例外条件:データなし  (no data)  -  これ以上の結果集合は戻されない  (no 

additional result sets returned)  が引き起こされる。

4)  カーソル宣言記述子 CDD が作成される。CDD は,次のことを示す標識を含む。

a)  カーソルの種類が受取りカーソルであること。

b)  カーソルの出所が<受取りカーソル割当て文>を含む<SQL クライアントモジュール定義>をもつ

SQL クライアントモジュールを示す標識であること。

c)

カーソルの名前が

<カーソル名>であること。

d)  カーソルの起源が<特定ルーチン指示子>であること。

e)

カーソルの宣言特性が次のとおりであること。

i)

カーソルの宣言感度は,

ASENSITIVE。

ii)  カーソルの宣言スクロール可能性は,NO SCROLL。

iii)  カーソルの宣言保持可能性は,WITHOUT HOLD。

iv)  カーソルの宣言戻り可能性は,WITHOUT RETURN。


840

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

5)  カーソル実現値記述子 CID が作成される。CID は,次のことを示す標識を含む。

a)  カーソル宣言記述子が CDD であること。

b) SQL セション識別子が現行 SQL セション識別子であること。

c)

カーソルの状態が開いていること。

6)  CID を CURSOR として,RSS を RESULT SET SEQUENCE として,

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

効果”の一般規則を適用する。

適合性規則

1)  機能 T471“結果集合戻り値”なしでは,適合する SQL 言語は,<受取りカーソル割当て文>を含ん

ではならない。

20.17

<動的 OPEN 文>

この細分箇条は,ISO/IEC 9075-9 の“17.10 <動的 OPEN >”によって修正される。 

機能

<動的 OPEN 文> (<dynamic open statement>) は,入力動的パラメタを<カーソル指定>に関連付けて,動

的カーソルを開く。

形式

<動的 OPEN 文> ::=

  OPEN  <動的カーソル名> [ <入力 USING 句> ]

構文規則

1) <動的カーソル名> DCN が<カーソル名> CN ならば,CN は,CN と等価な<カーソル名>の有効範囲

内に含まれなければならない。CN は,宣言動的カーソルを識別しなければならない。CN によって

識別されるカーソル宣言記述子を CDD とする。

アクセス規則

1) <動的カーソル名>に関連付けられる被準備文に単純に含まれる<問合せ式>のアクセス規則を適用

する。

一般規則

1)  場合:

a)

09

 DCN が<カーソル名> CN ならば,次による。

場合:

i)

CDD に含まれる<文名> SN が被準備文を識別しないならば,例外条件:SQL 文名が正しくない

(invalid SQL statement name)  が引き起こされる。

ii) <カーソル指定>である被準備文を SN が識別しないならば,例外条件:動的 SQL 誤り  (dynamic 

SQL error)  -   準 備 さ れ た 文 が カ ー ソ ル 指 定 で は な い   (prepared statement not a cursor 

specification)  が引き起こされる。

b)  そうでなければ,DCN が拡張動的カーソルを識別しないならば,例外条件:カーソル名が正しく

ない  (invalid cursor name)  が引き起こされる。

2)  DCN によって識別されるカーソルを CR とする。

3) <動的カーソル名>に関連付けられる被準備文 が<動的パラメタ指定>を含み,<入力 USING 句>が

指定されないならば,例外条件:

動的 SQL 誤り  -  動的パラメタに対する USING 句が必要  (using 

clause required for dynamic parameters)  が引き起こされる。

4) <動的カーソル名>が<カーソル名>ならば,は,次のとおりに再準備される。

14.3 <カーソル指定


841

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

>”の構文規則に が適合しないならば,例外条件:構文誤り又はアクセス規則違反  (syntax error or 

access rule violation)  が引き起こされる。

5)  CR が更新可能であることは,CR の結果集合記述子に含まれる<カーソル指定>が更新可能であるこ

とと同値とする。

6) <入力 USING 句>が指定されるならば,<動的 OPEN 文>に対して,

20.10  <入力 USING 句>”で規

定する一般規則を適用する。

7)  CR を CURSOR として,

15.1  カーソルを開くことの効果”の一般規則を適用する。元の SQL 文に

含まれる各

<動的パラメタ指定> DPS に対して,元の SQL 文中の<動的パラメタ指定>の集まり内で

の DPS の順序位置を とする。この規格群中の構文規則で規定するいずれかの構文上の変換の結果

として DPS が複製されるならば,複製されたこのような全ての入力動的パラメタには,番目の入

力動的パラメタの同一の値が設定される。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的 OPEN 文>を含んではならない。

20.18

<動的 FETCH 文>

この細分箇条は,ISO/IEC 9075-9 の“17.11 <動的 FETCH >”によって修正される。 

機能

<動的 FETCH 文> (<dynamic fetch statement>)  は,動的カーソルの行を取り出す。

形式

<動的 FETCH 文> ::=

  FETCH [ [ <取出し方向> ] FROM ] <動的カーソル名> <出力 USING 句>

構文規則

1) <取出し方向>が省略されるならば,NEXT が暗に想定される。

2) <動的カーソル名> DCN が<カーソル名> CN ならば,CN は,CN と等価な<カーソル名>の有効範囲

内に含まれなければならない。CN は,宣言動的カーソルを識別しなければならない。

アクセス規則

なし。 

一般規則

1)

09

 DCN がカーソルを識別しないならば,例外条件:カーソル名が正しくない  (invalid cursor name)  が

引き起こされる。

2)  DCN によって識別されるカーソルを CR とする。

3)  CR を CURSOR として,<取出し方向>を FETCH  ORIENTATION として,

15.3  カーソルの現在行

の決定”の一般規則を適用する。

4)  終了条件:データなし  (no data)  が引き起こされるならば,この細分箇条の一般規則は,これ以上

適用しない。

5) <動的 FETCH 文>中の<出力 USING 句>に対して,

20.11 <出力 USING 句>”で規定する一般規則を

適用する。

6)  相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とする。

注記 550  <導出列>の導出中に例外条件が引き起こされるとき,CR が現在行に位置付けられたま

まかどうかは,処理系依存である。

適合性規則


842

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

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的 FETCH 文>を含んではならな

い。

20.19

<動的単一行 SELECT 文>

機能

<動的単一行 SELECT 文> (<dynamic single row select statement>)  は,動的に指定された表の行から値を取

り出す。

形式

<動的単一行 SELECT 文> ::=

  <問合せ指定>

構文規則

なし。 

アクセス規則

なし。 

一般規則

1) <問合せ指定>の結果を とする。

2)  場合:

a)  の基数が 1 を超えるならば,例外条件:基数違反  (cardinality violation)  が引き起こされる。

b)  が空ならば,終了条件:データなし  (no data)  が引き起こされる。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的単一行 SELECT 文>を含んでは

ならない。

20.20

<動的 CLOSE 文>

この細分箇条は,ISO/IEC 9075-9 の“17.12 <動的 CLOSE >”によって修正される。 

機能

<動的 CLOSE 文> (<dynamic close statement>)  は,動的カーソルを閉じる。

形式

<動的 CLOSE 文> ::=

  CLOSE  <動的カーソル名>

構文規則

1) <動的カーソル名> DCN が<カーソル名> CN ならば,CN は,CN と等価な<カーソル名>の有効範囲

内に含まれなければならない。CN は,宣言動的カーソルを識別しなければならない。

アクセス規則

なし。 

一般規則

1)  DCN がカーソルを識別しないならば,例外条件:カーソル名が正しくない  (invalid cursor name)  が

引き起こされる。

2)  DCN によって識別されるカーソルを CR とする。

3)  CR を CURSOR として,DESTROY を DISPOSITION として,

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

の一般規則を適用する。

適合性規則


843

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

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的 CLOSE 文>を含んではならな

い。

20.21

<動的 DELETE 文:位置付け>

機能

<動的 DELETE 文:位置付け> (<dynamic delete statement: positioned>)  は,表の行を削除する。

形式

<動的 DELETE 文:位置付け> ::=

  DELETE  FROM  <相手表> WHERE CURRENT OF <動的カーソル名>

構文規則

1) <動的 DELETE 文:位置付け>を DDSP とする。<相手表>を TT とし,<動的カーソル名>を DCN 

する。

2)  DCN が<カーソル名>  CN ならば,CN は,CN と等価な<カーソル名>の有効範囲内に含まれなけれ

ばならない。CN は,宣言動的カーソルを識別しなければならない。

3)  TT に含まれる<表名>を TN とする。

アクセス規則

1)  場合:

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,DDSP が<SQL スキ

ーマ文

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。に適用可能な

権限は,TN に関する DELETE を含まなければならない。

b)  そうでなければ,現行の権限は,TN に関する DELETE を含まなければならない。

一般規則

1)  DCN が動的カーソルを識別しないならば,例外条件:カーソル名が正しくない  (invalid cursor name)

が引き起こされる。

2)  DCN によって識別されるカーソルを CR とする。

3)  CR が更新可能カーソルでないならば,例外条件:カーソル名が正しくない  が引き起こされる。

4)  CR の単純に基となる表を とする。が LUT に関して 1 対 1 対応であるような の末端で基とな

る表を LUT とする。

5)  TN が LUT を識別しないか,

又は

ONLY が指定され,かつ,LUT を参照する 中の<表参照>が ONLY

を指定しないか,又は

ONLY が指定されないで,かつ,LUT を参照する 中の<表参照>が ONLY

を指定するならば,例外条件:

相手表がカーソル指定と一致しない  (target table disagrees with cursor 

specification)  が引き起こされる。

6)  CR を CURSOR として,DDSP を STATEMENT として,TT を TARGET として,

15.5  位置付け削

除の効果”の一般規則を適用する。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的 DELETE 文:位置付け>を含ん

ではならない。

20.22

<動的 UPDATE 文:位置付け>

機能

<動的 UPDATE 文:位置付け> (<dynamic update statement: positioned>)  は,表の行を更新する。

形式


844

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

<動的 UPDATE 文:位置付け> ::=

  UPDATE  <相手表> SET <設定句リスト>

      WHERE  CURRENT  OF  <動的カーソル名>

構文規則

1) <動的 UPDATE 文:位置付け>を DUSP とする。<相手表>を TT とし,<設定句リスト>を SCL とし,

<動的カーソル名>を DCN とする。

2)  DCN が<カーソル名>  CN ならば,CN は,CN と等価な<カーソル名>の有効範囲内に含まれなけれ

ばならない。CN は,宣言動的カーソルを識別しなければならない。

3)  TT に含まれる<表名>を TN とする。

4)  TN の有効範囲は,DUSP とする。

アクセス規則

1)  場合:

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,DUSP が<SQL スキ

ーマ文

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。に適用可能な

権限は,各

<対象列>に関する UPDATE を含まなければならない。

b)  そうでなければ,現行の権限は,各<対象列>に関する UPDATE を含まなければならない。

一般規則

1)  DCN が動的カーソルを識別しないならば,例外条件:カーソル名が正しくない  (invalid cursor name)

が引き起こされる。

2)  DCN によって識別されるカーソルを CR とする。

3)  CR が更新可能カーソルでないならば,例外条件:カーソル名が正しくない  が引き起こされる。

4)  CR の単純に基となる表を とする。が LUT に関して 1 対 1 対応であるような の末端で基とな

る表を LUT とする。

5)  TN が LUT を識別しないか,

又は

ONLY が指定され,かつ,LUT を参照する 中の<表参照>が ONLY

を指定しないか,又は

ONLY が指定されないで,かつ,LUT を参照する 中の<表参照>が ONLY

を指定するならば,例外条件:

相手表がカーソル指定と一致しない  (target table disagrees with cursor 

specification)  が引き起こされる。

6)  CR に対する<カーソル指定>に単純に含まれる<ORDER BY 句>中で,いずれかの対象列が直接又は

間接的に参照されるならば,例外条件:

順序付け列への代入を試みた  (attempt to assign to ordering 

column)  が引き起こされる。

7)  CR の結果集合記述子に含まれる<カーソル指定>の陽に指定されるか又は暗に想定される<更新可

能性句

>の陽に指定されるか又は暗に想定される<列名リスト>に含まれる<列名>によって識別され

ない列を,いずれかの対象列が識別するならば,例外条件:

更新可能でない列への代入を試みた

(attempt to assign to non-updatable column)  が引き起こされる。

8)  CR を CURSOR として,SCL を SET  CLAUSE  LIST として,DUSP を STATEMENT として,TT 

TARGET として,

15.6  位置付け更新の効果”の一般規則を適用する。

適合性規則

1)  機能 B031“基本動的 SQL”なしでは,適合する SQL 言語は,<動的 UPDATE 文:位置付け>を含ん

ではならない。

20.23

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


845

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

機能

<準備可能動的 DELETE 文:位置付け> (<preparable dynamic delete statement: positioned>)  は,動的カーソ

ルを通して表の行を削除する。

形式

<準備可能動的 DELETE 文:位置付け> ::=

  DELETE [ FROM <相手表> ]

      WHERE  CURRENT  OF  <準備可能動的カーソル名>

構文規則

1) <準備可能動的 DELETE 文:位置付け>を PDDSP とする。<準備可能動的カーソル名>を PDCN とす

る。

2)  PDCN が曖昧又は不正でないならば,次による。

a)  PDCN によって識別されるカーソルを CR とする。

CR は,

更新可能カーソルでなければならない。

b)  CR の結果集合記述子の<カーソル指定>に単純に含まれる<問合せ式>を QE とする。QE が LUT

に関して

1 対 1 対応であるような QE の末端で基となる表を LUT とする。

c)

場合:

i) <相手表>が指定されないならば,LUT の名前を TN とする。

場合:

1)  LUT を参照する<表参照>が ONLY を指定するならば,次の<相手表>が暗に想定される。

ONLY ( TN )

2)  そうでなければ,次の<相手表>が暗に想定される。

TN

ii)  そうでなければ,<相手表>に含まれる<表名>を TN とする。TN は,LUT を識別しなければな

らない。

d)  陽に指定されるか又は暗に想定される<相手表>を TT とする。

e)

LUT は,遷移旧表又は遷移新表であってはならない。

f)

TT が ONLY を直に含み,LUT が型付き表でないならば,TT は,TN と等価とする。

g) <相手表>が ONLY を指定しなければならないことは,LUT を参照する に含まれる<表参照>が

ONLY を指定することと同値とする。

h)  TN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUT

の記述子を含んでいなければならない。

アクセス規則

1)  PDCN が曖昧又は不正でないならば,次による。

場合:

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,PDDSP が<SQL スキ

ーマ文

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。に適用可能な

権限は,TN に関する DELETE を含まなければならない。

b)  そうでなければ,現行の権限は,TN に関する DELETE を含まなければならない。

一般規則

1)  CR を CURSOR として,PDDSP を STATEMENT として,TT を TARGET として,

15.5  位置付け削

除の効果”の一般規則を適用する。


846

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

注記 551  一般規則に達するならば,PDCN が曖昧又は不正である可能性はない。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<準備可能動的 DELETE 文:位置付

>を含んではならない。

20.24

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

この細分箇条は,ISO/IEC 9075-3 の“8.1 <準備可能動的カーソル名>”によって修正される。 

機能

<準備可能動的カーソル名> (<preparable dynamic cursor name>)  は,<準備可能動的 DELETE 文:位置付

>又は<準備可能動的 UPDATE 文:位置付け>のカーソルを指定する。

形式

<準備可能動的カーソル名> ::=

  [  <有効範囲選択肢> ] <カーソル名>

構文規則

1) <準備可能動的カーソル名>を PDCN とし,PDCN に含まれる<カーソル名>を CN とし,PDCN を含

<準備可能動的 DELETE 文:位置付け>又は<準備可能動的 UPDATE 文:位置付け>を とする。

場合:

a) GLOBAL を指定する<有効範囲選択肢>を PDCN が含むならば,次による。

場合:

i)

大域有効範囲及び CN と等価な<カーソル名>をもつ<拡張カーソル名>をもつ拡張動的カーソル

EDC が現行 SQL セション文脈中に存在するならば,EDC は,PDCN によって参照されるカー

ソルとする。

ii)  そうでなければ,PDCN は,正しくない  (invalid)  という。

b) LOCAL を指定する<有効範囲選択肢>を PDCN が含むか,又は<有効範囲選択肢>が指定されない

ならば,次による。

i)

03

 PDCN の潜在的に参照されるカーソル  (potentially referenced cursor)  は,CN と等価な<カーソ

ル名

>をもち,かつ,(SQL クライアントモジュールに含まれるどの<SQL スキーマ文>も除い

て,)

<準備可能動的カーソル名>を含む SQL クライアントモジュールである有効範囲をもつ全

ての宣言動的カーソル,及び(

SQL クライアントモジュールに含まれるどの<SQL スキーマ文>

も除いて,)

<準備可能動的カーソル名>を含む SQL クライアントモジュールである有効範囲を

もつ

<拡張カーソル名>をもち,かつ,CN と等価な<カーソル名>をもつ全ての拡張動的カーソ

ルを含む。

ii)  場合:

1)  潜在的に参照されるカーソルの個数が 1 より大きいならば,PDCN は,曖昧  (ambiguous)  と

いう。

2)  潜在的に参照されるカーソルの個数が 1 未満ならば,PDCN は,正しくない  という。

3)  そうでなければ,PDCN は,の単一の潜在的に参照されるカーソルを参照する。

アクセス規則

なし。 

一般規則

なし。 


847

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

適合性規則

なし。 

20.25

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

機能

<準備可能動的 UPDATE 文:位置付け> (<preparable dynamic update statement: positioned>)  は,動的カー

ソルを通して表の行を更新する。

形式

<準備可能動的 UPDATE 文:位置付け> ::=

  UPDATE  [  <相手表> ] SET <設定句リスト>

      WHERE  CURRENT  OF  <準備可能動的カーソル名>

構文規則

1) <準備可能動的 UPDATE 文:位置付け>を PDUSP とする。<設定句リスト>を SCL とする。<準備可

能動的カーソル名

>を PDCN とする。

2)  PDCN が曖昧又は不正でないならば,次による。

a)  PDCN によって識別されるカーソルを CR とする。

CR は,

更新可能カーソルでなければならない。

b)  CR の結果集合記述子の<カーソル指定>に単純に含まれる<問合せ式>を QE とする。QE が LUT

に関して

1 対 1 対応であるような QE の末端で基となる表を LUT とする。

c)

場合:

i) <相手表>が指定されないならば,LUT の名前を TN とする。

場合:

1)  LUT を参照する<表参照>が ONLY を指定するならば,次の<相手表>が暗に想定される。

ONLY ( TN )

2)  そうでなければ,次の<相手表>が暗に想定される。

TN

ii)  そうでなければ,<相手表>に含まれる<表名>を TN とする。TN は,LUT を識別しなければな

らない。

d)  陽に指定されるか又は暗に想定される<相手表>を TT とする。

e)

LUT は,遷移旧表又は遷移新表であってはならない。

f)

TT が ONLY を直に含み,LUT が型付き表でないならば,TT は,TN と等価とする。

g)  TT が ONLY を指定しなければならないことは,

LUT を参照する TU に含まれる<表参照>が ONLY

を指定することと同値とする。

h)  TN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUT

の記述子を含んでいなければならない。

i)

TN を CN とする。CN は,露出する<表名又は問合せ名>とする。

j)

CN の有効範囲は,SCL とする。

k)  CR が順序付けられたカーソルならば,SCL に含まれる各<対象列>  OC に対して,CR の<カーソ

ル指定

>の<問合せ式>に単純に含まれる<ORDER BY 句>中の<ソートキー>の一般に基となる列

は,OC 又は OC の一般に基となる列であってはならない。

l) <対象列>として指定される各<列名>は,CR の結果集合記述子に含まれる<カーソル指定>の陽に

指定されるか又は暗に想定される

<更新可能性句>に含まれる陽に指定されるか又は暗に想定さ


848

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

れる

<列名リスト>中の列を識別しなければならない。

アクセス規則

1)  PDCN が曖昧又は不正でないならば,次による。

場合:

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,PDUSP が<SQL スキ

ーマ文

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。に適用可能な

権限は,各

<対象列>に関する UPDATE を含まなければならない。

b)  そうでなければ,現行の権限は,各<対象列>に関する UPDATE を含まなければならない。

一般規則

1)  CR を CURSOR として,SCL を SET CLAUSE LIST として,PDUSP を STATEMENT として,TT 

TARGET として,

15.6  位置付け更新の効果”の一般規則を適用する。

注記 552  一般規則に達するならば,PDCN が曖昧又は不正である可能性はない。

適合性規則

1)  機能 B032“拡張動的 SQL”なしでは,適合する SQL 言語は,<準備可能動的 UPDATE 文:位置付

>を含んではならない。

21  埋込み SQL

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

この細分箇条は,ISO/IEC 9075-4 の“16.1 <SQL 埋込みホストプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10 の“8.1 <SQL 埋込みホストプログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.1 <SQL 埋込みホストプログラム>”によって修正される。 

機能

<SQL 埋込みホストプログラム> (<embedded SQL host program>)  は,<SQL 埋込みホストプログラム>を

指定する。

形式

10

 <SQL 埋込みホストプログラム> ::=

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

 |

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

 |

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

 |

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

 |

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

 |

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

 |

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

<埋込み SQL 文> :=

  <SQL 先頭子> <文又は宣言> [ <SQL 終了子> ]

10

 <文又は宣言> ::=

  <カーソル宣言>

 |

<動的カーソル宣言>

 |

<一時表宣言>

 |

<埋込み認可宣言>


849

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

 |

<埋込みパス指定>

 |

<埋込み変換グループ指定>

 |

<埋込み照合順指定>

 |

<埋込み例外宣言>

 |

<SQL 手続文>

10

 <SQL 先頭子> ::=

  EXEC  SQL

 |

<アンパサンド>SQL<左括弧>

<SQL 終了子> ::=

  END-EXEC

 |

<セミコロン>

 |

<右括弧>

<埋込み認可宣言> ::=

  DECLARE  <埋込み認可句>

<埋込み認可句> ::=

  SCHEMA  <スキーマ名>

| AUTHORIZATION <埋込み認可識別子>

      [ FOR STATIC { ONLY | AND DYNAMIC } ]

| SCHEMA <スキーマ名> AUTHORIZATION <埋込み認可識別子>

      [ FOR STATIC { ONLY | AND DYNAMIC } ]

<埋込み認可識別子> ::=

  <モジュール認可識別子>

<埋込みパス指定> ::=

  <パス指定>

<埋込み変換グループ指定> ::=

  <変換グループ指定>

<埋込み照合順指定> ::=

  <モジュール照合順>

<埋込み SQL 宣言節> ::=

  <埋込み SQL 開始宣言>

      [ <埋込み文字集合宣言> ]

      [ <ホスト変数定義>... ]

      <埋込み SQL 終了宣言>

 |

<埋込み SQL MUMPS 宣言>

<埋込み文字集合宣言> ::=

  SQL NAMES ARE <文字集合指定>

<埋込み SQL 開始宣言> ::=

  <SQL 先頭子> BEGIN DECLARE SECTION [ <SQL 終了子> ]

<埋込み SQL 終了宣言> ::=

  <SQL 先頭子> END DECLARE SECTION [ <SQL 終了子> ]


850

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

<埋込み SQL MUMPS 宣言> ::=

  <SQL 先頭子>

      BEGIN  DECLARE  SECTION

      [ <埋込み文字集合宣言> ]

      [ <ホスト変数定義>... ]

      END  DECLARE  SECTION

      <SQL 終了子>

<ホスト変数定義> ::=

  <Ada 変数定義>

 |

<C 変数定義>

 |

<COBOL 変数定義>

 |

<Fortran 変数定義>

 |

<MUMPS 変数定義>

 |

<Pascal 変数定義>

 |

<PL/I 変数定義>

10

 <埋込み変数名> ::=

  <コロン><ホスト識別子>

<ホスト識別子> ::=

  <Ada ホスト識別子>

 |

<C ホスト識別子>

 |

<COBOL ホスト識別子>

 |

<Fortran ホスト識別子>

 |

<MUMPS ホスト識別子>

 |

<Pascal ホスト識別子>

 |

<PL/I ホスト識別子>

構文規則

1) <SQL 埋込みホストプログラム>は,プログラム言語テキスト及び SQL テキストから成る翻訳単位

とする。

SQL テキストは,この規格群で定義するとおりの,一つ以上の<埋込み SQL 文>,及び省

略可能な一つ以上の

<埋込み SQL 宣言節>から成らなければならない。プログラム言語テキストは,

特定のプログラム言語,すなわち,

ホスト言語  (host language)  の要件に適合しなければならない。

<SQL 埋込み Ada プログラム>,<SQL 埋込み C プログラム>,<SQL 埋込み COBOL プログラム>,

<SQL 埋込み Fortran プログラム>,<SQL 埋込み MUMPS プログラム>,<SQL 埋込み Pascal プログ

ラム

>又は<SQL 埋込み PL/I プログラム>が指定されるとき,それぞれ,ホスト言語は,Ada,C,

COBOL,Fortran,M,Pascal 又は PL/I とする。

注記 553  “翻訳単位”は,“4.23 SQL クライアントモジュール”で定義している。

2)

10

  場合:

a) <SQL 埋込み MUMPS プログラム>に含まれる<埋込み SQL 文>又は<埋込み SQL MUMPS 宣言>は,

<アンパサンド> SQL <左括弧>”である<SQL 先頭子>を含まなければならない。<アンパサンド

>と“SQL”との間にも,“SQL”と<左括弧>との間にも,<分離符号>があってはならない。

b) <SQL 埋込み MUMPS プログラム>に含まれない<埋込み SQL 文>,<埋込み SQL 開始宣言>又は<


851

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

埋込み

SQL 終了宣言>は,“EXEC SQL”である<SQL 先頭子>を含まなければならない。

3)  場合:

a) <SQL 埋込み COBOL プログラム>に含まれる<埋込み SQL 文>,<埋込み SQL 開始宣言>又は<埋

込み

SQL 終了宣言>は,“END-EXEC”である<SQL 終了子>を含まなければならない。

b) <SQL 埋込み Fortran プログラム>に含まれる<埋込み SQL 文>,<埋込み SQL 開始宣言>又は<埋込

SQL 終了宣言>は,<SQL 終了子>を含んではならない。

c)

10

 <SQL 埋込み Ada プログラム>,<SQL 埋込み C プログラム>,<SQL 埋込み Pascal プログラム>

又は

<SQL 埋込み PL/I プログラム>に含まれる<埋込み SQL 文>,<埋込み SQL 開始宣言>又は<埋

込み

SQL 終了宣言>は,<セミコロン>である<SQL 終了子>  を含まなければならない。

d) <SQL 埋込み MUMPS プログラム>に含まれる<埋込み SQL 文>又は<埋込み SQL MUMPS 宣言>は,

<右括弧>である<SQL 終了子>を含まなければならない。

4)  場合:

a) <SQL 埋込み MUMPS プログラム>に含まれる<埋込み SQL 宣言節>は,<埋込み SQL MUMPS 宣

>でなければならない。

b) <SQL 埋込み MUMPS プログラム>に含まれない<埋込み SQL 宣言節>は,<埋込み SQL MUMPS

宣言

>であってはならない。

10

  注記 554 <SQL 埋込みホストプログラム>に含まれてもよい<埋込み SQL 宣言節>の個数に関す

る制限はない。

5) <SQL 先頭子>,<埋込み SQL 開始宣言>又は<埋込み SQL 終了宣言>を構成する<トークン>は,<空

>文字によって区切らなければならず,一つの行に指定しなければならない。そうでなければ,あ

る行から次の行への行及びトークンの継続に関する規則,並びにホスト言語の注釈の配置に関する

規則は,

<トークン>を含む<SQL 埋込みホストプログラム>のプログラム言語の規則に従う。

6) <SQL 埋込みホストプログラム>中に<埋込み認可宣言>が現れるならば,それは,その<SQL 埋込み

ホストプログラム

>の最初の<埋込み SQL 文>に含まれなければならない。

7) <SQL 埋込みホストプログラム>は,二つ以上の<埋込みパス指定>を含んではならない。

8) <SQL 埋込みホストプログラム>は,二つ以上の<埋込み変換グループ指定>を含んではならない。

9) <SQL 埋込みホストプログラム>は,二つ以上の<埋込み照合順指定>を含んではならない。

10)  場合:

a) <埋込み変換グループ指定>が指定されないならば,関連する利用者定義型 UDT をもつが,利用

者定義型位置付け子変数ではない各

<ホスト変数定義>に対して,<グループ指定>  GS をもつ<複

数グループ指定

>を含む<埋込み変換グループ指定>が暗に想定される。GS の<グループ名>は,処

理系定義とし,それの

<パス解決利用者定義型名>は,UDT の<利用者定義型名>とする。

b) <グループ名> GN をもつ<単一グループ指定>を<埋込み変換グループ指定>が含むならば,関連す

る利用者定義型 UDT をもつが,利用者定義型位置付け子変数ではない各<ホスト変数定義>に対

して,

<グループ指定> GS をもつ<複数グループ指定>を含む<埋込み変換グループ指定>が暗に想

定される。GS の<グループ名>は,GN とし,それの<パス解決利用者定義型名>は,UDT の<利用

者定義型名

>とする。

c) <複数グループ指定>  MGS を<埋込み変換グループ指定>が含むならば,関連する利用者定義型

UDT をもつが,利用者定義型位置付け子変数ではなく,かつ,MGS に含まれるどの<グループ指

>にも UDT と等価な型が含まれない各<ホスト変数定義>に対して,<グループ指定> GS で拡張


852

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

した MGS を含む<複数グループ指定>を含む<埋込み変換グループ指定>が暗に想定される。GS 

<グループ名>は,処理系定義とし,それの<パス解決利用者定義型名>は,UDT の<利用者定義型

>とする。

11) <SQL 埋込みホストプログラム>のテキスト中では,暗に想定されるか又は陽に指定される<埋込み

変換グループ指定

>は,どの<ホスト変数定義>よりも先行しなければならない。

12) <SQL 埋込みホストプログラム>は,二つ以上の<埋込み文字集合宣言>を含んではならない。<埋込

み文字集合宣言

>が指定されないならば,少なくとも<SQL 言語文字>中の全ての文字を含む処理系

定義の文字集合を指定する

<埋込み文字集合宣言>が暗に想定される。

13) <SQL 埋込みホストプログラム>に含まれる<一時表宣言>は,<一時表宣言>の<表名>を参照するど

SQL 文又は<カーソル宣言>よりも,その<SQL 埋込みホストプログラム>のテキスト中で先行し

なければならない。

14) <SQL 埋込みホストプログラム>に含まれる<カーソル宣言>は,<カーソル宣言>の<カーソル名>を

参照するどの

SQL 文よりも,<SQL 埋込みホストプログラム>のテキスト中で先行しなければなら

ない。

15) <SQL 埋込みホストプログラム>に含まれる<動的カーソル宣言>は,<動的カーソル宣言>の<カーソ

ル名

>を参照するどの SQL 文よりも,<SQL 埋込みホストプログラム>のテキスト中で先行していな

ければならない。

16)

10

 <SQL 埋込みホストプログラム>中の<埋込み SQL 文>に含まれるどの<ホスト識別子>も,その

<SQL 埋込みホストプログラム>に含まれるただ一つの<ホスト変数定義>で定義しなければならな

い。サブプログラム中での

<ホスト変数定義>をサポートするプログラム言語では,ホスト言語中で

互いに重ならない異なる有効範囲をもつ二つの

<ホスト変数定義>は,それらが同じ変数名を指定し

たとしても,異なるホスト変数を定義しているものとみなされる。

<ホスト変数定義>は,<SQL 埋

込みホストプログラム

>のテキスト中で,<ホスト識別子>を参照するどの<埋込み SQL 文>よりも前

に現れなければならない。

<ホスト変数定義>は,<ホスト識別子>を含むどの<埋込み SQL 文>でも,

<ホスト識別子>へのホスト言語参照が正しいようなものでなければならない。

17)  適用埋込み言語細分箇条  (operative embedded language Subclause)  は,次のとおりとする。

場合:

a)  ホスト言語が Ada ならば,

21.3 <SQL 埋込み Ada プログラム>”。

b)  ホスト言語が C ならば,

21.4 <SQL 埋込み C プログラム>”。

c)

ホスト言語が

COBOL ならば,“21.5 <SQL 埋込み COBOL プログラム>”。

d)  ホスト言語が Fortran ならば,

21.6 <SQL 埋込み Fortran プログラム>”。

e)

ホスト言語が

M ならば,“21.7 <SQL 埋込み MUMPS プログラム>”。

f)

ホスト言語が

Pascal ならば,“21.8 <SQL 埋込み Pascal プログラム>”。

g)  ホスト言語が PL/I ならば,

21.9 <SQL 埋込み PL/I プログラム>”。

18)

10

 <ホスト変数定義>は,<ホスト識別子>のホスト言語データ型,及び適用埋込み言語細分箇条で規

定する等価な

<ホストパラメタデータ型>を定義する。

19)

10

 <SQL 埋込みホストプログラム>は,<ホスト識別子>として SQLSTATE を指定する<ホスト変数定

>を含まなければならない。

注記 555 SQLSTATE ホスト変数のホスト言語データ型は,“13.3 <外部呼出し手続>”  の構文規則

を満たさなければならない。


853

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

20) SQLSTATE を指定する一つ以上の<ホスト変数定義>が<SQL 埋込みホストプログラム>中に現れる

ならば,

<ホスト変数定義>は,その<SQL 埋込みホストプログラム>に含まれるサブプログラム中に

現れる

<埋込み SQL 文>を含めて,どの<埋込み SQL 文>でも,SQLSTATE へのホスト言語参照が正

しいようなものでなければならない。

SQLSTATE のそのような最初の<ホスト変数定義>は,<SQL

埋込みホストプログラム

>のテキスト中で,どの<埋込み SQL 文>よりも前に現れなければならない。

21)

10

 <SQL 埋込みホストプログラム> が与えられると,規格に適合する<SQL クライアントモジュー

ル定義

M,及びホストプログラム が,から導出されて,暗に想定される。<SQL 埋込みホスト

プログラム

>  の,暗に想定されるプログラム 及び暗に想定される<SQL クライアントモジュー

ル定義

の導出は,テキストの取込み  (inclusion or copying)  のような,ホスト言語プログラムの

どのテキスト操作コマンドの処理よりも,実効的に先行する。

注記 556 SQL クライアントモジュールを生成するための処理系定義の機構によって が処理さ

れた後に,が実行可能になる。SQL 処理系は,この機構を<SQL 埋込みホストプログ

ラム

>の処理と組み合わせてもよく,そこでは,の存在が純粋に仮想であってもよい。

上記のとおりに定義された,暗に想定される

<SQL クライアントモジュール定義>  及び暗に想定

されるプログラム をもつ<SQL 埋込みホストプログラム> が与えられると,次による。

a)  の暗に想定される<SQL クライアントモジュール定義> は,規格に適合する<SQL クライアン

トモジュール定義

>でなければならない。

b)  暗に想定されるプログラム は,ホスト言語の仕様に適合しなければならない。

22)

10

 は,次のとおりに から導出される。

a)  は,<SQL クライアントモジュール名>が処理系依存であるか又は省略されているかのいずれか

である

<モジュール名句>を含む。

b)  は,陽に指定されるか又は暗に想定される<埋込み文字集合宣言>からキーワード“SQL”を取

り除いたものと同一の

<モジュール文字集合指定>を含む。

c)

は,ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI のいずれかを指定する<LANGUAGE

>を含む。ここで,は,それぞれ,<SQL 埋込み Ada プログラム>,<SQL 埋込み C プログラ

>,<SQL 埋込み COBOL プログラム>,<SQL 埋込み Fortran プログラム>,<SQL 埋込み MUMPS

プログラム

>,<SQL 埋込み Pascal プログラム>又は<SQL 埋込み PL/I プログラム>とする。

d)  場合:

i)

が<埋込み認可宣言> EAD を含むならば,EAD に含まれる<埋込み認可句>を EAC とする。M

は,EAC を指定する<モジュール認可句>を含む。

ii)  そうでなければ,処理系定義の<スキーマ名>を SN とする。は,

SCHEMA SN”を指定する

<モジュール認可句>を含む。

e)

場合:

i)

が<埋込みパス指定> EPS を含むならば,は,<モジュールパス指定> EPS を含む。

ii)  そうでなければ,は,処理系定義の<モジュールパス指定>を含む。

f)

は,陽に指定されるか又は暗に想定される<埋込み変換グループ指定>と同一の<モジュール変

換グループ指定

>を含む。

g) <埋込み照合順指定>  ECS が指定されるならば,は,ECS に含まれる<モジュール照合順>と同

一の

<モジュール照合順>を含む。

h)  に含まれるどの<カーソル宣言>  EC に対しても,は,一つの<カーソル宣言>  PC,及び PC


854

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

を参照する

<OPEN 文>を含む一つの<外部呼出し手続> PS を含む。

i)

PS の<手続名>は,

処理系依存とする。PS は,PC に含まれる互いに異なる各<埋込み変数名> EVN

に対する

<ホストパラメタ宣言>  PD を含み,それは,処理系依存の<ホストパラメタ名>  PN

及び適用埋込み言語細分箇条の構文規則によって決定される

<ホストパラメタデータ型>  PT 

もつ。

ii)  PS は,SQLSTATE を指定する<ホストパラメタ宣言>を含む。PS 中の<ホストパラメタ宣言>の

順序は,処理系依存とする。PC は,各 EVN が次のとおりに置き換えられた EC の写しとする。

場合:

1)  EVN が,利用者定義型位置付け子変数を識別しないが,関連する利用者定義型 UT をもつホ

スト変数を識別するならば,次による。

A) <埋込み変換グループ指定>に含まれる<グループ指定>に含まれる UT の<利用者定義型名>

に対応する

<グループ名>を GN とする。

B)  DT を TYPE として,GN を GROUP として,

9.23 TO-SQL 関数の決定”の構文規則を適用

する。適用可能な

TO-SQL 関数 TSF が存在しなければならない。

C)  TSF の単一 SQL パラメタの宣言型を TPT とする。PT は,TPT に代入可能でなければなら

ない。

D)  EVN は,次の指定によって置き換えられる。

TSFN(CAST(PN AS TPT))

2)

14

  そうでなければ,EVN は,次の指定によって置き換えられる。

PN

i)

中のどの<動的カーソル宣言> EC に対しても,は,EC の写しである一つの<動的カーソル宣

PC を含む。

j)

に含まれる各<一時表宣言>に対して,は,一つの<一時表宣言>を含む。の各<一時表宣言

>は,の対応する<一時表宣言>の写しとする。

k)

04

 に含まれる各<埋込み例外宣言>に対して,は,一つの<埋込み例外宣言>を含む。の各<

埋込み例外宣言

>は,の対応する<埋込み例外宣言>の写しとする。

l)

04

 に含まれる各<SQL 手続文>に対して,は,<外部呼出し手続>を含む。の<SQL 手続文> ES

に対応する の<外部呼出し手続> PS は,次のとおりに定義される。

場合:

i)

ES が<OPEN 文>でないならば,次による。

1)  PS の<手続名>は,処理系依存とする。

2)  ES に含まれる互いに異なる<埋込み変数名>の個数を とする。そのような 番目の<埋込み

変数名

>を HVNi,1 ≤ i ≤ とし,HVNi によって識別されるホスト変数を HVi とする。

3)  各 HVNi,1 ≤ i ≤ に対して,PS は,次のようなホストパラメタ Pi を定義する<ホストパラ

メタ宣言

PDi を含む。

A)  PDi の<ホストパラメタ名> PNi が処理系依存である。

B)  PDi の<ホストパラメタデータ型>  PTi が適用埋込み言語細分箇条の構文規則によって決定

される。

4)  PS は,SQLSTATE を指定する<ホストパラメタ宣言>を含む。

5) <ホストパラメタ宣言> PDi,1 ≤ i ≤ の順序は,処理系依存とする。


855

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

6)  関連する利用者定義型をもつが,利用者定義型位置付け子変数ではない HVi を識別する各

HVNi,1 ≤ i ≤ に対して,対応する Pi が入力ホストパラメタか,出力ホストパラメタか,又
は入出力ホストパラメタかを決定するために,HVNi に対応する PDi を HOST PARAM DECL
として,ES を SQL PROC STMT として,“9.8  ホストパラメタモード決定”の構文規則を適

用する。

A)  Pi,1 ≤ i ≤ の中で,入力ホストパラメタの個数を とし,出力ホストパラメタの個数を b

とし,入出力ホストパラメタの個数を とする。

B)  Pi,1 ≤ i ≤ の中で,入力ホストパラメタを PIj,1 ≤ j ≤ とし,出力ホストパラメタを POk

1 ≤ k ≤ とし,入出力ホストパラメタを PIOl,1 ≤ l ≤ とする。

C)  PIj の<ホストパラメタ名>を PNIj,1 ≤ j ≤ とする。POk の<ホストパラメタ名>を PNOk

1 ≤ k ≤ とする。PIOl の<ホストパラメタ名>を PNIOl,1 ≤ l ≤ とする。

D)  PIj に対応するホスト変数を HVIj,1 ≤ j ≤ とする。POk に対応するホスト変数を HVOk

1 ≤ k ≤ とする。PIOl に対応するホスト変数を HVIOl,1 ≤ l ≤ とする。

E)  HVIj の関連する SQL データ型を TSIj,1 ≤ j ≤ とする。HVOk の関連する SQL データ型

を TSOk,1 ≤ k ≤ とする。HVIOl の関連する SQL データ型を TSIOl,1 ≤ l ≤ とする。

F)  HVIj の関連する利用者定義型を TUIj,1 ≤ j ≤ とする。HVOk の関連する利用者定義型を

TUOk,1 ≤ k ≤ とする。HVIOl の関連する利用者定義型を TUIOl,1 ≤ l ≤ とする。

G) <埋込み変換グループ指定>に含まれる<グループ指定>に含まれる TUIj の<利用者定義型名

>に対応する<グループ名>を GNIj,1 ≤ j ≤ とする。<埋込み変換グループ指定>に含まれ

<グループ指定>に含まれる TUOk の<利用者定義型名>に対応する<グループ名>を GNOk

1 ≤ k ≤ とする。<埋込み変換グループ指定>に含まれる<グループ指定>に含まれる TUIOl

<利用者定義型名>に対応する<グループ名>を GNIOl,1 ≤ l ≤ とする。

H)  どの j,1 ≤ j ≤ に対しても,TUIj を TYPE として,GNIj を GROUP として,“9.23 TO-SQL

関数の決定”の構文規則を適用する。

<ルーチン名> TSINj によって識別される適用可能な

TO-SQL 関数 TSFIj が存在しなければならない。TSFIj の単一 SQL パラメタのデータ型を
TTIj とする。TSIj は,TTIj に代入可能でなければならない。

I)

どの l,1 ≤ l ≤ に対しても,TUIOl を TYPE として,GNIOl を GROUP として,“9.23 TO-SQL
関数の決定”の構文規則を適用する。

<ルーチン名>  TSIONl によって識別される適用可能

TO-SQL 関数 TSFIOl が存在しなければならない。TSFIOl の単一 SQL パラメタのデー

タ型を TTIOl とする。TSIOl は,TTIOl に代入可能でなければならない。

J)  どの k,1  ≤  k  ≤  に対しても,TUOk を TYPE として,GNOk を GROUP として,“9.21

FROM-SQL 関数の決定”の構文規則を適用する。<ルーチン名> FSONk によって識別され
る適用可能な

FROM-SQL 関数 FSFOk が存在しなければならない。FSFOk の結果データ型

を TROk とする。TSOk は,TROk に代入可能でなければならない。

K)  どの l,1  ≤  l  ≤  に対しても,TUIOl を TYPE として,GNIOl を GROUP として,“9.21

FROM-SQL 関数の決定”の構文規則を適用する。<ルーチン名> FSIONl によって識別され
る適用可能な

FROM-SQL 関数 FSFIOl が存在しなければならない。FSFIOl の結果データ

型を TRIOl とする。TSIOl は,TRIOl に代入可能でなければならない。

L) <SQL 変数名>のそれぞれが,ES に含まれる他のどの<SQL 変数名>とも,ES に含まれるど

<SQL パラメタ名>とも,又は ES に含まれるどの<列名>とも,等価でない処理系依存の


856

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

<SQL 変数名>を,SVIj,1 ≤ j ≤ aSVOk,1 ≤ k ≤ 及び SVIOl,1 ≤ l ≤ とする。

7)

14

 ES の写し中のどの HVNi,1 ≤ i ≤ も,次のとおりに置き換えた写しである<SQL 手続文>

を NES とする。

場合:

A)  HVi が,関連する利用者定義型をもつが,利用者定義型位置付け子変数でないならば,次

による。

場合:

I)

Pi が入力ホストパラメタならば,Pi に対応する入力ホストパラメタを PIj,1 ≤ j ≤ とす
る。HVNi は,SVIj によって置き換えられる。

II)  Pi が出力ホストパラメタならば,Pi に対応する出力ホストパラメタを POk,1 ≤ k ≤ 

する。HVNi は,SVOk によって置き換えられる。

III)  そうでなければ,Pi に対応する入出力ホストパラメタを PIOl,1  ≤  l  ≤  とする。HVNi

は,SVIOl によって置き換えられる。

B)

14

  そうでなければ,HVNi は,PNi によって置き換えられる。

8)

14

 PS の<SQL 手続文>は,次とする。

BEGIN ATOMIC

    DECLARE  SVI

1

 TUI

1

;

    ...

    DECLARE  SVI

a

 TUI

a

;

    DECLARE  SVO

1

 TUO

1

;

    ...

    DECLARE  SVO

b

 TUO

b

;

    DECLARE  SVIO

1

 TUIO

1

;

    ...

    DECLARE  SVIO

c

 TUIO

c

;

    SET  SVI

1

 = TSIN

1

 (CAST (PNI

1

 AS TTI

1

));

    ...

    SET  SVI

a

 = TSIN

a

 (CAST (PNI

a

 AS TTI

a

));

    SET  SVIO

1

 = TSION

1

 (CAST (PNIO

1

 AS TTIO

1

));

    ...

    SET  SVIO

c

 = TSION

c

 (CAST (PNIO

c

 AS TTIO

c

));

    NES;

    SET  PNO

1

 = CAST ( FSON

1

 (SVO

1

) AS TSO

1

);

    ...

    SET  PNO

b

 = CAST ( FSON

b

 (SVO

b

) AS TSO

b

);

    SET  PNIO

1

 = CAST ( FSION

1

 (SVIO

1

) AS TSIO

1

);

    ...

    SET  PNIO

c

 = CAST ( FSION

c

 (SVIO

c

) AS TSIO

c

);

END;

9)  の一つの<外部呼出し手続>を,の二つ以上の<SQL 手続文>に対応させることができるか


857

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

どうかは,処理系依存とする。

ii)  ES が<OPEN 文>ならば,次による。

1)  ES によって参照される 中の<カーソル宣言>を EC とする。

2)  PS は,EC に対応する 中の<カーソル宣言>を参照する<OPEN 文>を含む 中の<外部呼出

し手続

>とする。

23)

10

 は,次のとおりに から導出される。

a)  各<埋込み SQL 開始宣言>,<埋込み SQL 終了宣言>及び<埋込み文字集合宣言>が削除される。埋

込みホスト言語が

M ならば,各<埋込み SQL MUMPS 宣言>が削除される。

b) <埋込み SQL 宣言節>中の各<ホスト変数定義>は,

適用埋込み言語細分箇条の構文規則に従って,

相手ホスト言語中での正しいデータ定義によって置き換えられる。

c)

04

 <カーソル宣言>,<動的カーソル宣言>,<SQL 呼出しルーチン>又は<一時表宣言>を含む各<埋

込み

SQL 文>が削除され,<埋込み例外宣言>を含むどの<埋込み SQL 文>も,“21.2  <埋込み例外

宣言

>”の一般規則で規定する効果をもつホスト言語の幾つかの文によって置き換えられる。

d) <SQL 手続文>を含む各<埋込み SQL 文>は,次の動作を実行するホスト言語の幾つかの文によっ

て置き換えられる。

i) <SQL 手続文>に対応する,の暗に想定される<SQL クライアントモジュール定義> の<外部

呼出し手続

>の,ホスト言語の手続又はサブルーチンの呼出し。

<SQL 手続文>が<OPEN 文>でないならば,呼出しの引数は,SQLSTATE <ホスト識別子>とと

もに,

<SQL 手続文>に含まれる互いに異なるそれぞれの<ホスト識別子>を含む。<SQL 手続文

>が<OPEN 文>ならば,呼出しの引数は,SQLSTATE <ホスト識別子>とともに,の対応する<

カーソル宣言

>に含まれる互いに異なるそれぞれの<ホスト識別子>を含む。

呼出し中の引数の順序は,対応する

<外部呼出し手続>中の対応する<ホストパラメタ宣言>の

順序と対応する。

注記 557 <SQL 埋込み Fortran プログラム>中では,“SQLSTATE”変数は,“SQLSTA”と略

してもよい(

21.6 <SQL 埋込み Fortran プログラム>”の構文規則参照)。

ii)  “21.2 <埋込み例外宣言>”で規定するとおりの例外動作。

e) <埋込み認可宣言>を含む各<文又は宣言>が削除される。

アクセス規則

1) <文又は宣言>に含まれる<埋込み変数名>をもち,かつ,関連する利用者定義型をもつどのホスト変

数に対しても,現行の権限は,対応する

SQL クライアントモジュール中で参照される(FROM SQL

関数があるならば,)全ての

FROM SQL 関数及び(TO SQL 関数があるならば,)全ての TO SQL 関

数に関する

EXECUTE 権限を含まなければならない。

一般規則

1) <SQL 埋込みホストプログラム>  の解釈は,の暗に想定されるプログラム 及び の暗に想定

される

<SQL クライアントモジュール定義> の解釈と等価であると定義される。

適合性規則

1)  機能 B051“拡張実行権”なしでは,適合する SQL 言語は,<埋込み認可宣言>を含んではならない。

2)  機能 F461“名前付き文字集合”なしでは,適合する SQL 言語は,<埋込み文字集合宣言>を含んで

はならない。

3)  機能 F361“サブプログラム提供”なしでは,適合する SQL 言語は,同じ変数名を指定する二つの<


858

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

ホスト変数定義

>を含んではならない。

4)  機能 S071“関数及び型の名前解決での SQL パス”なしでは,適合する SQL 言語は,<埋込みパス

指定

>を含んではならない。

5)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<埋込み変換グループ指定>を含んではな

らない。

21.2  <埋込み例外宣言>

機能

<埋込み例外宣言> (<embedded exception declaration>)  は,SQL 文が特定のクラスの条件を引き起こした

ときにとるべき動作を指定する。

形式

<埋込み例外宣言> ::=

  WHENEVER  <条件> <例外動作>

<条件> ::=

  <SQL 条件>

<SQL 条件> ::=

  <主要カテゴリ>

| SQLSTATE ( <SQLSTATE クラスコード> [ , <SQLSTATE サブクラスコード> ] )

| CONSTRAINT <制約名>

<主要カテゴリ> ::=

  SQLEXCEPTION

 |

SQLWARNING

| NOT FOUND

<SQLSTATE クラスコード> ::=

  <SQLSTATE 文字><SQLSTATE 文字> !!

構文規則参照

<SQLSTATE サブクラスコード> ::=

  <SQLSTATE 文字><SQLSTATE 文字><SQLSTATE 文字> !!

構文規則参照

<SQLSTATE 文字> ::=

  <単純ラテン大文字>

 |

<数字>

<例外動作> ::=

  CONTINUE

| <GO TO>

<GO TO> ::=

  { GOTO | GO TO } <GOTO 相手>

<GOTO 相手> ::=

  <ホストラベル識別子>

 |

<符号なし整数>

 |

<ホスト PL/I ラベル変数>

<ホストラベル識別子> ::=

  !!

構文規則参照


859

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

<ホスト PL/I ラベル変数> ::=

  !!

構文規則参照

構文規則

1) SQLWARNING,NOT FOUND 及び SQLEXCEPTION は,それぞれ,表 33“SQLSTATE のクラス及

びサブクラスのコード”中のカテゴリ

W,N 及び X に対応する SQLSTATE クラスコードに対応す

る。

2) <SQL 埋込みホストプログラム>に含まれる<埋込み例外宣言>が,その<SQL 埋込みホストプログラ

>に含まれる<SQL 手続文>に適用されるということは,<SQL 埋込みホストプログラム>のテキス

トの並び中で,条件 をもつ<埋込み例外宣言>の後に<SQL 手続文>が現れ,<SQL 埋込みホストプ

ログラム

>のテキストの並び中で,その<埋込み例外宣言>と<SQL 手続文>との間に,次の条件のう

ちの一つを満たす他のどの

<埋込み例外宣言> も,現れないことと同値とする。

に含まれる<条件>を とする。

a)  が と同じである。

b)  が<主要カテゴリ>で,かつ,が属するクラスと同じクラスに属する。

c)

が<SQLSTATE クラスコード>を含むが,<SQLSTATE サブクラスコード>を含まず,かつ,

含むものと同じ

<SQLSTATE クラスコード>を が含む。

d)  整合性制約違反  (integrity constraint violation)  に対応する<SQLSTATE クラスコード>を が含み,

かつ,が CONSTRAINT を含む。

3) <SQLSTATE クラスコード>及び<SQLSTATE サブクラスコード>の値中で,

<SQLSTATE 文字>の間に

<分離符号>が存在してはならない。

4) <SQLSTATE クラスコード>及び<SQLSTATE サブクラスコード>の値は,それぞれ,表 33

SQLSTATE

のクラス及びサブクラスのコード”で規定するクラスコード及びサブクラスコードに対応しなけれ

ばならない。

5) <埋込み例外宣言>が<GO TO>を指定するならば,<GO TO>の<ホストラベル識別子>,<ホスト PL/I

ラベル変数

>又は<符号なし整数>は,その<ホストラベル識別子>,<ホスト PL/I ラベル変数>又は<

符号なし整数

>を指定するホスト言語の GO TO 文が,<埋込み例外宣言>が適用されるどの<SQL 手

続文

>においても正しいようなものでなければならない。

注記 558  <埋込み例外宣言>が<SQL 埋込み Ada プログラム>に含まれるならば,<GO TO>の<GOTO

相手

>は,<埋込み例外宣言>を含む<SQL 埋込み Ada プログラム>のラベル名 (label_name)

である

<ホストラベル識別子>を指定することが望ましい。

<埋込み例外宣言>が<SQL 埋込み C プログラム>に含まれるならば,<GO TO>の<GOTO

相手

>は,<埋込み例外宣言>を含む<SQL 埋込み C プログラム>のラベル (label) である<

ホストラベル識別子

>を指定することが望ましい。

<埋込み例外宣言>が<SQL 埋込み COBOL プログラム>に含まれるならば,<GO TO>の

<GOTO 相手>は,<埋込み例外宣言>を含む<SQL 埋込み COBOL プログラム>の節名

(section-name)  又は修飾なしの段落名 (paragraph-name) である<ホストラベル識別子>を

指定することが望ましい。

<埋込み例外宣言>が<SQL 埋込み Fortran プログラム>に含まれるならば,<GO TO>の

<GOTO 相手>は,<GO TO>と同じプログラム単位 (program unit) 中に現れる実行可能文

の文ラベル

 (statement label) である<符号なし整数>であることが望ましい。


860

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

<埋込み例外宣言>が<SQL 埋込み MUMPS プログラム>に含まれるならば,<GO TO>

<GOTO 相手>は,同じ<SQL 埋込み MUMPS プログラム>中に現れる実行可能文の文ラ

ベル

 (statement label) である GOTO 引数 (gotoargument) であることが望ましい。

<埋込み例外宣言>が<SQL 埋込み Pascal プログラム>に含まれるならば,<GO TO>の

<GOTO 相手>は,ラベル (label) である<符号なし整数>であることが望ましい。

<埋込み例外宣言>が<SQL 埋込み PL/I プログラム>に含まれるならば,<GO TO>の

<GOTO 相手>は,<ホストラベル識別子>又は<ホスト PL/I ラベル変数>のいずれかを指

定することが望ましい。

場合:

  <ホストラベル識別子>が指定されるならば,<ホストラベル識別子>は,それを含む

<SQL 埋込み PL/I プログラム>中のラベル定数 (label constant) であることが望ましい。

  <ホスト PL/I ラベル変数>が指定されるならば,<ホスト PL/I ラベル変数>は,それを

含む

<SQL 埋込み PL/I プログラム>中で宣言された PL/I ラベル変数  (PL/I label variable)

であることが望ましい。

アクセス規則

なし。 

一般規則

1)  成功終了  (successful completion)  以外の SQLSTATE 値を戻す<SQL 埋込みホストプログラム>中の

<SQL 手続文> STMT の実行の直後は,次による。

a)  STMT を含む<SQL 埋込みホストプログラム>に含まれ,STMT に適用され,かつ,<GO TO>であ

<例外動作>を指定する<埋込み例外宣言>の集合を とする。

b) <SQL 手続文>の結果を示す SQLSTATE 値のクラス及びサブクラスの値を,

それぞれ,CV 及び SCV

とする。

c) <SQL 手続文>の実行が一つ以上の制約又は表明の違反を引き起こしたならば,次による。

i) CONSTRAINT と,STMT の実行によって違反した制約の<制約名>とを指定する 中の<埋込み

例外宣言

>の集合を ECN とする。

ii)  ECN が二つ以上の<埋込み例外宣言>を含むならば,処理系依存の<埋込み例外宣言>が,ECN

から選択される。そうでなければ,ECN 中の単一の<埋込み例外宣言>が選択される。

iii)  ECN から選択される<埋込み例外宣言>中で指定される<GO TO>の<ホストラベル識別子>,<ホ

スト

PL/I ラベル変数>又は<符号なし整数>を指定するホスト言語の GO TO 文が実行される。

d)  そうでなければ,次による。

i) SQLSTATE,<SQLSTATE クラスコード>及び<SQLSTATE サブクラスコード>を指定する 中の

<埋込み例外宣言>の集合を ECS とする。

ii)  CV と同一の<SQLSTATE クラスコード>,及び SCV と同一の<SQLSTATE サブクラスコード>を

指定する

<埋込み例外宣言>  EY を ECS が含むならば,<埋込み例外宣言>  EY 中で指定される

<GO TO>の<ホストラベル識別子>,<ホスト PL/I ラベル変数>又は<符号なし整数>を指定する

ホスト言語の

GO TO 文が実行される。

iii)  そうでなければ,次による。

1) <SQLSTATE サブクラスコード>なしで,SQLSTATE 及び<SQLSTATE クラスコード>を指定す

る 中の<埋込み例外宣言>の集合を EC とする。


861

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

2)  CV と同一の<SQLSTATE クラスコード>を指定する<埋込み例外宣言> EY を EC が含むならば,

<埋込み例外宣言> EY 中で指定される<GO TO>の<ホストラベル識別子>,<ホスト PL/I ラベ

ル変数

>又は<符号なし整数>を指定するホスト言語の GO TO 文が実行される。

3)  そうでなければ,次による。

A) SQLEXCEPTION を指定する 中の<埋込み例外宣言>の集合を EX とする。

B)  EX が<埋込み例外宣言> EY を含み,かつ,CV が表 33“SQLSTATE のクラス及びサブクラ

スのコード”中のカテゴリ

X に属するならば,<埋込み例外宣言> EY 中で指定される<GO

TO>の<ホストラベル識別子>,<ホスト PL/I ラベル変数>又は<符号なし整数>を指定するホ

スト言語の

GO TO 文が実行される。

C)  そうでなければ,次による。

I) SQLWARNING を指定する 中の<埋込み例外宣言>の集合を EW とする。

II)  EW が<埋込み例外宣言> EY を含み,かつ,CV が表 33“SQLSTATE のクラス及びサブク

ラスのコード”中のカテゴリ

W に属するならば,<埋込み例外宣言> EY 中で指定される

<GO TO>の<ホストラベル識別子>,<ホスト PL/I ラベル変数>又は<符号なし整数>を指

定するホスト言語の

GO TO 文が実行される。

III)  そうでなければ,NOT FOUND を指定する 中の<埋込み例外宣言>の集合を ENF とす

る。ENF が<埋込み例外宣言> EY を含み,かつ,CV が表 33“SQLSTATE のクラス及び

サブクラスのコード”中のカテゴリ

N に属するならば,<埋込み例外宣言> EY 中で指定

される

<GO TO>の<ホストラベル識別子>,<ホスト PL/I ラベル変数>又は<符号なし整数

>を指定するホスト言語の GO TO 文が実行される。

適合性規則

1)  機能 B041“埋込み SQL 例外宣言の拡張”なしでは,適合する SQL 言語は,SQLSTATE 又は

CONSTRAINT のいずれかを含む<SQL 条件>を含んではならない。

2)  機能 F491“制約管理”なしでは,適合する SQL 言語は,<制約名>を含む<SQL 条件>を含んではな

らない。

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

この細分箇条は,ISO/IEC 9075-9 の“18.1 <SQL 埋込み Ada プログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.2 <SQL 埋込み Ada プログラム>”によって修正される。 

機能

<SQL 埋込み Ada プログラム> (<embedded SQL Ada program>)  は,<SQL 埋込み Ada プログラム>を指定

する。

形式

<SQL 埋込み Ada プログラム> ::=

  !!

構文規則参照。

<Ada 変数定義> ::=

  <Ada ホスト識別子> [ { <コンマ> <Ada ホスト識別子> }... ] <コロン>

      <Ada 型指定> [<Ada 初期値> ]

<Ada 初期値> ::=

  <Ada 代入演算子> <文字表現>...

<Ada 代入演算子> ::=


862

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

  <コロン> <等号演算子>

<Ada ホスト識別子> ::=

  !!

構文規則参照。

<Ada 型指定> ::=

  <Ada 修飾付き型指定>

 |

<Ada 修飾なし型指定>

 |

<Ada 導出型指定>

<Ada 修飾付き型指定> ::=

  Interfaces.SQL.CHAR

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

      <左括弧> 1 <2 重ピリオド> <文字長> <右括弧>

 |

Interfaces.SQL.SMALLINT

 |

Interfaces.SQL.INT

 |

Interfaces.SQL.BIGINT

 |

Interfaces.SQL.REAL

 |

Interfaces.SQL.DOUBLE_PRECISION

 |

Interfaces.SQL.BOOLEAN

 |

Interfaces.SQL.SQLSTATE_TYPE

 |

Interfaces.SQL.INDICATOR_TYPE

<Ada 修飾なし型指定> ::=

  CHAR  <左括弧> 1 <2 重ピリオド> <文字長> <右括弧>

 |

SMALLINT

 |

INT

 |

BIGINT

 |

REAL

 |

DOUBLE_PRECISION

 |

BOOLEAN

 |

SQLSTATE_TYPE

 |

INDICATOR_TYPE

09

14

 <Ada 導出型指定> ::=

  <Ada  CLOB 変数>

| <Ada CLOB 位置付け子変数>

| <Ada BINARY 変数>

| <Ada VARBINARY 変数>

| <Ada BLOB 変数>

| <Ada BLOB 位置付け子変数>

 |

<Ada 利用者定義型変数>

 |

<Ada 利用者定義型位置付け子変数>

| <Ada REF 変数>

 |

<Ada 配列位置付け子変数>


863

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

 |

<Ada マルチ集合位置付け子変数>

<Ada CLOB 変数> ::=

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<Ada CLOB 位置付け子変数> ::=

  SQL TYPE IS CLOB AS LOCATOR

<Ada BINARY 変数> ::=

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧>

<Ada VARBINARY 変数> ::=

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧>

<Ada BLOB 変数> ::=

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧>

<Ada BLOB 位置付け子変数> ::=

  SQL TYPE IS BLOB AS LOCATOR

<Ada 利用者定義型変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型>

<Ada 利用者定義型位置付け子変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

<Ada REF 変数> ::=

  SQL TYPE IS <参照型>

<Ada 配列位置付け子変数> ::=

  SQL TYPE IS <配列型> AS LOCATOR

<Ada マルチ集合位置付け子変数> ::=

  SQL TYPE IS <マルチ集合型> AS LOCATOR

構文規則

1) <SQL 埋込み Ada プログラム>は,Ada テキスト及び SQL テキストから成る翻訳単位とする。Ada

テキストは,

[ISO8652]  に適合しなければならない。SQL テキストは,一つ以上の<埋込み SQL 文>,

及び省略可能な一つ以上の

<埋込み SQL 宣言節>から成らなければならない。

2) <埋込み SQL 文>は,Ada の文を指定してもよいところには,どこに指定してもよい。<埋込み SQL

>の前に Ada のラベルを付けてもよい。

3) <Ada ホスト識別子>は,任意の正しい Ada 識別子 (Ada identifier) とする。<Ada ホスト識別子>は,

<SQL 埋込み Ada プログラム>に含まれていなければならない。

4) <Ada 変数定義>は,一つ以上のホスト変数を定義する。<Ada 変数定義>を AVD とする。AVD に含

まれる

<Ada ホスト識別子>を AHI とし,AVD に含まれる<Ada 型指定>を ATS とする。AHI に関連

付けられるホスト変数を HV とする。

場合:

a)  ATS が<Ada 修飾なし型指定>ならば,次による。

i) CHAR は,Interfaces.SQL.CHAR と等価とする。

ii) SMALLINT は,Interfaces.SQL.SMALLINT と等価とする。

iii) INT は,Interfaces.SQL.INT と等価とする。


864

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

iv) BIGINT は,Interfaces.SQL.BIGINT と等価とする。

v) REAL は,Interfaces.SQL.REAL と等価とする。

vi) DOUBLE_PRECISION は,Interfaces.SQL.DOUBLE_PRECISION と等価とする。

vii) BOOLEAN は,Interfaces.SQL.BOOLEAN と等価とする。

viii) SQLSTATE_TYPE は,Interfaces.SQL.SQLSTATE_TYPE と等価とする。

ix) INDICATOR_TYPE は,Interfaces.SQL.INDICATOR_TYPE と等価とする。

b)  ATS が<Ada 修飾付き型指定>ならば,次による。

場合:

i) Interfaces.SQL.CHAR が指定されるならば,HV の<ホストパラメタデータ型>は,<文字長>によ

って指定される長さ及び

<文字集合指定>によって指定される文字集合をもつ CHARACTER と

する。

<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想定される。

ii) Interfaces.SQL.SMALLINT,

Interfaces.SQL.INT 又は Interfaces.SQL.BIGINT が指定されるならば,

HV の<ホストパラメタデータ型>は,それぞれ,SMALLINT,INTEGER 又は BIGINT とする。

iii) Interfaces.SQL.REAL 又は Interfaces.SQL.DOUBLE_PRECISION が指定されるならば,HV の<ホ

ストパラメタデータ型

>は,それぞれ,REAL 又は DOUBLE PRECISION とする。

iv) Interfaces.SQL.BOOLEAN が指定されるならば,HV の<ホストパラメタデータ型>は,BOOLEAN

とする。

v) Interfaces.SQL.SQLSTATE_TYPE が指定されるならば,HV の<ホストパラメタデータ型>は,長

5 文字及び“24.1 SQLSTATE”で定義するとおりの文字集合をもつ CHARACTER とする。

vi) Interfaces.SQL.INDICATOR_TYPE が指定されるならば,HV の<ホストパラメタデータ型>は,

位取り

0 の処理系定義の真数とする。

c)

ATS が<Ada 導出型指定>ならば,次による。

i)

ATS が<Ada CLOB 変数>ならば,HV の<ホストパラメタデータ型>は,<文字長大オブジェクト

>によって指定される最大長及び<文字集合指定>によって指定される文字集合をもつ

CHARACTER LARGE OBJECT とする。<文字集合指定>が省略されるならば,<文字集合指定>

は,処理系定義とする。

ii)  ATS が<Ada CLOB 位置付け子変数>ならば,HV の<ホストパラメタデータ型>は,CLOB AS

LOCATOR とする。

iii)  ATS が<Ada BINARY 変数>ならば,HV の<ホストパラメタデータ型>は,<長さ>によって指定

される長さをもつ

BINARY とする。

iv)  ATS が<Ada VARBINARY 変数>ならば,HV の<ホストパラメタデータ型>は,<長さ>によって

指定される最大長をもつ

BINARY VARYING とする。

v)  ATS が<Ada BLOB 変数>ならば,HV の<ホストパラメタデータ型>は,<長大オブジェクト長>

によって指定される最大長をもつ

BINARY LARGE OBJECT とする。

vi)  ATS が<Ada BLOB 位置付け子変数>ならば,HV の<ホストパラメタデータ型>は,BLOB AS

LOCATOR とする。

vii)  ATS が<Ada 利用者定義型変数>ならば,HV の<ホストパラメタデータ型>は,ATS に含まれる<

既定義型

>とする。

viiiATS が<Ada 利用者定義型位置付け子変数>ならば,

<パス解決利用者定義型名>を UDTN とする。

HV の<ホストパラメタデータ型>は,UDTN AS LOCATOR とする。


865

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

ix)  ATS が<Ada  REF 変数>ならば,HV の<ホストパラメタデータ型>は,ATS に含まれる<参照型

>とする。

x)  ATS が<Ada 配列位置付け子変数>ならば,

HV の<ホストパラメタデータ型>は,

AT AS LOCATOR

とする。ここで,AT は,ATS に含まれる<配列型>とする。

xi)

14

 ATS が<Ada マルチ集合位置付け子変数>ならば,HV の<ホストパラメタデータ型>は,MT AS

LOCATOR とする。ここで,MT は,ATS に含まれる<マルチ集合型>とする。

5) <Ada 変数定義>は,<SQL 埋込み Ada プログラム>から導出されるプログラムにそれが配置される前

に,次のとおりに修正されなければならない(

21.1 <SQL 埋込みホストプログラム>”の構文規則

参照)

a)  省略可能などの CHARACTER SET 指定も,<Ada 修飾付き型指定>及び<Ada 導出型指定>から取

り除かれなければならない。

次の値を とする。

場合:

i) OCTETS が指定されるならば,1。

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。

iii)  そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。

b)  省略可能などの<文字長単位>も,<Ada 修飾付き型指定>及び<Ada 導出型指定>から取り除かれな

ければならない。

c)

どの

<Ada 修飾付き型指定>の CHAR 宣言中で指定される<文字長> CL も,値が L*と等しい長さ

によって置き換えられなければならない。ここで,は,CL に含まれる<長さ>の値とする。

d)  与えられた<Ada ホスト識別子> HVN に対して,どの<Ada BINARY 変数>中でも,構文

SQL TYPE IS BINARY ( L )

は,次の指定によって置き換えられなければならない。

HVN : Interfaces.SQL.CHAR(1..L)

e)

与えられた

<Ada ホスト識別子> HVN に対して,どの<Ada VARBINARY 変数>中でも,構文

SQL TYPE IS VARBINARY ( L )

は,次の指定によって置き換えられなければならない。

TYPE HVN IS RECORD

HVN

_

RESERVED : Interfaces.SQL.INT;

HVN

_

LENGTH : Interfaces.SQL.INT;

HVN

_

DATA : Interfaces.SQL.CHAR( 1..L );

END RECORD;

f)

14

  与えられた<Ada ホスト識別子> HVN に対して,どの<Ada CLOB 変数>中でも,構文

SQL TYPE IS CLOB ( L )

は,次の指定によって置き換えられなければならない。

TYPE HVN IS RECORD

HVN

_

RESERVED : Interfaces.SQL.INT;

HVN

_

LENGTH : Interfaces.SQL.INT;

HVN

_

DATA : Interfaces.SQL.CHAR(1..LL);

END RECORD;;


866

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

ここで,LL の値は,NV*とし,NV は,“6.1 <データ型>”で規定するとおりの の値とする。

g)  与えられた<Ada ホスト識別子> HVN に対して,どの<Ada BLOB 変数>中でも,構文

SQL TYPE IS BLOB ( L )

は,次の指定によって置き換えられなければならない。

TYPE HVN IS RECORD

HVN

_

RESERVED : Interfaces.SQL.INT;

HVN

_

LENGTH : Interfaces.SQL.INT;

HVN

_

DATA : Interfaces.SQL.CHAR( 1..LL );

END RECORD;

ここで,LL の値は,“6.1 <データ型>”で規定するとおりの の数値とする。

h)  どの<Ada 利用者定義型変数>中でも,構文

SQL TYPE IS UDTN AS PDT

は,次の指定によって置き換えられなければならない。

ADT

ここで,ADT は,表 16“Ada のためのデータ型対応”の SQL データ型 PDT に対する行に対応す

る“

Ada データ型”列中に記載されたデータ型とする。ADT は,“なし”であってはならない。

UDTN に よ っ て 識 別 さ れ る デ ー タ 型 を , ホ ス ト 変 数 の 関 連 す る 利 用 者 定 義 型   (associated 

user-defined type)  と呼び,PDT によって識別されるデータ型を,ホスト変数の関連する SQL デー

タ型  (associated SQL data type)  と呼ぶ。

i)

どの

<Ada BLOB 位置付け子変数>中でも,構文

SQL TYPE IS BLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

Interfaces.SQL.INT

<Ada BLOB 位置付け子変数>によって定義されるホスト変数を,進オクテット長大オブジェク

ト位置付け子変数  (binary large object locator variable)  と呼ぶ。

j)

どの

<Ada CLOB 位置付け子変数>中でも,構文

SQL TYPE IS CLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

Interfaces.SQL.INT

<Ada CLOB 位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付け

子変数  (character large object locator variable)  と呼ぶ。

k)  どの<Ada 利用者定義型位置付け子変数>中でも,構文

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

は,次の指定によって置き換えられなければならない。

Interfaces.SQL.INT

<Ada 利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け子

変数  (user-defined type locator variable)  と呼ぶ。<パス解決利用者定義型名>によって識別されるデ

ータ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)  と呼ぶ。

l)

どの

<Ada 配列位置付け子変数>中でも,構文

SQL TYPE IS <配列型> AS LOCATOR


867

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

は,次の指定によって置き換えられなければならない。

Interfaces.SQL.INT

<Ada 配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数  (array locator 

variable)  と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型

(associated array type)  と呼ぶ。

m)  どの<Ada マルチ集合位置付け子変数>中でも,構文

SQL TYPE IS <マルチ集合型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

Interfaces.SQL.INT

<Ada マルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変数

(multiset locator variable)  と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数の

関連するマルチ集合型  (associated multiset type)  と呼ぶ。

n)

09

  与えられた<Ada ホスト識別子> RTV に対して,どの<Ada REF 変数>中でも,構文

SQL TYPE IS <参照型>

は,次の指定によって置き換えられなければならない。

RTV : Interfaces.SQL.CHAR(1..RL)

ここで,RL の値は,参照型のオクテット単位での長さとする。

修正された

<Ada 変数定義>は,<SQL 埋込み Ada プログラム>から導出されるプログラム中で,正し

Ada オブジェクト宣言 (object-declaration) でなければならない。

6) <Ada

REF 変数>に含まれる<参照型>に含まれる<被参照型>によって識別される被参照型を,その参

照の

被参照型  (referenced type)  と呼ぶ。

7) <Ada 変数定義>は,次の内容を指定する Ada の with 及び use 句の有効範囲内で指定しなければなら

ない。

with Interfaces.SQL;

use Interfaces.SQL;

use Interfaces.SQL.CHARACTER_SET;

8) <Ada 初期値>中の<文字表現>の並びは,Ada 変数に代入する初期値を指定する。それは,初期値の

ための

Ada の正しい指定でなければならない。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B011“埋込み Ada”なしでは,適合する SQL 言語は,<SQL 埋込み Ada プログラム>を含んで

はならない。

2)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Ada BLOB 変数>を含んで

はならない。

3)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Ada CLOB 変数>を含んで

はならない。

4)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Ada BLOB 位置付け子変


868

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

>を含んではならない。

5)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Ada CLOB 位置付け子変

>を含んではならない。

6)  機能 T071“BIGINT データ型”なしでは,適合する SQL 言語は,Interfaces.SQL.BIGINT を含む<Ada

修飾付き型指定

>を含んではならない。

7)  機能 T071“BIGINT データ型”なしでは,適合する SQL 言語は,BIGINT を含む<Ada 修飾なし型指

>を含んではならない。

8)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<Ada BINARY

変数

>を含んではならない。

9)  機能 T021

BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<Ada VARBINARY

変数

>を含んではならない。

10)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<Ada 利用者定義型変数>を含んではなら

ない。

11)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<Ada REF 変数>を含んではならない。

12)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<Ada 配列位置付け子変数>を含ん

ではならない。

13)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<Ada マルチ集合位置付け子

変数

>を含んではならない。

14)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<Ada 利用者定

義型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

21.4

<SQL 埋込み プログラム>

この細分箇条は,ISO/IEC 9075-9 の“18.2 <SQL 埋込み プログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.3 <SQL 埋込み プログラム>”によって修正される。 

機能

<SQL 埋込み C プログラム> (<embedded SQL C program>)  は,<SQL 埋込み C プログラム>を指定する。

形式

<SQL 埋込み C プログラム> ::=

  !!

構文規則参照。

<C 変数定義> ::=

  [  <C 記憶クラス> ] [ <C クラス修飾子> ]

      <C 変数指定> <セミコロン>

<C 変数指定> ::=

  <C 数値変数>

 |

<C 文字変数>

 |

<C 導出変数>

<C 記憶クラス> ::=

  auto

 |

extern

 |

static

<C クラス修飾子> ::=


869

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

  const

 |

volatile

<C 数値変数> ::=

  { long long | long | short | float | double }

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> [ <C 初期値> ] }... ]

<C 文字変数> ::=

  <C 文字型> [ CHARACTER SET [ IS ] <文字集合指定> ]

      <C ホスト識別子> <C 配列指定> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> <C 配列指定>

      [ <C 初期値> ] }... ]

<C 文字型> ::=

  char

| unsigned char

| unsigned short

<C 配列指定> ::=

  <左角括弧> <文字長> <右角括弧>

<C ホスト識別子> ::=

  !!

構文規則参照。

09

14

 <C 導出変数> ::=

  <C  VARCHAR 変数>

| <C NCHAR 変数>

| <C NCHAR VARYING 変数>

| <C CLOB 変数>

| <C NCLOB 変数>

| <C BINARY 変数>

| <C VARBINARY 変数>

| <C BLOB 変数>

 |

<C 利用者定義型変数>

| <C CLOB 位置付け子変数>

| <C BLOB 位置付け子変数>

 |

<C 配列位置付け子変数>

 |

<C マルチ集合位置付け子変数>

 |

<C 利用者定義型位置付け子変数>

| <C REF 変数>

<C VARCHAR 変数> ::=

  VARCHAR [ CHARACTER SET [ IS ] <文字集合指定> ]

      <C ホスト識別子> <C 配列指定> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> <C 配列指定>

      [ <C 初期値> ] }... ]


870

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

<C NCHAR 変数> ::=

  NCHAR [ CHARACTER SET [ IS ] <文字集合指定> ]

      <C ホスト識別子> <C 配列指定> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> <C 配列指定>

      [ <C 初期値> ] }... ]

<C NCHAR VARYING 変数> ::=

  NCHAR VARYING [ CHARACTER SET [ IS ] <文字集合指定> ]

      <C ホスト識別子> <C 配列指定> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> <C 配列指定>

      [ <C 初期値> ] }... ]

<C CLOB 変数> ::=

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

      <C ホスト識別子> [ <C 初期値> ]  [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C NCLOB 変数> ::=

  SQL TYPE IS NCLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

      <C ホスト識別子> [ <C 初期値> ]  [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C 利用者定義型変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型>

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C BINARY 変数> ::=

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧>

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> [ <C 初期値> ] }... ]

<C VARBINARY 変数> ::=

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧>

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> [ <C 初期値> ] }... ]

<C BLOB 変数> ::=

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧>

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C CLOB 位置付け子変数> ::=

  SQL TYPE IS CLOB AS LOCATOR


871

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

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C BLOB 位置付け子変数> ::=

  SQL TYPE IS BLOB AS LOCATOR

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C 配列位置付け子変数> ::=

  SQL TYPE IS <配列型> AS LOCATOR

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C マルチ集合位置付け子変数> ::=

  SQL TYPE IS <マルチ集合型> AS LOCATOR

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C 利用者定義型位置付け子変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

      <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子>

      [ <C 初期値> ] }... ]

<C REF 変数> ::=

  SQL TYPE IS <参照型> <C ホスト識別子> [ <C 初期値> ]

      [ { <コンマ> <C ホスト識別子> [ <C 初期値> ] }... ]

<C 初期値> ::=

  <等号演算子> <文字表現>...

構文規則

1) <SQL 埋込み C プログラム>は,C テキスト及び SQL テキストから成る翻訳単位とする。C テキス

トは,JIS X 3010 [ISO9899]  に適合しなければならない。SQL テキストは,一つ以上の<埋込み SQL

>,及び省略可能な一つ以上の<埋込み SQL 宣言節>から成らなければならない。

2) <埋込み SQL 文>は,関数ブロック (function block) 内で,C の文を指定してもよいところには,ど

こに指定してもよい。

C の文がラベル先頭子 (label prefix) を含むことができるならば,<埋込み SQL

>の直前にラベル先頭子を付けてもよい。

3) <C ホスト識別子>は,

任意の正しい

C 変数識別子 (variable identifier) とする。<C ホスト識別子>は,

<SQL 埋込み C プログラム>に含まれていなければならない。

4) <C 変数定義> CVD は,

一つ以上のホスト変数を定義する。CVD に含まれる<C ホスト識別子>を CHI

とし,CVD に含まれる<C 変数指定>を CVS とする。CHI に関連付けられるホスト変数を HV とす

る。


872

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

場合:

a)  CVS が<C 数値変数>ならば,次による。

場合:

i)

long long”が指定されるならば,HV の<ホストパラメタデータ型>は,BIGINT とする。

ii)  “long”が指定されるならば,HV の<ホストパラメタデータ型>は,INTEGER とする。

iii)  “short”が指定されるならば,HV の<ホストパラメタデータ型>は,SMALLINT とする。

iv)  “float”が指定されるならば,HV の<ホストパラメタデータ型>は,REAL とする。

v)  “double”が指定されるならば,HV の<ホストパラメタデータ型>は,DOUBLE PRECISION と

する。

b)  CVS が<C 文字変数>,又は CVS が<C VARCHAR 変数>,<C NCHAR 変数>,<C NCHAR VARYING

変数

>,<C CLOB 変数>若しくは<C NCLOB 変数>を単純に含む<C 導出変数>ならば,次による。

i) <C 文字変数>,<C VARCHAR 変数>又は<C CLOB 変数>が指定されるならば,HV の<ホストパ

ラメタデータ型

>は,それぞれ,CHARACTER,CHARACTER VARYING 又は CHARACTER

LARGE OBJECT とする。<C NCHAR 変数>,<C NCHAR VARYING 変数>又は<C NCLOB 変数>

が指定されるならば,HV の<ホストパラメタデータ型>は,それぞれ,NATIONAL CHARACTER,

NATIONAL CHARACTER VARYING 又は NATIONAL CHARACTER LARGE OBJECT とする。<

文字集合指定

>が指定されるならば,HV の文字集合は,<文字集合指定>によって指定される文

字集合と同じとする。

<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が

暗に想定される。

ii) <C 文字変数>又は<C NCHAR 変数>が指定されるならば,

HV は,

固定長文字列とする。長さは,

<C 配列指定>の<文字長>によって指定され,暗に想定されるか又は陽に指定される<文字長単

>によって指定される単位で測られる。HV 中の値は,ナル文字によって終了し,このナル文

字によって占められる位置は,HV の長さに含まれる。HV の<ホストパラメタデータ型>は,そ

れぞれ,

<C 配列指定>の<文字長>より 1 小さい長さをもつ CHARCTER 又は NATIONAL

CHARCTER とし,その値は,終端ナル文字を含まない。<文字長>は,2 以上でなければならな

い。

iii) <C

VARCHAR 変数>又は<C NCHAR VARYING 変数>が指定されるならば,HV は,可変長文字

列を記述する。最大長は,

<C 配列指定>の<文字長>によって指定され,暗に想定されるか又は

陽に指定される

<文字長単位>によって指定される単位で測られる。HV 中の値は,ナル文字に

よって終了し,このナル文字によって占められる位置は,HV の最大長に含まれる。HV の<ホ

ストパラメタデータ型

>は,それぞれ,<C 配列指定>の<文字長>より 1 小さい最大長をもつ

CHARCTER VARYING 又は NATIONAL CHARCTER VARYING とし,その値は,終端ナル文字

を含まない。

<文字長>は 2 以上でなければならない。

iv) <C CLOB 変数>又は<C NCLOB 変数>が指定されるならば,HV の<ホストパラメタデータ型>

は,それぞれ,

<文字長大オブジェクト長>によって指定される最大長をもつ CHARACTER

LARGE OBJECT 又は NATIONAL CHARACTER LARGE OBJECT とする。

c)

CVS が<C 導出変数>ならば,次による。

場合:

i)

CVS が<C BINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>によって

指定される長さをもつ

BINARY とする。


873

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

ii)  CVS が<C VARBINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>によ

って指定される最大長をもつ

BINARY VARYING とする。

iii)  CVS が<C BLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長大オブジェクト

>によって指定される最大長をもつ BINARY LARGE OBJECT とする。

iv)  CVS が<C 利用者定義型変数>を含むならば,HV の<ホストパラメタデータ型>は,CVS に含ま

れる

<既定義型>とする。

v)  CVS が<C CLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATOR とする。

vi)  CVS が<C BLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,BINARY

LARGE OBJECT AS LOCATOR とする。

vii)  CVS が<C 配列位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,AT AS

LOCATOR とする。ここで,AT は,<配列型>とする。

viiiCVS が<C マルチ集合位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,MT

AS LOCATOR とする。ここで,MT は,<マルチ集合型>とする。

ix)  CVS が<C 利用者定義型位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

UDT AS LOCATOR とする。ここで,UDT は,<パス解決利用者定義型名>とする。

x)

14

 CVS が<C REF 変数>を含むならば,HV の<ホストパラメタデータ型>は,RT とする。ここで,

RT は,<参照型>とする。RT に含まれる<被参照型>によって識別される被参照型を,その参照

被参照型  (referenced type)  と呼ぶ。

5) <C 変数定義>は,<SQL 埋込み C プログラム>から導出されるプログラムにそれが配置される前に,

次のとおりに修正されなければならない(“21.1 <SQL 埋込みホストプログラム>”の構文規則参照)。

a)

14

  省略可能などの CHARACTER SET 指定も,<C VARCHAR 変数>,<C 文字変数>,<C CLOB 変

>,<C NCHAR 変数>,<C NCHAR VARYING 変数>又は<C NCLOB 変数>から取り除かれなけれ

ばならない。

次の値を とする。

場合:

i) OCTETS が指定されるならば,1。

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。

iii)  そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。

b)  省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。

c)

どの

<C VARCHAR 変数>中でも,構文“VARCHAR”は,“char”によって置き換えられなければ

ならない。

d) <C 文字型>が“char”若しくは“unsigned char”を指定する任意の<C 文字変数>,任意の<C

VARCHAR 変数>,任意の<C NCHAR 変数>又は任意の<C NCHAR VARYING 変数>中の<C 配列指

>中で指定される<文字長> CL は,値が NV*と等しい長さによって置き換えられなければなら

ない。ここで,NV は,CL に含まれる<長さ>の数値とする。

注記 559  <文字長>の単位は,基となる文字集合によって用いられる単位と既に同じであると仮

定されているので,

<文字長>は,“unsigned short”を指定する<C 文字型>に対し


874

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

ては調整されない。

e)

任意の

<C NCHAR 変数>中の構文“NCHAR”,及び任意の<C NCHAR VARYING 変数>中の構文

“NCHAR VARYING”は,“char”によって置き換えられなければならない。

f)

14

  与えられた<C ホスト識別子> hvn に対して,どの<C CLOB 変数>又は<C NCLOB 変数>中でも,

構文

SQL TYPE IS CLOB ( L )

及び構文

SQL TYPE IS NCLOB ( L )

は,次の指定によって置き換えられなければならない。

struct {

    long             hvn_reserved ;

    unsigned  long  hvn_length ;

    char             hvn_data [LL];

hvn

ここで,LL の値は,NV*とし,NV は,“6.1 <データ型>”で規定するとおりの の数値とする。

g)  与えられた<C ホスト識別子> hvn に対して,どの<C BLOB 変数>中でも,構文

SQL TYPE IS BLOB ( L )

は,次の指定によって置き換えられなければならない。

struct {

    long             hvn_reserved ;

    unsigned  long  hvn_length ;

    char             hvn_data [LL];

hvn

ここで,LL の値は,“6.1 <データ型>”で規定するとおりの の数値とする。

h)  与えられた<C ホスト識別子> hvn に対して,どの<C BINARY 変数>中でも,構文

SQL TYPE IS BINARY ( L )

は,次の指定によって置き換えられなければならない。

unsigned char hvn [L]

i)

与えられた

<C ホスト識別子> hvn に対して,どの<C VARBINARY 変数>中でも,構文

SQL TYPE IS VARBINARY ( L )

は,次の指定によって置き換えられなければならない。

struct {

    long             hvn_reserved ;

    unsigned  long  hvn_length ;

    char             hvn_data [L];

hvn

j)

どの

<C 利用者定義型変数>中でも,構文

SQL TYPE IS UDTN AS PDT

は,次の指定によって置き換えられなければならない。

ADT


875

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

ここで,ADT は,表 17“C のためのデータ型対応”の SQL データ型 PDT に対する行に対応する

C データ型”列中に記載されたデータ型とする。ADT は,

“なし”であってはならない。UDTN

によって識別されるデータ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)

と呼び,PDT によって識別されるデータ型を,ホスト変数の関連する SQL データ型  (associated 

SQL data type)  と呼ぶ。

k)  どの<C BLOB 位置付け子変数>中でも,構文

SQL TYPE IS BLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

unsigned long

<C BLOB 位置付け子変数>によって定義されるホスト変数を,進オクテット長大オブジェクト

位置付け子変数  (binary large object locator variable)  と呼ぶ。

l)

どの

<C CLOB 位置付け子変数>中でも,構文

SQL TYPE IS CLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

unsigned long

<C CLOB 位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付け子

変数  (character large object locator variable)  と呼ぶ。

m)  どの<C 配列位置付け子変数>中でも,構文

SQL TYPE IS <配列型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

unsigned long

<C 配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数  (array locator 

variable)  と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型

(associated array type)  と呼ぶ。

n)  どの<C マルチ集合位置付け子変数>中でも,構文

SQL TYPE IS <マルチ集合型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

unsigned long

<C マルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変数

(multiset locator variable)  と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数の

関連するマルチ集合型  (associated multiset type)  と呼ぶ。

o)  どの<C 利用者定義型位置付け子変数>中でも,構文

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

は,次の指定によって置き換えられなければならない。

unsigned long

<C 利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け子変

数  (user-defined type locator variable)  と呼ぶ。<パス解決利用者定義型名>によって識別されるデー

タ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)  と呼ぶ。

p)

09

  与えられた<C ホスト識別子> hvn に対して,どの<C REF 変数>中でも,構文

SQL TYPE IS <参照型>


876

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

は,次の指定によって置き換えられなければならない。

unsigned char hvn [L]

ここで,の値は,参照型のオクテット単位での長さとする。

修正された

<C 変数定義>は,<SQL 埋込み C プログラム>から導出されるプログラム中で,正しい C

データ宣言

 (data declaration) でなければならない。

6) <C 初期値>に含まれる<文字表現>の並びは,C 変数に代入する初期値を指定する。それは,初期値

のための

C の正しい指定でなければならない。

7)  文字列のための配列指定を除いて,<C 変数定義>は,スカラ型 (scalar type) を指定しなければなら

ない。

8)

14

 <C 変数定義>中で,“VARCHAR”,“CHARACTER”,“SET”,“IS”,“VARYING”,“BINARY”,

VARBINARY”,“BLOB”,“CLOB”,“NCHAR”,“NCLOB”,“AS”,“LOCATOR”及び“REF”

という語は,大文字及び小文字のどんな組合せで指定してもよい(

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

の構文規則参照)。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B012“埋込み C”なしでは,適合する SQL 言語は,<SQL 埋込み C プログラム>を含んではな

らない。

2)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<C REF 変数>を含んではならない。

3)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<C 利用者定義型変数>を含んではならな

い。

4)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<C 配列位置付け子変数>を含んで

はならない。

5)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<C マルチ集合位置付け子変

>を含んではならない。

6)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<C 利用者定義

型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

7)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<C BLOB 変数>を含んでは

ならない。

8)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<C CLOB 変数>を含んでは

ならない。

9)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<C BLOB 位置付け子変数>

を含んではならない。

10)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<C CLOB 位置付け子変数>

を含んではならない。

11)  機能 T071“BIGINT データ型”なしでは,適合する SQL 言語は,long long を含む<C 数値変数>

を含んではならない。

12)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<C BINARY


877

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

変数

>を含んではならない。

13)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<C VARBINARY

変数

>を含んではならない。

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

この細分箇条は,ISO/IEC 9075-9 の“18.3 <SQL 埋込み COBOL プログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.4 <SQL 埋込み COBOL プログラム>”によって修正される。 

機能

<SQL 埋込み COBOL プログラム> (<embedded SQL COBOL program>)  は,<SQL 埋込み COBOL プログ

ラム

>を指定する。

形式

<SQL 埋込み COBOL プログラム> ::=

  !!

構文規則参照。

<COBOL 変数定義> ::=

  { 01 |77 } <COBOL ホスト識別子>

      <COBOL 型指定> [ <文字表現>... ] <ピリオド>

<COBOL ホスト識別子> ::=

  !!

構文規則参照。

<COBOL 型指定> ::=

  <COBOL 文字型>

 |

<COBOL 各国文字型>

 |

<COBOL 数値型>

 |

<COBOL 整数型>

 |

<COBOL 導出型指定>

09

14

 <COBOL 導出型指定> ::=

  <COBOL  CLOB 変数>

| <COBOL NCLOB 変数>

| <COBOL BINARY 変数>

| <COBOL BLOB 変数>

 |

<COBOL 利用者定義型変数>

| <COBOL CLOB 位置付け子変数>

| <COBOL BLOB 位置付け子変数>

 |

<COBOL 配列位置付け子変数>

 |

<COBOL マルチ集合位置付け子変数>

 |

<COBOL 利用者定義型位置付け子変数>

| <COBOL REF 変数>

<COBOL 文字型> ::=

  [ CHARACTER SET [ IS ] <文字集合指定> ]

      { PIC | PICTURE } [ IS ] { X [ <左括弧> <文字長> <右括弧> ] }...

<COBOL 各国文字型> ::=

  [ CHARACTER SET [ IS ] <文字集合指定> ]


878

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

      { PIC | PICTURE } [ IS ] { N [ <左括弧> <文字長> <右括弧> ] }...

<COBOL CLOB 変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<COBOL NCLOB 変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS NCLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<COBOL BINARY 変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS BINARY <左括弧> <長さ> <右括弧>

<COBOL BLOB 変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧>

<COBOL 利用者定義型変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS <パス解決利用者定義型名>

      AS <既定義型>

<COBOL CLOB 位置付け子変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS CLOB AS LOCATOR

<COBOL BLOB 位置付け子変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS BLOB AS LOCATOR

<COBOL 配列位置付け子変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS <配列型> AS LOCATOR

<COBOL マルチ集合位置付け子変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS <マルチ集合型> AS LOCATOR

<COBOL 利用者定義型位置付け子変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

<COBOL REF 変数> ::=

  [ USAGE [ IS ] ] SQL TYPE IS <参照型>

<COBOL 数値型> ::=

  { PIC | PICTURE } [ IS ] S <COBOL 9 指定>

      [ USAGE [ IS ] ] DISPLAY SIGN LEADING SEPARATE

<COBOL 9 指定> ::=

  <COBOL 9> [ V [ <COBOL 9> ] ]

| V <COBOL 9>

<COBOL 整数型> ::=

  { PIC | PICTURE } [ IS ] S<COBOL 9>

      [  USAGE  [  IS  ]  ]  BINARY

<COBOL 9> ::=

  { 9 [ <左括弧> <長さ> <右括弧> ] }...

構文規則

1) <SQL 埋込み COBOL プログラム>は,

COBOL テキスト及び SQL テキストから成る翻訳単位とする。

COBOL テキストは,JIS X 3002 [ISO1989]  に適合しなければならない。SQL テキストは,一つ以上


879

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

<埋込み SQL 文>,及び省略可能な一つ以上の<埋込み SQL 宣言節>から成らなければならない。

2) <SQL 埋込み COBOL プログラム>中の<埋込み SQL 文>は,<SQL 埋込み COBOL プログラム>の手

続部

 (Procedure Division) 中で COBOL 文を指定してもよいところには,どこに指定してもよい。

COBOL 文の直前に段落名 (paragraph-name) を付けることができるならば,<埋込み SQL 文>の直前

に段落名を付けてもよい。

3) <COBOL ホスト識別子>は,任意の正しい COBOL データ名 (data-name) とする。<COBOL ホスト

識別子

>は,<SQL 埋込み COBOL プログラム>に含まれていなければならない。

4) <COBOL 変数定義> CVD は,

ホスト変数を定義する

COBOL データ記述項  (data description entry)  の

制限された形式とする。CVD に含まれる<COBOL ホスト識別子>を CHI とし,CVD に含まれる

<COBOL 型指定>を CTS とする。CHI に関連付けられるホスト変数を HV とする。

場合:

a)  CTS が<COBOL 文字型>又は<COBOL 各国文字型>ならば,HV の<ホストパラメタデータ型>は,

それぞれ,

<文字長>によって指定される長さ及び<文字集合指定>によって指定される文字集合を

もつ

CHARACTER 又は NATIONAL CHARACTER とする。<文字長>が指定されないならば,長さ

は,

1 とする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想定

される。

b)  CTS が<COBOL 数値型>ならば,

HV の<ホストパラメタデータ型>は,

NUMERIC とする。ここで,

精度は,

<COBOL 9 指定>に含まれる一つ又は二つの<長さ>の値の合計とし,位取りは,“V”に

後続する

<長さ>があるならば,その値とし,そうでなければ,0 とする。

c)

CTS が<COBOL 整数型>ならば,HV の<ホストパラメタデータ型>が SMALLINT か,INTEGER

か又は

BIGINT かは,処理系定義とする。

d)  CTS が<COBOL 導出型指定>ならば,次による。

場合:

i)

CTS が<COBOL CLOB 変数>又は<COBOL NCLOB 変数>を含むならば,HV の<ホストパラメタ

データ型

>は,それぞれ,<文字長大オブジェクト長>によって指定される最大長及び<文字集合

指定

>によって指定される文字集合をもつ CHARACTER LARGE OBJECT 又は NATIONAL

CHARACTER LARGE OBJECT とする。<文字集合指定>が指定されないならば,文字集合は,

処理系定義とする。

ii)  CTS が<COBOL BINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>に

よって指定される長さをもつ

BINARY とする。

iii)  CTS が<COBOL BLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長大オブジ

ェクト長

>によって指定される最大長をもつ BINARY LARGE OBJECT とする。

iv)  CTS が<COBOL 利用者定義型変数>を含むならば,HV の<ホストパラメタデータ型>は,CTS

に含まれる

<既定義型>とする。

v)  CTS が<COBOL CLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATOR とする。

vi)  CTS が<COBOL BLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATOR とする。

vii)  CTS が<COBOL 配列位置付け子変数>を含むならば,

HV の<ホストパラメタデータ型>は,

AT AS

LOCATOR とする。ここで,AT は,<配列型>とする。


880

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

viiiCTS が<COBOL マルチ集合位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>

は,MT AS LOCATOR とする。ここで,MT は,<マルチ集合型>とする。

ix)  CTS が<COBOL 利用者定義型位置付け子変数>を含むならば,HV の<ホストパラメタデータ型

>は,UDT AS LOCATOR とする。ここで,UDT は,<パス解決利用者定義型名>とする。

x)

14

  CTS が<COBOL REF 変数>を含むならば,HV の<ホストパラメタデータ型>は,CTS に含ま

れる

<参照型> RT とする。RT に含まれる<被参照型>によって識別される被参照型を,その参照

被参照型  (referenced type)  と呼ぶ。

5) <COBOL 変数定義>は,<SQL 埋込み COBOL プログラム>から導出されるプログラムにそれが配置

される前に,次のとおりに修正されなければならない(“21.1 <SQL 埋込みホストプログラム>”の

構文規則参照)。

a)  省略可能などの CHARACTER SET 指定も,<COBOL 文字型>,<COBOL 各国文字型>,<COBOL

CLOB 変数>及び<COBOL NCLOB 変数>から取り除かれなければならない。

次の値を とする。

場合:

i) OCTETS が指定されるならば,1。

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。

iii)  そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。

b)  省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。

c) <COBOL 文字型>中で指定される<文字長> CL は,

値が NV*と等しい長さによって置き換えられ

なければならない。ここで,NV は,CL に含まれる<長さ>の数値とする。

注記 560  <文字長>の単位は,基となる文字集合によって用いられる単位と既に同じであると仮

定されているので,

<COBOL 各国文字型>中で指定される<文字長>は,調整されない。

d)

14

  与えられた<COBOL ホスト識別子>  HVN に対して,どの<COBOL CLOB 変数>又は<COBOL

NCLOB 変数>中でも,構文

SQL TYPE IS CLOB ( L )

又は構文

SQL TYPE IS NCLOB ( L )

は,次の指定によって置き換えられなければならない。

49 HVN-RESERVED PIC S9(9) USAGE IS BINARY.

49 HVN-LENGTH PIC S9(9) USAGE IS BINARY.

49 HVN-DATA PIC X(LL).

ここで,LL の値は,NV*とし,NV は,“6.1 <データ型>”で規定するとおりの の数値とする。

e)

与えられた

<COBOL ホスト識別子> HVN に対して,どの<COBOL BLOB 変数>中でも,構文

SQL TYPE IS BLOB ( L )

は,次の指定によって置き換えられなければならない。

49 HVN-RESERVED PIC S9(9) USAGE IS BINARY.

49 HVN-LENGTH PIC S9(9) USAGE IS BINARY.

49 HVN-DATA PIC X(LL).


881

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

ここで,LL の値は,“6.1 <データ型>”で規定するとおりの の数値とする。

f)

どの

<COBOL BINARY 変数>中でも,構文

SQL TYPE IS BINARY ( L )

は,次の指定によって置き換えられなければならない。

PICTURE X (L)

g)  どの<COBOL 利用者定義型変数>中でも,構文

SQL TYPE IS UDTN AS PDT

は,次の指定によって置き換えられなければならない。

ADT

ここで,ADT は,表 18“COBOL のためのデータ型対応”の SQL データ型 PDT に対する行に対

応する“

COBOL データ型”列中に記載されたデータ型とする。ADT は,

“なし”であってはなら

ない。UDTN によって識別されるデータ型を,ホスト変数の関連する利用者定義型  (associated 

user-defined type)  と呼び,PDT によって識別されるデータ型を,ホスト変数の関連する SQL デー

タ型  (associated SQL data type)  と呼ぶ。

h)  どの<COBOL BLOB 位置付け子変数>中でも,構文

SQL TYPE IS BLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

PIC S9(9) USAGE IS BINARY

<COBOL BLOB 位置付け子変数>によって定義されるホスト変数を,進オクテット長大オブジェ

クト位置付け子変数  (binary large object locator variable)  と呼ぶ。

i)

どの

<COBOL CLOB 位置付け子変数>中でも,構文

SQL TYPE IS CLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

PIC S9(9) USAGE IS BINARY

<COBOL CLOB 位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置

付け子変数  (character large object locator variable)  と呼ぶ。

j)

どの

<COBOL 配列位置付け子変数>中でも,構文

SQL TYPE IS <配列型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

PIC S9(9) USAGE IS BINARY

<COBOL 配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数  (array 

locator variable)  と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型

(associated array type)  と呼ぶ。

k)  どの<COBOL マルチ集合位置付け子変数>中でも,構文

SQL TYPE IS <マルチ集合型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

PIC S9(9) USAGE IS BINARY

<COBOL マルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子

変数  (multiset locator variable)  と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト

変数の

関連するマルチ集合型  (associated multiset type)  と呼ぶ。


882

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

l)

どの

<COBOL 利用者定義型位置付け子変数>中でも,構文

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

は,次の指定によって置き換えられなければならない。

PIC S9(9) USAGE IS BINARY

<COBOL 利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付

け子変数  (user-defined type locator variable)  と呼ぶ。<パス解決利用者定義型名>によって識別され

るデータ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)  と呼ぶ。

m)

09

  与えられた<COBOL ホスト識別子> HVN に対して,どの<COBOL REF 変数>中でも,構文

SQL TYPE IS <参照型>

は,次の指定によって置き換えられなければならない。

01  HVN PICTURE X(RL)

ここで,RL の値は,参照型のオクテット単位での長さとする。

修正された

<COBOL 変数定義>は,<SQL 埋込み COBOL プログラム>から導出されるプログラムの

データ部

 (Data Division) 中で,正しいデータ記述項でなければならない。

6) <COBOL 変数定義>中の省略可能な<文字表現>の並びは,VALUE 句を指定してもよい。他の句を指

定してもよいかどうかは,処理系定義とする。

<文字表現>の並びは,<COBOL 変数定義>が,正し

COBOL データ記述項であるようなものでなければならない。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B013“埋込み COBOL”なしでは,適合する SQL 言語は,<SQL 埋込み COBOL プログラム>

を含んではならない。

2)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<COBOL REF 変数>を含んではならない。

3)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<COBOL 利用者定義型変数>を含んではな

らない。

4)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<COBOL 配列位置付け子変数>を含

んではならない。

5)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<COBOL マルチ集合位置付

け子変数

>を含んではならない。

6)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<COBOL 利用

者定義型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

7)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<COBOL BLOB 変数>を含

んではならない。

8)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<COBOL CLOB 変数>を含

んではならない。

9)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<COBOL BLOB 位置付け子

変数

>を含んではならない。

10)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<COBOL CLOB 位置付け子


883

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

変数

>を含んではならない。

11)  機能 T021

BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<COBOL BINARY

変数

>を含んではならない。

12)  機能 T071“BIGINT データ型”なしでは,適合する SQL 言語中で,<COBOL 整数型>と等価な<ホ

ストパラメタデータ型

>は,BIGINT であってはならない。

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

この細分箇条は,ISO/IEC 9075-9 の“18.4 <SQL 埋込み Fortran プログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.5 <SQL 埋込み Fortran プログラム>”によって修正される。 

機能

<SQL 埋込み Fortran プログラム> (<embedded SQL Fortran program>)  は,<SQL 埋込み Fortran プログラム

>を指定する。

形式

<SQL 埋込み Fortran プログラム> ::=

  !!

構文規則参照。

<Fortran 変数定義> ::=

  <Fortran 型指定> <Fortran ホスト識別子>

      [ { <コンマ> <Fortran ホスト識別子> }... ]

<Fortran ホスト識別子> ::=

  !!

構文規則参照。

<Fortran 型指定> ::=

  CHARACTER  [  <アスタリスク> <文字長> ] [ CHARACTER SET

      [  IS  ]  <文字集合指定> ]

| CHARACTER KIND = n [ <アスタリスク> <文字長> ]

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

 |

INTEGER

 |

REAL

| DOUBLE PRECISION

 |

LOGICAL

 |

<Fortran 導出型指定>

09

14

 <Fortran 導出型指定> ::=

  <Fortran  CLOB 変数>

| <Fortran BINARY 変数>

| <Fortran VARBINARY 変数>

| <Fortran BLOB 変数>

 |

<Fortran 利用者定義型変数>

| <Fortran CLOB 位置付け子変数>

| <Fortran BLOB 位置付け子変数>

 |

<Fortran 利用者定義型位置付け子変数>

 |

<Fortran 配列位置付け子変数>

 |

<Fortran マルチ集合位置付け子変数>


884

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

| <Fortran REF 変数>

<Fortran CLOB 変数> ::=

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<Fortran BINARY 変数> ::=

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧>

<Fortran VARBINARY 変数> ::=

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧>

<Fortran BLOB 変数> ::=

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧>

<Fortran 利用者定義型変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型>

<Fortran CLOB 位置付け子変数> ::=

  SQL TYPE IS CLOB AS LOCATOR

<Fortran BLOB 位置付け子変数> ::=

  SQL TYPE IS BLOB AS LOCATOR

<Fortran 利用者定義型位置付け子変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

<Fortran 配列位置付け子変数> ::=

  SQL TYPE IS <配列型> AS LOCATOR

<Fortran マルチ集合位置付け子変数> ::=

  SQL TYPE IS <マルチ集合型> AS LOCATOR

<Fortran REF 変数> ::=

  SQL TYPE IS <参照型>

構文規則

1) <SQL 埋込み Fortran プログラム>は,Fortran テキスト及び SQL テキストから成る翻訳単位とする。

Fortran テキストは,JIS X 3001-1 [ISO1539]  に適合しなければならない。SQL テキストは,一つ以

上の

<埋込み SQL 文>,及び省略可能な一つ以上の<埋込み SQL 宣言節>から成らなければならない。

2) <埋込み SQL 文>は,実行可能な Fortran 文を指定してもよいところには,どこに指定してもよい。<

埋込み

SQL 文>を含む<SQL 埋込み Fortran プログラム>中で,実行可能などの Fortran 文よりも前に

ある

<埋込み SQL 文>は,Fortran 文番号 (statement number) をもってはならない。そうでなければ,

Fortran 文が文番号をもってもよいならば,<埋込み SQL 文>は,文番号をもってもよい。

3)  空白 (Blanks) は,<埋込み SQL 文>中で意味がある。<埋込み SQL 文>中の<分離符号>に対する規

則は,

5.2 <トークン>及び<分離符号>”で規定するとおりとする。

4) <Fortran ホスト識別子>は,全ての<空白>文字を取り除いた任意の正しい Fortran 変数名とする。

<Fortran ホスト識別子>は,<SQL 埋込み Fortran プログラム>に含まれなければならない。

5) <Fortran 変数定義>  FVD は,一つ以上のホスト変数を定義する Fortran 型宣言文 (type-statement) の

制限された形式とする。FVD に含まれる<Fortran 型指定>を FTS とし,FVD に含まれる<Fortran ホ

スト識別子

>を FHI とする。FHI に関連付けられるホスト変数を HV とする。

場合:


885

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

a)  FTS が“KIND=n”なしの CHARACTER を指定するならば,HV の<ホストパラメタデータ型>は,

<文字長>によって指定される長さ及び<文字集合指定>によって指定される文字集合をもつ

CHARACTER とする。<文字長>が指定されないならば,長さは,1 とする。<文字集合指定>が指

定されないならば,処理系定義の

<文字集合指定>が暗に想定される。

b)  FTS が CHARACTER KIND=を指定するならば,HV の<ホストパラメタデータ型>が,<文字長>

によって指定される長さ及び

<文字集合指定>によって指定される文字集合をもつ CHARACTER

か又は

NATIONAL CHARACTER かは,処理系定義とする。<文字長>が指定されないならば,長

さは,

1 とする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想

定される。の値は,Fortran 変数の処理系定義の特性を決定する。の値は,処理系定義とする。

c)

FTS が INTEGER を指定するならば,HV の<ホストパラメタデータ型>は,INTEGER とする。

d)  FTS が REAL を指定するならば,HV の<ホストパラメタデータ型>は,REAL とする。

e)

FTS が DOUBLE PRECISION を指定するならば,HV の<ホストパラメタデータ型>は,DOUBLE

PRECISION とする。

f)

FTS が LOGICAL を指定するならば,HV の<ホストパラメタデータ型>は,BOOLEAN とする。

g)  FTS が<Fortran 導出型指定>ならば,次による。

場合:

i)

FTS が<Fortran CLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<文字長大オ

ブジェクト長

>によって指定される最大長及び<文字集合指定>によって指定される文字集合を

もつ

CHARACTER LARGE OBJECT とする。<文字集合指定>がないならば,文字集合は,処理

系定義とする。

ii)  FTS が<Fortran BINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>によ

って指定される長さをもつ

BINARY とする。

iii)  FTS が<Fortran VARBINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>

によって指定される最大長をもつ

BINARY VARYING とする。

iv)  FTS が<Fortran BLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長大オブジ

ェクト長

>によって指定される最大長をもつ BINARY LARGE OBJECT とする。

v)  FTS が<Fortran 利用者定義型変数>を含むならば,HV の<ホストパラメタデータ型>は,FTS 

含まれる

<既定義型>とする。

vi)  FTS が<Fortran CLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATOR とする。

vii)  FTS が<Fortran BLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATOR とする。

viiiFTS が<Fortran 利用者定義型位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>

は,UDT AS LOCATOR とする。ここで,UDT は,FTS に含まれる<パス解決利用者定義型名>

とする。

ix)  FTS が<Fortran 配列位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,AT AS

LOCATOR とする。ここで,AT は,FTS に含まれる<配列型>とする。

x)  FTS が<Fortran マルチ集合位置付け子変数>を含むならば,

HV の<ホストパラメタデータ型>は,

MT AS LOCATOR とする。ここで,MT は,FTS に含まれる<マルチ集合型>とする。

xi)

14

  FTS が<Fortran REF 変数>を含むならば,HV の<ホストパラメタデータ型>は,RT とする。


886

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

ここで,RT は,FTS に含まれる<参照型>とする。RT に含まれる<被参照型>によって識別され

る被参照型を,その参照の

被参照型  (referenced type)  と呼ぶ。

6) <Fortran 変数定義>は,<SQL 埋込み Fortran プログラム>から導出されるプログラムにそれが配置さ

れる前に,次のとおりに修正されなければならない(

21.1 <SQL 埋込みホストプログラム>”の構

文規則参照)

a)  省略可能などの CHARACTER SET 指定も,

<Fortran 型指定>中の CHARACTER 及び CHARACTER

KIND=の代替手段から取り除かれなければならない。

次の値を とする。

場合:

i) OCTETS が指定されるならば,1。

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。

iii)  そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。

b)  省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。

c) <Fortran 型指定>の CHARATER 代替手段中で指定される<文字長>  CL は,値が NV*と等しい長

さによって置き換えられなければならない。ここで,NV は,CL に含まれる<長さ>の数値とする。

注記 561  <文字長>の単位は,基となる文字集合によって用いられる単位と既に同じであると仮

定されているので,

<文字長>は,<Fortran 型指定>の CHARACTER KIND= の代替手

段に対して調整されない。

d)

14

  与えられた<Fortran ホスト識別子> HVN に対して,どの<Fortran CLOB 変数>中でも,構文

SQL TYPE IS CLOB ( L )

は,次の指定によって置き換えられなければならない。

CHARACTER HVN (L+8)

INTEGER*4 HVN_RESERVED

INTEGER*4 HVN_LENGTH

CHARACTER HVN_DATA * LL

EQUIVALENCE (HVN(1), HVN_RESERVED)

EQUIVALENCE (HVN(5), HVN_LENGTH)

EQUIVALENCE (HVN(9), HVN_DATA)

ここで,LL の値は,NV*とし,NV は,“6.1 <データ型>”で規定するとおりの の数値とする。

e)

与えられた

<Fortran ホスト識別子> HVN に対して,どの<Fortran BLOB 変数>中でも,構文

SQL TYPE IS BLOB ( L )

は,次の指定によって置き換えられなければならない。

CHARACTER HVN (L+8)

INTEGER*4 HVN_RESERVED

INTEGER*4 HVN_LENGTH

CHARACTER HVN_DATA * LL

EQUIVALENCE (HVN(1), HVN_RESERVED)

EQUIVALENCE (HVN(5), HVN_LENGTH)


887

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

EQUIVALENCE (HVN(9), HVN_DATA)

ここで,LL の値は,“6.1 <データ型>”で規定するとおりの の数値とする。

f)

与えられた

<Fortran ホスト識別子> HVN に対して,どの<Fortran BINARY 変数>中でも,構文

SQL TYPE IS BINARY ( L )

は,次の指定によって置き換えられなければならない。

CHARACTER HVN * L

g)  与えられた<Fortran ホスト識別子> HVN に対して,どの<Fortran VARBINARY 変数>中でも,構文

SQL TYPE IS VARBINARY ( L )

は,次の指定によって置き換えられなければならない。

INTEGER HVN_RESERVED

INTEGER HVN_LENGTH

CHARACTER HVN_DATA * L

h)  どの<Fortran 利用者定義型変数>中でも,構文

SQL TYPE IS UDTN AS PDT

は,次の指定によって置き換えられなければならない。

ADT

ここで,ADT は,表 19“Fortran のためのデータ型対応”の SQL データ型 PDT に対する行に対応

する“

Fortran データ型”列中に記載されたデータ型とする。ADT は,“なし”であってはならな

い。UDTN によって識別されるデータ型を,ホスト変数の関連する利用者定義型  (associated 

user-defined type)  と呼び,PDT によって識別されるデータ型を,ホスト変数の関連する SQL デー

タ型  (associated SQL data type)  と呼ぶ。

i)

どの

<Fortran BLOB 位置付け子変数>中でも,構文

SQL TYPE IS BLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Fortran BLOB 位置付け子変数>によって定義されるホスト変数を,進オクテット長大オブジェ

クト位置付け子変数  (binary large object locator variable)  と呼ぶ。

j)

どの

<Fortran CLOB 位置付け子変数>中でも,構文

SQL TYPE IS CLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Fortran CLOB 位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付

け子変数  (character large object locator variable)  と呼ぶ。

k)  どの<Fortran 利用者定義型位置付け子変数>中でも,構文

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Fortran 利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け

子変数  (user-defined type locator variable)  と呼ぶ。<パス解決利用者定義型名>によって識別される

データ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)  と呼ぶ。


888

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

l)

どの

<Fortran 配列位置付け子変数>中でも,構文

SQL TYPE IS <配列型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Fortran 配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数  (array 

locator variable)  と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型

(associated array type)  と呼ぶ。

m)  どの<Fortran マルチ集合位置付け子変数>中でも,構文

SQL TYPE IS <マルチ集合型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Fortran マルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変

数  (multiset locator variable)  と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変

数の

関連するマルチ集合型  (associated multiset type)  と呼ぶ。

n)

09

  与えられた<Fortran ホスト識別子> HVN に対して,どの<Fortran REF 変数>中でも,構文

SQL TYPE IS <参照型>

は,次の指定によって置き換えられなければならない。

CHARACTER HVN * RL

ここで,RL の値は,参照型のオクテット単位での長さとする。

修正された

<Fortran 変数定義>は,<SQL 埋込み Fortran プログラム>から導出されるプログラム中で,

正しい

Fortran 型宣言文でなければならない。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B014“埋込み Fortran”なしでは,適合する SQL 言語は,<SQL 埋込み Fortran プログラム>を

含んではならない。

2)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<Fortran REF 変数>を含んではならない。

3)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<Fortran 利用者定義型変数>を含んではな

らない。

4)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<Fortran 配列位置付け子変数>を含

んではならない。

5)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<Fortran マルチ集合位置付け

子変数

>を含んではならない。

6)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<Fortran 利用者

定義型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

7)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Fortran BLOB 変数>を含ん

ではならない。

8)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Fortran CLOB 変数>を含ん


889

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

ではならない。

9)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Fortran BLOB 位置付け子

変数

>を含んではならない。

10)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Fortran CLOB 位置付け子

変数

>を含んではならない。

11)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<Fortran BINARY

変数

>を含んではならない。

12)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<Fortran

VARBINARY 変数>を含んではならない。

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

この細分箇条は,ISO/IEC 9075-9 の“18.5 <SQL 埋込み MUMPS プログラム>”によって修正される。 

機能

<SQL 埋込み MUMPS プログラム> (<embedded SQL MUMPS program>)  は,<SQL 埋込み MUMPS プログ

ラム

>を指定する。

形式

<SQL 埋込み MUMPS プログラム> ::=

  !!

構文規則参照

<MUMPS 変数定義> ::=

  <MUMPS 数値変数> <セミコロン>

 |

<MUMPS 文字変数> <セミコロン>

 |

<MUMPS 導出型指定> <MUMPS ホスト識別子> <セミコロン>

<MUMPS 文字変数> ::=

  VARCHAR  <MUMPS 文字変数指定子>

      [ { <コンマ> <MUMPS 文字変数指定子> }... ]

<MUMPS 文字変数指定子> ::=

  <MUMPS ホスト識別子> <MUMPS 長さ指定>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<MUMPS ホスト識別子> ::=

  !!

構文規則参照

<MUMPS 長さ指定> ::=

  <左括弧> <文字長> <右括弧>

<MUMPS 数値変数> ::=

  <MUMPS 型指定> <MUMPS ホスト識別子>

      [ { <コンマ> <MUMPS ホスト識別子> }... ]

<MUMPS 型指定> ::=

  INT

| DEC [ <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧> ]

 |

REAL

09

14

 <MUMPS 導出型指定> ::=

  <MUMPS 利用者定義型変数>


890

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

| <MUMPS CLOB 位置付け子変数>

| <MUMPS BLOB 位置付け子変数>

 |

<MUMPS 利用者定義型位置付け子変数>

 |

<MUMPS 配列位置付け子変数>

 |

<MUMPS マルチ集合位置付け子変数>

| <MUMPS REF 変数>

<MUMPS 利用者定義型変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型>

<MUMPS CLOB 位置付け子変数> ::=

  SQL TYPE IS CLOB AS LOCATOR

<MUMPS BLOB 位置付け子変数> ::=

  SQL TYPE IS BLOB AS LOCATOR

<MUMPS 利用者定義型位置付け子変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

<MUMPS 配列位置付け子変数> ::=

  SQL TYPE IS <配列型> AS LOCATOR

<MUMPS マルチ集合位置付け子変数> ::=

  SQL TYPE IS <マルチ集合型> AS LOCATOR

<MUMPS REF 変数> ::=

  SQL TYPE IS <参照型>

構文規則

1) <SQL 埋込み MUMPS プログラム>は,M テキスト及び SQL テキストから成る翻訳単位とする。M

テキストは,

[ISO11756]  に適合しなければならない。SQL テキストは,一つ以上の<埋込み SQL 文

>,及び省略可能な一つ以上の<埋込み SQL 宣言節>から成らなければならない。

2) <MUMPS ホスト識別子>は,任意の正しい M 変数名とする。<MUMPS ホスト識別子>は,<SQL 埋

込み

MUMPS プログラム>に含まれなければならない。

3) <埋込み SQL 文>は,M の命令 (command) を指定してもよいところには,どこに指定してもよい。

4) <MUMPS 変数定義> MVD は,一つ以上のホスト変数を定義する。MVD に単純に含まれる<MUMPS

ホスト識別子

>を MHI とし,MHI に対応するホスト変数を HV とする。

場合:

a)  MVD が<MUMPS 数値変数>ならば,MVD に含まれる<MUMPS 型指定>を MTS とする。

場合:

i)

MTS が INT ならば,HV の<ホストパラメタデータ型>は,INTEGER とする。

ii)  MTS が DEC ならば,

HV の<ホストパラメタデータ型>は,

同じ

<精度>及び<位取り>の DECIMAL

とする。

<位取り>の値は,<精度>の値を超えてはならない。

iii)  MTS が REAL ならば,HV の<ホストパラメタデータ型>は,REAL とする。

b)  MVD が<MUMPS 文字変数>ならば,MHI を含む<MUMPS 文字変数指定子>を MCVS とする。HV

<ホストパラメタデータ型>は,最大長が MCVS に含まれる<文字長>である CHARACTER

VARYING とし,文字集合は,MCVS に含まれる<文字集合指定>があるならば,その<文字集合指

>によって識別され,そうでなければ,処理系定義とする。


891

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

c)

MVD が<MUMPS 導出型指定>ならば,次による。

i)

MVD が<MUMPS 利用者定義型変数>を含むならば,MVD に含まれる<パス解決利用者定義型

>を UDT とし,MVD に含まれる<既定義型>を PT とする。表 20“M のためのデータ型対応”

中の

SQL データ型 PT の行に対応する“M データ型”列中のデータ型は,“なし”であっては

ならない。UDT によって識別されるデータ型を,HV の関連する利用者定義型  (associated 

user-defined type)  と呼び,PT によって識別されるデータ型を,HV の関連する SQL データ型

(associated SQL data type)  と呼ぶ。HV の<ホストパラメタデータ型>は,PT とする。

ii)  MVD が<MUMPS CLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

CLOB AS LOCATOR とする。HV を文字長大オブジェクト位置付け子変数  (character large object 

locator variable)  と呼ぶ。

iii)  MVD が<MUMPS BLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

BLOB AS LOCATOR とする。HV を 進オクテット長大オブジェクト位置付け子変数  (binary 

large object locator variable)  と呼ぶ。

iv)  MVD が<MUMPS 利用者定義型位置付け子変数>を含むならば,MVD に含まれる<パス解決利

用者定義型名

>を UDT とする。HV の<ホストパラメタデータ型>は,UDT AS LOCATOR とする。

UDT によって識別されるデータ型を,HV の関連する利用者定義型  (associated user-defined type)

と呼ぶ。HV を利用者定義型位置付け子変数  (user-defined type locator variable)  と呼ぶ。

v)  MVD が<MUMPS 配列位置付け子変数>を含むならば,

MVD に含まれる<配列型>を AT とする。

HV の<ホストパラメタデータ型>は,AT AS LOCATOR とする。AT によって識別されるデータ

型を,HV の関連する配列型  (associated array type)  と呼ぶ。HV を配列位置付け子変数  (array 

locator variable)  と呼ぶ。

vi)  MVD が<MUMPS マルチ集合位置付け子変数>を含むならば,MVD に含まれる<マルチ集合型>

を MT とする。HV の<ホストパラメタデータ型>は,MT AS LOCATOR とする。MT によって

識別されるデータ型を,HV の関連するマルチ集合型  (associated multiset type)  と呼ぶ。HV 

マルチ集合位置付け子変数  (multiset locator variable)  と呼ぶ。

vii)  MVD が<MUMPS REF 変数>を含むならば,MVD に含まれる<参照型>を RT とする。HV の<ホ

ストパラメタデータ型

>は,RT とする。RT に含まれる<被参照型>によって識別される被参照

型を,その参照の

被参照型  (referenced type)  と呼ぶ。

5) <MUMPS 変数定義>は,削除されなければならず,<SQL 埋込み MUMPS プログラム>から導出され

るプログラムに配置されてはならない(“21.1 <SQL 埋込みホストプログラム>”の構文規則参照)。

注記 562  M には,宣言がない。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B015“埋込み MUMPS”なしでは,適合する SQL 言語は,<SQL 埋込み MUMPS プログラム>

を含んではならない。

2)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<MUMPS REF 変数>を含んではならな

い。


892

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

3)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<MUMPS 利用者定義型変数>を含んでは

ならない。

4)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<MUMPS 配列位置付け子変数>を

含んではならない。

5)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<MUMPS マルチ集合位置付

け子変数

>を含んではならない。

6)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<MUMPS 利用

者定義型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

7)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<MUMPS BLOB 位置付け

子変数

>を含んではならない。

8)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<MUMPS CLOB 位置付け

子変数

>を含んではならない。

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

この細分箇条は,ISO/IEC 9075-9 の“18.6 <SQL 埋込み Pascal プログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.6 <SQL 埋込み Pascal プログラム>”によって修正される。 

機能

<SQL 埋込み Pascal プログラム> (<embedded SQL Pascal program>)  は,<SQL 埋込み Pascal プログラム>

を指定する。

形式

<SQL 埋込み Pascal プログラム> ::=

  !!

構文規則参照

<Pascal 変数定義> ::=

  <Pascal ホスト識別子> [ { <コンマ> <Pascal ホスト識別子> }... ] <コロン>

      <Pascal 型指定> <セミコロン>

<Pascal ホスト識別子> ::=

  !!

構文規則参照

<Pascal 型指定> ::=

  PACKED  ARRAY  <左角括弧> 1 <2 重ピリオド> <文字長> <右角括弧>

      OF CHAR [ CHARACTER SET [ IS ] <文字集合指定> ]

 |

INTEGER

 |

REAL

| CHAR [ CHARACTER SET [ IS ] <文字集合指定> ]

 |

BOOLEAN

 |

<Pascal 導出型指定>

09

14

 <Pascal 導出型指定> ::=

  <Pascal  CLOB 変数>

| <Pascal BINARY 変数>

| <Pascal BLOB 変数>

 |

<Pascal 利用者定義型変数>

| <Pascal CLOB 位置付け子変数>


893

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

| <Pascal BLOB 位置付け子変数>

 |

<Pascal 利用者定義型位置付け子変数>

 |

<Pascal 配列位置付け子変数>

 |

<Pascal マルチ集合位置付け子変数>

| <Pascal REF 変数>

<Pascal CLOB 変数> ::=

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<Pascal BINARY 変数> ::=

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧>

<Pascal BLOB 変数> ::=

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧>

<Pascal CLOB 位置付け子変数> ::=

  SQL TYPE IS CLOB AS LOCATOR

<Pascal 利用者定義型変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型>

<Pascal BLOB 位置付け子変数> ::=

  SQL TYPE IS BLOB AS LOCATOR

<Pascal 利用者定義型位置付け子変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

<Pascal 配列位置付け子変数> ::=

  SQL TYPE IS <配列型> AS LOCATOR

<Pascal マルチ集合位置付け子変数> ::=

  SQL TYPE IS <マルチ集合型> AS LOCATOR

<Pascal REF 変数> ::=

  SQL TYPE IS <参照型>

構文規則

1) <SQL 埋込み Pascal プログラム>は,Pascal テキスト及び SQL テキストから成る翻訳単位とする。

Pascal テキストは,JIS X 3008 [ISO7185]  又は  [ISO10206]  のうちの一つに適合しなければならない。

SQL テキストは,一つ以上の<埋込み SQL 文>,及び省略可能な一つ以上の<埋込み SQL 宣言節>か

ら成らなければならない。

2) <埋込み SQL 文>は,Pascal の文 (statement) を指定してもよいところには,どこに指定してもよい。

<埋込み SQL 文>の前に Pascal のラベル (label) を付けてもよい。

3) <Pascal ホスト識別子>は,<埋込み SQL 開始宣言>と<埋込み SQL 終了宣言>との範囲内で実現値を

定義していることを,適用される実現値が示す

Pascal 変数識別子 (variable-identifier) とする。

4) <Pascal 変数定義>  PVD は,一つ以上の<Pascal ホスト識別子>を定義する。PVD に含まれる<Pascal

型指定

>を PTS とし,PVD に含まれる<Pascal ホスト識別子>を PHI とする。PHI に対応するホスト

変数を HV とする。

場合:

a)  PTS が PACKED ARRAY [1..<文字長>] OF CHAR を指定するならば,HV の<ホストパラメタデー


894

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

タ型

>は,(<文字長単位>によって指定される文字単位又はオクテット単位のいずれかで測られ

る)

<文字長>によって指定される長さ及び<文字集合指定>によって指定される文字集合をもつ

CHARACTER とする。<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗

に想定される。

b)  PTS が INTEGER を指定するならば,HV の<ホストパラメタデータ型>は,INTEGER とする。

c)

PTS が REAL を指定するならば,HV の<ホストパラメタデータ型>は,REAL とする。

d)  PTS が CHAR を指定するならば,HV の<ホストパラメタデータ型>が,長さ 1 及び<文字集合指

>によって識別される文字集合をもつ CHARACTER とする。<文字集合指定>がないならば,文

字集合は,処理系定義とする。

e)

PTS が BOOLEAN を指定するならば,HV の<ホストパラメタデータ型>は,BOOLEAN とする。

f)

PTS が<Pascal 導出型指定>ならば,次による。

場合:

i)

PTS が<Pascal CLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<文字長大オブ

ジェクト長

>によって指定される最大長及び<文字集合指定>によって指定される文字集合をも

CHARACTER LARGE OBJECT とする。<文字集合指定>が指定されないならば,文字集合は,

処理系定義とする。

ii)  PTS が<Pascal BINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>によ

って指定される長さをもつ

BINARY とする。

iii)  PTS が<Pascal BLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長大オブジェ

クト長

>によって指定される最大長をもつ BINARY LARGE OBJECT とする。

iv)  PTS が<Pascal 利用者定義型変数>を含むならば,HV の<ホストパラメタデータ型>は,PTS 

含まれる

<既定義型>とする。

v)  PTS が<Pascal CLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATOR とする。

vi)  PTS が<Pascal BLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATOR とする。

vii)  PTS が<Pascal 利用者定義型位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>

は,UDT AS LOCATOR とする。ここで,UDT は,PTS に含まれる<パス解決利用者定義型名>

とする。

viiiPTS が<Pascal 配列位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,AT AS

LOCATOR とする。ここで,AT は,PTS に含まれる<配列型>とする。

ix)  PTS が<Pascal マルチ集合位置付け子変数>を含むならば,

HV の<ホストパラメタデータ型>は,

MT AS LOCATOR とする。ここで,MT は,PTS に含まれる<マルチ集合型>とする。

x)

14

  PTS が<Pascal REF 変数>を含むならば,HV の<ホストパラメタデータ型>は,PTS に含まれ

<参照型> RT とする。RT に含まれる<被参照型>によって識別される被参照型を,その参照の

被参照型  (referenced type)  と呼ぶ。

5) <Pascal 変数定義>は,<SQL 埋込み Pascal プログラム>から導出されるプログラムにそれが配置され

る前に,次のとおりに修正されなければならない(“21.1 <SQL 埋込みホストプログラム>”の構文

規則参照)。

a)

14

  省略可能などの CHARACTER SET 指定も,<Pascal 型指定>の PACKED ARRAY OF CHAR 又は


895

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

CHAR の代替手段,及び<Pascal CLOB 変数>から取り除かれなければならない。

次の値を とする。

場合:

i) OCTETS が指定されるならば,1。

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。

iii)  そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。

b)  省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。

c)

どの

<Pascal 型指定>の PACKED ARRAY OF CHAR 代替手段中で指定される<文字長> CL も,NV*k

と等しい長さによって置き換えられなければならない。ここで,NV は,CL に含まれる<長さ>の

数値とする。

d) <Pascal 型指定>が構文“CHAR”を指定し,かつ,が 1 より大きいならば,

CHAR”は,“PACKED

ARRAY [1..k] OF CHAR”によって置き換えられなければならない。

e)

与えられた

<Pascal ホスト識別子> HVN に対して,どの<Pascal CLOB 変数>中でも,構文

SQL TYPE IS CLOB ( L )

は,次の指定によって置き換えられなければならない。

VAR HVN = RECORD

    HVN_RESERVED : INTEGER;

    HVN_LENGTH : INTEGER;

    HVN_DATA : PACKED ARRAY [ 1..LL ] OF CHAR;

END;

ここで,LL の値は,NV*とし,NV は,“6.1 <データ型>”で規定するとおりの の数値とする。

f)

14

  与えられた<Pascal ホスト識別子> HVN に対して,どの<Pascal BLOB 変数>中でも,構文

SQL TYPE IS BLOB ( L )

は,次の指定によって置き換えられなければならない。

VAR HVN = RECORD

    HVN_RESERVED : INTEGER;

    HVN_LENGTH : INTEGER;

    HVN_DATA : PACKED ARRAY [ 1..LL ] OF CHAR;

END;

ここで,LL の値は,“6.1 <データ型>”で規定するとおりの の数値とする。

g)  与えられた<Pascal ホスト識別子> HVN に対して,どの<Pascal BINARY 変数>中でも,構文

SQL TYPE IS BINARY ( L )

は,次の指定によって置き換えられなければならない。

HVN : PACKED ARRAY [1..L] OF CHAR

ここで,は,“5.2 <トークン>及び<分離符号>”で規定するとおりの<長さ>の数値とする。

h)  どの<Pascal 利用者定義型変数>中でも,構文

SQL TYPE IS UDTN AS PDT

は,次の指定によって置き換えられなければならない。


896

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

ADT

ここで,ADT は,表 21“Pascal のためのデータ型対応”の SQL データ型 PDT に対する行に対応

する“

Pascal データ型”列中に記載されたデータ型とする。ADT は,

“なし”であってはならない。

UDTN に よ っ て 識 別 さ れ る デ ー タ 型 を , ホ ス ト 変 数 の 関 連 す る 利 用 者 定 義 型   (associated 

user-defined type)  と呼び,PDT によって識別されるデータ型を,ホスト変数の関連する SQL デー

タ型  (associated SQL data type)  と呼ぶ。

i)

どの

<Pascal BLOB 位置付け子変数>中でも,構文

SQL TYPE IS BLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Pascal BLOB 位置付け子変数>によって定義されるホスト変数を,進オクテット長大オブジェ

クト位置付け子変数  (binary large object locator variable)  と呼ぶ。

j)

どの

<Pascal CLOB 位置付け子変数>中でも,構文

SQL TYPE IS CLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Pascal CLOB 位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付

け子変数  (character large object locator variable)  と呼ぶ。

k)  どの<Pascal 利用者定義型位置付け子変数>中でも,構文

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Pascal 利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け

子変数  (user-defined type locator variable)  と呼ぶ。<パス解決利用者定義型名>によって識別される

データ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)  と呼ぶ。

l)

どの

<Pascal 配列位置付け子変数>中でも,構文

SQL TYPE IS <配列型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Pascal 配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数  (array 

locator variable)  と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型

(associated array type)  と呼ぶ。

m)  どの<Pascal マルチ集合位置付け子変数>中でも,構文

SQL TYPE IS <マルチ集合型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

INTEGER

<Pascal マルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変

数  (multiset locator variable)  と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変

数の

関連するマルチ集合型  (associated multiset type)  と呼ぶ。

n)

09

  与えられた<Pascal ホスト識別子> HVN に対して,どの<Pascal REF 変数>中でも,構文


897

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

SQL TYPE IS <参照型>

は,次の指定によって置き換えられなければならない。

HVN : PACKED ARRAY [1..RL] OF CHAR

ここで,RL の値は,参照型のオクテット単位での長さとする。.

修正された

<Pascal 変数定義>は,<SQL 埋込み Pascal プログラム>から導出されるプログラム中で,

正しい

Pascal 変数宣言 (variable-declaration) でなければならない。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B016“埋込み Pascal”なしでは,適合する SQL 言語は,<SQL 埋込み Pascal プログラム>を含

んではならない。

2)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<Pascal REF 変数>を含んではならない。

3)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<Pascal 利用者定義型変数>を含んではな

らない。

4)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<Pascal 配列位置付け子変数>を含

んではならない。

5)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<Pascal マルチ集合位置付け

子変数

>を含んではならない。

6)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<Pascal 利用者

定義型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

7)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Pascal BLOB 変数>を含ん

ではならない。

8)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Pascal CLOB 変数>を含ん

ではならない。

9)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Pascal BLOB 位置付け子

変数

>を含んではならない。

10)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<Pascal CLOB 位置付け子

変数

>を含んではならない。

11)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<Pascal BINARY

変数

>を含んではならない。

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

この細分箇条は,ISO/IEC 9075-9 の“18.7 <SQL 埋込み PL/I プログラム>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“18.7 <SQL 埋込み PL/I プログラム>”によって修正される。 

機能

<SQL 埋込み PL/I プログラム> (<embedded SQL PL/I program>)  は,<SQL 埋込み PL/I プログラム>を指定

する。

形式

<SQL 埋込み PL/I プログラム> ::=


898

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

  !!

構文規則参照。

<PL/I 変数定義> ::=

  { DCL | DECLARE } <PL/I 型指定> [ <文字表現>... ] <セミコロン>

| { <PL/I ホスト識別子> | <左括弧> <PL/I ホスト識別子>

      [ { <コンマ> <PL/I ホスト識別子> }... ] <右括弧> }

      <PL/I 型指定> [ <文字表現>... ] <セミコロン>

<PL/I ホスト識別子> ::=

  !!

構文規則参照。

<PL/I 型指定> ::=

  { CHAR | CHARACTER } [ VARYING ] <左括弧> <文字長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

 |

<PL/I 型 FIXED DECIMAL> <左括弧> <精度> [ <コンマ> <位取り> ] <右括弧>

 |

<PL/I 型 FIXED BINARY> [ <左括弧> <精度> <右括弧> ]

 |

<PL/I 型 FLOAT BINARY> <左括弧> <精度> <右括弧>

 |

<PL/I 導出型指定>

09

14

 <PL/I 導出型指定> ::=

  <PL/I  CLOB 変数>

| <PL/I BINARY 変数>

| <PL/I VARBINARY 変数>

| <PL/I BLOB 変数>

 |

<PL/I 利用者定義型変数>

| <PL/I CLOB 位置付け子変数>

| <PL/I BLOB 位置付け子変数>

 |

<PL/I 利用者定義型位置付け子変数>

 |

<PL/I 配列位置付け子変数>

 |

<PL/I マルチ集合位置付け子変数>

| <PL/I REF 変数>

<PL/I CLOB 変数> ::=

  SQL TYPE IS CLOB <左括弧> <文字長大オブジェクト長> <右括弧>

      [  CHARACTER  SET  [  IS  ]  <文字集合指定> ]

<PL/I BINARY 変数> ::=

  SQL TYPE IS BINARY <左括弧> <長さ> <右括弧>

<PL/I VARBINARY 変数> ::=

  SQL TYPE IS VARBINARY <左括弧> <長さ> <右括弧>

<PL/I BLOB 変数> ::=

  SQL TYPE IS BLOB <左括弧> <長大オブジェクト長> <右括弧>

<PL/I 利用者定義型変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS <既定義型>

<PL/I CLOB 位置付け子変数> ::=

  SQL TYPE IS CLOB AS LOCATOR


899

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

<PL/I BLOB 位置付け子変数> ::=

  SQL TYPE IS BLOB AS LOCATOR

<PL/I 利用者定義型位置付け子変数> ::=

  SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

<PL/I 配列位置付け子変数> ::=

  SQL TYPE IS <配列型> AS LOCATOR

<PL/I マルチ集合位置付け子変数> ::=

  SQL TYPE IS <マルチ集合型> AS LOCATOR

<PL/I REF 変数> ::=

  SQL TYPE IS <参照型>

<PL/I 型 FIXED DECIMAL> ::=

  { DEC | DECIMAL } FIXED

| FIXED { DEC | DECIMAL }

<PL/I 型 FIXED BINARY> ::=

  { BIN | BINARY } FIXED

| FIXED { BIN | BINARY }

<PL/I 型 FLOAT BINARY> ::=

  { BIN | BINARY } FLOAT

| FLOAT { BIN | BINARY }

構文規則

1) <SQL 埋込み PL/I プログラム>は,PL/I テキスト及び SQL テキストから成る翻訳単位とする。PL/I

テキストは,

[ISO6160]  に適合しなければならない。SQL テキストは,一つ以上の<埋込み SQL 文>,

及び省略可能な一つ以上の

<埋込み SQL 宣言節>から成らなければならない。

2) <埋込み SQL 文>は,手続ブロック (procedure block) 内で,PL/I の文を指定してもよいところには,

どこに指定してもよい。

PL/I の文がラベル先頭子 (label prefix) を含むことができるならば,<埋込

SQL 文>の直前にラベル先頭子を付けてもよい。

3) <PL/I ホスト識別子>は,任意の正しい PL/I 変数識別子 (variable identifier) とする。<PL/I ホスト識

別子

>は,<SQL 埋込み PL/I プログラム>に含まれなければならない。

4) <PL/I 変数定義> PVD は,一つ以上のホスト変数を定義する。PVD に含まれる<PL/I ホスト識別子>

を PHI とし,PHI に関連付けられるホスト変数を HV とし,PVD に含まれる<PL/I 型指定>を PTS

とする。

場合:

a)  PTS が CHAR 又は CHARACTER を指定するならば,HV の<ホストパラメタデータ型>は,<文字

集合指定

>によって指定される文字集合をもつ CHARACTER 又は CHARACTER VARYING とする。

<文字集合指定>が指定されないならば,処理系定義の<文字集合指定>が暗に想定される。

場合:

i) VARYING が指定されないならば,HV の<ホストパラメタデータ型>は,<文字長単位>によっ

て指定される単位で測られ,

<文字長>によって指定される長さをもつ CHARACTER とする。

ii) VARYING が指定されるならば,HV の<ホストパラメタデータ型>は,<文字長単位>によって

指定される単位で測られ,

<文字長>によって指定される最大長をもつ CHARACTER VARYING


900

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

とする。

b)  PTS が<PL/I 型 FIXED DECIMAL>ならば,<位取り>が指定されるとき,それの値は,<精度>の値

を超えてはならない。

<位取り>が指定されないならば,0 が暗に想定される。HV の<ホストパラ

メタデータ型

>は,同じ<精度>及び<位取り>の DECIMAL とする。

c)

PTS が<PL/I 型 FIXED BINARY>ならば,HV の<ホストパラメタデータ型>が,SMALLINT か,

INTEGER か又は BIGINT かは,処理系定義とする。

d)  PTS が<PL/I 型 FLOAT BINARY>ならば,HV の<ホストパラメタデータ型>は,同じ<精度>の

FLOAT とする。

e)

PTS が<PL/I 導出型指定>ならば,次による。

場合:

i)

PTS が<PL/I CLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<文字長大オブジ

ェクト長

>によって指定される最大長及び<文字集合指定>によって指定される文字集合をもつ

CHARACTER LARGE OBJECT とする。<文字集合指定>が指定されないならば,文字集合は,

処理系定義とする。

ii)  PTS が<PL/I BINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>によっ

て指定される長さをもつ

BINARY とする。

iii)  PTS が<PL/I VARBINARY 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長さ>に

よって指定される最大長をもつ

BINARY VARYING とする。

iv)  PTS が<PL/I BLOB 変数>を含むならば,HV の<ホストパラメタデータ型>は,<長大オブジェク

ト長

>によって指定される最大長をもつ BINARY LARGE OBJECT とする。

v)  PTS が<PL/I 利用者定義型変数>を含むならば,HV の<ホストパラメタデータ型>は,PTS に含

まれる

<既定義型>とする。

vi)  PTS が<PL/I CLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

CHARACTER LARGE OBJECT AS LOCATOR とする。

vii)  PTS が<PL/I BLOB 位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

BINARY LARGE OBJECT AS LOCATOR とする。

viiiPTS が<PL/I 利用者定義型位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

UDT AS LOCATOR とする。ここで,UDT は,PTS に含まれる<パス解決利用者定義型名>とす

る。

ix)  PTS が<PL/I 配列位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,AT AS

LOCATOR とする。ここで,AT は,PTS に含まれる<配列型>とする。

x)  PTS が<PL/I マルチ集合位置付け子変数>を含むならば,HV の<ホストパラメタデータ型>は,

MT AS LOCATOR とする。ここで,MT は,PTS に含まれる<マルチ集合型>とする。

xi)

14

 PTS が<PL/I REF 変数>を含むならば,HV の<ホストパラメタデータ型>は,PTS に含まれる

<参照型> RT とする。RT に含まれる<被参照型>によって識別される被参照型を,その参照の被

参照型  (referenced type)  と呼ぶ。

5) <PL/I 変数定義>は,<SQL 埋込み PL/I プログラム>から導出されるプログラムにそれが配置される

前に,次のとおりに修正されなければならない(

21.1 <SQL 埋込みホストプログラム>”の構文規

則参照)。

a)  省略可能などの CHARACTER SET 指定も,<PL/I 型指定>の CHARACTER 又は CHARACTER


901

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

VARYING の代替手段,及び<PL/I CLOB 変数>から取り除かれなければならない。

次の値を とする。

場合:

i) OCTETS が指定されるならば,1。

ii) <文字集合指定>が指定されるならば,<文字集合指定>によって識別される文字集合の文字ごと

の最大オクテット数。

iii)  そうでなければ,処理系定義の既定文字集合の文字ごとの最大オクテット数。

b)  省略可能などの<文字長単位>も,<文字長>又は<文字長大オブジェクト長>から取り除かれなけれ

ばならない。

c)

どの

<PL/I 型指定>の CHARACTER 又は CHARACTER VARYING の代替手段中で指定される<文字

CL も,NV*と等しい長さによって置き換えられなければならない。ここで,NV は,CL 

含まれる

<長さ>の数値とする。

d)

14

  与えられた<PL/I ホスト識別子> HVN に対して,どの<PL/I CLOB 変数>中でも,構文

SQL TYPE IS CLOB ( L )

は,次の指定によって置き換えられなければならない。

DCL 1 HVN

       2 HVN_RESERVED FIXED BINARY(31),

       2 HVN_LENGTH    FIXED  BINARY(31),

       2 HVN_DATA      CHARACTER(LL);

ここで,LL の値は,NV*とし,NV は,“6.1 <データ型>”で規定するとおりの の数値とする。

e)

与えられた

<PL/I ホスト識別子> HVN に対して,どの<PL/I BLOB 変数>中でも,構文

SQL TYPE IS BLOB ( L )

は,次の指定によって置き換えられなければならない。

DCL 1 HVN

       2 HVN_RESERVED FIXED BINARY(31),

       2 HVN_LENGTH    FIXED  BINARY(31),

       2 HVN_DATA      CHARACTER(LL);

ここで,LL の値は,“6.1 <データ型>”で規定するとおりの の数値とする。

f)

与えられた

<PL/I ホスト識別子> HVN に対して,どの<PL/I BINARY 変数>中でも,構文

SQL TYPE IS BINARY ( L )

は,次の指定によって置き換えられなければならない。

DCL HVN CHARACTER(L)

g)  与えられた<PL/I ホスト識別子> HVN に対して,どの<PL/I VARBINARY 変数>中でも,構文

SQL TYPE IS VARBINARY ( L )

は,次の指定によって置き換えられなければならない。

DCL HVN CHARACTER(L) VARYING

h)  どの<PL/I 利用者定義型変数>中でも,構文

SQL TYPE IS UDTN AS PDT

は,次の指定によって置き換えられなければならない。

ADT


902

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

ここで,ADT は,表 22“PL/I のためのデータ型対応”の SQL データ型 PDT に対する行に対応す

る“

PL/I データ型”列中に記載されたデータ型とする。ADT は,“なし”であってはならない。

UDTN に よ っ て 識 別 さ れ る デ ー タ 型 を , ホ ス ト 変 数 の 関 連 す る 利 用 者 定 義 型   (associated 

user-defined type)  と呼び,PDT によって識別されるデータ型を,ホスト変数の関連する SQL デー

タ型  (associated SQL data type)  と呼ぶ。

i)

どの

<PL/I BLOB 位置付け子変数>中でも,構文

SQL TYPE IS BLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

FIXED BINARY(31)

<PL/I BLOB 位置付け子変数>によって定義されるホスト変数を,進オクテット長大オブジェク

ト位置付け子変数  (binary large object locator variable)  と呼ぶ。

j)

どの

<PL/I CLOB 位置付け子変数>中でも,構文

SQL TYPE IS CLOB AS LOCATOR

は,次の指定によって置き換えられなければならない。

FIXED BINARY(31)

<PL/I CLOB 位置付け子変数>によって定義されるホスト変数を,文字長大オブジェクト位置付け

子変数  (character large object locator variable)  と呼ぶ。

k)  どの<PL/I 利用者定義型位置付け子変数>中でも,構文

SQL TYPE IS <パス解決利用者定義型名> AS LOCATOR

は,次の指定によって置き換えられなければならない。

FIXED BINARY(31)

<PL/I 利用者定義型位置付け子変数>によって定義されるホスト変数を,利用者定義型位置付け子

変数  (user-defined type locator variable)  と呼ぶ。<パス解決利用者定義型名>によって識別されるデ

ータ型を,ホスト変数の

関連する利用者定義型  (associated user-defined type)  と呼ぶ。

l)

どの

<PL/I 配列位置付け子変数>中でも,構文

SQL TYPE IS <配列型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

FIXED BINARY(31)

<PL/I 配列位置付け子変数>によって定義されるホスト変数を,配列位置付け子変数  (array locator 

variable)  と呼ぶ。<配列型>によって識別されるデータ型を,ホスト変数の関連する配列型

(associated array type)  と呼ぶ。

m)  どの<PL/I マルチ集合位置付け子変数>中でも,構文

SQL TYPE IS <マルチ集合型> AS LOCATOR

は,次の指定によって置き換えられなければならない。

FIXED BINARY(31)

<PL/I マルチ集合位置付け子変数>によって定義されるホスト変数を,マルチ集合位置付け子変数

(multiset locator variable)  と呼ぶ。<マルチ集合型>によって識別されるデータ型を,ホスト変数の

関連するマルチ集合型  (associated multiset type)  と呼ぶ。

n)

09

  与えられた<PL/I ホスト識別子> HVN に対して,どの<PL/I REF 変数>中でも,構文

SQL TYPE IS <参照型>


903

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

は,次の指定によって置き換えられなければならない。

DCL HVN CHARACTER(RL) VARYING

ここで,RL の値は,参照型のオクテット単位での長さとする。

修正された

<PL/I 変数定義>は,<SQL 埋込み PL/I プログラム>から導出されるプログラム中で,正

しい

PL/I データ宣言 (data declaration) でなければならない。

6) <PL/I 変数定義>は,配列 (array) 又は構造体 (structure) ではなく,スカラ変数 (scalar variable) を指

定しなければならない。

7) <PL/I 変数定義>中の省略可能な<文字表現>の並びは,INITIAL 句 (INITIAL clause) を指定してもよ

い。他の句を指定してもよいかどうかは,処理系定義とする。

<文字表現>の並びは,<PL/I 変数定

>が,PL/I の正しい DECLARE 文 (DECLARE statement) であるようなものでなければならない。

アクセス規則

なし。 

一般規則

1)  “21.1 <SQL 埋込みホストプログラム>”参照。

適合性規則

1)  機能 B017“埋込み PL/I”なしでは,適合する SQL 言語は,<SQL 埋込み PL/I プログラム>を含んで

はならない。

2)  機能 S041“基本参照型”なしでは,適合する SQL 言語は,<PL/I REF 変数>を含んではならない。

3)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<PL/I 利用者定義型変数>を含んではなら

ない。

4)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<PL/I 配列位置付け子変数>を含ん

ではならない。

5)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<PL/I マルチ集合位置付け子

変数

>を含んではならない。

6)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,構造型を識別する<PL/I 利用者定

義型位置付け子変数

>に単純に含まれる<パス解決利用者定義型名>を含んではならない。

7)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<PL/I BLOB 変数>を含んで

はならない。

8)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<PL/I CLOB 変数>を含んで

はならない。

9)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<PL/I BLOB 位置付け子変

>を含んではならない。

10)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<PL/I CLOB 位置付け子変

>を含んではならない。

11)  機能 T021“BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<PL/I BINARY

変数

>を含んではならない。

12)  機能 T021

BINARY 及び VARBINARY データ型”なしでは,適合する SQL 言語は,<PL/I VARBINARY

変数

>を含んではならない。

13)  機能 T071“BIGINT データ型”なしでは,適合する SQL 言語中で,<PL/I 型 FIXED BINARY>と等

価な

<ホストパラメタデータ型>は,BIGINT であってはならない。


904

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

22  SQL の直接起動

22.1  <直接 SQL 文>

機能

<直接 SQL 文> (<direct SQL statement>)  は,SQL の直接実行を指定する。

形式

<直接 SQL 文> ::=

  <直接実行可能文> <セミコロン>

<直接実行可能文> ::=

  <直接 SQL データ文>

 |

<SQL スキーマ文>

 |

<SQL トランザクション文>

 |

<SQL コネクション文>

 |

<SQL セション文>

 |

<直接処理系定義文>

<直接 SQL データ文> ::=

  <DELETE 文:探索>

 |

<直接 SELECT 文:複数行>

 |

<INSERT 文>

 |

<UPDATE 文:探索>

| <TRUNCATE TABLE 文>

 |

<MERGE 文>

 |

<一時表宣言>

<直接処理系定義文> ::=

  !!

構文規則参照

構文規則

1) <直接 SQL データ文>は,SQL パラメタ参照,SQL 変数参照,<動的パラメタ指定>又は<埋込み変数

指定

>を含んではならない。

2)  ナルを表現する<値指定>は,処理系定義とする。

3) <直接処理系定義文>の形式及び構文規則は,処理系定義とする。

アクセス規則

1) <直接処理系定義文>のアクセス規則は,処理系定義とする。

一般規則

1)  次の<直接 SQL 文>は,トランザクション開始<直接 SQL 文>とする。

a)  トランザクション開始<SQL 手続文>である<直接 SQL 文>。

b) <直接 SELECT 文:複数行>。

c)

トランザクションを開始する

<直接処理系定義文>。

2) SQL セション中での SQL エージェントによる SQL 文の最後の呼出し後は,次による。

a) <ROLLBACK 文>又は<COMMIT 文>が実効的に実行される。

回復不可能な誤りが発生したか,

SQL

の直接起動が不意に終了したか,又はいずれかの強制の制約が満たされないならば,

<ROLLBACK

>が実行される。そうでなければ,これらの SQL 文のどちらが実行されるかの選択は,処理系


905

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

依存とする。

SQL の直接起動が不意に終了したかどうかの決定は,処理系依存とする。

b)  現行 SQL セション内で現在割り当てられている SQL 記述子領域の<記述子名>を とする。次の

とおりに指定する

<DEALLOCATE DESCRIPTOR 文>が実効的に実行される。

DEALLOCATE DESCRIPTOR D

c) SQL エージェントに関連付けられた全ての SQL セションが終了する。

3)  認可スタックの最上部セルの写しが,認可スタックに押し込まれる。

4) <直接 SQL 文>を とする。

5) <直接 SQL 文>の形式,構文規則及びアクセス規則に が適合しないならば,例外条件:構文誤り又

はアクセス規則違反  (syntax error or access violation)  が引き起こされる。

6)  が SQL エージェントに呼び出されるとき,次による。

場合:

a)  が<SQL コネクション文>ならば,次による。

i) 1 番目の診断領域が空にされる。

ii)  が実行される。

iii)  が SQL セションを正常に開始又は再開始したならば,SQL エージェントによる<直接 SQL 文

>の後続する呼出しは,SQL エージェントが SQL セションを終了させるか又は休眠させるまで,

SQL セションに関連付けられる。

b)  そうでなければ,次による。

i) SQL エージェントに対して,どの SQL セションも現行でないならば,次による。

場合:

1) SQL エージェントが<SQL コネクション文>を実行しておらず,かつ,SQL エージェントに関

連付けられた既定

SQL セションが存在しないならば,次の<CONNECT 文>が実効的に実行さ

れる。

CONNECT TO DEFAULT

2) SQL エージェントが<SQL コネクション文>を実行しておらず,かつ,SQL エージェントに関

連付けられた既定

SQL セションが存在するならば,次の<SET CONNECTION 文>が実効的に

実行される。

SET CONNECTION DEFAULT

3)  そうでなければ,例外条件:コネクション例外  (connection exception)  -  コネクションが存

在しない  (connection does not exist)  が引き起こされる。

SQL エージェントによる<外部呼出し手続>の後続する呼出し又は<直接 SQL 文>の後続する起

動は,

SQL エージェントが SQL セションを終了させるか又は休眠させるまで,SQL セション

に関連付けられる。

ii) SQL エージェントに対して SQL トランザクションが動作中ならば,は,その SQL トランザ

クションに関連付けられる。が<直接処理系定義文>ならば,動作中の SQL トランザクション

に が関連付けられてもよいかどうかは,処理系定義とする。関連付けられないならば,例外

条件:

トランザクション状態が正しくない  (invakid transaction state)  -  SQL トランザクション

が動作中  (active SQL-transaction)  が引き起こされる。

iii) SQL エージェントに対してどの SQL トランザクションも動作中でないならば,次による。

1)  場合:


906

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

A)  がトランザクション開始<直接 SQL 文>ならば,SQL トランザクションが開始される。

B)  が<直接処理系定義文>ならば,が SQL トランザクションを開始するかどうかは,処理

系定義とする。処理系が をトランザクション開始文として定義するならば,SQL トラン

ザクションが開始される。

2)  が SQL トランザクションを開始するならば,次による。

A)  によって開始される SQL トランザクションを とする。

B) SQL エージェントが を終了させるまで,は,この呼出し及び SQL エージェントによる

<直接 SQL 文>の後続する起動又は<外部呼出し手続>の後続する呼出しに関連付けられる。

C)  が<START TRANSACTION 文>でないならば,次による。

場合:

I) SQL セション中の最後の SQL トランザクションの終了以降に,<SET TRANSACTION 文

>が実行されたならば,(又は SQL セション中に,先行する SQL トランザクションがな

く,

<SET TRANSACTION 文>が実行されたならば,)のトランザクションアクセスモ

ード,制約モード及びトランザクション隔離性水準は,

<SET TRANSACTION 文>によっ

て指定されたとおりに設定される。

II)  そうでなければ,のトランザクションアクセスモード,全ての制約に対する制約モー

ド,及びトランザクション隔離性水準は,それぞれ,

読み書き可能  (read-write),即時

(immediate)  及び SERIALIZABLE とする。

D)  が SQL セションに関連付けられる。

iv)  が<SQL スキーマ文>を含み,かつ,現行 SQL トランザクションのトランザクションアクセス

モードが

読込み専用  (read-only)  ならば,例外条件:トランザクション状態が正しくない  -  読

込み専用 SQL トランザクション  (read-only SQL-transaction)  が引き起こされ,この一般規則の

部分規則は,これ以上評価しないで,次の一般規則の評価を続ける。

v) 1 番目の診断領域が空にされる。

vi)  が実行される。

7)  実行の完了時点に,認可スタック中の最上部セルが取り除かれる。

8) SQL スキーマ文の実行と同じ SQL トランザクション内で<直接 SQL データ文>の実行が行われ,こ

れが

SQL 処理系によって許されないならば,例外条件:トランザクション状態が正しくない  -  ス

キーマ文とデータ文との混在は提供されない  (schema and data statement mixing not supported)  が引

き起こされる。

9)  場合:

a)  が成功実行したならば,終了条件:成功終了  (successful completion)  が引き起こされるか,終了

条件:

警告  (warning)  が引き起こされるか,又は終了条件:データなし  (no data)  が引き起こさ

れるかのいずれかとする。

b)  が成功実行しなかったならば,の実行によって SQL データ又はスキーマになされた全ての変

更が取り消され,例外条件が引き起こされる。

注記 563  条件を引き起こす方法は,処理系定義である。

10)  の実行の結果として生じる診断情報が,1 番目の診断領域中に格納され,1 番目の診断領域中の 1

番目の条件領域が占有になる。

注記 564  診断情報にアクセスする方法は,処理系定義であるが,診断領域の内容は変更しない。


907

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

適合性規則

1)  機能 B021“直接 SQL”なしでは,適合する SQL 言語は,<直接 SQL 文>を含んではならない。

22.2  <直接 SELECT 文:複数行>

機能

<直接 SELECT 文:複数行> (<direct select statement: multiple rows>)  は,指定された表から複数行を取り

出す文を指定する。

形式

<直接 SELECT 文:複数行> ::=

  <カーソル指定>

構文規則

1) <直接 SELECT 文:複数行>の<問合せ式>は,<定数>,CURRENT_USER,CURRENT_ROLE,

SESSION_USER,SYSTEM_USER,CURRENT_CATALOG,CURRENT_SCHEMA,CURRENT_PATH,

CURRENT_DEFAULT_TRANSFORM_GROUP 又は CURRENT_TRANSFORM_GROUP_FOR_TYPE 以

外の

<値指定>を含んではならない。

2) <カーソル指定>は,<更新可能性句>を含んではならない。

アクセス規則

なし。 

一般規則

1) <カーソル指定>の結果を とする。

場合:

a)  が空ならば,終了条件:データなし  (no data)  が引き起こされる。

b)  そうでなければ,は,空ではなく,が戻される。を戻す方法は,処理系定義とする。

適合性規則

なし。 

23  診断管理

23.1  <GET DIAGNOSTICS 文>

この細分箇条は,ISO/IEC 9075-4 の“17.1 <GET DIAGNOSTICS >”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“23.1 <GET DIAGNOSTICS >”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“19.1 <GET DIAGNOSTICS >”によって修正される。 

機能

<GET DIAGNOSTICS 文> (<get diagnostics statement>)  は,診断領域から例外条件情報又は終了条件情報

を取得する。

形式

04

<GET DIAGNOSTICS 文> ::=

  GET  DIAGNOSTICS  <SQL 診断情報>

<SQL 診断情報> ::=

  <文情報>

 |

<条件情報>

 |

<全情報>


908

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

<文情報> ::=

  <文情報項目> [ { <コンマ> <文情報項目> }... ]

<文情報項目> ::=

  <単純相手指定> <等号演算子> <文情報項目名>

<文情報項目名> ::=

  NUMBER

 |

MORE

 |

COMMAND_FUNCTION

 |

COMMAND_FUNCTION_CODE

 |

DYNAMIC_FUNCTION

 |

DYNAMIC_FUNCTION_CODE

 |

ROW_COUNT

 |

TRANSACTIONS_COMMITTED

 |

TRANSACTIONS_ROLLED_BACK

 |

TRANSACTION_ACTIVE

<条件情報> ::=

  CONDITION  <条件番号> <条件情報項目>

      [ { <コンマ> <条件情報項目> }... ]

<条件情報項目> ::=

  <単純相手指定> <等号演算子> <条件情報項目名>

04

<条件情報項目名> ::=

  CATALOG_NAME

 |

CLASS_ORIGIN

 |

COLUMN_NAME

 |

CONDITION_NUMBER

 |

CONNECTION_NAME

 |

CONSTRAINT_CATALOG

 |

CONSTRAINT_NAME

 |

CONSTRAINT_SCHEMA

 |

CURSOR_NAME

 |

MESSAGE_LENGTH

 |

MESSAGE_OCTET_LENGTH

 |

MESSAGE_TEXT

 |

PARAMETER_MODE

 |

PARAMETER_NAME

 |

PARAMETER_ORDINAL_POSITION

 |

RETURNED_SQLSTATE

 |

ROUTINE_CATALOG

 |

ROUTINE_NAME

 |

ROUTINE_SCHEMA


909

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

 |

SCHEMA_NAME

 |

SERVER_NAME

 |

SPECIFIC_NAME

 |

SUBCLASS_ORIGIN

 |

TABLE_NAME

 |

TRIGGER_CATALOG

 |

TRIGGER_NAME

 |

TRIGGER_SCHEMA

<全情報> ::=

  <全情報相手> <等号演算子> ALL [<ALL の修飾子> ]

<全情報相手> ::=

  <単純相手指定>

<ALL の修飾子> ::=

  STATEMENT

| CONDITION [<条件番号> ]

<条件番号> ::=

  <単純値指定>

構文規則

1) <文情報項目>又は<条件情報項目>に含まれる<単純相手指定>を STS とする。対応する<文情報項目

>に対しては,表 30“<GET DIAGNOSTICS 文>で用いるための<文情報項目名>”で規定する宣言

型,又は対応する

<条件情報項目名>に対しては,表 31“<GET DIAGNOSTICS 文>で用いるための<

条件情報項目名

>”で規定する宣言型を IDDT とする。次の式を ID とする。

CAST ( '' AS IDDT )

STS を TARGET として,ID を VALUE として,

9.1  取出し代入”の構文規則を適用する。

2) <全情報相手>の宣言型は,文字列型でなければならない。

3) <条件番号>の宣言型は,位取り 0 の真数でなければならない。

04

 表

30-<GET DIAGNOSTICS 文>で用いるための<文情報項目名>

<識別子>   

宣言型 

COMMAND_FUNCTION

処理系定義の最大長をもつ可変長文字列

COMMAND_FUNCTION_CODE

位取り

0 の真数

DYNAMIC_FUNCTION

処理系定義の最大長をもつ可変長文字列

DYNAMIC_FUNCTION_CODE

位取り

0 の真数

MORE

長さ

1 の固定長文字列

NUMBER

位取り

0 の真数

ROW_COUNT

位取り

0 の真数

TRANSACTION_ACTIVE

位取り

0 の真数

TRANSACTIONS_COMMITTED

位取り

0 の真数

TRANSACTIONS_ROLLED_BACK

位取り

0 の真数


910

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

表 31-<GET DIAGNOSTICS 文>で用いるための<条件情報項目名>

<識別子>   

宣言型 

CATALOG_NAME

処理系定義の最大長をもつ可変長文字列

CLASS_ORIGIN

処理系定義の最大長をもつ可変長文字列

COLUMN_NAME

処理系定義の最大長をもつ可変長文字列

CONDITION_NUMBER

位取り

0 の真数

CONNECTION_NAME

処理系定義の最大長をもつ可変長文字列

CONSTRAINT_CATALOG

処理系定義の最大長をもつ可変長文字列

CONSTRAINT_NAME

処理系定義の最大長をもつ可変長文字列

CONSTRAINT_SCHEMA

処理系定義の最大長をもつ可変長文字列

CURSOR_NAME

処理系定義の最大長をもつ可変長文字列

MESSAGE_LENGTH

位取り

0 の真数

MESSAGE_OCTET_LENGTH

位取り

0 の真数

MESSAGE_TEXT

処理系定義の最大長をもつ可変長文字列

PARAMETER_MODE

最大長が

5 の可変長文字列

PARAMETER_NAME

処理系定義の最大長をもつ可変長文字列

PARAMETER_ORDINAL_POSITION

位取り

0 の真数

RETURNED_SQLSTATE

長さ

5 の固定長文字列

ROUTINE_CATALOG

処理系定義の最大長をもつ可変長文字列

ROUTINE_NAME

処理系定義の最大長をもつ可変長文字列

ROUTINE_SCHEMA

処理系定義の最大長をもつ可変長文字列

SCHEMA_NAME

処理系定義の最大長をもつ可変長文字列

SERVER_NAME

処理系定義の最大長をもつ可変長文字列

SPECIFIC_NAME

処理系定義の最大長をもつ可変長文字列

SUBCLASS_ORIGIN

処理系定義の最大長をもつ可変長文字列

TABLE_NAME

処理系定義の最大長をもつ可変長文字列

TRIGGER_CATALOG

処理系定義の最大長をもつ可変長文字列

TRIGGER_NAME

処理系定義の最大長をもつ可変長文字列

TRIGGER_SCHEMA

処理系定義の最大長をもつ可変長文字列

アクセス規則

なし。 

一般規則

1)

04

 1 番目の診断領域を DA とする。

2) <文情報項目>の指定は,DA 中の指定された文情報項目の値を<単純相手指定>に代入する。

a) NUMBER の値は,<GET DIAGNOSTICS 文>以外の前の SQL 文の実行の結果として DA 中に格納

された例外条件又は終了条件の個数とする。

注記 565 <GET DIAGNOSTICS 文>自体は,SQLSTATE パラメタによって情報を戻してもよいが,

DA の前の内容を修正しない。

b) MORE の値は,次による。

Y

DA 中にある条件領域よりも多くの条件が SQL 文の実行中に引き起こされた。

N SQL 文の実行中に引き起こされた全ての条件が DA 中に格納されている。

c) COMMAND_FUNCTION の値は,実行された SQL 文の識別とする。表 32“SQL 文のコード”が,

SQL 文の識別子を規定する。


911

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

d) COMMAND_FUNCTION_CODE の値は,実行された SQL 文を識別する番号とする。表 32“SQL

文のコード”が,

SQL 文のコードを規定する。正の値は,この規格群によって定義される SQL

文のために予約される。負の値は,処理系定義の

SQL 文のために予約される。

e) DYNAMIC_FUNCTION 及び DYNAMIC_FUNCTION_CODE の値は,それぞれ,文字列及び数と

し,それらのそれぞれは,準備されているか又は動的に実行されている

SQL 文の種別を識別する。

表 32“SQL 文のコード”が,SQL 文の識別子及びコードを規定する。正のコードの値は,この規

格群によって定義される

SQL 文のために予約される。負のコードの値は,処理系定義の SQL 文

のために予約される。表 32“SQL 文のコード”の,<動的 SELECT 文>又は<動的単一行 SELECT

>に対する識別子及びコードを,準備されたがまだ動的に実行されていない<動的 SELECT 文>

又は

<動的単一行 SELECT 文>を記述するために用いるかどうかは,処理系定義とする。

04

09

14

 表

32SQL 文のコード

SQL  

識別子 

コード

<拡張動的カーソル割当て文>及び<受取りカ
ーソル割当て文

>

ALLOCATE CURSOR

1

<ALLOCATE DESCRIPTOR 文> ALLOCATE

DESCRIPTOR

2

<定義域変更文> ALTER

DOMAIN

3

<ルーチン変更文> ALTER

ROUTINE

17

<順序数生成子変更文> ALTER

SEQUENCE

134

<型変更文> ALTER

TYPE

60

<表変更文> ALTER

TABLE

4

<変換変更文> ALTER

TRANSFORM

127

<表明定義> CREATE

ASSERTION

6

<CALL 文> CALL

7

<文字集合定義>

CREATE CHARACTER SET

8

<CLOSE 文> CLOSE

CURSOR

9

<照合順定義> CREATE

COLLATION

10

<COMMIT 文> COMMIT

WORK

11

<CONNECT 文> CONNECT

13

<DEALLOCATE DESCRIPTOR 文> DEALLOCATE

DESCRIPTOR

15

<DEALLOCATE PREPARE 文> DEALLOCATE

PREPARE

16

<DELETE 文:位置付け> DELETE

CURSOR

18

<DELETE 文:探索> DELETE

WHERE

19

<記述文> DESCRIBE

20

<直接 SELECT 文:複数行> SELECT

21

<DISCONNECT 文> DISCONNECT

22

<定義域定義> CREATE

DOMAIN

23

<表明削除文> DROP

ASSERTION

24

<文字集合削除文>

DROP CHARACTER SET

25

<照合順削除文> DROP

COLLATION

26

<データ型削除文> DROP TYPE

35

<定義域削除文> DROP

DOMAIN

27

<役割削除文> DROP ROLE

29

<ルーチン削除文> DROP

ROUTINE

30

<スキーマ削除文> DROP

SCHEMA

31

<順序数生成子削除文> DROP

SEQUENCE

135


912

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

04

09

14

 表

32SQL 文のコード(続き)

SQL  

識別子 

コード

<表削除文> DROP

TABLE

32

<変換削除文> DROP

TRANSFORM

116

<文字変換削除文> DROP

TRANSLATION

33

<トリガ削除文> DROP

TRIGGER

34

<利用者定義型変換削除文> DROP

CAST

78

<利用者定義順序付け削除文> DROP

ORDERING

115

<ビュー削除文> DROP VIEW

36

<動的 CLOSE 文> DYNAMIC

CLOSE

37

<動的 DELETE 文:位置付け>

DYNAMIC DELETE CURSOR

38

<動的 FETCH 文> DYNAMIC

FETCH

39

<動的 OPEN 文> DYNAMIC

OPEN

40

<動的 SELECT 文> SELECT

CURSOR

85

<動的単一行 SELECT 文> SELECT

41

<動的 UPDATE 文:位置付け>

DYNAMIC UPDATE CURSOR

42

<EXECUTE IMMEDIATE 文> EXECUTE

IMMEDIATE

43

<EXECUTE 文> EXECUTE

44

<FETCH 文> FETCH

45

<FREE LOCATOR 文> FREE

LOCATOR

98

<GET DESCRIPTOR 文> GET

DESCRIPTOR

47

<HOLD LOCATOR 文> HOLD

LOCATOR

99

<GRANT 権限文> GRANT

48

<GRANT 役割文> GRANT ROLE

49

<INSERT 文> INSERT

50

<MERGE 文> MERGE

128

<OPEN 文> OPEN

53

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

PREPARABLE DYNAMIC DELETE CURSOR

54

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

PREPARABLE DYNAMIC UPDATE CURSOR

55

<PREPARE 文> PREPARE

56

<RELEASE SAVEPOINT 文> RELEASE

SAVEPOINT

57

<RETURN 文> RETURN

58

<REVOKE 権限文> REVOKE

59

<REVOKE 役割文> REVOKE

ROLE

129

<役割定義> CREA

ROLE

61

<ROLLBACK 文> ROLLBACK

WORK

62

<SAVEPOINT 文> SAVEPOINT

63

<スキーマ定義> CREATE

SCHEMA

64

<スキーマルーチン> CREATE

ROUTINE

14

<SELECT 文:単一行> SELECT

65

<順序数生成子定義> CREATE

SEQUENCE

133

<SET CATALOG 文> SET

CATALOG

66

<SET CONNECTION 文> SET

CONNECTION

67

<SET CONSTRAINTS MODE 文> SET

CONSTRAINT

68

<SET DESCRIPTOR 文> SET

DESCRIPTOR

70

<地方時刻帯設定文> SET

ZONE

71

<SET NAMES 文> SET

NAMES

72

<SET PATH 文> SET PATH

69


913

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

04

09

14

 表

32SQL 文のコード(続き)

SQL  

識別子 

コード

<SET ROLE 文> SET ROLE

73

<SET SCHEMA 文> SET

SCHEMA

74

<セション利用者識別子設定文> SET

SESSION

AUTHORIZATION

76

<SET SESSION CHARACTERISTICS 文>

SET SESSION CHARACTERISTICS

109

<セション照合順設定文> SET

COLLATION

136

<SET TRANSFORM GROUP 文> SET

TRANSFORM

GROUP

118

<SET TRANSACTION 文> SET

TRANSACTION

75

<START TRANSACTION 文> START

TRANSACTION

111

<表定義> CREA

TABLE

77

<変換定義> CREATE

TRANSFORM  117

<文字変換定義> CREATE

TRANSLATION

79

<トリガ定義> CREATE

TRIGGER

80

<TRUNCATE TABLE 文> TRUNCATE

TABLE

139

<UPDATE 文:位置付け> UPDATE

CURSOR

81

<UPDATE 文:探索> UPDATE

WHERE

82

<利用者定義型変換定義> CREATE

CAST

52

<利用者定義型定義> CREATE

TYPE

83

<利用者定義順序付け定義> CREATE

ORDERING

114

<ビュー定義> CREATE

VIEW

84

処理系定義の文

他のどの

SQL 文に関連付けられた値とも異なる処理系定

義の文字列値

x

1)

認識されない文

長さ

0 の文字列 0

1)

  他のどの SQL 文に関連付けられた値とも異なる処理系定義の負の数

注記 566  この規格群の他の規格で,他の値が追加され,用いられる(詳しい情報は,この規格

群の他の規格中の対応する表を参照)。

f) ROW_COUNT の値は,<DELETE 文:探索>,<INSERT 文>,<MERGE 文>若しくは<UPDATE 文:

探索

>の実行の結果として,又は前の SQL 文の実行の直接の結果として,影響を受けた行の個数

とする。

<DELETE 文:探索>,<INSERT 文>,<MERGE 文>又は<UPDATE 文:探索>を とする。

場合:

i)

が<INSERT 文>ならば,ROW_COUNT の値は,に単純に含まれる<挿入相手>に単純に含ま

れる

<表名>によって識別される表に挿入された行の個数とする。

ii)  が<MERGE 文>ならば,に直に含まれる<相手表>を TR1 とし,に直に含まれる<表参照>

を TR2 とし,に直に含まれる<探索条件>を SC とする。<併合相関名>が指定されるならば,

AS <併合相関名>”を MCN とする。そうでなければ,長さ 0 の文字列を MCN とする。

場合:

1)  が<併合 WHEN MATCHED 句>を含み,

<併合 WHEN NOT MATCHED 句>を含まないならば,

ROW_COUNT の値は,の実行前に,次の文を実行することによって実効的に導出される。

SELECT COUNT (*)

FROM TR1 MCNTR2

WHERE SC

2)  が<併合 WHEN NOT MATCHED 句>を含み,

<併合 WHEN MATCHED 句>を含まないならば,


914

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

ROW_COUNT の値は,の実行前に,次の文を実行することによって実効的に導出される。

( SELECT COUNT(*)

  FROM  TR1 MCN

    RIGHT  OUTER  JOIN

        TR2

      ON SC )

-

( SELECT COUNT (*)

  FROM  TR1 MCNTR2

  WHERE  SC )

3)  が<併合 WHEN MATCHED 句>及び<併合 WHEN NOT MATCHED 句>の両方を含むならば,

ROW_COUNT の値は,の実行前に,次の文を実行することによって実効的に導出される。

SELECT COUNT(*)

FROM TR1 MCN

  RIGHT  OUTER  JOIN

      TR2

    ON SC

iii)  そうでなければ,

が<DELETE 文:探索>又は<UPDATE 文:探索>ならば,)に単純に含ま

れる

<挿入相手>に単純に含まれる<表名>によって識別される表を とする。

場合:

1)  が<探索条件>を含まないならば,ROW_COUNT の値は,の実行前の の基数とする。

2)  そうでなければ,に直接含まれる<探索条件>を SC とする。<相関名>が指定されるならば,

AS <相関名>”を MCN とする。そうでなければ,長さ 0 の文字列を MCN とする。

ROW_COUNT の値は,の実行前に,次の文を実行することによって実効的に導出される。

SELECT COUNT(*)

FROM T MCN

WHERE SC

g)  直接の結果として,<DELETE 文:探索>,<INSERT 文>,<MERGE 文>又は<UPDATE 文:探索>

の実行にならない

SQL 文の実行の後の ROW_COUNT の値は,処理系依存とする。

h) TRANSACTIONS_COMMITTED の値は,DA が空にされた最も新しい時刻以後にコミットされた

SQL トランザクションの個数とする。

注記 567  “13.3 <外部呼出し手続>”の一般規則参照。TRANSACTIONS_COMMITTED は,外部

ルーチンの呼出し中にコミットされた

SQL トランザクションの個数を示す。

i) TRANSACTIONS_ROLLED_BACK の値は,DA が空にされた最も新しい時刻以後にロールバック

された

SQL トランザクションの個数とする。

注記 568  “13.3  <外部呼出し手続>”の一般規則参照。TRANSACTIONS_ROLLED_BACK は,

外部ルーチンの呼出し中にロールバックされた

SQL トランザクションの個数を示す。

j) TRANSACTION_ACTIVE の値は,SQL トランザクションが現在動作中ならば,1 とし,SQL トラ

ンザクションが現在動作中でないならば,

0 とする。

注記 569 TRANSACTION_ACTIVE は,外部ルーチンから戻るときに,SQL トランザクションが


915

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

動作中かどうかを示す。

3) <条件情報>が指定されるならば,<条件番号>の値を とする。が 1 未満か,又は DA 中の占有条

件領域の個数を超えるならば,例外条件:

条件数が正しくない  (invalid condition number)  が引き起

こされる。

<条件番号>の値が 1 ならば,取り出される診断情報は,<GET DIAGNOSTICS 文>以外の

前の

SQL 文の実行によって実際に戻された SQLSTATE の値によって示される条件に対応する。そ

うでなければ,

<条件番号>の値と,その<SQL 文>に対する一般規則の評価中に引き起こされた特定

の条件との間の関連付けは,処理系依存とする。

4) <条件情報項目>の指定は,

DA 中の 番目の条件領域中の指定された条件情報項目の値を<単純相手

指定

>に代入する。

a) CONDITION_NUMBER の値は,<条件番号>の値とする。

b) CLASS_ORIGIN の値は,RETURNED_SQLSTATE のクラスコードを定義した命名機関の識別とす

る。“24.1 SQLSTATE”で完全に定義されたクラスコードをもつどの RETURNED_SQLSTATE に対

しても,その値は,

ISO 9075”でなければならず,処理系定義クラスコードであるクラスコード

をもつどの

RETURNED_SQLSTATE に対しても,その値は,“ISO 9075”以外の処理系定義の文字

列でなければならない。

c) SUBCLASS_ORIGIN の値は,RETURNED_SQLSTATE のサブクラスコードを定義した命名機関の

識 別 と す る 。“ 24.1 SQLSTATE ” で 完 全 に 定 義 さ れ た サ ブ ク ラ ス コ ー ド を も つ ど の

RETURNED_SQLSTATE に対しても,その値は,“ISO 9075”でなければならず,処理系定義サブ

クラスコードであるサブクラスコードをもつどの

RETURNED_SQLSTATE に対しても,その値は,

ISO 9075”以外の処理系定義の文字列でなければならない。

d) RETURNED_SQLSTATE の値は,あり得る唯一の終了条件又は例外条件であったならば,戻され

たであろう

SQLSTATE パラメタとする。

e) RETURNED_SQLSTATE の値がカーソル操作衝突  (cursor operation conflict)  のサブクラスをもつ

警告  (warning)  に対応するならば,CURSOR_NAME の値は,終了条件を引き起こしたカーソル

の名前とする。

f) RETURNED_SQLSTATE の値が,整合性制約違反  (integrity constraint violation),トランザクション

ロールバック  (transaction rollback)  -  整合性制約違反,又は参照制約違反に起因する被トリガデ

ータ変更違反  (triggered data change violation)  に対応するならば,次による。

i) CONSTRAINT_CATALOG 及び CONSTRAINT_SCHEMA の値は,制約又は表明を含むスキーマ

<スキーマ名>の<カタログ名>及び<修飾なしスキーマ名>とする。CONSTRAINT_NAME の値

は,制約又は表明の

<被修飾識別子>とする。

ii)  場合:

1)  違 反 し た 整 合 性 制 約 が 表 制 約 な ら ば , CATALOG_NAME , SCHEMA_NAME 及 び

TABLE_NAME の値は,それぞれ,表制約が含まれる表の,<スキーマ名>の<カタログ名>及

<修飾なしスキーマ名>,並びに<被修飾識別子>とする。

2)  違反した整合性制約が表明で,かつ,表明によって参照される一つの表だけが,SQL 文の実

行の結果として修正されたならば,

CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME

の値は,それぞれ,修正された表の,

<スキーマ名>の<カタログ名>及び<修飾なしスキーマ

>,並びに<被修飾識別子>とする。

3)  そうでなければ,CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME の値は,長さ 0


916

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

の文字列とする。

TABLE_NAME が宣言局所一時表を識別するならば,CATALOG_NAME は,長さ 0 の文字列と

し,

SCHEMA_NAME は“MODULE”とする。

g) RETURNED_SQLSTATE の値が,被トリガ動作例外  (triggered action exception),トランザクション

ロールバック  -  被トリガ動作例外,又はトリガに起因する被トリガデータ変更違反  に対応する

ならば,次による。

i) TRIGGER_CATALOG 及び TRIGGER_SCHEMA の値は,トリガを含むスキーマの<スキーマ名>

<カタログ名>及び<修飾なしスキーマ名>とする。TRIGGER_NAME の値は,トリガの<トリ

ガ名

>の<被修飾識別子>とする。

ii) CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME の値は,それぞれ,トリガが定義さ

れている表の

<表名>の,<スキーマ名>の<カタログ名>及び<修飾なしスキーマ名>,並びに<被

修飾識別子

>とする。

h) RETURNED_SQLSTATE の値が,構文誤り又はアクセス規則違反  (syntax error or access rule 

violation)  に対応するならば,次による。

i)

場合:

1)  構 文 誤 り 又 は ア ク セ ス 規 則 違 反 が 特 定 の 表 の 参 照 に よ っ て 引 き 起 こ さ れ た な ら ば ,

CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME の値は,次による。

場合:

A)  参照される特定の表が,宣言局所一時表でなかったならば,それぞれ,構文誤り又はアク

セス規則違反を引き起こした表を含むスキーマの

<スキーマ名>の<カタログ名>及び<修飾

なしスキーマ名

>,並びにその表の<被修飾識別子>とする。

B)  そうでなければ,それぞれ,長さ 0 の文字列,

MODULE”及び<被修飾識別子>とする。

2)  そうでなければ,CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME は,長さ 0 の文

字列を含む。

ii)  構文誤り又はアクセス規則違反が,アクセスできない列に対するものであったならば,

COLUMN_NAME の値は,その列の<列名>とする。そうでなければ,COLUMN_NAME の値は,

長さ

0 の文字列とする。

i) RETURNED_SQLSTATE の値が,カーソル状態が正しくない  (invalid cursor state)  に対応するなら

ば,

CURSOR_NAME の値は,正しくない状態にあるカーソルの名前とする。

j) RETURNED_SQLSTATE の値が,WITH CHECK OPTION 違反  (with check option violation)  に対応

するならば,

CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME の値は,それぞれ,WITH

CHECK OPTION の違反を引き起こしたビューを含むスキーマの<スキーマ名>の<カタログ名>及

<修飾なしスキーマ名>,並びにそのビューの<被修飾識別子>とする。

k) RETURNED_SQLSTATE の値が,構文誤り又はアクセス規則違反  に対応しないならば,次による。

i) CATALOG_NAME,SCHEMA_NAME,TABLE_NAME 及び COLUMN_NAME の値が,与えら

れた認可識別子にどの権限も付与されていない列を識別するならば,

COLUMN_NAME の値は,

長さ

0 の文字列によって置き換えられる。

ii) CATALOG_NAME,SCHEMA_NAME 及び TABLE_NAME の値が,与えられた認可識別子にど

の権限も付与されていない表を識別するならば,

CATALOG_NAME,SCHEMA_NAME 及び

TABLE_NAME の値は,長さ 0 の文字列によって置き換えられる。


917

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

iii) CONSTRAINT_CATALOG,CONSTRAINT_SCHEMA 及び CONSTRAINT_NAME の値が,ある

表 の<表制約>を識別し,かつ,与えられた認可識別子に表 に関するどの権限も付与されて

いないならば,

CONSTRAINT_CATALOG,CONSTRAINT_SCHEMA 及び CONSTRAINT_NAME

の値は,長さ

0 の文字列によって置き換えられる。

iv) CONSTRAINT_CATALOG,CONSTRAINT_SCHEMA 及び CONSTRAINT_NAME の値が,ある

スキーマ に含まれる表明を識別し,かつ,与えられた認可識別子の集合に の所有者が含ま

れないならば,

CONSTRAINT_CATALOG,CONSTRAINT_SCHEMA 及び CONSTRAINT_NAME

の値は,長さ

0 の文字列によって置き換えられる。

l) RETURNED_SQLSTATE の値が,外部ルーチン呼出し例外  (external routine invocation exception),

外部ルーチン例外  (external routine exception),SQL ルーチン例外  (SQL routine exception)  又は警告

(warning)  に対応し,かつ,SQL 呼出しルーチンの呼出し中に条件が引き起こされたならば,次

による。

i) ROUTINE_CATALOG 及び ROUTINE_SCHEMA の値は,それぞれ,SQL 呼出しルーチンを含む

スキーマの

<スキーマ名>の,<カタログ名>及び<修飾なしスキーマ名>とする。

ii) ROUTINE_NAME 及び SPECIFIC_NAME の値は,それぞれ,SQL 呼出しルーチンの,<ルーチ

ン名

>の<識別子>及び<特定名>の<識別子>とする。

iii)  場合:

1)  条件が SQL 呼出しルーチンのパラメタ Pi に関連するならば,次による。

A) PARAMETER_MODE の値は,Pi の<パラメタモード>とする。

B) PARAMETER_ORDINAL_POSITION の値は,の値とする。

C) SQL 呼出しルーチンが作成されたとき SQL パラメタに対して<SQL パラメタ名>が指定さ

れていたならば,

PARAMETER_NAME の値は,Pi の<SQL パラメタ名>とする。そうでな

ければ,

PARAMETER_NAME の値は,長さ 0 の文字列とする。

2)  そうでなければ,次による。

A) PARAMETER_MODE の値は,長さ 0 の文字列とする。

B) PARAMETER_ORDINAL_POSITION の値は,0 とする。

C) PARAMETER_NAME の値は,長さ 0 の文字列とする。

m) RETURNED_SQLSTATE の値が,外部ルーチン呼出し例外,外部ルーチン例外,SQL ルーチン例

外  又は警告  に対応し,かつ,SQL 呼出しルーチンの呼出し中に条件が引き起こされたならば,

MESSAGE_TEXT の値は,例外を引き起こした SQL 呼出しルーチンのメッセージテキスト項目と

する。そうでなければ,

MESSAGE_TEXT の値は,処理系定義の文字列とする。

注記 570 SQL 処理系は,これに,<空白>の並び,長さ 0 の文字列,又は RETURNED_SQLSTATE

によって示される条件を記述する文字列を設定してよい。

n)

04

 MESSAGE_LENGTH の値は,MESSAGE_TEXT 中の文字列値の文字単位での長さとする。

o) MESSAGE_OCTET_LENGTH の値は,MESSAGE_TEXT 中の文字列値のオクテット単位での長さ

とする。

p)

04

 CONNECTION_NAME 及び SERVER_NAME の値は,それぞれ,次の値とする。

場合:

i) COMMAND_FUNCTION 又は DYNAMIC_FUNCTION が<SQL コネクション文>を識別するなら

ば,

<SQL コネクション文>によって指定されるか又は暗に想定される<コネクション名>及び


918

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

<SQL サーバ名>。

ii)  そうでなければ,条件が引き起こされた SQL セションの<コネクション名>及び<SQL サーバ名

>。

q) RETURNED_SQLSTATE の値が,データ例外  (data exception)  -  数値範囲外  (numeric value out of 

range),データ例外  -  型変換での文字値が正しくない  (invalid character value for cast),データ例

外  -  データ列データ,右切捨て  (string data, right truncation)  データ例外  -  時間隔フィールド

あふれ  (interval field overflow),整合性制約違反  又は警告  -  データ列データ,右切捨て  に対応

し,かつ,

SQL 呼出しルーチンの呼出しの間に,SQL パラメタへの代入の結果として条件が引き

起こされたならば,次による。

i) ROUTINE_CATALOG 及び ROUTINE_SCHEMA の値は,それぞれ,ルーチンを含むスキーマの

<スキーマ名>の,<カタログ名>及び<修飾なしスキーマ名>とする。

ii) ROUTINE_NAME 及び SPECIFIC_NAME の値は,それぞれ,ルーチンの,<ルーチン名>の<識

別子

>及び<特定名>の<識別子>とする。

iii)  条件が SQL 呼出しルーチンのパラメタ Pi に関連するならば,次による。

1) PARAMETER_MODE の値は,Pi の<パラメタモード>とする。

2) PARAMETER_ORDINAL_POSITION の値は,の値とする。

3) SQL 呼出しルーチンが作成されたときに,SQL パラメタに対して<SQL パラメタ名>が指定さ

れたならば,

PARAMETER_NAME の値は,Pi の<SQL パラメタ名>とする。そうでなければ,

PARAMETER_NAME の値は,長さ 0 の文字列とする。

5)  上記の規則によって規定されない他の場合の文字列項目の値には,長さ 0 の文字列が設定される。

注記 571  これらの規則によって設定されない数値項目は存在しない。

6)  場合:

a) <SQL 診断情報>が<全情報>を含むならば,DA 中の占有条件領域の個数を とする。<定数>' '

を とする。が,DA 中の文情報項目の<文情報項目名>,DA の占有条件領域中の条件情報項目

<条件情報項目名>,又は(値が占有条件領域の順序位置である)CONDITION_NUMBER のい

ずれかであるような各 に対して,次の<値式>を CHARFORMX )  で示す。

CAST ( LX AS CHARACTER VARYING ( M ) )

ここで,LX は,の値を示す<定数>とし,は,可変長文字列の処理系定義の最大長とする。

次の

<値式>を PRESENTATION ( X )  で示す。

'X = ' || CHARFORM ( X )

次の

CASE 式と等価なものを SEMICOLONCAT ( strdin )  とする。

CASE

  WHEN  CHARFORM ( din ) = '' THEN str ;

  WHEN  str = '' THEN PRESENTATION ( din ) ;

  ELSE  str || ';' || PRESENTATION ( din ) ;

END CASE

i) <ALL の修飾子>が省略されるか又は STATEMENT を含むならば,

処理系依存の順序でとられる

DA 中の各文情報項目 SII に対して,次の値式を とする。

SEMICOLONCAT ( S , SIN )

ここで,SIN は,SII の<文情報項目名>とする。


919

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

ii) <ALL の修飾子>が省略されるか又は CONDITION を含み,かつ,<条件番号>を含まないならば,

処理系定義の順序で,各 CN,1 ≤ CN ≤ に対して,次による。

1)  次の値式を とする。

SEMICOLONCAT ( SCOND )

ここで,COND は,CONDITION_NUMBER とし,CONDITION_NUMBER の値は,CN とす

る。

2)  処理系依存の順序でとられる条件領域 CN 中の各条件情報項目 CII に対して,次の値式を S

とする。

SEMICOLONCAT ( SCIN )

ここで,CIN は,CII の<条件番号>とする。

iii) <ALL の修飾子>が CONDITION 及び<条件番号>を含むならば,<条件番号>の値を CN とする。

処理系依存の順序でとられる条件領域 CN 中の各条件情報項目 CII に対して,次の値式を 

する。

SEMICOLONCAT ( SCIN )

ここで,CIN は,CII の<条件番号>とする。

iv) <全情報相手>を TARGET として,を VALUE として,

9.1  取出し代入”の一般規則を適用す

る。

b) <文情報>が指定されるならば,各<文情報項目>に対して,<単純相手指定>を TARGET として,<

文情報項目名

>の値を VALUE として,“9.1  取出し代入”の一般規則を適用する。

c)

そうでなければ(

<条件情報>が指定されるならば),各<条件情報項目>に対して,<単純相手指定

>を TARGET として,<条件情報項目名>の値を VALUE として,“9.1  取出し代入”の一般規則を

適用する。

適合性規則

1)  機能 F121“基本診断管理”なしでは,適合する SQL 言語は,<GET DIAGNOSTICS 文>を含んでは

ならない。

2)  機能 T511

“トランザクション数”なしでは,適合する

SQL 言語は,TRANSACTIONS_COMMITTED,

TRANSACTIONS_ROLLED_BACK 又は TRANSACTION_ACTIVE を含む<文情報項目名>を含んでは

ならない。

3)  機能 F122“拡張診断管理”なしでは,適合する SQL 言語は,対応する<文情報項目名>又は<条件情

報項目名

>の宣言型とは異なる宣言型をもつ<単純相手指定>を含む<GET DIAGNOSTICS 文>を含ん

ではならない。

4)  機能 F123“全診断”なしでは,適合する SQL 言語は,<全情報>を含んではならない。

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

細分箇条署名

 “診断領域スタックに対する押込み及び取出し” [一般規則]

 (

パラメタ: “OPERATION”,

パラメタ: “STACK”

)

機能

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

  (Pushing and popping the diagnostics area stack)  は,診断領域


920

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

スタックに関する操作を定義する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,OPERATION を OP とし,STACK を DAS とする。

2)  場合:

a)  OP が“PUSH”ならば,次による。

場合:

i)

DAS 中の診断領域の個数が,診断領域スタックごとの診断領域の処理系依存の最大数と等しい

ならば,例外条件:

診断例外  (diagnostics exception)  -  スタック中の診断領域の最大数を超え

た  (maximum number of stacked diagnostics areas exceeded)  が引き起こされる。

ii)  そうでなければ,DAS は,押し込まれ,DAS 中の 2 番目の診断領域の内容が,1 番目の診断領

域に写される。

b)  OP が“POP”ならば,1 番目の診断領域が DAS から取り除かれ,DAS 中の後続する全ての診断

領域が位置を一つ上に移動され,

2 番目が 1 番目に,3 番目が 2 番目にと次々になっていく。

適合性規則

なし。 

24  状態コード

24.1  SQLSTATE

この細分箇条は,ISO/IEC 9075-4 の“20.1 SQLSTATE”によって修正される。 

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

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

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

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

SQLSTATE パラメタ中に戻される文字列値は,2 文字のクラスコード,及びそれに続く 3 文字のサブク

ラスコードから成り,それぞれは,

1 オクテットの文字符号化形式をもち,かつ,<数字>及び<単純ラテン

大文字

>に制限された,処理系定義の文字集合をもつ。表 33“SQLSTATE のクラス及びサブクラスのコー

ド”は,各条件のクラスコード及び各クラスコードに対する一つ又は複数のサブクラスコードを規定する。

<数字>'0','1','2','3'若しくは'4'のうちの一つ,又は<単純ラテン大文字>'A','B','C','D','E','F','G'

若しくは

'H'のうちの一つで始まるクラスコードは,JIS X 3005 (ISO/IEC 9075)  規格群又は他の規格で定義

される条件に対してだけ戻される。そのようなクラスコードの範囲を

規格定義クラス  (standard-defined 

class)  と呼ぶ。そのようなクラスコードの幾つかは,この箇条中の他の箇所で規定するとおり,特定の規

格によって用いるために予約されている。そのような規格定義クラスに関連付けられるサブクラスコード

で,これらの

13 文字のうちの一つで始まるサブクラスコードも,JIS X 3005  (ISO/IEC  9075)  規格群又は

他の規格で定義される条件に対してだけ戻される。そのようなサブクラスコードの範囲を

規格定義サブク

ラス  (standard-defined subclass)  と呼ぶ。規格定義クラスに関連付けられるサブクラスコードで,<数字>'5',

'6','7','8'若しくは'9'のうちの一つ,又は<単純ラテン大文字>'I','J','K','L','M','N','O','P','Q','R',


921

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

'S','T','U','V','W','X','Y'若しくは'Z'のうちの一つで始まるサブクラスコードは,処理系定義の条件の

ために予約され,

処理系定義サブクラス  (implementaion-defined subclass)  と呼ぶ。

<数字>'5','6','7','8'若しくは'9'のうちの一つ,又は<単純ラテン大文字>'I','J','K','L','M','N','O',

'P','Q','R','S','T','U','V','W','X','Y'若しくは'Z'のうちの一つで始まるクラスコードは,処理系定義

の例外条件のために予約され,

処理系定義クラス  (implementaion-defined class)  と呼ぶ。そのようなクラス

に関連付けられるサブクラスコードで,

サブクラスなし  (no subclass)  を意味する'000'を除く全てのサブク

ラスコードは,処理系定義の条件のために予約され,

処理系定義サブクラス  と呼ぶ。処理系定義の終了条

件は,

成功終了  (successful completion),警告  (warning)  又はデータなし  (no data)  のクラスのうちの一つ

に処理系定義サブクラスを連結して戻すことによって示さなければならない。

条件に対してサブクラスコードが規定されないならば,サブクラス

'000'又は処理系定義サブクラスのい

ずれかが戻される。

注記 572  この規定の結果として,SQL 処理系は,JIS X 3005 (ISO/IEC 9075)  規格群によって要求さ

れないが,例外条件:

構文誤り又はアクセス規則違反  (syntax error or access rule violation)

のための,構文誤りの場合とアクセス規則違反の場合とを区別するサブクラスを提供して

もよい。

複数の終了条件:

警告,又は処理系定義の例外条件を含む複数の例外条件が引き起こされるならば,

4.30.2  状態パラメタ”中の優先順序規則に従うという条件で,対応する SQLSTATE 値のどれが SQLSTATE

状態パラメタ中に戻されるかは,処理系依存とする。

SQLSTATE 状態パラメタ中に戻される一つに加えて,

任意の個数の適用可能な条件値を診断領域中に戻してもよい。

処理系定義の条件は,JIS X 3005 (ISO/IEC 9075)  規格群で定義される条件と,全体又は部分が重複して

もよい。しかし,そのような条件が文の実行の結果として発生するならば,対応する処理系定義の

SQLSTATE 値は,SQLSTATE パラメタ中に戻してはならないが,診断領域中に戻してもよい。

“カテゴリ”列は,次の意味をもつ。“

S”は,与えられたクラスコードが成功終了に対応し,終了条件

であることを意味する。“

W”は,与えられたクラスコードが成功終了に対応するが警告付きであり,終了

条件であることを意味する。“

N”は,与えられたクラスコードがデータなしの状態に対応し,終了条件で

あることを意味する。“

X”は,与えられたクラスコードが例外条件に対応することを意味する。

04

09

10

13

14

 表

33SQLSTATE のクラス及びサブクラスのコード

カテゴリ 

条件 

クラス

部分条件 

サブクラス

X

曖昧なカーソル名

 

3C

サブクラスなし

 

000

X

更新可能でない列への代入を試みた

0U

サブクラスなし

 

000

X

順序付け列への代入を試みた

 

0V

サブクラスなし

 

000

X

基数違反

 

21

サブクラスなし

 

000

X

コネクション例外

 

08

サブクラスなし

 

000

 

コネクションが存在しない

 

003

 

コネクション失敗

 

006

 

使用中のコネクション名

 

002

 

SQL

クライアントが

SQL

コネクションを確立

できない

 

001

 

SQL

サーバが

SQL

コネクションの確立を拒絶

した

 

004

 

トランザクション解決不明

 

007


922

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

04

09

10

13

14

 表

33SQLSTATE のクラス及びサブクラスのコード(続き)

カテゴリ 

条件 

クラス

部分条件 

サブクラス

X

カーソル感度例外

 

36

サブクラスなし

 

000

 

要求が失敗した

 

002

 

要求が拒絶された

 

001

X

データ例外

 

22

サブクラスなし

 

000

 

配列データ,右切捨て

 

02F

 

配列要素誤り

 

02E

 

長さ

0

のデータ列の置換えを試みた

 

01U

 

文字がレパートリ中にない

 

021

 

日時フィールドあふれ

 

008

 

0

による除算

 

012

 

代入中の誤り

 

005

 

エスケープ文字衝突

 

00B

 

標識あふれ

 

022

 

時間隔フィールドあふれ

 

015

 

時間隔値範囲外

 

00P

 

自然対数の引数が正しくない

 

01E

 

NTILE

関数の引数が正しくない

 

014

 

NTH_VALUE

関数の引数が正しくない

 

016

 

べき関数の引数が正しくない

 

01F

 

幅バケット関数の引数が正しくない

 

01G

 

型変換での文字値が正しくない

 

018

 

日時形式が正しくない

 

007

 

エスケープ文字が正しくない

 

019

 

エスケープオクテットが正しくない

 

00D

 

エスケープ並びが正しくない

 

025

 

標識パラメタの値が正しくない

 

010

 

時間隔形式が正しくない

 

006

 

パラメタ値が正しくない

 

023

 

期間値が正しくない

 

020

 

ウィンドウ関数中の先行又は後続行数・グル
ープ数が正しくない

 

013

 

正規表現が正しくない

 

01B

 

標本句中の繰返し引数が正しくない

 

02G

 

FETCH FIRST

句の行数が正しくない

 

01W

 

結果

OFFSET

句の行数が正しくない

 

01X

 

行バージョンが正しくない

 

01H

 

標本率が正しくない

 

02H

 

時刻帯時差値が正しくない

 

009

 

エスケープ文字の用い方が正しくない

 

00C

 

XQuery

オプションフラグが正しくない

 

01T

 

XQuery

正規表現が正しくない

 

01S

 

XQuery

置換文字列が正しくない

 

01V

 

最特定型不一致

 

00G

 

マルチ集合値あふれ

 

00Q

 

UCS

文字列中に非文字

 

029

 

ナル値で変異当該パラメタを置き換えた

 

02D

 

表中にナル行は許されない

 

01C


923

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

04

09

10

13

14

 表

33SQLSTATE のクラス及びサブクラスのコード(続き)

カテゴリ 

条件 

クラス

部分条件 

サブクラス

 

配列相手にナル値

 

00E

 

ナル値,標識パラメタなし

 

002

 

ナル値は認められない

 

004

 

数値範囲外

 

003

 

順序数生成子の限界を超えた

 

00H

 

データ列データ,長さ不一致

 

026

 

データ列データ,右切捨て

 

001

 

部分データ列誤り

 

011

 

TRIM

誤り

 

027

 

C

文字列が終了していない

 

024

 

長さ

0

の文字列

 

00F

X

依存している権限記述子がまだ存在
する

 

2B

サブクラスなし

 

000

X

診断例外

 

0Z

サブクラスなし

 

000

 

スタック中の診断領域の最大数を超えた

 

001

X

動的

SQL

誤り

 

07

サブクラスなし

 

000

 

カーソル指定が実行できない

 

003

 

データ型の変換関数違反

 

00B

 

DATA

の相手が正しくない

 

00D

 

DATETIME_INTERVAL_CODE

が正しくない

 

00F

 

記述子数が正しくない

 

008

 

記述子索引が正しくない

 

009

 

LEVEL

値が正しくない

 

00E

 

準備された文がカーソル指定ではない

 

005

 

制限されたデータ型属性違反

 

006

 

DATA

の値が未定義

 

00C

 

USING

句が動的パラメタ指定と一致しない

 

001

 

USING

句が相手指定と一致しない

 

002

 

動的パラメタに対する

USING

句が必要

 

004

 

結果フィールドに対する

USING

句が必要

 

007

X

外部ルーチン例外

 

38

サブクラスなし

 

000

 

SQL

を含むことは許されない

 

001

 

SQL

データを修正することは許されない

 

002

 

禁止されている

SQL

文を試みた

 

003

 

SQL

データを読むことは許されない

 

004

X

外部ルーチン呼出し例外

 

39

サブクラスなし

 

000

 

ナル値は許されない

 

004

X

サポートされていない機能

 

0A

サブクラスなし

 

000

 

複数サーバトランザクション

 

001

X

整合性制約違反

 

23

サブクラスなし

 

000

 

RESTRICT

違反

 

001

X

認可指定が正しくない

 

28

サブクラスなし

 

000

X

カタログ名が正しくない

 

3D

サブクラスなし

 

000

X

文字集合名が正しくない

 

2C

サブクラスなし

 

000

 

SQL

セション既定文字集合を削除できない

 001

X

条件数が正しくない

 

35

サブクラスなし

 

000

X

コネクション名が正しくない

 

2E

サブクラスなし

 

000


924

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

04

09

10

13

14

 表

33SQLSTATE のクラス及びサブクラスのコード(続き)

カテゴリ 

条件 

クラス

部分条件 

サブクラス

X

カーソル名が正しくない

 

34

サブクラスなし

 

000

X

カーソル状態が正しくない

 

24

サブクラスなし

 

000

X

権限付与者が正しくない

 

0L

サブクラスなし

 

000

X

役割指定が正しくない

 

0P

サブクラスなし

 

000

X

スキーマ名が正しくない

 

3F

サブクラスなし

 

000

X

スキーマ名リストの指定が正しくな

 

0E

サブクラスなし

 

000

X

照合順名が正しくない

 

2H

サブクラスなし

 

000

X

SQL

記述子名が正しくない

 

33

サブクラスなし

 

000

X

SQL

呼出し手続参照が正しくない

 

0M

サブクラスなし

 

000

X

SQL

文名が正しくない

 

26

サブクラスなし

 

000

X

SQL

文識別子が正しくない

 

30

サブクラスなし

 

000

X

相手の型の指定が正しくない

 

0D

サブクラスなし

 

000

X

トランザクション状態が正しくない

25

サブクラスなし

 

000

 

SQL

トランザクションが動作中

 

001

 

分岐トランザクションが既に動作中

 

002

 

保持されたカーソルには同じ隔離性水準が必

 

008

 

分岐トランザクションに対してアクセスモー
ドが適切でない

 

003

 

分岐トランザクションに対して隔離性水準が
適切でない

 

004

 

分岐トランザクションに対して動作中の

SQL

トランザクションがない

 

005

 

読込み専用

SQL

トランザクション

 

006

 

スキーマ文とデータ文との混在は提供されな

 

007

X

トランザクション終了が正しくない

2D

サブクラスなし

 

000

X

変換グループ名指定が正しくない

 

0S

サブクラスなし

 

000

X

位置付け子例外

 

0F

サブクラスなし

 

000

 

指定が正しくない

 

001

N

データなし

 

02

サブクラスなし

 

000

 

これ以上の結果集合は戻されない

 

001

X

トリガ実行中に禁止されている文が
現れた

 

0W

サブクラスなし

 

000

 

データ変更差分表によって修正される表を修

001

X

遠隔データベースアクセス

 

HZ

プロトコルの部分条件及びサブクラスコー

ド値の定義については,

[ISO9579

の“

8.1 

RDA

特 殊 化 の 条 件 の た め の 例 外 コ ー ド

(Exception codes for RDA-specific Conditions)

中 の

表 12

RDA

特 殊 化 の 条 件 の た め の

SQLSTATE

の ク ラ ス 及 び サ ブ ク ラ ス の 値

(SQLSTATE class and subclass values for 
RDA-specific conditions)

”参照

 


925

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

04

09

10

13

14

 表

33SQLSTATE のクラス及びサブクラスのコード(続き)

カテゴリ 

条件 

クラス

部分条件 

サブクラス

X

保存点例外

 

3B

サブクラスなし

 

000

 

指定が正しくない

 

001

 

多すぎる

 

002

X

SQL

ルーチン例外

 

2F

サブクラスなし

 

000

 

関数が

RETURN

文を実行しなかった

 

005

 

SQL

データを修正することは許されない

 

002

 

禁止されている

SQL

文を試みた

 

003

 

SQL

データを読むことは許されない

 

004

S

成功終了

 

00

サブクラスなし

 

000

X

構文誤り又はアクセス規則違反

 

42

サブクラスなし

 

000

X

相手表がカーソル指定と一致しない

0T

サブクラスなし

 

000

X

トランザクションロールバック

 

40

サブクラスなし

 

000

 

整合性制約違反

 

002

 

直列化失敗

 

001

 

文終了不明

   

003

 

被トリガ動作例外

   

004

X

被トリガ動作例外

   

09

サブクラスなし

 

000

X

被トリガデータ変更違反

   

27

サブクラスなし

 

000

 

データ変更差分表によって修正される表を修

001

W

警告

 

01

サブクラスなし

 

000

 

結果集合が更に戻される

 

00D

 

配列データ,右切捨て

 

02F

 

多すぎる結果集合を戻そうと試みた

 

00E

 

カーソル操作衝突

 

001

 

情報スキーマに対して既定値が長すぎる

 

00B

 

切断誤り

 

002

 

不十分な項目記述子領域

 

005

 

条件数が正しくない

 

012

 

集合関数中でナル値がなくなった

 

003

 

権限が付与されていない

 

007

 

権限が剝奪されていない

 

006

 

情報スキーマに対して問合せ式が長すぎる

 

00A

 

結果集合が戻された

 

00C

 

情報スキーマに対して探索条件が長すぎる

 

009

 

情報スキーマに対して文が長すぎる

 

00F

 

データ列データ,右切捨て

 

004

X

WITH CHECK OPTION

違反

 

44

サブクラスなし

 

000

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

JIS X 3005 (ISO/IEC 9075)  規格群は,

RDA 応用文脈 (RDA Application Context) を用いて通信ネットワー

ク上で

SQL クライアントが SQL サーバと交信するときに発生するかもしれない遠隔データベースアクセ

 (Remote Database Access) 誤りのために SQLSTATE クラス 'HZ' を予約する。[ISO9579]  は,ISO RDA

規格に適合する処理系中で検出しなければならない多くの例外条件を定義する。

RDA を用いる処理系が,与えられた例外条件に対して,[ISO9579]  で示す条件を報告するならば,その


926

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

処理系は,

SQLSTATE クラスコード 'HZ',及び示されたサブクラスコードを用いなければならず,それら

の例外が

<GET DIAGNOSTICS 文>によって取り出されるとき,CLASS_ORIGIN に値 'ISO 9075' を,

SUBCLASS_ORIGIN に表 34“RDA のための SQLSTATE のクラスコード”で示すとおりの値を設定しなけ

ればならない。

RDA 以外のクライアントサーバ通信を用いる処理系は,[ISO9579]  で示す条件に対応する条件を,

SQLSTATE クラスコード 'HZ',及び示された対応するサブクラスコードを用いて報告してもよい。その処

理系は,

CLASS_ORIGIN に値 'ISO 9075' を,SUBCLASS_ORIGIN に表 34“RDA のための SQLSTATE の

クラスコード”で示すとおりの値を設定してもよい。他のどの通信誤りも,

CLASS_ORIGIN に値 'ISO 9075'

を,

SUBCLASS_ORIGIN に処理系定義の文字列値を設定して,処理系定義の範囲のサブクラスコードで戻

されなければならない。

遠隔データベースアクセス例外は,[

'40000',トランザクションロールバック  (transaction rollback)  など

の,

]表 33“SQLSTATE のクラス及びサブクラスのコード”で定義した SQL 例外条件も結果としてもたら

してもよい。そのような条件が発生するならば,

'HZ'  クラスの SQLSTATE は,SQLSTATE パラメタ中に戻

してはならないが,診断領域中に戻してもよい。

表 34RDA のための SQLSTATE のクラスコード

SQLSTATE クラス SUBCLASS_ORIGIN 
HZ

[ISO9579]  参照)

25  適合性

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

JIS X 3005-1 [ISO9075-1]  の“8  適合性”中の要件に加えて,この規格に対する適合性の主張は,次の主

張でなければならない。

1)  次のうちの少なくとも一つに対する適合性の主張。

  機能 B011“埋込み Ada”

  機能 B012“埋込み C”

  機能 B013“埋込み COBOL”

  機能 B014“埋込み Fortran”

  機能 B015“埋込み MUMPS”

  機能 B016“埋込み Pascal”

  機能 B017“埋込み PL/I”

  機能 B111“モジュール言語 Ada”

  機能 B112“モジュール言語 C”

  機能 B113“モジュール言語 COBOL”

  機能 B114“モジュール言語 Fortran”

  機能 B115“モジュール言語 MUMPS”

  機能 B116“モジュール言語 Pascal”

  機能 B117“モジュール言語 PL/I”

2)  次のうちの少なくとも一つに対する適合性の主張。

  機能 B121“ルーチン言語 Ada”

  機能 B122“ルーチン言語 C”


927

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

  機能 B123“ルーチン言語 COBOL”

  機能 B124“ルーチン言語 Fortran”

  機能 B125“ルーチン言語 MUMPS”

  機能 B126“ルーチン言語 Pascal”

  機能 B127“ルーチン言語 PL/I”

  機能 B128“ルーチン言語 SQL”

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

この規格中の機能に対する適合性を主張する

SQL 処理系は,存在するならば,[ISO9075-11]  中の同じ機

能に対する適合性も主張しなければならない。

機能 T061“UCS 提供”に対する適合性を主張する SQL 処理系は,次のとおりでなければならない。

  指定されたある水準で JIS X 0221 [ISO10646]  に適合する。

  名前付き文字集合 UTF8,UTF16 及び UTF32 の少なくとも一つを提供する。

  そのような各文字集合に対する既定照合順として,ある水準で  [ISO14651]  に適合する照合順を

提供する。

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

表 35SQL/Foundation の前提機能の関係

機能 ID 

機能名 

前提機能 ID

前提機能名 

B011

埋込み

Ada E182

ホスト言語結合

B012

埋込み

C E182

ホスト言語結合

B013

埋込み

COBOL E182

ホスト言語結合

B014

埋込み

Fortran E182

ホスト言語結合

B015

埋込み

MUMPS E182

ホスト言語結合

B016

埋込み

Pascal E182

ホスト言語結合

B017

埋込み

PL/I E182

ホスト言語結合

B032

拡張動的

SQL B031

基本動的

SQL

B034

カーソル属性の動的指定

 B031

基本動的

SQL

B035

非拡張記述子名

 B031

基本動的

SQL

B111

モジュール言語

Ada E182

ホスト言語結合

B112

モジュール言語

C E182

ホスト言語結合

B113

モジュール言語

COBOL E182

ホスト言語結合

B114

モジュール言語

Fortran E182

ホスト言語結合

B115

モジュール言語

MUMPS E182

ホスト言語結合

B116

モジュール言語

Pascal E182

ホスト言語結合

B117

モジュール言語

PL/I E182

ホスト言語結合

B211

モ ジ ュ ー ル 言 語

Ada : VARCHAR 及 び

NUMERIC 提供

B111

モジュール言語

Ada

B221

ル ー チ ン 言 語

Ada : VARCHAR 及 び

NUMERIC 提供

B121

ルーチン言語

Ada

F053 OVERLAPS 述語 F052

時間隔及び日時の算術

F202 TRUNCATE

TABLE 文:識別列再開始選択

F200 TRUNCATE

TABLE 文

F313

拡張

MERGE 文 F312

MERGE 文

F314 DELETE 分岐をもつ MERGE 文 F312

MERGE 文

F381

拡張スキーマ操作

 F491

制約管理


928

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

表 35SQL/Foundation の前提機能の関係(続き)

機能 ID 

機能名 

前提機能 ID

前提機能名 

F382

列データ型変更

 F381

拡張スキーマ操作

F383

NOT NULL 句設定 F381

拡張スキーマ操作

F384 IDENTITY 特性句削除 F381

拡張スキーマ操作

F385

列生成式句削除

 F381

拡張スキーマ操作

F386

識別列生成句設定

 F381

拡張スキーマ操作

F386

識別列生成句設定

 T174

識別列

F451

文字集合定義

 F461

名前付き文字集合

F492

選択可能な表制約強制

 F491

制約管理

F521

表明

 F491

制約管理

F693 SQL セション及びクライアントモジュー

ルの照合順

F690

照合順提供

F711 ALTER 定義域 F251

定義域提供

F721

遅延可能制約

 F491

制約管理

F762 CURRENT_CATALOG

F651 カタログ名修飾子

F762 CURRENT_CATALOG

F763 CURRENT_SCHEMA

F801

完全な集合関数

 F441

拡張集合関数提供

F846

正規表現演算子でのオクテット提供

 T061  UCS 提供

F851

副問合せ中の

<ORDER BY 句> F850

<問合せ式>中の最上位<ORDER BY 句>

F855 <問合せ式>中の入れ子になった<ORDER

BY 句>

F850 <問合せ式>中の最上位<ORDER BY 句>

F856 <問合せ式>中の入れ子になった<FETCH

FIRST 句>

F857 <問合せ式>中の最上位<FETCH FIRST 句>

F858

副問合せ中の

<FETCH FIRST 句> F857

<問合せ式>中の最上位<FETCH FIRST 句>

F863 < 問 合 せ 式 > 中 の 入 れ 子 に な っ た < 結 果

OFFSET 句>

F861 <問合せ式>中の最上位<結果 OFFSET 句>

F862

副問合せ中の

<結果 OFFSET 句> F861

<問合せ式>中の最上位<結果 OFFSET 句>

F866 FETCH

FIRST 句:PERCENT 選択肢 F857  <問合せ式>中の最上位<FETCH FIRST 句>

F867 FETCH

FIRST 句:WITH TIES 選択肢 F857

<問合せ式>中の最上位<FETCH FIRST 句>

F867 FETCH

FIRST 句:WITH TIES 選択肢 F850

<問合せ式>中の最上位<ORDER BY 句>

S024

拡張構造型

 S023

基本構造型

S041

基本参照型

 S051

型の表作成

S043

拡張参照型

 S041

基本参照型

S051

型の表作成

 S023

基本構造型

S081

下位表

 S051

型の表作成

S092

利用者定義型の配列

 S091

基本配列提供

S094

参照型の配列

 S041

基本参照型

S094

参照型の配列

 S091

基本配列提供

S095

問合せによる配列構成子

 S091

基本配列提供

S096

省略可能な配列限界

 S091

基本配列提供

S097

配列要素代入

 S091

基本配列提供

S098 ARRAY_AGG

S091 基本配列提供

S111

問合せ式中の

ONLY S051

型の表作成

S201

配列に関する

SQL 呼出しルーチン S091 基本配列提供

S202

マルチ集合に関する

SQL 呼出しルーチン S271

基本マルチ集合提供

S231

構造型位置付け子

 S023

基本構造型

S232

配列位置付け子

 S091

基本配列提供

S233

マルチ集合位置付け子

 S271

基本マルチ集合提供


929

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

表 35SQL/Foundation の前提機能の関係(続き)

機能 ID 

機能名 

前提機能 ID

前提機能名 

S242

変換変更文

 S241

変換関数

S272

利用者定義型のマルチ集合

 S271

基本マルチ集合提供

S274

参照型のマルチ集合

 S041

基本参照型

S274

参照型のマルチ集合

 S271

基本マルチ集合提供

S275

高度マルチ集合提供

 S271

基本マルチ集合提供

T022 BINARY 及び VARBINARY データ型の高

度提供

T021 BINARY 及び VARBINARY データ型

T042

拡張