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

585

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

11.56

<原メソッド指定追加>

機能

<原メソッド指定追加> (<add original method specification>)  は,利用者定義型に原メソッド指定を追加す

る。

形式

<原メソッド指定追加> ::=

 ADD

<原メソッド指定>

構文規則

1) <原メソッド指定追加>を含む<型変更文>に直に含まれる<スキーマ解決利用者定義型名>  DN によ

って識別される利用者定義型を とする。DN の指定されるか又は暗に想定される<スキーマ名>を

SN とする。の上位型があるならば,それを SPD とする。の下位型があるならば,それを SBD

とする。

2) <原メソッド指定>及びそれに直に含まれる<部分メソッド指定>を,それぞれ,ORMS 及び PORMS

とする。

3)  ORMS に単純に含まれる<メソッド名>,<SQL パラメタ宣言リスト>及び<メソッド特性の並び>を

それぞれ,MNMPDL 及び MCH とする。MPDL を,ORMS の非拡張 SQL パラメタ宣言リスト

(unaugmented SQL parameter declaration list)  と呼ぶ。

4)  PORMS が INSTANCE,CONSTRUCTOR 又は STATIC を指定しないならば,INSTANCE が暗に想定

される。

5)  PORMS が CONSTRUCTOR を指定するならば,次による。

a) SELF

AS

RESULT を指定しなければならない。

b)  MN は,DN の<被修飾識別子>と等価でなければならない。

c) <戻りデータ型>は,DN を指定しなければならない。

d)  は,構造型でなければならない。

e)

PORMS は,SQL 呼出し構成メソッド  (SQL-invoked constructor method)  を指定する。

6)  PORMS が STATIC を指定するならば,次による。

a) SELF

AS

RESULT も,SELF AS LOCATOR も,指定してはならない。

b)  PORMS は,静的メソッドを指定する。

7)  SN.MN を RN とする。

8)  場合:

a)  PORMS が<特定メソッド名>を指定しないならば,<スキーマ名>が SN と等価である処理系依存

<特定メソッド名>が暗に想定される。

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

場合:

i) <特定メソッド名>が<スキーマ名>を含むならば,その<スキーマ名>は,SN と等価でなければ

ならない。

ii)  そうでなければ,<スキーマ名> SN が暗に想定される。

<特定メソッド名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマは,特定名が

<特定メソッド名>と等価であるルーチン記述子,又は特定メソッド名が<特定メ

ソッド名

>と等価であるメソッド指定記述子を含む利用者定義型記述子を含んでいてはならない。


586

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

9)  MCH は,高々一つの<LANGUAGE 句>,高々一つの<PARAMETER STYLE 句>,高々一つの<決定

的特性

>,高々一つの<SQL データアクセス指示>及び高々一つの<ナル呼出し句>を含まなければな

らない。

a)  MCH 中に<LANGUAGE 句>が指定されないならば,LANGUAGE SQL が暗に想定される。

b)  場合:

i) LANUAGE

SQL が指定されるか又は暗に想定されるならば,次による。

1) <PARAMETER

STYLE 句>を指定してはならない。

2) <SQL データアクセス指示>は,NO SQL を指定してはならない。

3) <SQL パラメタ宣言リスト>に含まれるどの<SQL パラメタ宣言>も,<SQL パラメタ名>を含

まなければならない。

4) <RETURNS 句>は,<結果型変換>を指定してはならない。

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

1) <PARAMETER

STYLE 句>が指定されないならば,PARAMETER STYLE SQL が暗に想定され

る。

2) <結果型変換>が指定されるならば,<結果型変換>中に指定される<データ型>の値を とし,

<戻りデータ型>を RT とする。次の CAST 指定が,“6.13 <CAST 指定>”の構文規則に従って,

正しくなければならない。

CAST ( V AS RT )

3) <結果 CAST FROM 型>  RCT が<位置付け子標識>を単純に含むならば,RCT は,2 進オクテ

ット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又は利用者定義

型のいずれかでなければならない。

c)

MCH 中に<決定的特性>が指定されないならば,NOT DETERMINISTIC が暗に想定される。

d) <SQL データアクセス指示>が指定されないならば,CONTAINS SQL が暗に想定される。

e)

MCH 中に<ナル呼出し句>が指定されないならば,

CALLED ON NULL INPUT が暗に想定される。

10)  MPDL に含まれるどの二つの<SQL パラメタ名>も,等価であってはならない。

11)  MPDL に含まれるどの<SQL パラメタ名>も,SELF と等価であってはならない。

12)  MPDL に含まれる<SQL パラメタ宣言>の個数を とする。どの<SQL パラメタ宣言> PDj,1 ≤ j ≤ N

に対しても,次による。

a)  PDj は,<パラメタモード>を含んではならない。IN の<パラメタモード>が暗に想定される。

b)  PDj は,RESULT を指定してはならない。

c)

PDj に直に含まれる<パラメタの型> PTj は,ROW を指定してはならない。

d)  PTj が<位置付け子標識>を単純に含むならば,次による。

i)

MCH は,LANGUAGE SQL を指定してはならないし,LANGUAGE SQL が暗に想定されてもな

らない。

ii)  PTj は,2 進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型

又は利用者定義型のいずれかを指定しなければならない。

13) <戻りデータ型> RT が<位置付け子標識>を単純に含むならば,次による。

a)  MCH は,LANGUAGE SQL を指定してはならないし,LANGUAGE SQL が暗に想定されてもなら

ない。

b)  RT は,2 進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又


587

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

は利用者定義型のいずれかでなければならない。

c) <結果型変換>を指定してはならない。

14) SELF

AS RESULT が指定されるならば,<戻りデータ型>は,DN を指定しなければならない。

15)  場合:

a)  ORMS が CONSTRUCTOR を指定するならば,次の全てが真となるようなメソッド指定で,記述

子が の記述子に含まれるメソッド指定を衝突するメソッド指定  (conflicting method specification)

CMS とする。

i)

MPDL と,CMS の非拡張 SQL パラメタリストとが,同じ個数 の SQL パラメタをもつ。

ii)  CMS の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタを PCMSj,1 ≤ j ≤ とする。

非拡張

SQL パラメタ宣言リスト MPDL 中の 番目の SQL パラメタを PMSj,1 ≤ j ≤ とする。

iii) 1 から までの範囲の に対して,PCMSj の宣言型と PMSj の宣言型とが互換である。

iv)  CMS が SQL 呼出し構成メソッドである。

b)  そうでなければ,次の全てが真となるようなメソッド指定で,記述子が SPD 又は SBD の記述子

に含まれるメソッド指定を

衝突するメソッド指定  (conflicting method specificationCMS とする。

i)

MN と,CMS の記述子に含まれるメソッド名とが等価である。

ii)  MPDL と,CMS の非拡張 SQL パラメタリストとが,同じ個数 の SQL パラメタをもつ。

iii)  CMS の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタを PCMSj,1 ≤ j ≤ とする。

非拡張

SQL パラメタ宣言リスト MPDL 中の 番目の SQL パラメタを PMSj,1 ≤ j ≤ とする。

iv) 1 から までの範囲の に対して,PCMSj の宣言型と PMSj の宣言型とが互換である。

v)  CMS 及び ORMS が両方ともインスタンスメソッドでないか,又は CMS 及び ORMS のうちの

一方が静的メソッドで,かつ,他方がインスタンスメソッドであるかのいずれかである。

16)  衝突するメソッド指定が存在してはならない。

17)  MPDL に含まれる 番目の<SQL パラメタ宣言>を MPi,1 ≤ i ≤ とする。ORMS の拡張された SQL

パラメタ宣言リスト NPL が,次のとおりに定義される。

場合:

a)  PORMS が STATIC を指定するならば,次の指定を NPL とする。

MP

1

, ..., MP

N

)

b)  ORMS が SELF AS RESULT 及び SELF AS LOCATOR を指定するならば,

次の指定を NPL とする。

( SELF DN RESULT AS LOCATOR,

MP

1

, ...,

MP

N

)

c)

ORMS が SELF AS LOCATOR を指定するならば,次の指定を NPL とする。

( SELF DN AS LOCATOR,

MP

1

, ...,

MP

N

)

d)  ORMS が SELF AS RESULT を指定するならば,次の指定を NPL とする。

( SELF DN RESULT, MP

1

, ...,

MP

N

)

e)

そうでなければ,次の指定を NPL とする。

( SELF DNMP

1

, ...,


588

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

MP

N

)

NPL 中の<SQL パラメタ宣言>の個数を AN とする。

18)  PORMS が STATIC 又は CONSTRUCTOR を指定しないならば,次の全ての条件を満たす SQL 呼出

し関数 が存在してはならない。

a)  が SQL 呼出しメソッドでない。

b)  の<ルーチン名>と RN とが,等価な<被修飾識別子>をもつ。

c)

が AN 個の SQL パラメタをもつ。

d)  が,の 1 番目の SQL パラメタの宣言型の下位型又は上位型である。

e)

NPL 中の 番目の SQL パラメタの宣言型,2 ≤ i ≤ AN が,の 番目の SQL パラメタの宣言型と

互換である。

19)  PORMS が STATIC を指定するならば,次の全ての条件を満たす,静的メソッドでない SQL 呼出し

関数 が存在してはならない。

a)  の<ルーチン名>と RN とが,等価な<被修飾識別子>をもつ。

b)  が  (AN+1)  個の SQL パラメタをもつ。

c)

が,の 1 番目の SQL パラメタの宣言型の下位型又は上位型である。

d)  の 番目の SQL パラメタの宣言型,2 ≤ i ≤ (AN+1)  が,NPL の  (i-1)  番目の SQL パラメタの宣

言型と互換である。

アクセス規則

なし。 

一般規則

1)  の記述子を STDS とする。ORMS に対して,メソッド指定記述子 DOMS が作成される。DOMS

は,次の項目を含む。

a) <メソッド名> MN

b)  PORMS に含まれる<特定メソッド名>。

c)

メソッド指定が原メソッド指定であることを示す標識。

d) STATIC が指定されたか又は CONSTRUCTOR が指定されたかを示す標識。

e)

拡張された

SQL パラメタ宣言リスト NPL

f)

NPL 中の全ての SQL パラメタ宣言に対して,

(指定されるならば,)位置付け子標識。

g)  PORMS に含まれる<戻りデータ型>。

h)  (あるならば,

PORMS に含まれる<結果 CAST FROM 型>。

i)

(あるならば,)

<位置付け子標識>が PORMS の<RETURNS 句>に含まれるならば,位置付け子標

識。

j)

MCH に陽に含まれるか又は暗に含まれる<言語名>。

k) <言語名>が SQL でないならば,MCH に含まれる陽に指定されるか又は暗に想定される<パラメ

タ様式

>。

l)

メソッドが決定的であるかどうかを示すための,MCH に含まれる標識。

m)  メソッドが SQL データを潜在的に修正するか,SQL データを潜在的に読むか,SQL を潜在的に

含むか又は

SQL を潜在的に含まないかを示す標識。

n)  いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示す標識。

o)  作成時刻印の値としての CURRENT_TIMESTAMP。


589

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

p)  最終変更時刻印の値としての CURRENT_TIMESTAMP。

2)  DOMS が STDS に追加される。

3)  の下位型の利用者定義型名を含む表記述子の個数を とする。

1 から までの範囲の に対して,次による。

a)  そのような 番目の表記述子に含まれる<表名>を TNi とする。

b)  TNi,及び SELECT の権限を指定するどの表権限記述子に対しても,TNi,同じ動作・権限付与者・

権限受領者及び同じ付与可能性,並びに ORMS に含まれる<特定メソッド名>を指定する新しい表

/メソッド権限記述子が作成される。

適合性規則

なし。 

11.57

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

機能

<置換メソッド指定追加> (<add overriding method specification>)  は,利用者定義型に置換メソッド指定を

追加する。

形式

<置換メソッド指定追加> ::=

 ADD

<置換メソッド指定>

構文規則

1) <置換メソッド指定追加>に直に含まれる<置換メソッド指定>を OVMS とする。OVMS を含む<型変

更文

>に直に含まれる<スキーマ解決利用者定義型名>  DN によって識別される利用者定義型を 

する。DN の指定されるか又は暗に想定される<スキーマ名>を SN とする。の上位型があるならば,

それを SPD とする。の下位型があるならば,それを SBD とする。

2)  OVMS に 直 に 含 ま れ る < 部 分 メ ソ ッ ド 指 定 > を POVMS と す る 。 POVMS は , STATIC 又 は

CONSTRUCTOR を指定してはならない。

3) <ルーチン名>,<RETURNS 句>,及び POVMS に直に含まれる<SQL パラメタ宣言リスト>を,それ

ぞれ,MNRTC 及び MPDL とする。

4)  MN は,以外のどの SPD 又は SBD の利用者定義型名の<被修飾識別子>とも等価であってはなら

ない。

5)  SN.MN を RN とする。

6)  場合:

a)  POVMS が<特定メソッド名>を指定しないならば,<スキーマ名>が SN と等価である処理系依存

<特定メソッド名>が暗に想定される。

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

場合:

i) <特定メソッド名>が<スキーマ名>を含むならば,その<スキーマ名>は,SN と等価でなければ

ならない。

ii)  そうでなければ,<スキーマ名> SN が暗に想定される。

7) <特定メソッド名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマは,特定名が

<特定メソッド名>と等価であるルーチン記述子か,又は特定メソッド名が<特定

メソッド名

>と等価であるメソッド指定記述子を含む利用者定義型記述子を含んでいてはならない。


590

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

8)  RTC は,<結果型変換>又は<位置付け子標識>を指定してはならない。

9)  次の全てが真となるようなメソッド指定で,の利用者定義型の真上位型の記述子に含まれる原メ

ソッド指定を

候補原メソッド指定  (candidate original method specificationCOMS とする。

a)  MN と COMS の<メソッド名>とが等価である。

b)  COMS の記述子に一般に含まれる拡張された SQL パラメタ宣言リスト UPCOMS の要素の個数を

とする。MPDL が  (N-1)  個の SQL パラメタ宣言を含む。

c) 2 から までの範囲の に対して,

それぞれ,UPCOMS の SQL パラメタ PCOMSi の宣言型を TYPE1

として,及び MPDL の SQL パラメタ POVMSi-1 の宣言型を TYPE2 として,“9.20  データ型の同
一性”の構文規則を適用する。

d) STATIC 又は CONSTRUCTOR が指定されたことを示す標識を COMS の記述子が含んでいない。

10)  そのようなただ一つの COMS が存在しなければならない。

11)  COMS は,変異関数又は観測関数の対応するメソッド指定であってはならない。

注記 417  “対応するメソッド指定”は,“11.60 <SQL 呼出しルーチン>”で定義している。

12) 2 から までの範囲の に対して,次による。

a)  POVMSi-1 が<SQL パラメタ名> PNM1 を含むならば,COMS の記述子に含まれる拡張された SQL

パラメタ宣言リストの 番目の要素は,PNM1 と等価な SQL パラメタ名をもたなければならない。

b)  COMS の記述子に含まれる拡張された SQL パラメタ宣言リストの 番目の要素が SQL パラメタ

名 PNM2 を含むならば,POVMSi-1 は,PNM2 と等価な<SQL パラメタ名>を含まなければならな
い。

c)

POVMSi-1 は,<パラメタモード>を含んではならない。<パラメタモード> IN が暗に想定される。

d)  POVMSi-1 は RESULT を指定してはならない。

e)

POVMSi-1 に直に含まれる<パラメタの型> PTi-1 が<位置付け子標識>を含むならば,COMS の記
述子に含まれる拡張された

SQL パラメタ宣言リストの 番目の要素は,<位置付け子標識>を含ま

なければならない。

f)

COMS の記述子に含まれる拡張された SQL パラメタ宣言リストの 番目の要素が<位置付け子標

>を含むならば,POVMSi-1 に直に含まれる<パラメタの型> PTi-1 は,<位置付け子標識>を含ま

なければならない。

13)  RTC の<戻りデータ型>を ROVMS とする。COMS の<戻りデータ型>を RCOMS とする。

場合:

a)  RCOMS が利用者定義型ならば,次による。

i)

次の全てが真となるようなメソッド指定で,UDT の真上位型又は真下位型の記述子に含まれる

メソッド指定を

候補置換メソッド指定  (candidate overriding method specificationCOVRMS とす

る。

1)  COVRMS の<メソッド名>と MN とが等価である。

2)  COVRMS と OVMS とが,同じ個数 の SQL パラメタをもつ。

3)  COVRMS の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタを PCOVRMSi,1 ≤ i ≤

とする。OVMS の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタを POVMSi
1 ≤ i ≤ とする。

4) 1 から までの範囲の に対して,PCOVRMSi の宣言型を TYPE1 として,及び POVMSi 

宣言型を TYPE2 として,“9.20  データ型の同一性”の構文規則を適用する。


591

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

ii)  候補置換メソッド指定の個数を NOVMS とする。1 から NOVMS までの範囲の に対して,

目の候補置換メソッド指定を COVRMSi とする。 
場合:

1)  COVRMSi が の真上位型の記述子に含まれるならば,ROVMS は,COVRMSi の<戻りデー

タ型

>の下位型でなければならない。

2)  そうでなければ,ROVMS は,COVRMSi の<戻りデータ型>の上位型でなければならない。

b)  そうでなければ,RCOMS を TYPE1 として,及び ROVMS を TYPE2 として,

9.20  データ型の同

一性”の構文規則を適用する。

14)  次の全てが真となるようなメソッド指定で,の記述子に含まれる置換メソッド指定を衝突する置

換メソッド指定  (conflicting overriding method specificationCOVMS とする。

a)  MN と COVMS のメソッド名とが等価である。

b)  COVMS の拡張された SQL パラメタ宣言リストが 個の要素を含む。

c) 2 から までの範囲の に対して,SQL パラメタ POVMSi-

1

のデータ型と COVMS の SQL パラメ

タ PCOVMSi-

1

とが互換である。

15)  衝突する置換メソッド指定が存在してはならない。

16)  OVMS の拡張された SQL パラメタ宣言リスト ASPDL が,

SELF と名付けられた)1 番目のパラメ

タの

<データ型>を<スキーマ解決利用者定義型名> DN に置き換えることによって,COMS の拡張さ

れた

SQL パラメタ宣言リストから形成される。

17)  次の全ての条件を満たす SQL 呼出し関数 が存在してはならない。

a)  が SQL 呼出しメソッドでない。

b)  の<ルーチン名>と<ルーチン名> MS とが,等価な<被修飾識別子>をもつ。

c)

ASPDL 中の SQL パラメタの個数を NPF とする。が NPF 個の SQL パラメタをもつ。

d)  が,の 1 番目の SQL パラメタの宣言型の下位型又は上位型である。

e)

ASPDL 中の 番目の SQL パラメタの宣言型,2 ≤ i ≤ NPF が,の 番目の SQL パラメタの宣言

型と互換である。

18)  の記述子がメソッド指定記述子を含むならば,次による。

a)  の記述子に含まれるメソッド指定記述子 MSDi,1 ≤ i ≤ の個数を とする。

b) 1 から までの範囲の に対して,次による。

i)

MSDi に含まれる拡張された SQL パラメタ宣言リストに含まれる<SQL パラメタ宣言>の個数を

Ni とする。MSDi に含まれる 番目の<パラメタの型>を,PTij,1 ≤ j ≤ Ni とする。

ii)  次の条件のうちの少なくとも一つが偽でなければならない。

1)  MSDi に含まれる<ルーチン名>が MN と等価である。

2)  ASPDL が Ni 個の<SQL パラメタ宣言>をもつ。

3)  PTij,1 ≤ j ≤ Ni のデータ型が,MPDL の 番目の<SQL パラメタ宣言>のデータ型と互換であ

る。

4) CONSTRUCTOR が指定されたことを示す標識を MSDi が含まない。

アクセス規則

なし。 

一般規則

1)  の記述子を STDS とし,対応する原メソッド指定 COMS の記述子を DCMS とする。OVMS に対


592

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

して,メソッド指定記述子 DOMS が作成される。DOMS は,次の項目を含む。

a) <メソッド名> MN

b)  POVMS に含まれる<特定メソッド名>。

c)

メソッド指定が置換メソッド指定であることを示す標識。

d)  拡張された SQL パラメタ宣言リスト APDL

e)

APDL 中の全ての SQL パラメタに対して,

(あるならば,

DCMS に含まれる対応する SQL パラ

メタの位置付け子標識。

f)

POVMS に含まれる<戻りデータ型>。

g)  (あるならば,

DCMS に含まれる<結果 CAST FROM 型>。

h)  DCMS に含まれる<RETURNS 句>に含まれる位置付け子標識。

i)

DCMS に含まれる<言語名>。

j) <言語名>が SQL でないならば,DCMS に含まれる<パラメタ様式>。

k)  メソッドが決定的であるかどうかを示すための,DCMS に含まれる標識。

l)

(あるならば,)DCMS に含まれる SQL データアクセス指示。

m)  いずれかの引数がナル値のときにメソッドを呼び出さないほうがよいかどうかを示すための,

DCMS に含まれる標識。

n)  作成時刻印の値としての CURRENT_TIMESTAMP。

o)  最終変更時刻印の値としての CURRENT_TIMESTAMP。

2)  DOMS が STDS に追加される。

3)  の下位型の利用者定義型名を含む表記述子の個数を とする。

1 から までの範囲の に対して,次による。

a)  そのような 番目の表記述子に含まれる<表名>を TNi とする。

b)  TNi,及び COMS に含まれる<特定メソッド名>を指定する表/メソッド権限記述子の個数を 

する。

1 から までの範囲の に対して,次による。

i)

そのような 番目の表/メソッド権限記述子を TMPDj とする。

ii)  TNi,同じ動作・権限付与者・権限受領者及び同じ付与可能性,並びに OVMS に含まれる<特定

メソッド名

>を指定する新しい表/メソッド権限記述子が作成される。

iii)  TMPDj が削除される。

適合性規則

なし。 

11.58

<メソッド指定削除>

機能

<メソッド指定削除> (<drop method specification>)  は,利用者定義型からメソッド指定を取り除く。

形式

<メソッド指定削除> ::=

  DROP  <特定メソッド指定指示子> RESTRICT

<特定メソッド指定指示子> ::=

  [ INSTANCE | STATIC | CONSTRUCTOR ]

      METHOD  <メソッド名> <データ型リスト>

構文規則


593

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

1) <メソッド指定削除> DORMS を含む<型変更文>に直に含まれる<スキーマ解決利用者定義型名> DN

によって識別される利用者定義型を とする。DN の陽に指定されるか又は暗に想定される<スキー

マ名

>を DSN とする。DORMS に直に含まれる<特定メソッド指定指示子>を SMSD とする。

2)  SMSD が<特定メソッド名> SMN を直に含むならば,次による。

a)  SMN が<スキーマ名>を含むならば,その<スキーマ名>は,DSN と等価でなければならない。そ

うでなければ,

<スキーマ名> DSN が暗に想定される。

b)  の記述子は,特定メソッド名が SMN と等価であるメソッド指定記述子 DOOMS を含まなけれ

ばならない。

c)

DOOMS に含まれる拡張されたパラメタリストを PDL とする。

d)  DOOMS に含まれる<メソッド名>を MN とする。

3)  SMSD が<メソッド名> ME を直に含むならば,次による。

a) INSTANCE,STATIC 又は CONSTRUCTOR のどれも,SMSD に直に含まれないならば,INSTANCE

が暗に想定される。

b)  の記述子は,メソッド名 MN が ME と等価であるメソッド指定記述子 DOOMS を含まなければ

ならない。

c)

SMSD が<データ型リスト> DTL を直に含むならば,次による。

場合:

i) STATIC が指定されるならば,の記述子は,次の項目を含むただ一つのメソッド指定記述子

DOOMS を含まなければならない。

1)  メソッド指定が STATIC であることを示す標識。

2)  メソッド指定が原メソッド指定であることを示す標識。

3)  全ての に対して,番目のパラメタの宣言型が,DTL 中の 番目の宣言型と同一であるよう

な拡張されたパラメタリスト PDL

ii) CONSTRUCTOR が指定されるならば,の記述子は,次の項目を含むただ一つのメソッド指定

記述子 DOOMS を含まなければならない。

1)  メソッド指定が CONSTRUCTOR であることを示す標識。

2)  メソッド指定が原メソッド指定であることを示す標識。

3)  全ての i > 1 に対して,

番目のパラメタの宣言型が,

DTL 中の  (i-1)  番目の宣言型と同一で,

かつ,

1 番目のパラメタの宣言型が DN と同一であるような拡張されたパラメタリスト PDL

iii)  そうでなければ,の記述子は,ただ一つのメソッド指定記述子 DOOMS を含まなければなら

ず,それに対して,次による。

1)  メソッド指定が原メソッド指定であることを示す標識を DOOMS が含むならば,

DOOMS は,

メソッド指定が

STATIC 又は CONSTRUCTOR のいずれかであることを示す標識を含んでは

ならない。

2)  DOOMS は,全ての i > 1 に対して,番目のパラメタの宣言型が,DTL 中の  (i-1)  番目の宣

言型と同一で,かつ,

1 番目のパラメタの宣言型が DN と同一であるような拡張されたパラ

メタリスト PDL を含む。

d)  SMSD が<データ型リスト>を直に含まないならば,次による。

場合:

i) STATIC が指定されるならば,の記述子は,メソッド指定が原メソッド指定であること及び


594

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

STATIC であることを示す両方の標識を含むただ一つのメソッド指定記述子 DOOMS を含まな

ければならない。

ii) CONSTRUCTOR が指定されるならば,の記述子は,メソッド指定が原メソッド指定であるこ

と及び

CONSTRUCTOR であることを示す両方の標識を含むただ一つのメソッド指定記述子

DOOMS を含まなければならない。

iii)  そうでなければ,の記述子は,ただ一つのメソッド指定記述子 DOOMS を含まなければなら

ず,それに対して,メソッド指定が原メソッド指定であることを示す標識を DOOMS が含むな

らば,DOOMS は,メソッド指定が STATIC 又は CONSTRUCTOR のいずれかであることを示す

標識を含んではならない。

4)  場合:

a)  メソッド指定が原メソッド指定であること示す標識を DOOMS が含むならば,次による。

場合:

i)

メソッド指定が

STATIC を指定したことを示す標識を DOOMS が含むならば,次の全ての条件

を満たす

SQL 呼出し関数 が存在してはならない。

1)  の<ルーチン名>と MN とが,等価な<被修飾識別子>をもつ。

2)  が PDL の要素の個数ならば,が 個の SQL パラメタをもつ。

3)  の 1 番目の SQL パラメタの宣言型が である。

4)  PDL の 番目の要素の宣言型,1 ≤ i ≤ が,の SQL パラメタ Pi の宣言型と互換である。

5)  が SQL 呼出しメソッドである。

6) STATIC が指定されたことを示す標識を が含む。

ii)  メソッド指定が CONSTRUCTOR を指定したことを示す標識を DOOMS が含むならば,次の全

ての条件を満たす

SQL 呼出し関数 が存在してはならない。

1)  の<ルーチン名>と MN とが,等価な<被修飾識別子>をもつ。

2)  が PDL の要素の個数ならば,が 個の SQL パラメタをもつ。

3)  の 1 番目の SQL パラメタの宣言型が である。

4)  PDL の 番目の要素の宣言型,2 ≤ i ≤ が,の SQL パラメタ Pi の宣言型と互換である。

5)  が SQL 呼出しメソッドである。

6) CONSTRUCTOR が指定されたことを示す標識を が含む。

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

1)  次の全てが真となるような置換メソッド指定の記述子 DOVMS を記述子が含む,の真下位

型 PSBD が存在してはならない。

A)  MN と,DOVMS に含まれる<メソッド名>とが,等価な<被修飾識別子>をもつ。

B)  が PDL の要素の個数ならば,DOVMS に含まれる拡張された SQL パラメタ宣言リスト

APDL が,個の SQL パラメタをもつ。

C)  PSBD が,APDL の 1 番目の SQL パラメタの宣言型である。

D)  PDL の 番目の要素の宣言型,2 ≤ i ≤ が,APDL の SQL パラメタ Pi の宣言型と互換であ

る。

2)  次の全ての条件を満たす SQL 呼出し関数 が存在してはならない。

A)  の<ルーチン名>と MN とが,等価な<被修飾識別子>をもつ。

B)  が PDL の要素の個数ならば,が 個の SQL パラメタをもつ。


595

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

C)  の 1 番目の SQL パラメタの宣言型が である。

D)  PDL の 番目の要素の宣言型,2 ≤ i ≤ が,の SQL パラメタ Pi の宣言型と互換である。

E)  が SQL 呼出しメソッドである。

F) STATIC 又は CONSTRUCTOR のいずれかが指定されたことを示す標識を が含まない。

b)  そうでなければ,次の全ての条件を満たす SQL 呼出し関数 が存在してはならない。

i)

の<ルーチン名>と MN とが,等価な<被修飾識別子>をもつ。

ii)  が PDL の要素の個数ならば,が 個の SQL パラメタをもつ。

iii)  の 1 番目の SQL パラメタの宣言型が である。

iv)  PDL の 番目の要素の宣言型,2 ≤ i ≤ が,の SQL パラメタ Pi の宣言型と互換である。

v)  が SQL 呼出しメソッドである。

vi) STATIC 又は CONSTRUCTOR のいずれかが指定されたことを示す標識を が含まない。

アクセス規則

なし。 

一般規則

1)  の記述子を STDS とする。

2)  DOOMS が STDS から取り除かれる。

3)  DOOMS が破壊される。

適合性規則

なし。 

11.59

<データ型削除文>

この細分箇条は,ISO/IEC 9075-4 の“9.23 <データ型削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13 の“9.7 <データ型削除文>”によって修正される。 

機能

<データ型削除文> (<drop data type statement>)  は,利用者定義型を破壊する。

形式

<データ型削除文> ::=

  DROP  TYPE  <スキーマ解決利用者定義型名> <削除動作>

構文規則

1) <スキーマ解決利用者定義型名>を DN とし,DN によって識別されるデータ型を とする。の上

位型を SD とする。

2)  被参照型が である参照型を RD とする。RD の上位型を SRD とする。要素型が である集まり型

を AD とする。要素型が,又は RD の上位型である集まり型 SAD とする。

3)  DN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,の記

述子を含んでいなければならない。

4) RESTRICT が指定されるならば,次による。

a)  記述子が の記述子に含まれないどの列,フィールド又は属性の宣言型も,SRD 又は SAD であ

ってはならない。

b)  どの列,属性又はフィールドの宣言型も,を基にしていてはならない。

c)

は,真下位型をもっていてはならない。

d)  は,参照可能表の構造型であってはならない。


596

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

e)

の利用者定義型記述子に含まれる変換記述子は,変換グループの空のリストを含まなければな

らない。

f)

次のいずれかの中で,DRD 及び AD が参照されていてはならない。

i)

ビュー記述子の元の

<問合せ式>。

ii)  制約記述子の<探索条件>。

iii)  トリガ記述子の被トリガ動作。

iv)  利用者定義型変換記述子。

v)

04

 自体の記述子以外の利用者定義型記述子。

g)  に依存していない SQL 呼出しルーチンで,ルーチン記述子が DRD 若しくは AD の記述子を

含むか又は

SQL ルーチン本体が DRD 若しくは AD を参照する SQL 呼出しルーチンが存在して

はならない。

h)  に依存している SQL 呼出しルーチンで,ルーチン記述子が 又は RD の記述子を含む SQL 呼

出しルーチンを とする。

i)

は,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>

又は

<メソッド参照>の当該ルーチンであってはならない。

1)  ルーチン記述子の SQL ルーチン本体。

2)  ビュー記述子の元の<問合せ式>。

3)  制約記述子の<探索条件>。

4)

04

  トリガ記述子の被トリガ動作。

ii)  の特定名は,どの利用者定義型変換記述子にも含まれていてはならない。

iii)  は,いずれかの利用者定義型の記述子に含まれる順序付け関数であってはならない。

注記 418 CASCADE が指定されるならば,このような参照されているオブジェクト及び依存して

いるオブジェクトは,この細分箇条の一般規則で規定している

SQL スキーマ操作文によ

って陽に,及び/又は

<REVOKE 文>の実行によって暗に削除される。

注記 419  利用者定義型に依存している SQL 呼出しルーチンの概念は,“4.28 SQL 呼出しルーチ

ン”で定義している。

注記 420  あるデータ型が別のデータ型を基にするという概念は,“4.1  データ型”で定義してい

る。

アクセス規則

1)  与えられた認可識別子は,の暗に想定されるか又は陽に指定される<スキーマ名>によって識別さ

れるスキーマを所有する

<認可識別子>を含まなければならない。

一般規則

1)  DRD 若しくは AD を参照するか又はルーチン記述子が DRD 若しくは AD の記述子を含み,か

つ,に依存していない<SQL 呼出しルーチン>の<特定名>を SN とする。そのような各<SQL 呼出

しルーチン

>に対して,これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に

実行される。

DROP SPECIFIC ROUTINE SN CASCADE

注記 421  利用者定義型に依存している SQL 呼出しルーチンの概念は,“4.28 SQL 呼出しルーチ

ン”で定義している。

2)  これ以上のアクセス規則の検査なしで,次の<変換削除文>が実効的に実行される。


597

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

DROP TRANSFORM ALL FOR DN CASCADE

注記 422  削除される変換に依存しているどの外部ルーチンも,変換が定義されているデータ型に

も依存しており,したがって,一般規則 1)のために既に削除されているはずなので,こ

の規則は,どんな効果も与えないことが望ましい。

3)  変換元データ型として DN を参照する利用者定義型変換記述子を UDCD とする。UDCD に含まれる

相手データ型を TD とする。これ以上のアクセス規則の検査なしで,次の<利用者定義型変換削除文

>が実効的に実行される。

DROP CAST ( DN AS TD ) CASCADE

4)  相手データ型として DN を参照する利用者定義型変換記述子を UDCD とする。UDCD に含まれる変

換元データを SD とする。これ以上のアクセス規則の検査なしで,次の<利用者定義型変換削除文>

が実効的に実行される。

DROP CAST ( SD AS DN ) CASCADE

5)  被参照型が DN である参照型を変換元データ型として参照する利用者定義型変換記述子を UDCD 

する。UDCD に含まれる相手データ型を TD とする。これ以上のアクセス規則の検査なしで,次の<

利用者定義型変換削除文

>が実効的に実行される。

DROP CAST ( REF (DN) AS TD ) CASCADE

6)  被参照型が DN である参照型を相手データ型として参照する利用者定義型変換記述子を UDCD とす

る。UDCD に含まれる変換元データ型を SD とする。これ以上のアクセス規則の検査なしで,次の<

利用者定義型変換削除文

>が実効的に実行される。

DROP CAST ( SD AS REF (DN) ) CASCADE

7)  を参照するどの権限記述子に対しても,次の<REVOKE 文>が実効的に実行される。

REVOKE PRIV ON TYPE D FROM GRANTEE CASCADE

ここで,PRIV 及び GRANTEE は,それぞれ,権限記述子中の動作及び権限受領者とする。

8)  に依存しているどの SQL 呼出しルーチンの記述子も,破壊される。

注記 423  利用者定義型に依存している SQL 呼出しルーチンの概念は,“4.28 SQL 呼出しルーチ

ン”で定義している。

9)  の記述子が破壊される。

適合性規則

1)  機能 F032“CASCADE 削除動作”なしでは,適合する SQL 言語は,CASCADE を含む<削除動作>

を含む

<データ型削除文>を含んではならない。

11.60

<SQL 呼出しルーチン>

この細分箇条は,ISO/IEC 9075-4 の“9.24 <SQL 呼出しルーチン>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“11.10 <SQL 呼出しルーチン>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13 の“9.8 <SQL 呼出しルーチン>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“12.8 <SQL 呼出しルーチン>”によって修正される。 

機能

<SQL 呼出しルーチン> (<SQL-invoked routine>)  は,SQL 呼出しルーチンを定義する。

形式

04

 <SQL 呼出しルーチン> ::=

  <スキーマルーチン>


598

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

<スキーマルーチン> ::=

  <スキーマ手続>

|  <スキーマ関数>

<スキーマ手続> ::=

  CREATE  <SQL 呼出し手続>

<スキーマ関数> ::=

  CREATE  <SQL 呼出し関数>

<SQL 呼出し手続> ::=

  PROCEDURE  <スキーマ修飾付きルーチン名> <SQL パラメタ宣言リスト>

    <ルーチン特性の並び>

    <ルーチン本体>

<SQL 呼出し関数> ::=

  {  <関数指定> | <メソッド指定指示子> } <ルーチン本体>

<SQL パラメタ宣言リスト> ::=

  <左括弧> [ <SQL パラメタ宣言>

    [  {  <コンマ> <SQL パラメタ宣言> }... ] ] <右括弧>

14

 <SQL パラメタ宣言> ::=

  [  <パラメタモード> ]

    [  <SQL パラメタ名> ]

    <パラメタの型> [ RESULT ]

    [  DEFAULT  <パラメタ既定値> ]

<パラメタ既定値> ::=

  <値式>

 |

<文脈型付き値指定>

<パラメタモード> ::=

  IN

 |

OUT

 |

INOUT

14

 <パラメタの型> ::=

  <データ型> [ <位置付け子標識> ]

<位置付け子標識> ::=

  AS  LOCATOR

<関数指定> ::=

  FUNCTION  <スキーマ修飾付きルーチン名> <SQL パラメタ宣言リスト>

    <RETURNS 句>

    <ルーチン特性の並び>

    [  <DISPATCH 句> ]

<メソッド指定指示子> ::=

  SPECIFIC  METHOD  <特定メソッド名>

| [ INSTANCE | STATIC | CONSTRUCTOR ]


599

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

      METHOD  <メソッド名> <SQL パラメタ宣言リスト>

      [  <RETURNS 句> ]

      FOR  <スキーマ解決利用者定義型名>

<ルーチン特性の並び> ::=

  [  <ルーチン特性>... ]

<ルーチン特性> ::=

  <LANGUAGE 句>

| <PARAMETER STYLE 句>

| SPECIFIC <特定名>

 |

<決定的特性>

 |

<SQL データアクセス指示>

 |

<ナル呼出し句>

 |

<戻り結果集合特性>

 |

<保存点水準指示>

<保存点水準指示> ::=

  NEW  SAVEPOINT  LEVEL

| OLD SAVEPOINT LEVEL

<戻り結果集合特性> ::=

  DYNAMIC RESULT SETS <戻り結果集合最大数>

<PARAMETER STYLE 句> ::=

  PARAMETER  STYLE  <パラメタ様式>

<DISPATCH 句> ::=

  STATIC  DISPATCH

14

 <RETURNS 句> ::=

  RETURNS  <戻り型>

<戻り型> ::=

  <戻りデータ型> [ <結果型変換> ]

 |

<戻り TABLE 型>

<戻り TABLE 型> ::=

  TABLE  <表関数列リスト>

<表関数列リスト> ::=

  <左括弧> <表関数列リスト要素>

      [ { <コンマ> <表関数列リスト要素> }... ] <右括弧>

<表関数列リスト要素> ::=

  <列名> <データ型>

<結果型変換> ::=

  CAST  FROM  <結果 CAST FROM 型>

<結果 CAST FROM 型> ::=

  <データ型> [ <位置付け子標識> ]

14

 <戻りデータ型> ::=


600

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

  <データ型> [ <位置付け子標識> ]

<ルーチン本体> ::=

  <SQL ルーチン指定>

 |

<外部本体参照>

<SQL ルーチン指定> ::=

  [  <権利句> ] <SQL ルーチン本体>

<権利句> ::=

  SQL  SECURITY  INVOKER

| SQL SECURITY DEFINER

<SQL ルーチン本体> ::=

  <SQL 手続文>

<外部本体参照> ::=

  EXTERNAL [ NAME <外部ルーチン名> ]

      [  <PARAMETER  STYLE 句> ]

      [ <変換グループ指定> ]

      [  <EXTERNAL  SECURITY 句> ]

<EXTERNAL SECURITY 句> ::=

  EXTERNAL  SECURITY  DEFINER

| EXTERNAL SECURITY INVOKER

| EXTERNAL SECURITY IMPLEMENTATION DEFINED

13

 <パラメタ様式> ::=

  SQL

 |

GENERAL

<決定的特性> ::=

  DETERMINISTIC

| NOT DETERMINISTIC

<SQL データアクセス指示> ::=

  NO  SQL

| CONTAINS SQL

| READS SQL DATA

| MODIFIES SQL DATA

<ナル呼出し句> ::=

  RETURNS NULL ON NULL INPUT

| CALLED ON NULL INPUT

<戻り結果集合最大数> ::=

  <符号なし整数>

<変換グループ指定> ::=

  TRANSFORM GROUP { <単一グループ指定> | <複数グループ指定> }

<単一グループ指定> ::=

  <グループ名>


601

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

<複数グループ指定> ::=

  <グループ指定> [ { <コンマ> <グループ指定> }... ]

<グループ指定> ::=

  <グループ名> FOR TYPE <パス解決利用者定義型名>

構文規則

1)

09

 <SQL 呼出しルーチン>は,SQL 呼出しルーチン  (SQL-invoked routine)  を指定する。<SQL 呼出し

ルーチン

>によって指定される SQL 呼出しルーチンを とする。

2) <SQL 呼出しルーチン>が<スキーマルーチン>を直に含むならば,<スキーマ修飾付きルーチン名>

によって識別される

SQL 呼出しルーチンは,スキーマレベルルーチン  (schema-level routine)  とする。

3)

13

 <SQL 呼出し手続>として指定される<SQL 呼出しルーチン>を,SQL 呼出し手続  (SQL-invoked 

procedure)  と呼ぶ。<SQL 呼出し関数>として指定される<SQL 呼出しルーチン>を,SQL 呼出し関数

(SQL-invoked function)  と呼ぶ。<メソッド指定指示子>を指定する<SQL 呼出し関数>を,更に,SQL

呼出しメソッド  (SQL-invoked method)  と呼ぶ。STATIC を指定する SQL 呼出しメソッドを静的 SQL

呼出しメソッド  (static SQL-invoked method)  と呼ぶ。CONSTRUCTOR を指定する SQL 呼出しメソッ

ドを SQL 呼出し構成メソッド  (SQL-invoked constructor method)  と呼ぶ。

4) <戻り型> RST が TABLE を指定するならば,<戻り TABLE 型>に含まれる<表関数列リスト>を TCL

とする。

a)  TCL に含まれるどの<列名> CN に対しても,CN は,TCL に含まれる他のどの<列名>とも等価で

あってはならない。

b)  RST は,次の<戻り型>と等価とする。

ROW TCL MULTISET

5) <SQL 呼出しルーチン>が SQL 呼出しメソッドを指定するならば,次による。

場合:

a) <特定メソッド名> SMN が指定されるならば,次による。

i)

場合:

1)  SMN が<スキーマ名>を含まないならば,次による。

場合:

A) <SQL 呼出しルーチン>が<スキーマ定義>に含まれるならば,<スキーマ定義>中で指定され

るか又は暗に想定される

<スキーマ名>が暗に想定される。

B)  そうでなければ,<SQL クライアントモジュール定義>中で指定されるか又は暗に想定され

<スキーマ名>が暗に想定される。

2)  そうでなければ,<SQL 呼出しルーチン>が<スキーマ定義>に含まれるならば,SMN に含ま

れる

<スキーマ名>は,<SQL 呼出しルーチン>を含む<スキーマ定義>の指定されるか又は暗に

想定される

<スキーマ名>と等価でなければならない。

ii)  SMN の暗に想定されるか又は陽に指定される<スキーマ名>によって識別されるスキーマを S

とする。

iii)  に含まれる利用者定義型を UDT とする。UDT の記述子に含まれ,かつ,<特定メソッド名>

が SMN であるメソッド指定記述子 DMS が存在しなければならない。

iv)  DMS 中の非拡張 SQL パラメタ宣言リスト中の SQL パラメタの個数を MN とする。MN は,R

の非拡張

SQL パラメタ宣言リスト中の SQL パラメタの個数とする。


602

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

v)  DMS が<結果型変換> RC を含むならば,RC は,の<結果型変換>とする。

vi)  DMS 中の<特定メソッド名>を SPN とする。SPN は,の<特定名>とする。

vii)  DMS の拡張された SQL パラメタ宣言リストを NPL とする。NPL は,の拡張された SQL パ

ラメタ宣言リストとする。

viiiSN.<メソッド名>を RN とする。ここで,SN は,UDT の記述子を含むスキーマの<スキーマ名

>とする。

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

i)

13

  <メソッド指定指示子>に直に含まれる<スキーマ解決利用者定義型名>を UDTN とする。

UDTN によって識別される利用者定義型を UDT とする。

ii)  DMS の<メソッド名>が<メソッド名>と等価で,DMS が STATIC を示すことが<メソッド指定指

示子

>が STATIC を指定することと同値で,DMS が CONSTRUCTOR を示すことが<メソッド指

定指示子

>が CONSTRUCTOR を指定することと同値で,かつ,DMS 中の非拡張 SQL パラメタ

宣言リスト中のどの

SQL パラメタの宣言型も,<メソッド指定指示子>に含まれる<SQL パラメ

タ宣言リスト

>中の対応する SQL パラメタの宣言型と互換であるようなメソッド指定記述子

DMS が,UDT の記述子中に存在しなければならない。DMS は,<メソッド指定指示子>の対応

するメソッド指定を識別する。

iii)  DMS 中の非拡張 SQL パラメタ宣言リスト中の SQL パラメタの個数を MN とする。

iv)  DMS の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタを,PCOMSi,1 ≤ i ≤ MN 

する。

<メソッド指定指示子>に含まれる 番目の SQL パラメタを,POVMSi,1 ≤ i ≤ MN とす

る。

v) 1 から MN までの範囲の に対して,PCOMSi 及び POVMSi に含まれる<SQL パラメタ名>は,

等価でなければならない。

vi)  DMS 中の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタの宣言型を,PDMSi,1 ≤

i ≤ MN とする。<メソッド指定指示子>に含まれる 番目の SQL パラメタの宣言型を PSMi とす
る。

vii) 1 から MN まで範囲の に対して,PDMSi を TYPE1 として,PSMi を TYPE2 として,“9.20  デ

ータ型の同一性”の構文規則を適用する。

viii) 場合:

1) <RETURNS 句>が指定されるならば,の<戻りデータ型>を RT とする。DMS 中の<戻りデ

ータ型

>を RDMS とする。RT を TYPE1 として,RDMS を TYPE2 として,“9.20  データ型の

同一性”の構文規則を適用する。

2)  そうでなければ,の<戻りデータ型>を RDMS とする。

ix)  DMS が<結果型変換> RC を含むならば,次による。

場合:

1) <RETURNS 句>が指定されるならば,<RETURNS 句>は,<結果型変換>を含まなければなら

ない。RC 中に指定される<データ型>を RDCT とする。<RETURNS 句>に含まれる<結果型変

>中に指定される<データ型>を RCT とする。RDCT を TYPE1 として,RCT を TYPE2 とし

て,“9.20  データ型の同一性”の構文規則を適用する。

2)  そうでなければ,RC は,の<結果型変換>とする。

x)  DMS 中の<特定メソッド名>を SPN とする。SPN は,の<特定名>とする。


603

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

xi)  DMS の拡張された SQL パラメタ宣言リストを NPL とする。

xii)  SN.<メソッド名>を RN とする。ここで,SN は,UDT の記述子を含むスキーマの<スキーマ名

>とする。

6) <SQL 呼出しルーチン>が SQL 呼出し手続又は SQL 呼出し通常関数を指定するならば,次による。

a)

13

 <ルーチン特性の並び>は,高々一つの<LANGUAGE 句>,高々一つの<PARAMETER STYLE 句

>,高々一つの<特定名>,高々一つの<決定的特性>,高々一つの<SQL データアクセス指示>,高々

一つの

<ナル呼出し句>,及び高々一つの<戻り結果集合特性>を含まなければならない。

b) <PARAMETER

STYLE 句>は,<ルーチン特性の並び>及び<外部本体参照>の両方中に指定しては

ならない。

c) <関数指定>の<ルーチン特性の並び>は,<戻り結果集合特性>を含んではならない。

d) SQL 呼出しルーチンが SQL 呼出し手続で,かつ,<戻り結果集合特性>が指定されないならば,

DYNAMIC RESULT SETS 0 が暗に想定される。

e) <決定的特性>が指定されないならば,NOT DETERMINISTIC が暗に想定される。

f)

場合:

i) PROCEDURE が指定されるならば,次による。

1) <ナル呼出し句>を指定してはならない。

2) <ルーチン特性の並び>は,二つ以上の<保存点水準指示>を含んではならない。

ii)  そうでなければ,<ナル呼出し句>が指定されないならば,CALLED ON NULL INPUT が暗に想

定される。

g) <SQL データアクセス指示>を指定しなければならない。

h)

04

 <LANGUAGE 句>が指定されないならば,LANGUAGE SQL が暗に想定される。

i)

13

 LANGUAGE SQL を指定するか又は暗に想定する<SQL 呼出しルーチン>を SQL ルーチン  (SQL 

routine)  と呼ぶ。LANGUAGE SQL を指定しない<SQL 呼出しルーチン>を外部ルーチン  (external 

routine)  と呼ぶ。

j) <保存点水準指示>が指定されるならば,PROCEDURE を指定しなければならない。

k) PROCEDURE が指定され,かつ,<保存点水準指示>が指定されないならば,OLD SAVEPOINT

LEVEL が暗に想定される。

l) NEW

SAVEPOINT

LEVEL が指定されるならば,MODIFIES SQL DATA を指定しなければならない。

m)  が SQL ルーチンならば,次による。

i) <RETURNS 句>は,<結果型変換>を指定してはならない。

ii) <SQL データアクセス指示>は,NO SQL を指定してはならない。

iii) <PARAMETER

STYLE 句>を指定してはならない。

n)  配列戻し外部関数は,外部ルーチンで,かつ,次の条件のうちの一つを満たす SQL 呼出し関数と

する。

i) <配列型>又は元型が配列型の<パス解決利用者定義型名>を単純に含み,かつ,<位置付け子標

>を含まない<結果 CAST FROM 型>が指定される。

ii) <結果 CAST FROM 型>が指定されず,<戻りデータ型>が<配列型>又は元型が配列型の<パス解

決利用者定義型名

>を単純に含み,かつ,<位置付け子標識>を含まない。

o)  マルチ集合戻し外部関数は,外部ルーチンで,かつ,次の条件のうちの一つを満たす SQL 呼出し

関数とする。


604

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

i) <マルチ集合型>又は元型がマルチ集合型の<パス解決利用者定義型名>を単純に含み,かつ,<

位置付け子標識

>を含まない<結果 CAST FROM 型>が指定される。

ii) <結果 CAST FROM 型>が指定されず,<戻りデータ型>が<マルチ集合型>又は元型がマルチ集合

型の

<パス解決利用者定義型名>を単純に含み,かつ,<位置付け子標識>を含まない。

p)  の<スキーマ修飾付きルーチン名>を RN とする。

q)

04

 <SQL 呼出しルーチン>が<スキーマ定義>に含まれていて,かつ,RN が<スキーマ名> SN を含

むならば,SN は,<SQL 呼出しルーチン>を含む<スキーマ定義>の指定されるか又は暗に想定さ

れる

<スキーマ名>と等価でなければならない。SN によって識別される SQL スキーマを とする。

r)

場合:

i)

が SQL 呼出し通常関数で,かつ,次のうちの一つである<データ型>を指定する<SQL パラメ

タ宣言

>を<SQL パラメタ宣言リスト>が含むならば,<DISPATCH 句>を指定しなければならな

い。

1)  利用者定義型。

2)  要素型が利用者定義型である集まり型。

3)  要素型が参照型である集まり型。

4)  参照型。

ii)  そうでなければ,<DISPATCH 句>を指定してはならない。

s) <特定名>が指定されないならば,<スキーマ名>が の<スキーマ名>と等価である処理系依存の<

特定名

>が暗に想定される。

t) <特定名>が<スキーマ名>を含むならば,その<スキーマ名>は,の<スキーマ名>と等価でなけれ

ばならない。

<特定名>が<スキーマ名>を含まないならば,の<スキーマ名>が暗に想定される。

u) <特定名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

特定名が

<特定名>と等価であるルーチン記述子か,又は特定名が<特定名>と等価であるメソッド

指定記述子を含む利用者定義型記述子を含んでいてはならない。

v) <戻りデータ型> RT が<位置付け子標識>を単純に含むならば,次による。

i)

は,外部ルーチンでなければならない。

ii)  RT は,2 進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型

又は利用者定義型のいずれかでなければならない。

iii) <結果型変換>を指定してはならない。

w) <結果 CAST FROM 型> RCT が<位置付け子標識>を単純に含むならば,次による。

i)

は,外部ルーチンでなければならない。

ii)  RCT は,2 進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合

型又は利用者定義型のいずれかでなければならない。

x)  が外部ルーチンならば,次による。

i) <パラメタ様式>が指定されないならば,PARAMETER STYLE SQL が暗に想定される。

ii)

13

 が配列戻し外部関数又はマルチ集合戻し外部関数ならば,PARAMETER STYLE SQL が指定

されるか又は暗に想定されるかのいずれかでなければならない。

iii)

13

  場合:

1) <変換グループ指定>が指定されないならば,<SQL パラメタ宣言リスト>に含まれ,かつ,<

パラメタの型

>  UDT1 が<位置付け子標識>なしで利用者定義型を識別する各<SQL パラメタ


605

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

宣言

>に対して<グループ指定>  GS をもつ<複数グループ指定>が暗に想定される。GS の<グ

ループ名

>は,処理系定義とし,それの<パス解決利用者定義型名>は,UDT1 とする。

2) <グループ名>  GN をもつ<単一グループ指定>が指定されるならば,<変換グループ指定>は,

<SQL パラメタ宣言リスト>に含まれ,かつ,<パラメタの型> UDT1 が<位置付け子標識>なし

で利用者定義型を識別する各

<SQL パラメタ宣言>に対して<グループ指定>  GS を含む<複数

グループ指定

>を含む<変換グループ指定>と等価とする。GS の<グループ名>は,GN とし,

それの

<パス解決利用者定義型名>は,UDT1 とする。

3)  そうでなければ,<SQL パラメタ宣言リスト>に含まれ,<パラメタの型>  UDT1 が<位置付け

子標識

>なしで利用者定義型を識別し,かつ,UDT1 と等価なものが<複数グループ指定>に含

まれるどの

<グループ指定>にも含まれない各<SQL パラメタ宣言>に対する<グループ指定>

GS を付加して,<複数グループ指定>が拡張される。GS の<グループ名>は,処理系定義とし,

それの

<パス解決利用者定義型名>は,UDT1 とする。

iv) <結果型変換>が指定されるならば,<結果型変換>中で指定される<データ型>の値を とし,<

戻りデータ型

>を RT とする。次の CAST 指定が,“6.13 <CAST 指定>”の構文規則に従って正

しくなければならない。

CAST ( V AS RT )

y)

14

 <SQL 呼出しルーチン>に含まれる<SQL パラメタ宣言リスト>を NPL とする。

7)  NPL は,の SQL パラメタのリストを指定する。の各 SQL パラメタは,<SQL パラメタ宣言>に

よって指定される。

<SQL パラメタ名>が指定されるならば,のその SQL パラメタは,SQL パラ

メタ名によって識別される。

8)  NPL は,RESULT を指定する高々一つの<SQL パラメタ宣言>を指定しなければならない。

9)  が SQL 呼出し関数ならば,NPL 中のどの<SQL パラメタ宣言>も,<パラメタモード>又は<パラメ

タ既定値

>を含んではならない。

10)  が SQL ルーチンならば,NPL 中のどの<SQL パラメタ宣言>も,<SQL パラメタ名>を含まなけれ

ばならない。

11)  NPL に含まれるどの二つの<SQL パラメタ名>も,等価であってはならない。

12)  NPL に含まれる<SQL パラメタ宣言>の個数を 及び PN とする。どの<SQL パラメタ宣言> PDi,1

≤ i ≤ に対しても,次による。

a)  PDi に直に含まれる<パラメタの型> PTi は,ROW を指定してはならない。

b)  PTi が<位置付け子標識>を単純に含むならば,次による。

i)

は,外部ルーチンでなければならない。

ii)  PTi は,2 進オクテット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型

又は利用者定義型のいずれかを指定しなければならない。

c)

PDi が RESULT を直に含むならば,次による。

i)

は,SQL 呼出し関数でなければならない。

ii)  PTi は,構造型 ST を指定しなければならない。ST を識別する<利用者定義型名>を STN とする。

iii) <戻りデータ型>は,STN を指定しなければならない。

iv)  は,型保持関数とし,PDi は,の結果 SQL パラメタを指定する。

d)  PDi が<パラメタモード>を含まないならば,IN を指定する<パラメタモード>が暗に想定される。

e)

番目 SQL パラメタを Pi とする。


606

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

場合:

i) <パラメタモード>が IN を指定するならば,Pi は,入力 SQL パラメタとする。<パラメタ既定

PDi が指定されるならば,Pi を TARGET として,PDi を VALUE として,“9.2  格納代入”

の構文規則を適用する。

ii) <パラメタモード>が OUT を指定するならば,Pi は,出力 SQL パラメタとする。<パラメタ既

定値

>を指定してはならない。

iii) <パラメタモード>が INOUT を指定するならば,Pi は,入出力 SQL パラメタ(入力 SQL パラ

メタで,かつ,出力

SQL パラメタ)とする。<パラメタ既定値>を指定してはならない。

13)  RN の有効範囲は,の<ルーチン本体>とする。

14)  NPL に含まれる<SQL パラメタ名>の有効範囲は,NPL を含む<SQL 呼出し手続>又は<SQL 呼出し

関数

>の<ルーチン本体> RB とする。

15) <SQL 呼出しルーチン>は,<ホストパラメタ名>,<動的パラメタ指定>又は<埋込み変数名>を含ん

ではならない。

16)  場合:

a)  が SQL 呼出し手続ならば,は,<スキーマ修飾付きルーチン名>が RN と等価で,かつ,SQL

パラメタの個数が PN である別の SQL 呼出し手続を含んではならない。

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

i)

場合:

1)  が静的 SQL 呼出しメソッドならば,を含めて,<スキーマ修飾付きルーチン名>が RN 

等価で,かつ,

SQL パラメタの個数が PN である,型 UDT の全ての静的 SQL 呼出しメソッ

ドを含む集合を SCR とする。

2)  が SQL 呼出し構成メソッドならば,を含めて,<スキーマ修飾付きルーチン名>が RN 

等価で,かつ,

SQL パラメタの個数が PN である,型 UDT の全ての SQL 呼出し構成メソッ

ドを含む集合を SCR とする。

3)  そうでなければ,を含めて,<スキーマ修飾付きルーチン名>が RN と等価で,かつ,SQL

パラメタの個数が PN であり,静的 SQL 呼出しメソッドでも,SQL 呼出し構成メソッドでも

ない,中の全ての SQL 呼出し関数を含む集合を SCR とする。

ii)  任意に選択される値のリストから構成される<SQL 引数リスト>を AL とする。ここで,AL 中の

どの値 Ai の宣言型も,の対応する SQL パラメタ Pi の宣言型と互換とする。

iii)  どの Ai に対しても,SQL 呼出しルーチン SIR の SQL パラメタ Pi の宣言型の型指示子が Ai 

宣言型の型優先順序リスト中にない全ての SIR を SCR から取り除く。

iv) <SQL 引数リスト>を SQL  ARGUMENT  LIST として,SQL 呼出しルーチンの集合を SET  OF

SQL-INVOKED ROUTINES として,

9.6  当該ルーチン決定”の構文規則を適用する。これらの

構文規則の適用によって戻される SET OF SUBJECT ROUTINES を SR とする。

17)  が SQL 呼出しメソッドであるが,静的 SQL 呼出しメソッドでないならば,NPL の 1 番目の SQL

パラメタを,の当該パラメタ  (subject parameter)  と呼ぶ。

18)  が,利用者定義型である宣言型を 1 番目の SQL パラメタがもつ SQL 呼出し通常関数 ならば,

次による。

a)  の 1 番目の SQL パラメタの宣言型を UDT2 とする。

b)  次のような UDT2 の記述子中のインスタンスメソッドのメソッド指定記述子を DMS とする。


607

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

i)

の<スキーマ修飾付きルーチン名>と DMS の<ルーチン名>とが,等価な<被修飾識別子>をも

つ。

ii)  と,DMS の拡張された SQL パラメタ宣言リストとが,同じ個数の SQL パラメタをもつ。

c)

DMS 中の非拡張 SQL パラメタ宣言リスト中の 番目の SQL パラメタの宣言型を PDMSi,1 ≤ i ≤

PN-1  とし,<関数指定>に含まれる 番目の SQL パラメタの宣言型を PMSi,1 ≤ i ≤ PN とする。

d)  次の条件のうちの一つが偽でなければならない。

i)

PDMSi,1 ≤ i ≤ PN-1 の宣言型が SQL パラメタ PMSi+

1

の宣言型と互換である。

ii)  UDT2  が,PMS

1

の宣言型の下位型又は上位型である。

19)  が SQL ルーチンならば,次による。

a) <SQL ルーチン指定>を指定しなければならない。

b) <権利句>が指定されないならば,SQL SECURITY DEFINER が暗に想定される。

c) READS

SQL

DATA が指定されるならば,SQL データを潜在的に修正する SQL 文を<SQL ルーチ

ン本体

>が含んではならないかどうかは,処理系定義とする。

d) CONTAINS

SQL が指定されるならば,SQL データを潜在的に読むか又は SQL データを潜在的に

修正する

SQL 文を<SQL ルーチン本体>が含んではならないかどうかは,処理系定義とする。

e) DETERMINISTIC が指定されるならば,潜在的に非決定的である<SQL 手続文>を<SQL ルーチン

本体

>が含んではならないかどうかは,処理系定義とする。

f) <SQL コネクション文>,<SQL スキーマ文>,<動的 SQL 文>,又は<SAVEPOINT 文>,<RELEASE

SAVEPOINT 文>若しくは<SAVEPOINT 句>を指定する<ROLLBACK 文>以外の<SQL トランザクシ

ョン文

>を<SQL ルーチン本体>が含んではならないかどうかは,処理系定義とする。

注記 424  適合する SQL 言語は,<SQL コネクション文>,又は<SAVEPOINT 文>,<RELEASE

SAVEPOINT 文>若しくは<SAVEPOINT 句>を指定する<ROLLBACK 文>以外の<SQL ト

ランザクション文

>を含んではならないが,処理系は,これを構文誤りとして扱う必要

がない。

g) <SQL ルーチン本体>は,<スキーマ定義>を単純に含む<SQL 手続文>を直に含んではならない。

h)

04

 <SQL ルーチン本体>は,SQL クライアントモジュールの宣言局所一時表を識別する<表参照>

を単純に含む

<SQL 手続文>を直に含んではならない。

20)  が外部ルーチンならば,次による。

a) <SQL ルーチン指定>を指定してはならない。

b) <EXTERNAL

SECURITY 句>が指定されないならば,EXTERNAL SECURITY IMPLEMENTATION

DEFINED が暗に想定される。

c) <外部ルーチン名>が指定されないならば,の<被修飾識別子>と等価な<外部ルーチン名>が暗に

想定される。

d) PARAMETER

STYLE

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

i)

場合:

1)  が配列戻し外部関数又はマルチ集合戻し外部関数で,かつ,それの要素型が行型ならば,

要素型の次数を FRN とする。

2)  そうでなければ 1 を FRN とする。

ii)  が配列戻し外部関数又はマルチ集合戻し外部関数ならば,FRN+6 を AREF とする。そうでな

ければ,FRN+4 を AREF とする。


608

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

iii)  が SQL 呼出し関数ならば,次のとおりの,PN+FRN+N+AREF 個の SQL パラメタのリストを

実効的 SQL パラメタリスト  (effective SQL parameter list)  とする。

1) 1 から PN までの範囲の に対して,番目の  実効的 SQL パラメタリスト項目が次のとおり

に定義される。

場合:

A)

14

 番目の<SQL パラメタ宣言>に単純に含まれる<パラメタの型> Ti が<位置付け子標識>を

含むならば,番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を INTEGER に

よって置き換えた 番目の<SQL パラメタ宣言>とする。

B)  番目の<SQL パラメタ宣言>に直に含まれる<パラメタの型> Ti が,<位置付け子標識>なし

<パス解決利用者定義型名>ならば,次による。

I)

場合:

1)  が,置換メソッドである SQL 呼出しメソッドならば,を ROUTINE として,

POSITION として,“9.22  置換メソッドのための FROM-SQL 関数の決定”の構文規

則を適用する。適用可能な

FROM-SQL 関数 FSFi が存在しなければならない。

2)  そうでなければ,Ti によって識別されるデータ型を TYPE として,Ti を含む<グルー

プ指定

>に含まれる<グループ名>を GROUP として,“9.21 FROM-SQL 関数の決定”

の構文規則を適用する。適用可能な

FROM-SQL 関数 FSFi が存在しなければならない。

II)  FSFi を,番目の SQL パラメタに関連付けられた FROM-SQL 関数  (from-sql function 

associated with the i-th SQL parameter)  と呼ぶ。

III)  番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を FSFi の<戻りデータ型>

によって置き換えた 番目の<SQL パラメタ宣言>とする。

C)  そうでなければ,番目の実効的 SQL パラメタリスト項目は,番目の<SQL パラメタ宣言

>とする。

2)  場合:

A)  FRN が 1 ならば,PN+FRN 番目の実効的 SQL パラメタリスト項目は,<パラメタモード>

OUT をもつ。その項目の<パラメタの型> PT は,次のとおりに定義される。

I) <結果型変換>が指定されるならば,<結果 CAST FROM 型>を RT とする。そうでなけれ

ば,

<戻りデータ型>を RT とする。

II)  場合:

1)

14

 RT が<位置付け子標識>を単純に含むならば,PT は,INTEGER とする。

2)  RT が,<位置付け子標識>なしで<パス解決利用者定義型名>を指定するならば,次に

よる。

a)  場合:

i)

が,置換メソッドである SQL 呼出しメソッドならば,を ROUTINE として,

9.24  置換メソッドのための TO-SQL 関数の決定”の構文規則を適用する。適用

可能な

TO-SQL 関数 TSF が存在しなければならない。

ii)  そうでなければ,RT によって識別されるデータ型を TYPE として,RT を含む<

グループ指定

>に含まれる<グループ名>を GROUP として,“9.23 TO-SQL 関数の

決定”の構文規則を適用する。適用可能な

TO-SQL 関数 TSF が存在しなければな

らない。


609

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

b)  TSF を,結果に関連付けられた TO-SQL 関数  (to-sql function)  と呼ぶ。

c)

場合:

i)

TSF が SQL 呼出しメソッドならば,PT は,TSF の 2 番目の SQL パラメタの<パ

ラメタの型

>とする。

ii)  そうでなければ,

PT は,

TSF の 1 番目の SQL パラメタの<パラメタの型>とする。

3)  が配列戻し外部関数又はマルチ集合戻し外部関数ならば,PT は,RT の要素型とす

る。

4)  そうでなければ, PT は,RT とする。

B)  そうでなければ,PN+1 から PN+FRN までの範囲の に対して,番目の実効的 SQL パラ

メタリスト項目は,次のとおりに定義される。

場合:

I)

それの

<パラメタモード>は,OUT とする。

II) <戻りデータ型>の要素型の i-PN 番目のフィールドのデータ型を RFTi

-

PN とする。番目

の実効的

SQL パラメタリスト項目の<パラメタの型> PTi は,次のとおりに決定される。

1)  RFTi

-

PN が<パス解決利用者定義型名>を指定するならば,次による。

a)  場合:

i)

が,置換メソッドである SQL 呼出しメソッドならば,を ROUTINE として,

9.24  置換メソッドのための TO-SQL 関数の決定”の構文規則を適用する。適用

可能な

TO-SQL 関数 TSF が存在しなければならない。

ii)  そうでなければ,RFTi

-

PN によって識別されるデータ型を TYPE として,RFTi

-

PN

を含む

<グループ指定>に含まれる<グループ名>を GROUP として,“9.23 TO-SQL

関数の決定”の構文規則を適用する。適用可能な

TO-SQL 関数 TSF が存在しなけ

ればならない。

b)  TSF を,RFTi

-

PN に関連付けられた TO-SQL 関数  と呼ぶ。

c)

場合:

i)

TSF が SQL 呼出しメソッドならば,PTi は,TSF の 2 番目の SQL パラメタの<パ
ラメタの型

>とする。

ii)  そうでなければ,

PTi は,TSF の 1 番目の SQL パラメタの<パラメタの型>とする。

2)

14

  そうでなければ,PTi は,RFTi

-

PN とする。

3) (PN+FRN)+1 番目から(PN+FRN)+N+FRN 番目までの実効的 SQL パラメタリスト項目は,位

取り

0 の真数型である処理系定義の<データ型>の SQL パラメタの N+FRN 個の実現値とする。

(PN+FRN)+1 から(PN+FRN)+N+FRN までの範囲の に対して,そのような 番目の実効的 SQL

パラメタの

<パラメタモード>は,i-FRN-PN 番目の実効的 SQL パラメタの<パラメタモード

>と同じとする。

4) (PN+FRN)+(N+FRN)+1 番目の実効的 SQL パラメタリスト項目は,

長さ

5 で,かつ,SQLSTATE

値に対して規定される文字集合の文字列である

<データ型>,及び<パラメタモード> INOUT

をもつ

SQL パラメタとする。

注記 425 SQLSTATE 値に対して規定される文字集合は,“24.1 SQLSTATE”で定義してい

る。

5) (PN+FRN)+(N+FRN)+2 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,か


610

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

つ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> IN をもつ SQL

パラメタとする。

6) (PN+FRN)+(N+FRN)+3 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,か

つ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> IN をもつ SQL

パラメタとする。

7) (PN+FRN)+(N+FRN)+4 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,か

つ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> INOUT をもつ

SQL パラメタとする。

8)  が配列戻し外部関数又はマルチ集合戻し外部関数ならば,次による。

A) (PN+FRN)+(N+FRN)+5 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,

かつ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> INOUT を

もつ

SQL パラメタとする。

B) (PN+FRN)+(N+FRN)+6 番目の実効的 SQL パラメタリスト項目は,位取り 0 の真数型であ

<データ型>,及び<パラメタモード> IN をもつ SQL パラメタとする。

iv)  が SQL 呼出し手続ならば,次のとおりの,PN+N+4 個の SQL パラメタのリストを実効的 SQL

パラメタリスト  とする。

1) 1 から PN までの範囲の に対して,番目の実効的 SQL パラメタリスト項目は,次のとおり

に定義される。

場合:

A)

14

 番目の<SQL パラメタ宣言>に単純に含まれる<パラメタの型> Ti が<位置付け子標識>を

単純に含むならば,i番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を INTEGER

によって置き換えた 番目の<SQL パラメタ宣言>とする。

B)  番目の<SQL パラメタ宣言>に単純に含まれる<パラメタの型>  Ti が,<位置付け子標識>

なしで

<パス解決利用者定義型名>ならば,次による。

I)

場合:

1)  番目の<SQL パラメタ宣言>に直に含まれる<パラメタモード>が IN ならば,

次による。

a)  Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれ

<グループ名>を GROUP として,“9.21 FROM-SQL 関数の決定”の構文規則を適

用する。適用可能な

FROM-SQL 関数 FSFi が存在しなければならない。FSFi を,i

番目の

SQL パラメタに関連付けられた FROM-SQL 関数  (from-sql function)  と呼ぶ。

b)  番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を FSFi の<戻りデータ

>によって置き換えた 番目の<SQL パラメタ宣言>とする。

2)  番目の<SQL パラメタ宣言>に直に含まれる<パラメタモード>が OUT ならば,次によ

る。

a)  Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれ

<グループ名>を GROUP として,“9.23 TO-SQL 関数の決定”の構文規則を適用

する。適用可能な

TO-SQL 関数 TSFi が存在しなければならない。TSFi を,番目の

SQL パラメタに関連付けられた TO-SQL 関数  (to-sql function associated with i-th SQL 

parameter)  と呼ぶ。

b)  番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を次の<パラメタの型>


611

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

によって置き換えた 番目の<SQL パラメタ宣言>とする。

場合:

i)

TSFi が SQL 呼出しメソッドならば,TSFi の 2 番目の SQL パラメタの<パラメタ
の型

>。

ii)  そうでなければ,TSFi の 1 番目の SQL パラメタの<パラメタの型>。

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

a)  Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれ

<グループ名>を GROUP として,“9.21 FROM-SQL 関数の決定”の構文規則を適

用する。適用可能な

FROM-SQL 関数 FSFi が存在しなければならない。FSFi を,i

番目の SQL パラメタに関連付けられた FROM-SQL 関数  と呼ぶ。

b)  Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれ

<グループ名>を GROUP として,“9.23 TO-SQL 関数の決定”の構文規則を適用

する。適用可能な

TO-SQL 関数 TSFi が存在しなければならない。TSFi を,番目の

SQL パラメタに関連付けられた TO-SQL 関数  と呼ぶ。

c)

番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を FSFi の<戻りデータ

>によって置き換えた 番目の<SQL パラメタ宣言>とする。

C)  そうでなければ,番目の実効的 SQL パラメタリスト項目は,番目の<SQL パラメタ宣言

>とする。

2)  PN+1 番目から PN+番目までの実効的 SQL パラメタリスト項目は,位取り 0 の真数型であ

る処理系定義の

<データ型>の SQL パラメタの 個の実現値とする。そのような 番目の実効

SQL パラメタの<パラメタモード>は,i-PN 番目の実効的 SQL パラメタの<パラメタモー

>と同じとする。

3) (PN+N)+1 番目の実効的 SQL パラメタリスト項目は,長さ 5 で,かつ,文字集合 SQL_TEXT

の文字列である

<データ型>,及び<パラメタモード> INOUT をもつ SQL パラメタとする。

4) (PN+N)+2 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,かつ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> IN をもつ SQL パラメタとす

る。

5) (PN+N)+3 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,かつ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> IN をもつ SQL パラメタとす

る。

6) (PN+N)+4 番目の実効的 SQL パラメタリスト項目は,処理系定義の長さで,かつ,文字集合

SQL_TEXT の文字列である<データ型>,及び<パラメタモード> INOUT をもつ SQL パラメタ

とする。

e)

13

 PARAMETER STYLE GENERAL が指定されるならば,1 から PN までの範囲の に対して,

目の実効的

SQL パラメタリスト項目が次のとおりに定義されるような PN 個のパラメタのリスト

を,

実効的 SQL パラメタリスト  とする。

場合:

i)

14

 番目の<SQL パラメタ宣言>に単純に含まれる<パラメタの型> Ti が<位置付け子標識>を単純

に含むならば,番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を INTEGER によ

って置き換えた 番目の<SQL パラメタ宣言>とする。


612

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

ii)  番目の<SQL パラメタ宣言>に単純に含まれる<パラメタの型> Ti が,<位置付け子標識>なしで

<パス解決利用者定義型名>ならば,次による。

1)  場合:

A)  番目の<SQL パラメタ宣言>に直に含まれる<パラメタモード>が IN ならば,次による。

I)

Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれる<
グループ名

>を GROUP として,“9.21 FROM-SQL 関数の決定”の構文規則を適用する。

適用可能な

FROM-SQL 関数 FSFi が存在しなければならない。FSFi を,番目の SQL

パラメタに関連付けられた FROM-SQL 関数  と呼ぶ。

II)  番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を FSFi の<戻りデータ型>

によって置き換えた 番目の<SQL パラメタ宣言>とする。

B)  番目の<SQL パラメタ宣言>に直に含まれる<パラメタモード>が OUT ならば,次による。

I)

Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれる<
グループ名

>を GROUP として,“9.23 TO-SQL 関数の決定”の構文規則を適用する。適

用可能な

TO-SQL 関数 TSFi が存在しなければならない。TSFi を,番目の SQL パラメ

タに関連付けられた TO-SQL 関数  と呼ぶ。

II)  番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を次の<パラメタの型>によ

って置き換えた 番目の<SQL パラメタ宣言>とする。

場合:

1)  TSFi が SQL 呼出しメソッドならば,TSFi の 2 番目の SQL パラメタの<パラメタの型>。

2)  そうでなければ,TSFi の 1 番目の SQL パラメタの<パラメタの型>。

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

I)

Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれる<
グループ名

>を GROUP として,“9.21 FROM-SQL 関数の決定”の構文規則を適用する。

適用可能な

FROM-SQL 関数 FSFi が存在しなければならない。FSFi を,番目の SQL

パラメタに関連付けられた FROM-SQL 関数  と呼ぶ。

II)  Ti によって識別されるデータ型を TYPE として,Ti を含む<グループ指定>に含まれる<

グループ名

>を GROUP として,“9.23 TO-SQL 関数の決定”の構文規則を適用する。適

用可能な

TO-SQL 関数 TSFi が存在しなければならない。TSFi を,番目の SQL パラメ

タに関連付けられた TO-SQL 関数  と呼ぶ。

III)  番目の実効的 SQL パラメタリスト項目は,<パラメタの型>を FSFi の<戻りデータ型>

によって置き換えた 番目の<SQL パラメタ宣言>とする。

iii)  そうでなければ,番目の実効的 SQL パラメタリスト項目は,番目の<SQL パラメタ宣言>と

する。

注記 426 SQL 呼出しルーチンが SQL 呼出し関数ならば,外部ルーチンから戻される値は,処理

系依存の方法で

SQL 処理系に受け渡される。SQL パラメタは,この目的のためには用

いられない。

f) <LANGUAGE 句>が ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI のどれを指定するか

に依存して,それぞれ,表 16“Ada のためのデータ型対応”,表 17“C のためのデータ型対応”,

表 18“COBOL のためのデータ型対応”,表 19“Fortran のためのデータ型対応”,表 20“M のた

めのデータ型対応”

,表 21“Pascal のためのデータ型対応”又は表 22“PL/I のためのデータ型対


613

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

応”を

適用データ型対応表  (operative data type correspondences table)  とする。適用データ型対応

表の二つの列を“

SQL データ型  (SQL data type)  ”の列,及び“ホストデータ型  (host data type)  ”

の列として参照する。

g)

13

  実効的 SQL パラメタリスト項目中のどの<データ型>も,

“ホストデータ型”の列中の対応する

行が“なし”でない“

SQL データ型”の列中に記載されたデータ型を指定しなければならない。

21)

13

  場合:

a) <メソッド指定指示子>が指定されるならば,次による。

i)

メソッドが決定的であることを DMS が示すならば,は,決定的とする。そうでなければ,R

は,潜在的に非決定的とする。

ii)  メソッドが SQL データを潜在的に修正することを,DMS の SQL データアクセス指示が示すな

らば,は,SQL データを潜在的に修正する。メソッドが SQL データを潜在的に読むことを,

DMS の SQL データアクセス指示が示すならば,は,SQL データを潜在的に読む。メソッド

SQL を潜在的に含むことを,DMS の SQL データアクセス指示が示すならば,は,SQL を

潜在的に含む。そうでなければ,は,SQL を潜在的に含まない。

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

i) DETERMINISTIC が指定されるならば,は,決定的  (deterministic)  とする。そうでなければ,

それは,

潜在的に非決定的  (possibly non-deterministic)  とする。

ii) <SQL 呼出しルーチン>が SQL データを潜在的に修正する  (possibly modify SQL-data)  というこ

とは,

<SQL データアクセス指示>が MODIFIES SQL DATA を指定することと同値とする。

iii) <SQL 呼出しルーチン>が SQL データを潜在的に読む  (possibly read SQL-data)  ということは,

<SQL データアクセス指示>が READS SQL DATA を指定することと同値とする。

iv) <SQL 呼出しルーチン>が SQL を潜在的に含む  (possibly contain SQL)  ということは,

<SQL デー

タアクセス指示

>が CONTAINS SQL を指定することと同値とする。

v) <SQL 呼出しルーチン>が SQL を潜在的に含まない  (does not possibly contain SQL)  ということ

は,

<SQL データアクセス指示>が NO SQL を指定することと同値とする。

22)  がスキーマレベルルーチンならば,<スキーマ修飾付きルーチン名>に陽に含まれるか又は暗に含

まれる

<スキーマ名>によって識別されるスキーマを,<SQL 呼出しルーチン>を含むスキーマとする。

23) <SQL 呼出しルーチン>が<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか又

は暗に想定される

<認可識別子>を とする。そうでなければ,<スキーマ修飾付きルーチン名>の陽

に指定されるか又は暗に想定される

<スキーマ名>によって識別されるスキーマを所有する<認可識

別子

>を とする。

アクセス規則

1)

13

 <SQL 呼出しルーチン>が,<スキーマ定義>を介在しないで,<SQL クライアントモジュール定義

>  に含まれるならば,与えられた認可識別子は,を所有する<認可識別子>を含まなければなら

ない。

2)  が外部ルーチンで,かつ,関連付けられた FROM-SQL 関数若しくは TO-SQL 関数がそのルーチン

SQL パラメタのいずれかにあるか又は結果に関連付けられた TO-SQL 関数が にあるならば,

次とする。

場合:

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,<SQL 呼出しルーチ


614

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

>が<SQL スキーマ文>に含まれるならば,<SQL 呼出しルーチン>を含むスキーマを所有する<

認可識別子

>の適用可能な権限は,SQL パラメタに関連付けられた(FROM-SQL 関数があるなら

ば,その)全ての

FROM-SQL 関数,及び SQL パラメタに関連付けられた(TO-SQL 関数がある

ならば,その)全ての

TO-SQL 関数,並びに結果に関連付けられた(TO-SQL 関数があるならば,

その)

TO-SQL 関数に関する EXECUTE を含まなければならない。

b)  そうでなければ,現行の権限は,SQL パラメタに関連付けられた(FROM-SQL 関数があるならば,

その)全ての

FROM-SQL 関数,及び SQL パラメタに関連付けられた(TO-SQL 関数があるなら

ば,その)全ての

TO-SQL 関数,並びに結果に関連付けられた(TO-SQL 関数があるならば,そ

の)

TO-SQL 関数に関する EXECUTE を含まなければならない。

一般規則

1)  がスキーマレベルルーチンならば,を含むスキーマを所有する<認可識別子>に対して,に関

する

EXECUTE 権限を定義する権限記述子が作成される。権限記述子の権限付与者には,特別な付

与者の値“

_SYSTEM”が設定される。この権限が付与可能であることは,次のうちの一つを満たす

ことと同値とする。

a)  が SQL ルーチンで,かつ,<ルーチン本体>に含まれる<SQL 手続文>を成功実行するために<認

可識別子

>に必要な権限の全てが付与可能である。必要な権限には,<SQL 手続文>に含まれる全

ての

<ルーチン呼出し>の全ての当該ルーチンに関する EXECUTE 権限を含む。

b)  が SQL ルーチンで,かつ,SQL SECURITY INVOKER が指定される。

c)

が外部ルーチンである。

2)  場合:

a) <SQL 呼出しルーチン>が<スキーマ定義>に含まれるならば,その<スキーマ定義>の SQL パスを

DP とする。

b) <SQL 呼出しルーチン>が<準備可能文>又は<直接 SQL 文>に含まれるならば,現行 SQL セション

SQL パスを DP とする。

c)

そうでなければ,

<SQL 呼出しルーチン>を含む<SQL クライアントモジュール定義>の SQL パス

を DP とする。

3) <メソッド指定指示子>が指定されないならば,定義される SQL 呼出しルーチンを記述するルーチン

記述子が,次のとおりに作成される。

a)  ルーチン記述子に含まれるルーチン名は,<スキーマ修飾付きルーチン名>とする。

b)  ルーチン記述子に含まれる特定名は,<特定名>とする。

c)

ルーチン記述子は,NPL 中の各 SQL パラメタに対して,次の項目を含む。

i)

名前。

ii)  宣言型。

iii)  順序位置。

iv) SQL パラメタが入力か,出力か又は入出力かを示す標識。

v) SQL パラメタが結果 SQL パラメタかどうかを示す標識を含む。

vi) SQL パラメタが既定値をもつかどうかを示す標識,及び,もつならば,<パラメタ既定値>。

d)  ルーチン記述子に含まれる戻り結果集合の最大個数は,次の値とする。

場合:

i) SQL 呼出しルーチンが SQL 呼出し手続ならば,<戻り結果集合最大数>の陽に指定されるか又


615

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

は暗に想定される値。

ii)  そうでなければ,0。

e)

ルーチン記述子は,

SQL 呼出しルーチンが SQL 呼出し関数か又は SQL 呼出し手続かを示す標識

を含む。

f) SQL 呼出しルーチンが SQL 呼出し関数ならば,次による。

i)

ルーチン記述子は,

SQL 呼出し関数が SQL 呼出しメソッドでないことを示す標識を含む。

ii)  ルーチン記述子は,<戻りデータ型>中のデータ型を含む。<戻りデータ型>が<位置付け子標識>

を単純に含むならば,ルーチン記述子は,戻り値が位置付け子であることを示す標識を含む。

iii) SQL 呼出しルーチン記述子は,SQL 呼出しルーチンがナル呼出し関数かどうかを示す標識を含

む。

g) SQL 呼出しルーチンが型保持関数ならば,ルーチン記述子は,SQL 呼出しルーチンが型保持関数

であることを示す標識を含む。

h) SQL 呼出しルーチンの本体が書かれた言語の名前は,<LANGUAGE 句>に含まれる<言語名>とす

る。

i) SQL 呼出しルーチンが SQL ルーチンならば,ルーチン記述子の SQL ルーチン本体は,<SQL ル

ーチン本体

>とする。

j) SQL 呼出しルーチンが SQL 呼出し関数か,又は NEW SAVEPOINT LEVEL が指定されるならば,

ルーチン記述子は,ルーチンが呼び出されるときはいつも新しい保存点水準が確立されなければ

ならないことを示す標識を含む。

注記 427  保存点水準の利用は,機能 T272“拡張保存点管理”に依存している。

k)  場合:

i)  SQL SECURITY INVOKER が指定されるならば,ルーチン記述子中の SQL 安全保護特性は,

INVOKER とする。

ii)  そうでなければ,ルーチン記述子中の SQL 安全保護特性は,DEFINER とする。

l) SQL 呼出しルーチンが外部ルーチンならば,次による。

i)

ルーチン記述子の外部名は,

<外部ルーチン名>とする。

ii)

13

  ルーチン記述子は,パラメタ受渡し様式  (parameter passing style)  が PARAMETER STYLE

SQL か又は PARAMETER STYLE GENERAL かを示す標識を含む。

m) SQL 呼 出 し ル ー チ ン 記 述 子 は , SQL 呼 出 し ル ー チ ン が DETERMINISTIC か 又 は NOT

DETERMINISTIC かを示す標識を含む。

n)  ルーチン記述子は,SQL 呼出しルーチンが SQL を潜在的に含まないか,SQL を潜在的に含むか,

SQL データを潜在的に読むか又は SQL データを潜在的に修正するかを示す標識を含む。

o) SQL 呼出しルーチンが<結果型変換>を指定するならば,ルーチン記述子は,SQL 呼出しルーチン

<結果型変換>を指定することを示す標識,及び<結果型変換>中に指定された<データ型>を含む。

<結果型変換>が<位置付け子標識>を含むならば,ルーチン記述子は,<結果型変換>中に指定され

<データ型>が位置付け子標識をもつことを示す標識を含む。

p)  関連付けられた FROM-SQL 関数 FSF があるどの SQL パラメタに対しても,ルーチン記述子は,

FSF の特定名を含む。

q)

14

  関連付けられた TO-SQL 関数 TSF があるどの SQL パラメタに対しても,ルーチン記述子は,

TSF の特定名を含む。


616

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

r)

14

 が外部関数で,かつ,それの結果に関連付けられた TO-SQL 関数 TRF が にあるならば,ル

ーチン記述子は,TRF の特定名を含む。

s) <SQL パラメタ宣言>が<位置付け子標識>を含むどの SQL パラメタに対しても,ルーチン記述子

は,

SQL パラメタが位置付け子パラメタであることを示す標識を含む。

t)

ルーチン記述子に含まれるルーチン認可識別子は,を所有する<認可識別子>とする。

u)  ルーチン記述子に含まれるルーチン SQL パスは,DP とする。

注記 428  ルーチン SQL パスは,が呼び出されるときに,現行 SQL セションのルーチン SQL

パスを設定するために用いられる。現行

SQL セションのルーチン SQL パスは,

含まれる

<ルーチン呼出し>の当該ルーチンを定義するために,“10.4  <ルーチン呼出

>”の構文規則によって用いられる。が呼び出されるときはいつも,同じルーチン

SQL パスが用いられる。

v)

04

  ルーチン記述子は,ルーチンがスキーマレベルルーチンかどうかを示す標識を含む。

w)  ルーチン記述子は,SQL 呼出しルーチンが利用者定義型に依存しているかどうかを示す標識を含

む。

注記 429  利用者定義型に依存している SQL 呼出しルーチンの概念は,“4.28 SQL 呼出しルーチ

ン”で定義している。

4) <メソッド指定指示子>が指定されるならば,対応するメソッド指定の記述子を DMS とする。定義

される

SQL 呼出しルーチンを記述するルーチン記述子が,次のとおりに作成される。

a)  ルーチン記述子に含まれるルーチン名は,RN とする。

b)  ルーチン記述子に含まれる特定名は,<特定名>とする。

c)

ルーチン記述子は,NPL 中の各 SQL パラメタに対して,名前,宣言型,順序位置,SQL パラメ

タが入力か,出力か又は入出力かを示す標識,及び

SQL パラメタが結果 SQL パラメタかどうか

を示す標識を含む。

d)  ルーチン記述子は,SQL 呼出しルーチンが SQL 呼出しメソッドである SQL 呼出し関数であるこ

とを示す標識,UDT の名前,及び STATIC 又は CONSTRUCTOR が指定されたかどうかを示す標

識を含む。

e) SQL 呼出しルーチンが型保持関数ならば,ルーチン記述子は,SQL 呼出しルーチンが型保持関数

であることを示す標識を含む。

f) SQL 呼出しルーチンが変異関数ならば,ルーチン記述子は,SQL 呼出しルーチンが変異関数であ

ることを示す標識を含む。

g)  ルーチン記述子は,<戻りデータ型>中のデータ型を含む。

h) SQL 呼出しルーチンの本体が書かれた言語の名前は,DMS 中の<LANGUAGE 句>に含まれる<言

語名

>とする。

i) SQL 呼出しルーチンが SQL ルーチンならば,ルーチン記述子の SQL ルーチン本体は,<SQL ル

ーチン本体

>とする。

j)

場合:

i)  SQL SECURITY INVOKER が指定されるならば,ルーチン記述子中の SQL 安全保護特性は,

INVOKER とする。

ii)  そうでなければ,ルーチン記述子中の SQL 安全保護特性は,DEFINER とする。

k) SQL 呼出しルーチンが外部ルーチンならば,次による。


617

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

i)

ルーチン記述子の外部名は,

<外部ルーチン名>とする。

ii)  ルーチン記述子は,パラメタ受渡し様式が PARAMETER STYLE SQL か又は PARAMETER

STYLE GENERAL かを示す標識を含み,その標識は,DMS 中の<パラメタ様式>の標識と同じ

とする。

l)

ルーチン記述子は,

SQL 呼出しルーチンが決定的かどうかを示す標識を含む。

m)  ルーチン記述子は,SQL 呼出しルーチンが SQL データを潜在的に修正するか,SQL データを潜

在的に読むか,

SQL を潜在的に含むか又は SQL を潜在的に含まないかを示す標識を含む。

n)  ルーチン記述子は,SQL 呼出しルーチンがナル呼出し関数かどうかを示す標識を含み,その標識

は,DMS 中の標識と同じとする。

o)  DMS が<結果型変換>を指定するならば,ルーチン記述子は,SQL 呼出しルーチンが<結果型変換

>を指定することを示す標識,及び DMS の<結果型変換>中に指定された<データ型>を含む。

p)  ルーチン記述子に含まれるルーチン認可識別子は,を所有する<認可識別子>とする。

q)  ルーチン記述子に含まれるルーチン SQL パスは,DP とする。

注記 430  ルーチン SQL パスは,が呼び出されるときに,現行 SQL セションのルーチン SQL

パスを設定するために用いられる。現行

SQL セションのルーチン SQL パスは,

含まれる

<ルーチン呼出し>の当該ルーチンを定義するために,“10.4  <ルーチン呼出

>”の構文規則によって用いられる。が呼び出されるときはいつも,同じルーチン

SQL パスが用いられる。

r)

ルーチン記述子は,ルーチンがスキーマレベルルーチンかどうかを示す標識を含む。

s)

ルーチン記述子は,

SQL 呼出しルーチンが利用者定義型に依存しているかどうか示す標識を含む。

注記 431  利用者定義型に依存している SQL 呼出しルーチンの概念は,“4.28 SQL 呼出しルーチ

ン”で定義している。

5)  ルーチン記述子に含まれる作成時刻印及び最終変更時刻印は,

CURRENT_TIMESTAMP の値とする。

6)  が外部ルーチンならば,のルーチン記述子は,次のとおりに決定される要素を更に含む。

a)  場合:

i)

13

 の記述子中の<SQL データアクセス指示>が MODIFIES SQL DATA,READS SQL DATA 又は

CONTAINS SQL ならば,次による。

1) <外部ルーチン名>によって識別されるプログラムを とする。

2)  外部ルーチン SQL パスは,の<SQL クライアントモジュール定義>の<モジュールパス指定

>に直に含まれる<パス指定>に直に含まれる<スキーマ名リスト>とする。

ii)  そうでなければ,外部ルーチン SQL パスは,処理系定義とする。

注記 432  外部ルーチン SQL パスは,が呼び出されるときに,現行 SQL セションのルーチン

SQL パスを設定するために用いられる。現行 SQL セションのルーチン SQL パスは,P

<SQL クライアントモジュール定義>に含まれる<ルーチン呼出し>の当該ルーチン

を定義するために,

10.4 <ルーチン呼出し>”の構文規則によって用いられる。が呼

び出されるときはいつも,同じ外部ルーチン

SQL パスが用いられる。

b)  ルーチン記述子中の外部安全保護特性は,次による。

場合:

i) <EXTERNAL

SECURITY 句>が EXTERNAL SECURITY DEFINER を指定するならば,DEFINER

とする。


618

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

ii) <EXTERNAL

SECURITY 句>が EXTERNAL SECURITY INVOKER を指定するならば,INVOKER

とする。

iii)  そうでなければ,EXTERNAL SECURITY IMPLEMENTATION DEFINED とする。

c)

実効的

SQL パラメタリストは,実効的 SQL パラメタリスト  (effective SQL parameter list)  とする。

適合性規則

1)  機能 T471“結果集合戻り値”なしでは,適合する SQL 言語は,<戻り結果集合特性>を含んではな

らない。

2)  機能 T341  “SQL 呼出し関数及び SQL 呼出し手続のオーバロード”なしでは,適合する SQL 言語

は,ルーチン名が

<スキーマ修飾付きルーチン名>であるルーチン記述子を,<スキーマ修飾付きル

ーチン名

>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマが含

<スキーマルーチン>を含んではならない。

3)  機能 S023“基本構造型”なしでは,適合する SQL 言語は,<メソッド指定指示子>を含んではなら

ない。

4)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<変換グループ指定>を含んではならない。

5)  機能 S024“拡張構造型”なしでは,適合する SQL 言語中で,<SQL パラメタ宣言>は,RESULT を

含んではならない。

6)  機能 T571“配列戻し外部 SQL 呼出し関数”なしでは,適合する SQL 言語は,配列戻し外部関数を

定義する

<SQL 呼出しルーチン>を含んではならない。

7)  機能 T572“マルチ集合戻し外部 SQL 呼出し関数”なしでは,適合する SQL 言語は,マルチ集合戻

し外部関数を定義する

<SQL 呼出しルーチン>を含んではならない。

8)  機能 S201“配列に関する SQL 呼出しルーチン”なしでは,適合する SQL 言語は,配列型を基にす

<パラメタの型>を含んではならない。

9)  機能 S201“配列に関する SQL 呼出しルーチン”なしでは,適合する SQL 言語は,配列型を基にす

<戻りデータ型>を含んではならない。

10)  機能 S202“マルチ集合に関する SQL 呼出しルーチン”なしでは,適合する SQL 言語は,マルチ集

合型を基にする

<パラメタの型>を含んではならない。

11)  機能 S202“マルチ集合に関する SQL 呼出しルーチン”なしでは,適合する SQL 言語は,マルチ集

合型を基にする

<戻りデータ型>を含んではならない。

12)  機能 T323“外部ルーチンのための陽に指定される安全保護”なしでは,適合する SQL 言語は,

<EXTERNAL SECURITY 句>を含んではならない。

13)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,かつ,

構造型を識別する

<データ型>を単純に含む<パラメタの型>を含んではならない。

14)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,かつ,

構造型を識別する

<データ型>を単純に含む<戻りデータ型>を含んではならない。

15)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,かつ,

配列型を識別する

<データ型>を単純に含む<パラメタの型>を含んではならない。

16)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,かつ,

配列型を識別する

<データ型>を単純に含む<戻りデータ型>を含んではならない。

17)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,

かつ,マルチ集合型を識別する

<データ型>を単純に含む<パラメタの型>を含んではならない。


619

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

18)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,

かつ,マルチ集合型を識別する

<データ型>を単純に含む<戻りデータ型>を含んではならない。

19)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,

かつ,長大オブジェクト型を識別する

<データ型>を単純に含む<パラメタの型>を含んではならない。

20)  機能 T041“基本 LOB データ型提供”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,

かつ,長大オブジェクト型を識別する

<データ型>を単純に含む<戻りデータ型>を含んではならない。

21)  機能 S027“特定メソッド名によるメソッド作成”なしでは,適合する SQL 言語は,SPECIFIC

METHOD を含む<メソッド指定指示子>を含んではならない。

22)  機能 T324“SQL ルーチンのための陽に指定される安全保護”なしでは,適合する SQL 言語は,<

権利句

>を含んではならない。

23)  機能 T326“表関数”なしでは,適合する SQL 言語は,<戻り TABLE 型>を含んではならない。

24)  機能 T651“SQL ルーチン中の SQL スキーマ文”なしでは,適合する SQL 言語は,SQL スキーマ文

を含む

<SQL ルーチン本体>を含んではならない。

25)  機能 T652“SQL ルーチン中の動的 SQL 文”なしでは,適合する SQL 言語は,動的 SQL 文を含む

<SQL ルーチン本体>を含んではならない。

26)  機能 T653“外部ルーチン中の SQL スキーマ文”なしでは,適合する SQL 言語は,SQL スキーマ文

が現れるプログラムを識別する

<外部ルーチン名>を含んではならない。

27)  機能 T654“外部ルーチン中の動的 SQL 文”なしでは,適合する SQL 言語は,動的 SQL 文が現れる

プログラムを識別する

<外部ルーチン名>を含んではならない。

28)  機能 T655“循環的依存ルーチン”なしでは,適合する SQL 言語は,<SQL 呼出しルーチン>によっ

て指定される

SQL 呼出しルーチンのルーチン記述子に当該ルーチンが一般に依存している<ルーチ

ン呼出し

>を含む<SQL ルーチン本体>を含んではならない。

29)  機能 T272“拡張保存点管理”なしでは,適合する SQL 言語は,<保存点水準指示>を含む<ルーチン

特性の並び

>を含んではならない。

30)  機能 T522“SQL 呼出し手続の入力パラメタのための既定値”なしでは,適合する SQL 言語は,<

パラメタ既定値

>を含んではならない。

31)  機能 B121“ルーチン言語 Ada”なしでは,適合する SQL 言語は,ADA を含む<LANGUAGE 句>を

含む

<ルーチン特性>を含んではならない。

32)  機能 B122“ルーチン言語 C”なしでは,適合する SQL 言語は,C を含む<LANGUAGE 句>を含む<

ルーチン特性

>を含んではならない。

33)  機能 B123“ルーチン言語 COBOL”なしでは,適合する SQL 言語は,COBOL を含む<LANGUAGE

>を含む<ルーチン特性>を含んではならない。

34)  機能 B124“ルーチン言語 Fortran”なしでは,適合する SQL 言語は,FORTRAN を含む<LANGUAGE

>を含む<ルーチン特性>を含んではならない。

35)  機能 B125“ルーチン言語 MUMPS”なしでは,適合する SQL 言語は,M を含む<LANGUAGE 句>

を含む

<ルーチン特性>を含んではならない。

36)  機能 B126“ルーチン言語 Pascal”なしでは,適合する SQL 言語は,PASCAL を含む<LANGUAGE

>を含む<ルーチン特性>を含んではならない。

37)  機能 B127“ルーチン言語 PL/I”なしでは,適合する SQL 言語は,PLI を含む<LANGUAGE 句>を含

<ルーチン特性>を含んではならない。


620

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

38)  機能 B128“ルーチン言語 SQL”なしでは,適合する SQL 言語は,SQL を含む<LANGUAGE 句>を

含む

<ルーチン特性>を含んではならない。

39)  機能 B221“ルーチン言語 Ada:VARCHAR 及び NUMERIC 提供”なしでは,<SQL 呼出しルーチン

>の<LANGUAGE 句>が ADA を指定するならば,<パラメタの型>及び<戻りデータ型>は,

CHARACTER VARYING 又は NUMERIC を指定してはならない。

11.61

<ルーチン変更文>

この細分箇条は,ISO/IEC 9075-13 の“9.9 <ルーチン変更文>”によって修正される。 

機能

<ルーチン変更文> (<alter routine statement>)  は,SQL 呼出しルーチンの特性を変更する。

形式

<ルーチン変更文> ::=

  ALTER  <特定ルーチン指示子>

      <変更ルーチン特性の並び> <ルーチン変更動作>

<変更ルーチン特性の並び> ::=

  <変更ルーチン特性>...

<変更ルーチン特性> ::=

  <LANGUAGE 句>

| <PARAMETER STYLE 句>

 |

<SQL データアクセス指示>

 |

<ナル呼出し句>

 |

<戻り結果集合特性>

| NAME <外部ルーチン名>

<ルーチン変更動作> ::=

  RESTRICT

構文規則

1)

13

 <特定ルーチン指示子>によって識別される SQL 呼出しルーチンを SR とし,SR の<特定名>を SN

とする。SN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

SR の記述子を含んでいなければならない。

2)  SR は,スキーマレベルルーチンでなければならない。

3)  SR は,利用者定義型に依存している SQL 呼出しルーチンであってはならない。

注記 433  “利用者定義型に依存している SQL 呼出しルーチン”は,“4.28 SQL 呼出しルーチン”

で定義している。

4) RESTRICT が指定されるならば,次による。

a)  SR は,利用者定義型 UDT の記述子に含まれる順序付け関数であってはならない。

b)  SR は,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>

又は

<メソッド参照>の当該ルーチンであってはならない。

i)

ルーチン記述子の

SQL ルーチン本体。

ii)  ビュー記述子の元の<問合せ式>。

iii)  制約記述子の<探索条件>。

iv)  トリガ記述子の被トリガ動作。


621

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

c)

SN が次のいずれかに含まれていてはならない。

i)

変換記述子のグループ記述子。

ii)  利用者定義型変換記述子。

5)  SR は,外部ルーチンでなければならない。

6)  SR は,置換メソッドである SQL 呼出しメソッドであってはならず,SR の置換メソッドの集合は,

空でなければならない。

7) <変更ルーチン特性の並び>は,高々一つの<LANGUAGE 句>,高々一つの<PARAMETER STYLE 句

>,高々一つの<SQL データアクセス指示>,高々一つの<ナル呼出し句>,高々一つの<戻り結果集合

特性

>及び高々一つの<外部ルーチン名>を含まなければならない。

8) <戻り結果集合特性>が指定されるならば,SR は,SQL 呼出し手続でなければならない。

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

a) <LANGUAGE 句>は,SQL を指定してはならない。

b) <LANGUAGE 句>が ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI のどれを指定するか

に依存して,それぞれ,表 16“Ada のためのデータ型対応”,表 17“C のためのデータ型対応”,

表 18“COBOL のためのデータ型対応”,表 19“Fortran のためのデータ型対応”,表 20“M のた

めのデータ型対応”

,表 21“Pascal のためのデータ型対応”又は表 22“PL/I のためのデータ型対

応”を適用データ型対応表とする。適用データ型対応表の二つの列を“

SQL データ型 (SQL data

type)  ”の列,及び“ホストデータ型  (host data type)  ”の列として参照する。

c)

SR の実効的 SQL パラメタリスト項目中のどの<データ型>も,

“ホストデータ型”の列中の対応す

る行が“なし”でない“

SQL データ型”の列中に記載されたデータ型を指定しなければならない。

注記 434  “実効的 SQL パラメタリスト”は,“11.60 <SQL 呼出しルーチン>”で定義している。

アクセス規則

1)  与えられた認可識別子は,SN の暗に想定されるか又は陽に指定される<スキーマ名>によって識別

されるスキーマを所有する

<認可識別子>を含まなければならない。

一般規則

1)  SR がメソッドでないならば,SR のルーチン記述子が次のとおりに修正される。

a) <戻り結果集合特性>が指定されるならば,戻り結果集合の最大個数は,<戻り結果集合最大数>の

値とする。

b) <LANGUAGE 句>が指定されるならば,SQL 呼出しルーチンの本体を書いている言語の名前は,

<LANGUAGE 句>に含まれる<言語名>とする。

c) <外部ルーチン名>が指定されるならば,ルーチン記述子の外部名は,<外部ルーチン名>とする。

d) <PARAMETER

STYLE 句>が指定されるならば,ルーチン記述子は,パラメタ受渡し様式が

PARAMETER STYLE SQL か又は PARAMETER STYLE GENERAL かを示す標識を含む。

e) <SQL データアクセス指示>が指定されるならば,ルーチン記述子は,SQL 呼出しルーチンの<SQL

データアクセス指示

>が READS SQL DATA か,MODIFIES SQL DATA か,CONTAINS SQL か又は

NO SQL かを示す標識を含む。

f) <ナル呼出し句>が指定されるならば,ルーチン記述子は,SQL 呼出しルーチンがナル呼出し関数

かどうかを示す標識を含む。

2)  SR がメソッドならば,それに対応するメソッド指定の記述子を DMS とすると,DMS が次のとおり

に修正される。


622

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

a) <LANGUAGE 句>が指定されるならば,メソッド指定記述子は,<LANGUAGE 句>に含まれる<

言語名

>を含む。

b) <PARAMETER

STYLE 句>が指定されるならば,メソッド指定記述子は,パラメタ受渡し様式が

PARAMETER STYLE SQL か又は PARAMETER STYLE GENERAL かを示す標識を含む。

c) <SQL データアクセス指示>が指定されるならば,メソッド指定記述子は,SQL 呼出しルーチンの

<SQL データアクセス指示>が READS SQL DATA か,MODIFIES SQL DATA か,CONTAINS SQL

か又は

NO SQL かを示す標識を含む。

d) <ナル呼出し句>が指定されるならば,メソッド指定記述子は,いずれかの引数がナル値のときに

メソッドを呼び出さない方がよいかどうかを示す標識を含む。

3)  SR がメソッドならば,SR のルーチン記述子が次のとおりに修正される。

a) <外部ルーチン名>が指定されるならば,ルーチン記述子の外部名は,<外部ルーチン名>とする。

b) <PARAMETER

STYLE 句>が指定されるならば,ルーチン記述子は,パラメタ受渡し様式が

PARAMETER STYLE SQL か又は PARAMETER STYLE GENERAL かを示す標識を含む。

4)  SR のルーチン記述子に含まれる最終変更時刻印は,CURRENT_TIMESTAMP の値とする。

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<ルーチン変更文>を含んではな

らない。

11.62

<ルーチン削除文>

この細分箇条は,ISO/IEC 9075-4 の“9.25 <ルーチン削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“11.11 <ルーチン削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13 の“9.10 <ルーチン削除文>”によって修正される。 

機能

<ルーチン削除文> (<drop routine statement>)  は,SQL 呼出しルーチンを破壊する。

形式

<ルーチン削除文> ::=

  DROP  <特定ルーチン指示子> <削除動作>

構文規則

1) <特定ルーチン指示子>によって識別される SQL 呼出しルーチンを SR とし,SR の<特定名>を SN

とする。SN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,

SR の記述子を含んでいなければならない。

2)  SR は,スキーマレベルルーチンでなければならない。

3)  SR は,どの利用者定義型にも依存していてはならない。

注記 435  利用者定義型に依存している SQL 呼出しルーチンの概念は,“4.28 SQL 呼出しルーチ

ン”で定義している。

4) RESTRICT が指定されるならば,次による。

a)  SR は,利用者定義型 UDT の記述子に含まれる順序付け関数であってはならない。

b)  SR は,次のいずれかに含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>

又は

<メソッド参照>の当該ルーチンであってはならない。

i)

ルーチン記述子の

SQL ルーチン本体。

ii)  ルーチン記述子の SQL パラメタの<パラメタ既定値>。


623

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

iii)  ビュー記述子の元の<問合せ式>。

iv)  制約記述子の<探索条件>。

v)

04

  トリガ記述子の被トリガ動作。

c)

SN は,次のいずれかに含まれていてはならない。

i)

変換記述子のグループ記述子。

ii)

09

  利用者定義型変換記述子。

注記 436 CASCADE が指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE

>の実行によって暗に削除される。

5)  SN に陽に含まれるか又は暗に含まれる<スキーマ名>によって識別されるスキーマを,<ルーチン削

除文

>を含むスキーマとする。

アクセス規則

1)  SN の<スキーマ名>によって識別されるスキーマを所有する<認可識別子>を とする。与えられた

認可識別子は,を含まなければならない。

一般規則

1)  “_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

>が実効的に実行される。

REVOKE EXECUTE ON SPECIFIC ROUTINE SN FROM A CASCADE

2)

09

  変換記述子のグループ記述子に SN を含む記述子をもつ利用者定義型の<利用者定義型名>を DN

とする。そのグループ記述子の

<グループ名>を GN とする。これ以上のアクセス規則の検査なしで,

次の

<変換削除文>が実効的に実行される。

DROP TRANSFORM GN FOR DN CASCADE

3)  SN を型変換関数として含む利用者定義型変換記述子を UDCD とする。UDCD に含まれる変換元デ

ータ型を SDT とする。UDCD に含まれる相手データ型を TDT とする。これ以上のアクセス規則の

検査なしで,次の

<利用者定義型変換削除文>が実効的に実行される。

DROP CAST ( DN AS TD ) CASCADE

4)  SR が,利用者定義型 UDT の記述子に含まれる順序付け関数ならば,UDT を識別する<パス解決利

用者定義型名

>を UDTN とする。これ以上のアクセス規則の検査なしで,次の<利用者定義順序付け

削除文

>が実効的に実行される。

DROP ORDERING FOR UDTN CASCADE

5)  SR の記述子が破壊される。

適合性規則

1)  機能 F032“CASCADE 削除動作”なしでは,適合する SQL 言語は,CASCADE を含む<削除動作>

を含む

<ルーチン削除文>を含んではならない。

2)  機能 S024“拡張構造型”なしでは,適合する SQL 言語は,メソッドを識別する<特定ルーチン指示

>を含む<ルーチン削除文>を含んではならない。

11.63

<利用者定義型変換定義>

この細分箇条は,ISO/IEC 9075-9 の“11.12 <利用者定義型変換定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“12.9 <利用者定義型変換定義>”によって修正される。 

機能


624

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

<利用者定義型変換定義> (<user-defined cast definition>)  は,利用者定義型変換を定義する。

形式

<利用者定義型変換定義> ::=

  CREATE  CAST  <左括弧> <変換元データ型> AS <相手データ型> <右括弧>

      WITH  <型変換関数>

      [  AS  ASSIGNMENT  ]

<型変換関数> ::=

  <特定ルーチン指示子>

<変換元データ型> ::=

  <データ型>

<相手データ型> ::=

  <データ型>

構文規則

1)

09

 <変換元データ型>を SDT とする。SDT によって識別されるデータ型を,変換元データ型  (source 

data type)  と呼ぶ。

2) <相手データ型>を TDT とする。

TDT によって識別されるデータ型を,

相手データ型  (target data type)

と呼ぶ。

3)  SDT 及び TDT のための利用者定義型変換が存在していてはならない。

4)  SDT 又は TDT の少なくとも一つが,<スキーマ解決利用者定義型名>又は<参照型>を含まなければ

ならない。

5)  SDT が<スキーマ解決利用者定義型名>を含むならば,SDT によって識別される利用者定義型の記述

子を含むスキーマを SSDT とする。

6)  SDT が<参照型>を含むならば,SDT によって識別される参照型の被参照型の記述子を含むスキーマ

を SSDT とする。

7)  TDT が<スキーマ解決利用者定義型名>を含むならば,TDT によって識別される利用者定義型の記述

子を含むスキーマを STDT とする。

8)  TDT が<参照型>を含むならば,TDT によって識別される参照型の被参照型の記述子を含むスキーマ

を STDT とする。

9)  SDT 及び TDT の両方が<スキーマ解決利用者定義型名>又は<参照型>を含むならば,SSDT を所有す

<認可識別子>と STDT を所有する<認可識別子>とが等価でなければならない。

10) <型変換関数>によって識別される SQL 呼出しルーチンを とする。を,変換元データ型 SDT 

び相手データ型 TDT のための型変換関数  (cast function)  と呼ぶ。

a)  は,ただ一つの SQL パラメタをもたなければならず,それの宣言型は,SDT でなければならな

い。

b)  の結果データ型は,TDT でなければならない。

c)

SSDT 又は STDTSDT 及び TDT の両方が<スキーマ解決利用者定義型名>ならば,両方)を所有

する

<認可識別子>は,の SQL 呼出しルーチン記述子を含むスキーマを所有していなければなら

ない。

d)  は,決定的でなければならない。

e)

は,SQL データを潜在的に修正してはならない。


625

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

f)

は,SQL データを潜在的に読んではならない。

アクセス規則

1)  与えられた認可識別子は,のルーチン記述子を含むスキーマを所有する<認可識別子>を含まなけ

ればならない。

2)  SDT が<スキーマ解決利用者定義型名>又は<参照型>を含むならば,与えられた認可識別子は,SSDT

を所有する

<認可識別子>を含まなければならない。

3)  TDT が<スキーマ解決利用者定義型名>又は<参照型>を含むならば,与えられた認可識別子は,STDT

を所有する

<認可識別子>を含まなければならない。

一般規則

1)  利用者定義型変換を記述する利用者定義型変換記述子 CFD が作成される。CFD は,変換元データ

型の名前,相手データ型の名前,型変換関数の特定名,及び

AS ASSIGNMENT が指定されることと

同値である,型変換関数が暗に呼出し可能であることを示す標識を含む。

適合性規則

1)  機能 S211“利用者定義の型変換関数”なしでは,適合する SQL 言語は,<利用者定義型変換定義>

を含んではならない。

11.64

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

この細分箇条は,ISO/IEC 9075-4 の“9.26 <利用者定義型変換削除文>”によって修正される。 

機能

<利用者定義型変換削除文> (<drop user-defined cast statement>)  は,利用者定義型変換を破壊する。

形式

<利用者定義型変換削除文> ::=

  DROP  CAST  <左括弧> <変換元データ型> AS <相手データ型> <右括弧>

      <削除動作>

構文規則

1) <変換元データ型>を SDT とし,<相手データ型>を TDT とする。

2)  SDT を変換元データ型として,TDT を相手データ型として含む利用者定義型変換記述子をもつ利用

者定義型変換を,CF とする。

3)  CF の利用者定義型変換記述子に含まれる型変換関数 の特定名を SN とする。

4)  SN の<スキーマ名>によって識別されるスキーマは,の記述子を含んでいなければならない。

5)  次の全ての条件を満たす<CAST 指定>を CS とする。

a)  CS の<値式>が宣言型 をもつ。

b)  CS の<CAST 相手>が,TDT か,又は宣言型 TDT をもつ定義域のいずれかである。

c)

SDT の型指示子が,の型優先順序リスト中にある。

d)  の型優先順序リスト中で SDT に先行する型指示子をもつ他のどのデータ型 に対しても,

変換元データ型として,TDT を相手データ型として含む利用者定義型変換記述子をもつ利用者定

義型変換 CFq が存在しない。

6)  に依存している<SQL 手続文>を PS とする。

7) RESTRICT が指定されるならば,CS も PS も,次のいずれかに含まれていてはならない。

a)  ルーチン記述子の SQL ルーチン本体。

b)  ビュー記述子の元の<問合せ式>。


626

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

c)

制約記述子の

<探索条件>。

d)

04

  トリガ記述子の被トリガ動作。

注記 437 CASCADE が指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE

>の実行によって暗に削除される。

アクセス規則

1)  与えられた認可識別子は,SN の暗に想定されるか又は陽に指定される<スキーマ名>によって識別

されるスキーマを所有する

<認可識別子>を含まなければならない。

一般規則

1) SQL ルーチン本体に CS 又は PS を含む SQL 呼出しルーチンを とする。

の特定名を SN とする。

これ以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE SN CASCADE

2)  元の<問合せ式>に CS 又は PS を含むビューを とする。の<表名>を VN とする。これ以上のア

クセス規則の検査なしで,次の

<ビュー削除文>が実効的に実行される。

DROP VIEW VN CASCADE

3)  表記述子に含まれるいずれかの制約記述子の<探索条件>に CS 又は PS を含む表を とする。の<

表名

>を TN とする。これ以上のアクセス規則の検査なしで,次の<表削除文>が実効的に実行される。

DROP TABLE TN CASCADE

4) <探索条件>に CS 又は PS を含む表明を とする。の<制約名>を AN とする。これ以上のアクセ

ス規則の検査なしで,次の

<表明削除文>が実効的に実行される。

DROP ASSERTION AN CASCADE

5)  いずれかの制約記述子の<探索条件>に CS 又は PS を含む定義域を とする。

の<定義域名>を DN

とする。これ以上のアクセス規則の検査なしで,次の

<定義域削除文>が実効的に実行される。

DROP DOMAIN DN CASCADE

6)  CS 又は PS を含む被トリガ動作を含むトリガ記述子をもつトリガを とする。の<トリガ名>を

TN とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行される。

DROP TRIGGER TN

7)  CF の記述子が破壊される。

適合性規則

1)  機能 S211“利用者定義の型変換関数”なしでは,適合する SQL 言語は,<利用者定義型変換削除文

>を含んではならない。

11.65

<利用者定義順序付け定義>

この細分箇条は,ISO/IEC 9075-9 の“11.13 <利用者定義順序付け定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13 の“9.11 <利用者定義順序付け定義>”によって修正される。 

機能

<利用者定義順序付け定義> (<user-defined ordering definition>)  は,利用者定義型のための利用者定義順序

付けを定義する。

形式

<利用者定義順序付け定義> ::=

  CREATE ORDERING FOR <スキーマ解決利用者定義型名> <順序付け形式>


627

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

<順序付け形式> ::=

  <等順序付け形式>

 |

<完全順序付け形式>

<等順序付け形式> ::=

  EQUALS ONLY BY <順序付けカテゴリ>

<完全順序付け形式> ::=

  ORDER FULL BY <順序付けカテゴリ>

13

 <順序付けカテゴリ> ::=

  <相対カテゴリ>

 |

<写像カテゴリ>

 |

<状態カテゴリ>

<相対カテゴリ> ::=

  RELATIVE  WITH  <相対関数指定>

<写像カテゴリ> ::=

  MAP  WITH  <写像関数指定>

<状態カテゴリ> ::=

  STATE  [  <特定名> ]

<相対関数指定> ::=

  <特定ルーチン指示子>

<写像関数指定> ::=

  <特定ルーチン指示子>

構文規則

1) <スキーマ解決利用者定義型名>を UDTN とする。UDTN によって識別される利用者定義型を UDT

とする。

2)  UDT の記述子は,NONE を指定する順序付け形式を含まなければならない。

3)  UDT が最上位型でないならば,次による。

場合:

a) <等順序付け形式>が指定されるならば,UDT のどの直接上位型の比較形式も,EQUALS でなけ

ればならない。

b)  そうでなければ,UDT のどの直接上位型の比較形式も,FULL でなければならない。

4)

13

 <相対カテゴリ>又は<状態カテゴリ>が指定されるならば,UDT は,最上位型でなければならない。

5) <写像カテゴリ>が指定され,かつ,UDT が最上位型でないならば,UDT のどの直接上位型の比較

カテゴリも,

MAP でなければならない。

注記 438  同じ下位型族中の二つの利用者定義型の比較カテゴリは,同じでなければならない。

6)

13

  場合:

a) <状態カテゴリ>が指定されるならば,次による。

i)

UDT は,個別型であってはならない。

ii) EQUALS

ONLY を指定しなければならない。

iii)

09

 UDT の各属性の宣言型は,UDT-NC 順序付けであってはならない。

iv)  場合:


628

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

1) <特定名>が指定されるならば,<特定名>を SN とする。SN が<スキーマ名>を含むならば,

その

<スキーマ名>は,UDTN の<スキーマ名>と等価でなければならない。

2)  そうでなければ,UDTN の<スキーマ名>  と等価な<スキーマ名>をもつ処理系依存の<特定

>を SN とする。この処理系依存の<特定名>は,によって識別されるスキーマ中の他のど

のルーチン記述子の

<特定名>とも等価であってはならない。

b)

13

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

i) <特定ルーチン指示子> SRD によって識別される SQL 呼出しルーチンを とする。

ii)  は,決定的でなければならない。

iii)  は,SQL データを潜在的に修正してはならない。

7) <相対関数指定>が指定されるならば,次による。

a)  は,宣言型が UDT であるただ二つの SQL パラメタをもたなければならない。

b)  は,SQL 呼出し通常関数でなければならない。

c)

の結果データ型は,INTEGER でなければならない。

注記 439  “8.2 <比較述語>”の構文規則及び一般規則は,二つの引数が等しいとみなされるならば,

の結果は,0 で,第 1 引数が第 2 引数未満であるとみなされるならば,-1 で,かつ,

1 引数が第 2 引数より大きいとみなされるならば,1 であることを想定している。

8) <写像関数指定>が指定されるならば,次による。

a)  は,宣言型が UDT であるただ一つの SQL パラメタをもたなければならない。

b)  の結果データ型は,既定義データ型でなければならない。

c)

の結果データ型は,等値性演算のオペランドとする。

9.11  等値性演算”の構文規則及び適合

性規則を適用する。

d) FULL が指定されるならば,の結果データ型は,順序付け操作のオペランドとする。

9.14  順序

付け操作”の構文規則及び適合性規則を適用する。

アクセス規則

1)  与えられた認可識別子は,UDT の記述子を含むスキーマ及び のルーチン記述子を含むスキーマを

所有する

<認可識別子>を含まなければならない。

一般規則

1) <状態カテゴリ>が指定されるならば,次による。

a)  利用者定義型の表現の構成要素を C

1

...,Cn とする。

b)  UDT の記述子を含むスキーマの<スキーマ名>を SNUDT とする。

c)

次の

<SQL 呼出しルーチン>が実効的に実行される。

CREATE FUNCTION SNUDT.EQUALS ( UDT1 UDTN, UDT2 UDTN )

    RETURNS  BOOLEAN

    SPECIFIC  SN

    DETERMINISTIC

    CONTAINS  SQL

    STATIC  DISPATCH

    RETURN

      (  TRUE  AND

        UDT1.SPECIFICTYPE  =  UDT2.SPECIFICTYPE  AND


629

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

        UDT1.C

1

 = UDT2.C

1

 AND

        ...

        UDT1.C

n

 = UDT2.C

n

 )

2)  場合:

a) EQUALS が指定されるならば,UDT の利用者定義型記述子中の順序付け形式には,EQUALS が

設定される。

b)  そうでなければ,UDT の利用者定義型記述子中の順序付け形式には,FULL が設定される。

3)  場合:

a) RELATIVE が指定されるならば,UDT の利用者定義型記述子中の順序付けカテゴリには,

RELATIVE が設定される。

b) MAP が指定されるならば,UDT の利用者定義型記述子中の順序付けカテゴリには,MAP が設定

される。

c)

13

  そうでなければ,UDT の利用者定義型記述子中の順序付けカテゴリには,STATE が設定され

る。

4)  UDT の記述子中の順序付け関数を識別する<特定ルーチン指示子>には,順序付けカテゴリに依存し

て,SRD が設定される。

適合性規則

1)  機能 S251“利用者定義順序付け”なしでは,適合する SQL 言語は,<利用者定義順序付け定義>を

含んではならない。

注記 440 MAP が指定されるならば,“9.11  等値性演算”の適合性規則を適用する。ORDER FULL

BY MAP が指定されるならば,“9.14  順序付け操作”の適合性規則も適用する。

11.66

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

この細分箇条は,ISO/IEC 9075-4 の“9.20 <利用者定義順序付け削除文>”によって修正される。 

この細分箇条は,ISO/IEC 9075-13 の“9.12 <利用者定義順序付け削除文>”によって修正される。 

機能

<利用者定義順序付け削除文> (<drop user-defined ordering statement>)  は,利用者定義順序付けメソッドを

破壊する。

形式

<利用者定義順序付け削除文> ::=

  DROP ORDERING FOR <スキーマ解決利用者定義型名> <削除動作>

構文規則

1) <スキーマ解決利用者定義型名>を UDTN とする。UDTN によって識別される利用者定義型を UDT

とする。

2)  UDT の記述子は,EQUALS 又は FULL を指定する順序付け形式を含んでいなければならない。

3)  UDT の順序付け関数を OF とする。

4) RESTRICT が指定されるならば,次のどれも,比較型が UDT である利用者定義型 T1 を宣言型とし

てもつ等値性演算,グループ化操作又は順序付け操作のオペランドを含んではならない。

a)  ルーチン記述子の SQL ルーチン本体。

b)  ビュー記述子の元の<問合せ式>。

c)

制約記述子の

<探索条件>。


630

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

d)

04

  トリガ記述子の被トリガ動作。

注記 441 CASCADE が指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE

>の実行によって暗に削除される。

アクセス規則

1)  与えられた認可識別子は,UDTN の暗に想定されるか又は陽に指定される<スキーマ名>によって識

別されるスキーマを所有する

<認可識別子>を含まなければならない。

一般規則

1)

04

  比較型が UDT である利用者定義型 T1 を宣言型としてもつ等値性演算,グループ化操作又は順序

付け操作のオペランドを

SQL ルーチン本体が含む SQL 呼出しルーチンを とする。の<特定名>

を SN とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行され

る。

DROP SPECIFIC ROUTINE SN CASCADE

2)  比較型が UDT である利用者定義型 T1 を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを元の

<問合せ式>が含むビューを とする。の<表名>を VN とする。これ以

上のアクセス規則の検査なしで,次の

<ビュー削除文>が実効的に実行される。

DROP VIEW VN CASCADE

3)  比較型が UDT である利用者定義型 T1 を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを

<探索条件>が含む制約 の制約記述子を表記述子が含む表を とする。

<表名>を TN とする。の<制約名>を TCN とする。これ以上のアクセス規則の検査なしで,次の<

表変更文

>が実効的に実行される。

ALTER TABLE TN DROP CONSTRAINT TCN CASCADE

4)  比較型が UDT である利用者定義型 T1 を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを

<探索条件>が含む表明を とする。の<制約名>を AN とする。これ以上の

アクセス規則の検査なしで,次の

<表明削除文>が実効的に実行される。

DROP ASSERTION AN CASCADE

5)  比較型が UDT である利用者定義型 T1 を宣言型としてもつ等値性演算,グループ化操作又は順序付

け操作のオペランドを含む制約記述子を記述子が含む定義域を とする。の<定義域名>を DN 

する。これ以上のアクセス規則の検査なしで,次の

<定義域削除文>が実効的に実行される。

DROP DOMAIN DN CASCADE

6)

04

  比較型が UDT である利用者定義型 T1 を宣言型としてもつ等値性演算,グループ化操作又は順序

付け操作のオペランドを被トリガ動作が含むトリガを とする。の<トリガ名>を TN とする。こ

れ以上のアクセス規則の検査なしで,次の

<トリガ削除文>が実効的に実行される。

DROP TRIGGER TN

7)  UDT の記述子中で,順序付け形式には,NONE が設定され,順序付けカテゴリには,STATE が設定

される。どの順序付け関数も,UDT の記述子に含まれない。

適合性規則

1)  機能 S251“利用者定義順序付け”なしでは,適合する SQL 言語は,<利用者定義順序付け削除文>

を含んではならない。

11.67

<変換定義>


631

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

機能

<変換定義> (<transform definition>)  は,利用者定義型のための一つ以上の変換関数を定義する。

形式

<変換定義> ::=

  CREATE { TRANSFORM | TRANSFORMS } FOR

      <スキーマ解決利用者定義型名> <変換グループ>...

<変換グループ> ::=

  <グループ名> <左括弧> <変換要素リスト> <右括弧>

<グループ名> ::=

  <識別子>

<変換要素リスト> ::=

  <変換要素> [ <コンマ> <変換要素> ]

<変換要素> ::=

  <TO  SQL>

| <FROM SQL>

<TO SQL> ::=

  TO SQL WITH <TO SQL 関数>

<FROM SQL> ::=

  FROM SQL WITH <FROM SQL 関数>

<TO SQL 関数> ::=

  <特定ルーチン指示子>

<FROM SQL 関数> ::=

  <特定ルーチン指示子>

構文規則

1) <変換定義>を TD とする。TD に直に含まれる<スキーマ解決利用者定義型名>を DTN とする。DTN

によって識別されるデータ型を DT とする。DT の記述子を含むスキーマを SDT とする。DT のデー

タ型記述子に含まれる変換記述子を TRD とする。

2)  TD に直に含まれるどの二つの<変換グループ>も,同じ<グループ名>をもってはならない。

3) <TO

SQL 関数>によって識別される SQL 呼出し関数を,TO-SQL 関数  (to-sql function)  と呼ぶ。

<FROM SQL 関数>によって識別される SQL 呼出し関数を,FROM-SQL 関数  (from-sql function)  と

呼ぶ。

4)  TD に直に含まれる<変換グループ>の個数を とする。

1 から までの範囲の に対して,次による。

a)  TD に直に含まれる 番目の<変換グループ>を TGi とする。TGi に含まれる<グループ名>を GNi

とする。

b)  TGi に直に含まれる<TO SQL>及び<FROM SQL>のそれぞれは,<変換要素リスト>に高々1 回含ま

れなければならない。

c) <TO

SQL 関数>及び<FROM SQL 関数>によって識別される SQL 呼出しルーチンは,決定的で,か

つ,

SQL データを潜在的に修正しない SQL 呼出し関数でなければならない。

d)  TRD は,GNi と等価なグループ名を含む変換グループ記述子 GD を含んでいてはならない。

e)

DT の真上位型又は真下位型のいずれかであるデータ型 DTTj のデータ型記述子に含まれる変換記


632

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

述子が,GNi と等価なグループ名を含むグループ記述子 GDTj,を含むような全ての DTTj を含む
集合を SDTT とする。SDTT は,空でなければならない。

f) <TO SQL>が指定されるならば,<TO SQL 関数>によって識別される SQL 呼出し関数を TSFi とす

る。

i)

場合:

1)  TSFi が SQL 呼出しメソッドならば,TSFi は,1 番目の SQL パラメタの宣言型が DT で,か

つ,

2 番目の SQL パラメタの宣言型が既定義データ型であるような,ただ二つの SQL パラメ

タをもたなければならない。TSFi の結果データ型は,DT でなければならない。

2)  そうでなければ,TSFi は,宣言型が既定義データ型であるただ一つの SQL パラメタをもた

なければならない。TSFi の結果データ型は,DT でなければならない。

ii)  DT が構造型で,かつ,TSFi が SQL 呼出しメソッドならば,TSFi は,型保持関数でなければ

ならない。

g) <FROM

SQL>が指定されるならば,<FROM SQL 関数>によって識別される SQL 呼出し関数を

FSFi とする。FSFi は,宣言型が DT であるただ一つの SQL パラメタをもたなければならない。

FSFi の結果データ型は,既定義データ型でなければならない。

h) <TO

SQL>及び<FROM SQL>の両方が指定されるならば,次による。

場合:

i)

TSFi が SQL 呼出しメソッドならば,FSFi の結果データ型と,TSFi の 2 番目の SQL パラメタ
のデータ型とが,互換でなければならない。

ii)  そうでなければ,FSFi の結果データ型と,TSFi の 1 番目の SQL パラメタのデータ型とが,互

換でなければならない。

アクセス規則

1) 1 から までの範囲の に対して,与えられた認可識別子は,SDT と,TSFi があるならば,TSFi

のルーチン記述子,及び FSFi があるならば,FSFi のルーチン記述子を含むスキーマとを所有する
<認可識別子>を含まなければならない。

一般規則

1) <グループ名>は,変換グループを識別するグループ名を指定する。

2)  どの TGi,1 ≤ i ≤ に対しても,次による。

a)  TGi に直に含まれる<グループ名>を含む新しいグループ記述子 GDi が作成される。GDi は,TRD

に含まれる変換グループ記述子のリストに含められる。

b) <TO

SQL>が指定されるならば,GDi 中の TO-SQL 関数の特定名には,TSFi が設定される。

c) <FROM

SQL>が指定されるならば,GDi 中の FROM-SQL 関数の特定名には,FSFi が設定される。

適合性規則

1)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<変換定義>を含んではならない。

11.68

<変換変更文>

機能

<変換変更文> (<alter transform statement>)  は,一つ以上の変換グループの定義を変更する。

形式

<変換変更文> ::=

  ALTER { TRANSFORM | TRANSFORMS }


633

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

      FOR  <スキーマ解決利用者定義型名> <変更グループ>...

<変更グループ> ::=

  <グループ名> <左括弧> <変更変換動作リスト> <右括弧>

<変更変換動作リスト> ::=

  <変更変換動作> [ {<コンマ> <変更変換動作> }... ]

<変更変換動作> ::=

  <変換要素リスト追加>

 |

<変換要素リスト削除>

構文規則

1) <スキーマ解決利用者定義型名>を DN とし,DN によって識別されるデータ型を とする。DN 

陽に指定されるか又は暗に想定される

<スキーマ名>によって識別されるスキーマは,のデータ型

記述子を含んでいなければならない。そのスキーマを とする。のデータ型記述子に含まれる変

換記述子を TD とする。

2)  DN の有効範囲は,<変換変更文> AT 全体とする。

3)  AT に含まれる<グループ名>の個数を とする。1 から までの範囲の に対して,次による。

a)  AT に含まれる 番目の<グループ名>を GNi とする。

b)  各 GNi に対して,GNi と等価なグループ名をもつ TD に含まれる変換グループ記述子が存在しな

ければならない。この変換グループ記述子を GDi とする。

アクセス規則

1)  与えられた認可識別子は,を所有する<認可識別子>を含まなければならない。

一般規則

1) 1 から までの範囲の に対して,GDi が<変更変換動作リスト>によって指定されるとおりに修正

される。

適合性規則

1)  機能 S242“変換変更文”なしでは,適合する SQL 言語は,<変換変更文>を含んではならない。

11.69

<変換要素リスト追加>

機能

<変換要素リスト追加> (<add transform element list>)  は,既存の変換グループに変換要素(<TO SQL>及

び/又は

<FROM SQL>)を追加する。

形式

<変換要素リスト追加> ::=

  ADD  <左括弧> <変換要素リスト> <右括弧>

構文規則

1) <変換要素リスト追加>を AD とする。

2) <変換要素リスト追加>を含む<変換変更文>に直に含まれる<スキーマ解決利用者定義型名>を DN 

する。DN によって識別される利用者定義型を とする。のデータ型記述子に含まれる変換記述

子を TD とする。

3) <変換要素リスト追加>を含む<変更グループ>に直に含まれる<グループ名>と等価なグループ名を

もつ TD に含まれる変換グループ記述子を GD とする。

4)  (AD に直に含まれる)<TO SQL>及び<FROM SQL>のそれぞれは,<変換要素リスト>に高々1 回含


634

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

まれなければならない。

5)  GD が TO-SQL 関数の特定名を含むならば,AD は,<TO SQL>を含んではならない。

6)  GD が FROM-SQL 関数の特定名を含むならば,AD は,<FROM SQL>を含んではならない。

7) <TO

SQL 関数>又は<FROM SQL 関数>のいずれかによって識別される SQL 呼出しルーチンは,決定

的で,かつ,

SQL データを潜在的に修正しない SQL 呼出し関数でなければならない。

8) <TO

SQL>が指定されるならば,<TO SQL 関数>によって識別される SQL 呼出し関数を TSF とする。

a)  場合:

i)

TSF が SQL 呼出しメソッドならば,TSF は,1 番目の SQL パラメタの宣言型が で,かつ,2

番目の

SQL パラメタの宣言型が既定義データ型であるような,ただ二つの SQL パラメタをも

たなければならない。TSF の結果データ型は,でなければならない。

ii)  そうでなければ,TSF は,宣言型が既定義データ型であるただ一つの SQL パラメタをもたなけ

ればならない。TSF の結果データ型は,でなければならない。

b)  が構造型ならば,TSF は,型保持関数でなければならない。

c)

GD が FROM-SQL 関数の特定名を含むならば,この特定名によって識別される SQL 呼出し関数

を FS とする。

場合:

i)

TSF が SQL 呼出しメソッドならば,FS の結果データ型と,TSF の 2 番目の SQL パラメタのデ

ータ型とが,互換でなければならない。

ii)  そうでなければ,FS の結果データ型と,TSF の 1 番目の SQL パラメタのデータ型とが,互換

でなければならない。

9) <FROM

SQL>が指定されるならば,<FROM SQL 関数>によって識別される SQL 呼出し関数を FSF

とする。

a)  FSF は,宣言型が であるただ一つの SQL パラメタをもたなければならない。FSF の結果デー

タ型は,既定義データ型でなければならない。

b)  GD が TO-SQL 関数の特定名を含むならば,この特定名によって識別される SQL 呼出しルーチン

を TS とする。

場合:

i)

TS が SQL 呼出しメソッドならば,FSF の結果データ型と,TS の 2 番目の SQL パラメタのデ

ータ型とが,互換でなければならない。

ii)  そうでなければ,FSF の結果データ型と,TS の 1 番目の SQL パラメタのデータ型とが,互換

でなければならない。

アクセス規則

1)  与えられた認可識別子は,TSF があるならば,TSF のルーチン記述子,及び FSF があるならば,

FSF のルーチン記述子を含むスキーマを所有する<認可識別子>を含まなければならない。

一般規則

1) <TO

SQL>が指定されるならば,GD 中の TO-SQL 関数の特定名には,TSF が設定される。

2) <FROM

SQL>が指定されるならば,GD 中の FROM-SQL 関数の特定名には,FSF が設定される。

適合性規則

なし。 

11.70

<変換要素リスト削除>


635

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

機能

<変換要素リスト削除> (<drop transform element list>)  は,変換グループから変換要素(<TO SQL>及び/

又は

<FROM SQL>)を取り除く。

形式

<変換要素リスト削除> ::=

  DROP  <左括弧> <変換種別>

      [ <コンマ> <変換種別> ] <削除動作> <右括弧>

<変換種別> ::=

  TO  SQL

| FROM SQL

構文規則

1) <変換要素リスト削除>を含む<変換変更文>に直に含まれる<スキーマ解決利用者定義型名>を DN 

する。DN によって識別される利用者定義型を とする。のデータ記述子に含まれる変換記述子

を TD とする。

2) <変換要素リスト削除>を含む<変更グループ>に直に含まれる<グループ名>と等価なグループ名を

もつ TD に含まれる変換グループ記述子を GD とする。

3) TO

SQL 及び FROM SQL のそれぞれは,<変換要素リスト削除>中に高々1 回だけ指定されなければ

ならない。

4) TO

SQL が指定されるならば,GD は,TO-SQL 関数の特定名を含んでいなければならない。この関

数を TSF とする。

5) FROM

SQL が指定されるならば,GD は,FROM-SQL 関数の特定名を含んでいなければならない。

この関数を FSF とする。

6) RESTRICT が指定されるならば,次による。

a) TO

SQL が指定されるならば,関連付けられた TO-SQL 関数が TSF である SQL パラメタをもつ外

部ルーチンが存在してはならないし,結果に関連付けられた

TO-SQL 関数が TSF である外部関数

も存在してはならない。

b) FROM

SQL が指定されるならば,関連付けられた FROM-SQL 関数が FSF である SQL パラメタを

もつ外部ルーチンが存在してはならない。

アクセス規則

なし。 

一般規則

1) FROM

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

a)  関連付けられた FROM-SQL 関数が FSF である SQL パラメタをもつ外部ルーチンの<特定名>を

FSN とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行され

る。

DROP SPECIFIC ROUTINE FSN CASCADE

b) FROM-SQL 関数の特定名が GD から取り除かれる。

2) TO

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

a)  関連付けられた TO-SQL 関数が TSF である SQL パラメタをもつ外部ルーチンの<特定名>を TSN

とする。これ以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。


636

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

DROP SPECIFIC ROUTINE TSN CASCADE

b)  結果に関連付けられた TO-SQL 関数が TSF である外部関数の<特定名>を RSN とする。これ以上

のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE RSN CASCADE

c) TO-SQL 関数の特定名が GD から取り除かれる。

適合性規則

なし。 

11.71

<変換削除文>

機能

<変換削除文> (<drop transform statement>)  は,変換に関連付けられた一つ以上の変換関数を取り除く。

形式

<変換削除文> ::=

  DROP { TRANSFORM | TRANSFORMS } <削除すべき変換>

      FOR  <スキーマ解決利用者定義型名> <削除動作>

<削除すべき変換> ::=

  ALL

 |

<変換グループ要素>

<変換グループ要素> ::=

  <グループ名>

構文規則

1) <スキーマ解決利用者定義型名>によって識別されるデータ型を DT とする。

DT の記述子を含むスキ

ーマを SDT とする。DT のデータ型記述子に含まれる変換記述子を TRD とする。TRD 中の変換グ

ループ記述子の個数を とする。

2) <変換グループ要素>が指定されるならば,TRD は,<変換グループ要素>に直に含まれる<グループ

>と等価なグループ名を含む変換グループ記述子 GD を含んでいなければならない。

3) RESTRCIT が指定されるならば,次による。

場合:

a) ALL が指定されるならば,1 から までの範囲の に対して,次による。

i)

TRD に含まれる 番目の変換グループ記述子を GDi とする。

ii)  GDi が FROM-SQL 関数 FSFi の特定名を含むならば,関連付けられた FROM-SQL 関数が FSFi

である

SQL パラメタをもつ外部ルーチンが存在してはならない。

iii)  GDi が TO-SQL 関数 TSFi の特定名を含むならば,関連付けられた TO-SQL 関数が TSFi である

SQL パラメタをもつ外部ルーチンが存在してはならないし,結果に関連付けられた TO-SQL 関

数が TSFi である外部関数も存在してはならない。

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

i)

GD が FROM-SQL 関数 FSF の特定名を含むならば,関連付けられた FROM-SQL 関数が FSF

である

SQL パラメタをもつ外部ルーチンが存在してはならない。

ii)  GD が TO-SQL 関数 TSF の特定名を含むならば,関連付けられた TO-SQL 関数が TSF である

SQL パラメタをもつ外部ルーチンが存在してはならないし,結果に関連付けられた TO-SQL 関

数が TSF である関数も存在してはならない。


637

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

アクセス規則

1)  与えられた認可識別子は,SDT を所有する<認可識別子>を含まなければならない。

一般規則

1)  場合:

a) ALL が指定されるならば,1 から までの範囲の に対して,次による。

i)

TRD に含まれる 番目の変換グループ記述子を GDi とする。

ii)  GDi が FROM-SQL 関数 FSFi の特定名を含むならば,関連付けられた FROM-SQL 関数が FSFi

である

SQL パラメタをもつ外部ルーチンの<特定名>を FSN とする。これ以上のアクセス規則

の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE FSN CASCADE

iii)  GDi が TO-SQL 関数 TSFi の特定名を含むならば,次による。

1)  関連付けられた TO-SQL 関数が TSFi である SQL パラメタをもつ外部ルーチンの<特定名>を

TSN とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行

される。

DROP SPECIFIC ROUTINE TSN CASCADE

2)  結果に関連付けられた TO-SQL 関数が TSFi である外部関数の<特定名>を RSN とする。これ

以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE RSN CASCADE

iv)  GDi が TRD から取り除かれる。

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

i)

GD が FROM-SQL 関数 FSF の特定名を含むならば,関連付けられた FROM-SQL 関数が FSF

である

SQL パラメタをもつ外部ルーチンの<特定名>を FSN とする。これ以上のアクセス規則

の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE FSN CASCADE

ii)  GD が TO-SQL 関数 TSF の特定名を含むならば,次による。

1)  関連付けられた TO-SQL 関数が TSF である SQL パラメタをもつ外部ルーチンの<特定名>を

TSN とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効的に実行

される。

DROP SPECIFIC ROUTINE TSN CASCADE

2)  結果に関連付けられた TO-SQL 関数が TSF である外部関数の<特定名>を RSN とする。これ

以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE RSN CASCADE

iii)  GD が TRD から取り除かれる。

適合性規則

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

11.72

<順序数生成子定義>

機能

<順序数生成子定義> (<sequence generator definition>)  は,外部順序数生成子を定義する。

形式

<順序数生成子定義> ::=


638

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

  CREATE  SEQUENCE  <順序数生成子名> [ <順序数生成子選択肢の並び> ]

<順序数生成子選択肢の並び> ::=

  <順序数生成子選択肢> ...

<順序数生成子選択肢> ::=

  <順序数生成子データ型選択肢>

 |

<共通順序数生成子選択肢の並び>

<共通順序数生成子選択肢の並び> ::=

  <共通順序数生成子選択肢> ...

<共通順序数生成子選択肢> ::=

  <順序数生成子 START WITH 選択肢>

 |

<基本順序数生成子選択肢>

<基本順序数生成子選択肢> ::=

  <順序数生成子 INCREMENT BY 選択肢>

 |

<順序数生成子 MAXVALUE 選択肢>

 |

<順序数生成子 MINVALUE 選択肢>

 |

<順序数生成子 CYCLE 選択肢>

<順序数生成子データ型選択肢> ::=

  AS  <データ型>

<順序数生成子 START WITH 選択肢> ::=

  START  WITH  <順序数生成子開始値>

<順序数生成子開始値> ::=

  <符号付き数定数>

<順序数生成子 INCREMENT BY 選択肢> ::=

  INCREMENT  BY  <順序数生成子増分>

<順序数生成子増分> ::=

  <符号付き数定数>

<順序数生成子 MAXVALUE 選択肢> ::=

  MAXVALUE  <順序数生成子最大値>

| NO MAXVALUE

<順序数生成子最大値> ::=

  <符号付き数定数>

<順序数生成子 MINVALUE 選択肢> ::=

  MINVALUE  <順序数生成子最小値>

| NO MINVALUE

<順序数生成子最小値> ::=

  <符号付き数定数>

<順序数生成子 CYCLE 選択肢> ::=

  CYCLE

| NO CYCLE

構文規則


639

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

1) <順序数生成子定義> SEQD によって定義される順序数生成子を SEQ とする。

2)  SEQD が<スキーマ定義> SD に含まれ,

かつ,

<順序数生成子名> SQN が<スキーマ名>を含むならば,

その

<スキーマ名>は,SD の暗に想定されるか又は陽に指定される<スキーマ名>と等価でなければ

ならない。

3)  SQN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,順序数

生成子名が SQN と等価である順序数生成子記述子を含んでいてはならない。

4)  SEQD が<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか又は暗に想定され

<認可識別子>を とする。そうでなければ,SQN の暗に想定されるか又は陽に指定される<スキ

ーマ名

>によって識別されるスキーマを所有する<認可識別子>を とする。

5) <順序数生成子データ型選択肢>,

<順序数生成子 START WITH 選択肢>,<順序数生成子 INCREMENT

BY 選択肢>,<順序数生成子 MAXVALUE 選択肢>,<順序数生成子 MINVALUE 選択肢>及び<順序

数生成子

CYCLE 選択肢>のそれぞれを高々1 回指定しなければならない。

6) <順序数生成子データ型選択肢>が指定されるならば,<データ型>は,位取り 0 の真数型 DT でなけ

ればならない。そうでなければ,位取り

0 の処理系定義の真数型を DT とする。

7) <共通順序数生成子選択肢の並び>を OPTIONS として,DT を DATA TYPE として,

9.26  順序数生

成子の作成”の構文規則を適用する。

アクセス規則

1) <順序数生成子定義>が<SQL クライアントモジュール定義>に含まれるならば,与えられた認可識別

子は,を含まなければならない。

一般規則

1) <共通順序数生成子選択肢の並び>を OPTIONS として,DT を DATA TYPE として,

9.26  順序数生

成子の作成”の一般規則を適用する。これらの一般規則の適用によって戻される SEQGENDESC 

順序数生成子記述子 SEQDS とする。SEQDS に含まれる順序数生成子名には,SQN が設定される。

2)  に対して SEQ に関する USAGE 権限を定義する権限記述子が作成される。この権限は,付与可能

とする。この権限記述子の権限付与者には,特別な付与者の値“

_SYSTEM”が設定される。

適合性規則

1)  機能 T176“順序数生成子提供”なしでは,適合する SQL 言語は,<順序数生成子定義>を含んでは

ならない。

11.73

<順序数生成子変更文>

機能

<順序数生成子変更文> (<alter sequence generator statement>)  は,外部順序数生成子の定義を変更する。

形式

<順序数生成子変更文> ::=

  ALTER  SEQUENCE  <順序数生成子名> <順序数生成子変更選択肢の並び>

<順序数生成子変更選択肢の並び> ::=

  <順序数生成子変更選択肢>...

<順序数生成子変更選択肢> ::=

  <順序数生成子変更 RESTART 選択肢>

 |

<基本順序数生成子選択肢>

<順序数生成子変更 RESTART 選択肢> ::=


640

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

  RESTART [ WITH <順序数生成子再開始値> ]

<順序数生成子再開始値> ::=

  <符号付き数定数>

構文規則

1) <順序数生成子名> SQN によって識別される順序数生成子記述子を SEQ とする。SEQ のデータ型を

DT とする。

2)  SQN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,SEQ

を含んでいなければならない。

3)  SQN の有効範囲は,<順序数生成子変更文>とする。

4) <順序数生成子変更選択肢の並び>を OPTIONS として,SEQ を SEQUENCE として,

9.27  順序数

生成子の変更”の構文規則を適用する。

アクセス規則

1)  与えられた認可識別子は,SQN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別

されるスキーマを所有する

<認可識別子>を含まなければならない。

一般規則

1) <順序数生成子変更選択肢の並び>を OPTIONS として,SEQ を SEQUENCE として,

9.27  順序数

生成子の変更”の一般規則を適用する。

適合性規則

1)  機能 T176“順序数生成子提供”なしでは,適合する SQL 言語は,<順序数生成子変更文>を含んで

はならない。

2)  機能 T177“順序数生成子提供:単純再開始選択肢”なしでは,適合する SQL 言語中で,<順序数生

成子変更文

>に含まれる<順序数生成子変更 RESTART 選択肢>は,<順序数生成子再開始値>を含ま

なければならない。

11.74

<順序数生成子削除文>

機能

<順序数生成子削除文> (<drop sequence generator statement>)  は,外部順序数生成子を破壊する。

形式

<順序数生成子削除文> ::=

  DROP  SEQUECE  <順序数生成子名> <削除動作>

構文規則

1) <順序数生成子名> SQN によって識別される順序数生成子を SEQ とする。

2)  SQN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,SEQ

の記述子を含んでいなければならない。

3) RESTRICT が指定されるならば,次のいずれかの中で SEQ が参照されていてはならない。

a)  ルーチン記述子の SQL ルーチン本体。

b)  トリガ記述子の被トリガ動作。

注記 442 CASCADE が指定されるならば,このようなオブジェクトは,この細分箇条の一般規則

で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE 文>の実行に

よって暗に削除される。

4)  SQN によって識別される順序数生成子の<スキーマ名>によって識別されるスキーマを所有する<認


641

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

可識別子

>を とする。

アクセス規則

1)  与えられた認可識別子は,を含まなければならない。

一般規則

1)  “_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE

>が実効的に実行される。

REVOKE USAGE ON SEQUENCE SQN FROM A CASCADE

2)  SEQ の記述子が破壊される。

適合性規則

1)  機能 T176“順序数生成子提供”なしでは,適合する SQL 言語は,<順序数生成子削除文>を含んで

はならない。

12  アクセス制御

12.1  <GRANT 文>

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

機能

<GRANT 文> (<grant statement>)  は,権限及び役割認可を定義する。

形式

<GRANT 文> ::=

  <GRANT 権限文>

 |

<GRANT 役割文>

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  関与する全ての権限受領者 G,及び によって所有される全ての定義域 D1 に対して,次の全てが

真ならば,

a)  D1 の定義域記述子に含まれる定義域制約記述子に含まれる<探索条件> SC 中で参照される全ての

列に関する付与可能な

REFERENCE 権限を,に適用可能な権限が含む。

b)  SC に含まれる<ルーチン呼出し>の当該ルーチンである全ての SQL 呼出しルーチンに関する付与

可能な

EXECUTE 権限を,に適用可能な権限が含む。

c)

表 T1 が<メソッド参照>  MR の<値式一次子>の有効範囲中にあり,かつ,メソッド が,D1 

定義域記述子に含まれる定義域制約記述子に含まれる MR の<メソッド名>によって識別されるメ

ソッドであるような,SC に含まれる MR が存在するような全ての T1 及び全ての に関する付与

可能な

SELECT 権限を,に適用可能な権限が含む。

d)  SC に含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関す

WITH HIERARCHY OPTION 付きの付与可能な SELECT 権限を,に適用可能な権限が含む。

e) <定義域名>,<文字集合名>,<照合順名>及び<文字変換名>が,それぞれ,D1 の定義域記述子に

含まれる全ての定義域,文字集合,照合順及び文字変換に関する付与可能な

USAGE 権限を,G


642

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

に適用可能な権限が含む。

<動作> USAGE,“_SYSTEM”の権限付与者,オブジェクト D1 及び権限受領者 をもち,付与可

能でないどの権限記述子に対しても,

_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセ

ス規則の検査なしで,次の

<GRANT 文>が実効的に実行される。

GRANT USAGE ON DOMAIN D1

  TO  G WITH

  GRANT  OPTION

2)  関与する全ての権限受領者 G,及び によって所有される全ての照合順 C1 に対して,C1 の照合順

記述子に含まれる文字集合名に関する付与可能な

USAGE 権限,及び C1 の照合順記述子に含まれる

文字変換名があるならば,その文字変換名に関する付与可能な

USAGE 権限を,に適用可能な権

限が含むならば,

<動作> USAGE,“_SYSTEM”の権限付与者,オブジェクト C1 及び権限受領者 G

をもち,付与可能でないどの権限記述子に対しても,

_SYSTEM”の現行認可識別子で,かつ,こ

れ以上のアクセス規則の検査なしで,次の

<GRANT 文>が実効的に実行される。

GRANT USAGE ON

  COLLATION  C1

  TO  G

  WITH  GRANT  OPTION

3)  関与する全ての権限受領者 G,及び によって所有される全ての文字変換 T1 に対して,T1 の<文

字変換定義

>に含まれる<文字集合指定>によって識別される全ての文字集合に関する付与可能な

USAGE 権限を,に適用可能な権限が含むならば,<動作> P,“_SYSTEM”の権限付与者,オブジ

ェクト T1 及び権限受領者 をもち,付与可能でないどの権限記述子に対しても,“_SYSTEM”の

現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の

<GRANT 文>が実効的に実

行される。

GRANT P

  ON  TRANSLATION  T1

  TO  G

  WITH  GRANT  OPTION

4)  関与する権限記述子によって指定される全ての表 に対して,かつ,若しくは の列 CT が 

元の

<問合せ式>  QE 中で参照されているか,又は が,QE に含まれる<参照解決>のための有効範

囲化された表の上位表であるような,関与する権限受領者 によって所有される各ビューに対し

て,これらの表の

<表名>を,1 から,QE に含まれる<表参照>によって識別される表の個数までの

範囲の に対して,RTi とする。のどの列 CV に対しても,次による。

a)  これらの列の<列名>を,

1 から,CV の基となる列である RTi の列の個数までの範囲の に対して,

CRTi,とする。

b) <GRANT 文>の実行の成功の後に続いて,次の全てが真ならば,

i)

CRTi,の全ての列に関する付与可能な SELECT 権限を,に適用可能な権限が含む。

ii)  QE に含まれる<ルーチン呼出し>の当該ルーチンである全ての SQL 呼出しルーチンに関する付

与可能な

EXECUTE 権限を,に適用可能な権限が含む。

iii)  表 T1 が<メソッド参照>  MR の<値式一次子>の有効範囲中にあり,かつ,メソッド が,MR

<メソッド名>によって識別されるメソッドであるような,QE に含まれる MR が存在する全


643

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

ての T1 及び全ての に関する付与可能な SELECT 権限を,に適用可能な権限が含む。

iv)  QE に含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関

する

WITH HIERARCHY OPTION 付きの付与可能な SELECT 権限を,に適用可能な権限が含

む。

_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

>が実効的に実行される。

GRANT SELECT (CV)

  ON  V

  TO  G

  WITH  GRANT  OPTION

c) <GRANT 文>の実行の成功の後に続いて,

に適用可能な権限が,

全ての 及び全ての に対して,

REFERENCES(CRTi,j)  を 含 み,かつ, 全て の に 対して,RTi の いずれ かの列に関 する
REFERENCES 権限を含むならば,次による。

i)

場合:

1)  次の全てが真ならば,

WITH GRANT OPTION”を WGO とする。

A)  に適用可能な権限が,全ての 及び全ての に対して,付与可能な REFERENCES(CRTi,j)

を含み,かつ,全ての に対して,RTi のいずれかの列に関する付与可能な REFERENCES
権限を含む。

B)  QE に含まれる<ルーチン呼出し>の当該ルーチンである全ての SQL 呼出しルーチンに関す

る付与可能な

EXECUTE 権限を,に適用可能な権限が含む。

C)  表 T1 が<メソッド参照>  MR の<値式一次子>の有効範囲中にあり,かつ,メソッド が,

MR の<メソッド名>によって識別されるメソッドであるような,QE に含まれる MR が存

在する全ての T1 及び全ての に関する付与可能な SELECT 権限を,に適用可能な権限

が含む。

D)  QE に含まれる全ての<参照解決>のための有効範囲化された表の少なくとも一つの上位表

に関する

WITH HIERARCHY OPTION 付きの付与可能な SELECT 権限を,に適用可能な

権限が含む。

2)  そうでなければ,長さ 0 の文字列を WGO とする。

ii)  “_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

>が実効的に実行される。

GRANT REFERENCES (CV)

  ON  V

  TO  G

  WGO

d) <GRANT 文>の実行の成功の後に続いて,の全ての列に関する付与可能な SELECT 権限を,G

に適用可能な権限が含むならば,

_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス

規則の検査なしで,次の

<GRANT 文>が実効的に実行される。

GRANT SELECT

  ON  V

  TO  G


644

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

  WITH  GRANT  OPTION

e) <GRANT 文>の実行の成功の後に続いて,次による。

場合:

i)

の全ての列に関する付与可能な REFERENCES 権限を,に適用可能な権限が含むならば,

WITH GRANT OPTION”を WGO とする。

ii)  の全ての列に関する REFERENCES 権限を,に適用可能な権限が含むならば,長さ 0 の文

字列を WGO とする。

_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

>が実効的に実行される。

GRANT REFERENCES

  ON  V

  TO  G

  WGO

5) <GRANT 文>の実行の成功の後に続いて,関与する権限記述子によって指定される全ての表 に対

して,かつ,が,実効的に更新可能なビューの元の<問合せ式>の末端で基となる表であるよう

な,関与する権限受領者 によって所有される全ての に対して,を VIEW として,“9.29  ビュ

ー権限の決定”の一般規則を適用する。

6)  関与する全ての権限受領者 G,及び によって所有され,VN と名付けられた全ての参照可能ビュ

に対して,<GRANT 文>の実行の成功の後に続いて,の直接上位表に関する付与可能な UNDER

権限を,に適用可能な権限が含むならば,“_SYSTEM”の現行認可識別子で,かつ,これ以上の

アクセス規則の検査なしで,次の

<GRANT 文>が実効的に実行される。

GRANT UNDER

  ON  VN

  TO  G

  WITH  GRANT  OPTION

7)  関与する全ての権限受領者 G

及び によって所有される全てのスキーマレベル SQL 呼出しルーチ

ン R1 に対して,R1 の<ルーチン本体>に含まれる全ての<SQL 手続文>の実行の成功に必要な権限の

全てを含む に適用可能な権限が付与可能ならば,<動作> EXECUTE,“_SYSTEM”の権限付与者,

オブジェクト R1 及び権限受領者 をもち,付与可能でないどの権限記述子に対しても,

_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<GRANT

>が実効的に実行される。

GRANT EXECUTE

  ON  R1

  TO  G

  WITH  GRANT  OPTION

注記 443  必要な権限は,<SQL 手続文>に含まれる全ての<ルーチン呼出し>の全ての当該ルーチン

に関する

EXECUTE 権限を含む。

8)  権限が付与可能であることを一方の権限記述子が示し,権限が付与可能でないことを他方の権限記

述子が示すことを除いて,二つの権限記述子が同一ならば,権限が付与可能であることを示すよう

に,両方の権限記述子に設定される。


645

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

9) WITH

HIERARCHY

OPTION 付きであることを一方の権限記述子が示し,他方の権限記述子が示さ

ないことを除いて,二つの権限記述子が同一ならば,権限が

WITH HIERARCHY OPTION をもつこ

とを示すように,両方の権限記述子に設定される。

10)  冗長な重複権限記述子が全ての権限記述子の集まりから取り除かれる。

11)  冗長な重複ビュー権限依存記述子が全てのビュー権限依存記述子の集まりから取り除かれる。

適合性規則

なし。 

12.2  <GRANT 権限文>

この細分箇条は,ISO/IEC 9075-13 の“10.1 <GRANT 権限文>”によって修正される。 

機能

<GRANT 権限文> (<grant privilege statement>)  は,権限を定義する。

形式

<GRANT 権限文> ::=

  GRANT  <権限> TO <権限受領者> [ { <コンマ> <権限受領者> }... ]

      [  WITH  HIERARCHY  OPTION  ]

      [  WITH  GRANT  OPTION  ]

      [  GRANTED  BY  <権限付与者> ]

構文規則

1) <権限>に含まれる<オブジェクト名>によって識別されるオブジェクトを とする。

2) <オブジェクト名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキ

ーマは,の記述子を含んでいなければならない。

3) WITH

HIERARCHY

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

a) <権限>は,<権限列リスト>なしで,かつ,<権限メソッドリスト>なしで,SELECT の<動作>を指

定しなければならない。

b)  は,構造型の表でなければならない。

アクセス規則

なし。 

一般規則

1)  場合:

a) GRANTED

BY が省略されるならば,OMITTED を とする。

b)  そうでなければ,<権限付与者>を とする。

2)  を GRANTOR として,

12.8  権限付与者決定”の一般規則を適用した結果を とする。

3)  に適用可能な権限が,を識別する権限を含まないならば,例外条件:権限が付与されていない

(privilege not granted)  が引き起こされる。

4)  権限記述子の集合が識別される。識別される権限記述子は,<権限>中で陽に指定されるか又は暗に

想定される各

<動作>に対して,WITH GRANT OPTION 付きで によって保持される に関する<

動作

>を定義する権限記述子とする。

5) <オブジェクト権限>は,<オブジェクト名>によって識別されるオブジェクトに関する一つ以上の権

限を指定する。

6)  どの識別される権限記述子 IPD に対しても,権限受領者<権限受領者>,動作<動作>,オブジェクト


646

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

及び権限付与者 を指定する権限記述子が各<権限受領者>に対して作成される。作成される権限

記述子の集合を CPD とする。

7)  列名なしの INSERT,UPDATE 又は REFERENCES である動作をもつ CPD 中のどの権限記述子に対

しても,

WITH GRANT OPTION 付きの対応する権限を が保持する 中の各列 に対する権限記

述子が同様に作成され,CPD に追加される。そのような各列に対して,同一の<権限受領者>,同一

<動作>,オブジェクト 及び権限付与者 を指定する権限記述子が作成される。

8)  列名又はメソッド名なしの SELECT である動作をもつ CPD 中のどの権限記述子に対しても,WITH

GRANT OPTION 付きの対応する権限を が保持する 中の各列 に対する権限記述子が同様に作

成され,CPD に追加される。そのような各列に対して,同一の<権限受領者>,同一の<動作>,オブ

ジェクト 及び権限付与者 を指定する権限記述子が作成される。

9)  列名又はメソッド名なしの SELECT である動作をもつ CPD 中のどの権限記述子に対しても,権限

記述子のオブジェクトによって識別される表 が構造型 TY の表ならば,WITH GRANT OPTION 付

きの対応する権限を が保持する TY の各メソッド に対する表/メソッド権限記述子が同様に作成

され,CPD に追加される。そのような各メソッドに対して,同一の<権限受領者>,同一の<動作>,

表 及びメソッド の対から成るオブジェクト,並びに権限付与者 を指定する表/メソッド権限

記述子が作成される。

10) WITH GRANT OPTION が指定されるならば,各権限記述子は,権限が付与可能であることも示す。

11)  SELECT WITH HIERARCHY OPTION である動作をもつ CPD 中の権限記述子の集合を SWH とする。

の下位表の集合を ST とする。ST 中の全ての表 T,及び SWH 中の全ての権限記述子に対して,

権限受領者 及び権限付与者 として,次による。

場合:

a)  権限が付与可能ならば,

WITH GRANT OPTION”を WGO とする。

b)  そうでなければ,長さ 0 の文字列を WGO とする。

これ以上のアクセス規則の検査なしで,次の

<GRANT 文>が実効的に実行される。

GRANT SELECT

  ON  T

  TO  G

  WGO

  GRANTED  BY  A

12) <権限>中で指定された<権限受領者>と に関する<動作>とのどの組合せに対しても,対応する権

限記述子が CPD 中に存在しないならば,終了条件:警告  (warning)  -  権限が付与されていない  が

引き起こされる。

13) ALL PRIVILEGE が指定され,

各権限受領者 に対して,権限受領者 を指定する権限記述子が CPD

中に存在しないならば,

警告  -  権限が付与されていない  が引き起こされる。

14)  関与する権限記述子の集合  (set of involved privilege descriptors)  が,CPD として定義される。

15)  関与する権限受領者の集合  (set of involved grantees)  が,指定された<権限受領者>の集合として定義

される。

適合性規則

1)  機能 S024“拡張構造型”なしでは,適合する SQL 言語は,メソッドを識別する<GRANT 権限文>

に含まれる

<特定ルーチン指示子>を含んではならない。


647

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

2)  機能 S081“下位表”なしでは,適合する SQL 言語は,WITH HIERARCHY OPTION を含む<GRANT

権限文

>を含んではならない。

12.3  <権限>

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

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

この細分箇条は,ISO/IEC 9075-13 の“10.2 <権限>”によって修正される。 

機能

<権限> (<privileges>)  は,権限を指定する。

形式

<権限> ::=

  <オブジェクトの権限> ON <オブジェクト名>

04

09

13

 <オブジェクト名> ::=

  [ TABLE ] <表名>

| DOMAIN <定義域名>

| COLLATION <照合順名>

| CHARACTER SET <文字集合名>

| TRANSLATION <文字変換名>

| TYPE <スキーマ解決利用者定義型名>

| SEQUENCE <順序数生成子名>

 |

<特定ルーチン指示子>

<オブジェクトの権限> ::=

  ALL  PRIVILEGES

 |

<動作> [ { <コンマ> <動作> }... ]

<動作> ::=

  SELECT

| SELECT <左括弧> <権限列リスト> <右括弧>

| SELECT <左括弧> <権限メソッドリスト> <右括弧>

 |

DELETE

| INSERT [ <左括弧> <権限列リスト> <右括弧> ]

| UPDATE [ <左括弧> <権限列リスト> <右括弧> ]

| REFERENCES [ <左括弧> <権限列リスト> <右括弧> ]

 |

USAGE

 |

TRIGGER

 |

UNDER

 |

EXECUTE

<権限メソッドリスト> ::=

  <特定ルーチン指示子> [ { <コンマ> <特定ルーチン指示子> }... ]

<権限列リスト> ::=

  <列名リスト>

<権限受領者> ::=


648

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

  PUBLIC

 |

<認可識別子>

<権限付与者> ::=

  CURRENT_USER

 |

CURRENT_ROLE

構文規則

1) ALL

PRIVILEGES は,<オブジェクト名>に関して,<権限付与者>が付与可能な権限記述子をもつ全

ての権限の指定と等価とする。

2) <権限>を指定している<GRANT 文>又は<REVOKE 文>の<オブジェクト名>が<表名>を指定するな

らば,その

<表名>によって識別される表を とする。は,宣言局所一時表であってはならない。

3)

09

13

 <オブジェクト名>が<定義域名>,<照合順名>,<文字集合名>,<文字変換名>,<スキーマ解決

利用者定義型名

>又は<順序数生成子名>を指定するならば,<権限>は,USAGE を指定してもよい。

そうでなければ,

USAGE を指定してはならない。

4)  実表又はビュー表を識別する<表名>を<オブジェクト名>が指定するならば,<権限>は,TRIGGER

を指定してもよい。そうでなければ,

TRIGGER を指定してはならない。

5)  構造型を識別する<スキーマ解決利用者定義型名>を<オブジェクト名>が指定するか,又は<表名>

<オブジェクト名>が指定するならば,<権限>は,UNDER を指定してもよい。そうでなければ,

UNDER を指定してはならない。

6)  が一時表ならば,<権限>は,ALL PRIVILEGES を指定しなければならない。

7)

04

 <GRANT 文>又は<REVOKE 文>の<オブジェクト名>によって識別されるオブジェクトが SQL 呼

出しルーチンならば,

<権限>は,EXECUTE を指定してもよい。そうでなければ,EXECUTE を指

定してはならない。

8) <オブジェクトの権限>は,<オブジェクト名>によって識別されるオブジェクトに関する一つ以上の

権限を指定する。

9) <権限列リスト>中の各<列名>は,の列を識別しなければならない。

10) <権限メソッドリスト>が指定されるならば,<オブジェクト名>は,構造型 TY の表を識別する<表名

>を指定しなければならず,かつ,<権限メソッドリスト>中の各<特定ルーチン指示子>は,TY のメ

ソッドを識別しなければならない。

11) UPDATE

(<権限列リスト>)  は,<権限列リスト>中の各<列名>に対する UPDATE (<列名>)  の指定と

等価とする。

INSERT (<権限列リスト>)  は,<権限列リスト>中の各<列名>に対する INSERT (<列名

>)  の指定と等価とする。REFERENCES (<権限列リスト>)  は,<権限列リスト>中の各<列名>に対す

REFERENCES (<列名>)  の指定と等価とする。SELECT (<権限列リスト>)  は,<権限列リスト>

中の各

<列名>に対する SELECT (<列名>)  の指定と等価とする。SELECT (<権限メソッドリスト>)

は,

<権限メソッドリスト>中の各<特定ルーチン指示子>に対する SELECT (<特定ルーチン指示子>)

の指定と等価とする。

アクセス規則

なし。 

一般規則

1) PUBLIC の<権限受領者>は,SQL 環境中の全ての<認可識別子>を含む<権限受領者>のリストを常に

示す。


649

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

2) SELECT (<列名>)  は,示された列に関する SELECT 権限を指定し,一つ以上の列権限記述子を暗に

想定する。

3) SELECT (<特定ルーチン指示子>)  は,<オブジェクト名>によって識別される表に対する,示された

メソッドに関する

SELECT 権限を指定し,一つ以上の表/メソッド権限記述子を暗に想定する。

4) <権限列リスト>も<権限メソッドリスト>もない SELECT は,

にその後追加されるどの列も含めて,

の全ての列に関する SELECT 権限を指定し,表権限記述子及び一つ以上の列権限記述子を暗に想

定する。が構造型 TY の表ならば,SELECT は,型 TY にその後追加されるどのメソッドも含めて,

型 TY の全てのメソッドに関する SELECT 権限も指定し,一つ以上の表/メソッド権限記述子も暗に

想定する。

5) UPDATE

(<列名>)  は,示された列に関する UPDATE 権限を指定し,一つ以上の列権限記述子を暗

に想定する。

<権限列リスト>が省略されるならば,UPDATE は,にその後追加されるどの列も含

めて,の全ての列に関する UPDATE 権限を指定し,表権限記述子及び一つ以上の列権限記述子を

暗に想定する。

6) INSERT

(<列名>)  は,示された列に関する INSERT 権限を指定し,一つ以上の列権限記述子を暗に

想定する。

<権限列リスト>が省略されるならば,INSERT は,にその後追加されるどの列も含め

て,の全ての列に関する INSERT 権限を指定し,表権限記述子及び一つ以上の列権限記述子を暗

に想定する。

7) REFERENCES

(<列名>)  は,示された列に関する REFERENCES 権限を指定し,一つ以上の列権限

記述子を暗に想定する。

<権限列リスト>が省略されるならば,REFERENCES は,にその後追加さ

れるどの列も含めて,の全ての列に関する REFERENCES 権限を指定し,表権限記述子及び一つ

以上の列権限記述子を暗に想定する。

8)  WITH ADMIN OPTION 付きで<認可識別子>  に付与された役割を役割認可記述子が識別するか,

又は に適用可能な別の役割に WITH ADMIN OPTION 付きで付与された役割を役割認可記述子が

識別するならば,は,その役割に関して WITH ADMIN OPTION をもつ。

適合性規則

1)  機能 T332“拡張役割”なしでは,適合する SQL 言語は,<権限付与者>を含んではならない。

2)  機能 T211“基本トリガ能力”なしでは,適合する SQL 言語は,TRIGGER を含む<動作>を含んでは

ならない。

3)  機能 S081“下位表”なしでは,適合する SQL 言語は,UNDER を含む<動作>を含み,かつ,<表名

>を含む<オブジェクト名>を含む<権限>を含んではならない。

4)  機能 S023“基本構造型”なしでは,適合する SQL 言語は,UNDER を含む<動作>を含み,かつ,構

造型を識別する

<スキーマ解決利用者定義型名>を含む<オブジェクト名>を含む<権限>を含んでは

ならない。

5)  機能 S024“拡張構造型”なしでは,適合する SQL 言語は,USAGE を含む<動作>を含み,かつ,構

造型を識別する

<スキーマ解決利用者定義型名>を含む<オブジェクト名>を含む<権限>を含んでは

ならない。

6)  機能 T281“列単位の SELECT 権限”なしでは,適合する SQL 言語中で,SELECT を含む<動作>は,

<権限列リスト>を含んではならない。

7)  機能 F731“INSERT 列権限”なしでは,適合する SQL 言語中で,INSERT を含む<動作>は,<権限

列リスト

>を含んではならない。


650

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

8)  機能 S024“拡張構造型”なしでは,適合する SQL 言語は,<権限メソッドリスト>を含んではなら

ない。

12.4  <役割定義>

機能

<役割定義> (<role definition>)  は,役割を定義する。

形式

<役割定義> ::=

CREATE ROLE <役割名> [ WITH ADMIN <権限付与者> ]

構文規則

1)  指定された<役割名>は,SQL 環境中の他のどの<認可識別子>とも等価であってはならない。

アクセス規則

1) <役割定義>を実行するために必要な権限は,処理系定義とする。

一般規則

1)  役割名が<役割名>である役割記述子が SQL 環境中に作成される。

2)  場合:

a) WITH

ADMIN が省略されるならば,OMITTED を とする。

b)  そうでなければ,<権限付与者>を とする。

3)  を GRANTOR として,

12.8  権限付与者決定”の一般規則を適用した結果を とする。

4)  役割名が<役割名>で,権限付与者が“_SYSTEM”で,かつ,権限受領者が である付与可能な役

割認可記述子が作成される。

適合性規則

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

2)  機能 T332“拡張役割”なしでは,適合する SQL 言語は,WITH ADMIN を直に含む<役割定義>を含

んではならない。

12.5  <GRANT 役割文>

機能

<GRANT 役割文> (<grant role statement>)  は,役割認可を定義する。

形式

<GRANT 役割文> ::=

  GRANT 付与役割<付与役割> [ { <コンマ> 付与役割<付与役割> }... ]

    TO <権限受領者> [ { <コンマ> <権限受領者> }... ]

    [  WITH  ADMIN  OPTION  ]

    [  GRANTED  BY  <権限付与者> ]

付与役割<付与役割> ::=

  <役割名>

構文規則

1)  指定された<権限受領者>によって識別される役割は,指定された付与役割<付与役割>によって識別

されるどの役割に対しても適用可能であってはならない。

注記 444  すなわち,役割認可の循環は,許されない。

アクセス規則


651

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

なし。 

一般規則

1)  場合:

a) WITH

ADMIN が省略されるならば,OMITTED を とする。

b)  そうでなければ,<権限付与者>を とする。

2)  を GRANTOR として,

12.8  権限付与者決定”の一般規則を適用した結果を とする。

3)  各付与役割<付与役割>  に対して,役割名が で,かつ,権限受領者が か又は に適用可能な

役割である付与可能な役割認可記述子が存在しないならば,例外条件:

役割指定が正しくない

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

4)  各<権限受領者> GEE に対して,各付与役割<付与役割> に対して,役割名 R,権限受領者 GEE 

び権限付与者 をもつ役割認可記述子が作成される。

5) WITH

ADMIN

OPTION が指定されるならば,各役割認可記述子は,付与可能とする。

6)  一方が付与可能で,かつ,他方が付与可能でないことを除いて,二つの役割認可記述子が同一なら

ば,両方の役割認可記述子は,役割認可が付与可能であることを示すように設定される。

7)  冗長な重複役割認可記述子が破壊される。

8)

関与する権限記述子の集合  (set of involved privilege descriptors)  は,指定された全ての付与役割<付与

役割

>に適用可能な権限に対応する権限記述子の集合の和集合とする。

9)

関与する権限受領者の集合  (set of involved grantees)  は,<権限受領者>の集合と,<権限受領者>とし

て指定される可能性がある

<役割名>の少なくとも一つが適用可能である<役割名>の集合との和集

合とする。

適合性規則

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

12.6  <役割削除文>

機能

<役割削除文> (<drop role statement>)  は,役割を破壊する。

形式

<役割削除文> ::=

  DROP  ROLE  <役割名>

構文規則

1)  指定された<役割名>によって識別される役割を とする。

アクセス規則

1)  役割名が で,かつ,権限受領者が与えられた認可識別子である付与可能な役割認可記述子が少な

くとも一つ存在しなければならない。

一般規則

1)  に付与された役割認可記述子によって識別される<認可識別子>を とする。

2)  これ以上のアクセス規則の検査なしで,次の<REVOKE 役割文>が実効的に実行される。

REVOKE R FROM A

3)  の記述子が破壊される。

適合性規則

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


652

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

12.7  <REVOKE 文>

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

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

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

機能

<REVOKE 文> (<revoke statement>)  は,権限及び役割認可を破壊する。

形式

<REVOKE 文> ::=

  <REVOKE 権限文>

 |

<REVOKE 役割文>

<REVOKE 権限文> ::=

  REVOKE  [  <選択肢剝奪範囲> ] <権限>

    FROM  <権限受領者> [ { <コンマ> <権限受領者> }... ]

    [  GRANTED  BY  <権限付与者> ]

    <削除動作>

<選択肢剝奪範囲> ::=

  GRANT  OPTION  FOR

| HIERARCHY OPTION FOR

<REVOKE 役割文> ::=

  REVOKE [ ADMIN OPTION FOR ] <剝奪役割> [ { <コンマ> <剝奪役割> }... ]

    FROM  <権限受領者> [ { <コンマ> <権限受領者> }... ]

    [  GRANTED  BY  <権限付与者> ]

    <削除動作>

<剝奪役割> ::=

  <役割名>

構文規則

1) <権限>に含まれる<オブジェクト名>によって識別されるオブジェクトを とする。

が表 ならば,

の下位表の集合を とする。が構造型の表ならば,その型を TY とする。

2) WITH

HIERARCHY

OPTION が指定されるならば,<権限>は,<権限列リスト>なしで,かつ,<権

限メソッドリスト

>なしで,SELECT の<動作>を指定しなければならず,は,構造型の表でなけれ

ばならない。

3) SELECT は,SELECT 表権限,及び<表名>の全ての列に対する SELECT (<権限列リスト>)  の両方を

指定することと等価とする。が構造型 TY の表ならば,SELECT は,の下位表のそれぞれの中の

から継承される全ての列に対する SELECT (<権限列リスト>),及び の下位表のそれぞれの中の

TY の全てのメソッドに対する SELECT (<権限メソッドリスト>)  も指定する。

4) INSERT は,INSERT 表権限,及び<表名>の全ての列に対する INSERT (<権限列リスト>)  の両方を

指定することと等価とする。

5) UPDATE は,UPDATE 表権限,及び<表名>の全ての列に対する UPDATE (<権限列リスト>)  の両方

を,さらに,の下位表のそれぞれの中の から継承される全ての列に対する UPDATE (<権限列リ

スト

>)  を指定することと等価とする。


653

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

6) REFERENCES は,REFERENCES 表権限,及び<表名>の全ての列に対する REFERENCES (<権限列

リスト

>)  の両方を,さらに,の下位表のそれぞれの中の から継承される全ての列に対する

REFERENCES (<権限列リスト>)  を指定することと等価とする。

アクセス規則

なし。 

一般規則

1)  場合:

a) GRANTED

BY が省略されるならば,OMITTED を とする。

b)  そうでなければ,<権限付与者>を とする。

2)  を GRANTOR として,

12.8  権限付与者決定”の一般規則を適用した結果を とする。

3)  場合:

  a) <REVOKE 文>が<REVOKE 権限文>で,かつ,を識別する権限を,に適用可能な権限が含ま

ないならば,例外条件:

権限付与者が正しくない  (invalid grantor)  が引き起こされる。

  b) <REVOKE 文>が<REVOKE 役割文>ならば,<剝奪役割>によって識別されるどの役割 に対して

も,役割名が で,かつ,権限受領者が 又は の適用可能な役割である付与可能な役割認可記

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

権限付与者が正しくない  が引き起こされる。

4)  場合:

a) <REVOKE 文>が<REVOKE 権限文>ならば,指定されたどの<権限受領者>に対しても,権限記述

子の集合が識別される。

<権限>に陽に含まれるか又は暗に含まれるどの<動作>に対しても,

よって

<権限受領者>に付与された か,又は 中のオブジェクトのいずれかに関するその<動作>

を定義した権限記述子の集合に権限記述子 が属するならば,権限記述子 は,識別される

(identified)  という。

注記 445  列権限記述子は<動作>が<権限列リスト>を陽に含むか又は暗に含むとき,識別される

ことになる。表

/メソッド記述子は,<動作>が<権限メソッドリスト>を陽に含むか又は

暗に含むとき,識別されることになる。

b) <REVOKE 文>が<REVOKE 役割文>ならば,指定されたどの<権限受領者>に対しても,役割認可

記述子の集合が識別される。指定された

<剝奪役割>のいずれかの,権限付与者 での<権限受領

>への付与を役割認可記述子が定義するならば,役割認可記述子は,識別される  という。

5)  次の条件を満たすならば,権限記述子 は,別の権限記述子 に直接依存している  (directly 

dependent)  という。

場合:

a)  がビュー又はビューの列を識別し,かつ,の動作が INSERT,UPDATE 又は DELETE のとき,

支援権限記述子が で,かつ,従属権限記述子が であるビュー権限依存記述子が存在するなら

ば,は,に直接依存している。

b)  そうでなければ,次のうちの一つが真ならば,は,に直接依存している。

i)

次の条件の全てを満たす。

1)  表現する権限が付与可能であることを が示す。

2)  の権限受領者が の権限付与者と同じか若しくは の権限受領者が PUBLIC であるか,又

は の権限付与者が<役割名>ならば,の権限受領者が の権限付与者に適用可能な役割で

ある。


654

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

3)  場合:

A)  及び が両方とも列権限記述子である。の動作及び識別される列が,それぞれ,

動作及び識別される列と同じである。

B)  及び が両方とも表権限記述子である。の動作及び識別される表が,それぞれ,

動作及び識別される表と同じである。

C)  及び が両方とも EXECUTE 権限記述子である。の動作及び識別される SQL 呼出しル

ーチンが,それぞれ,の動作及び識別される SQL 呼出しルーチンと同じである。

D)

13

  及び が両方とも USAGE 権限記述子である。の動作及び識別される定義域,文字

集合,照合順,文字変換,利用者定義型又は順序数生成子が,それぞれ,の動作及び識

別される定義域,文字集合,照合順,文字変換,利用者定義型又は順序数生成子と同じで

ある。

E)  及び が両方とも UNDER 権限記述子である。の動作及び識別される利用者定義型又

は表が,それぞれ,の動作及び識別される利用者定義型又は表と同じである。

F)  及び が両方とも表/メソッド権限記述子である。の動作並びに識別されるメソッド及

び表が,それぞれ,の動作並びに識別されるメソッド及び表と同じである。

ii)  次の条件の全てを満たす。

1)  権限付与者が特別な付与者の値“_SYSTEM”であることを の権限記述子が示す。

2)  の動作が の動作と同じである。

3)  の権限受領者が,によって識別される表,照合順若しくは文字変換の所有者であるか,

又は の権限受領者が PUBLIC である。

4)  次の条件のうちの一つを満たす。

A)  及び が両方とも列権限記述子で,<ビュー定義> の<ビュー列リスト>に陽に含まれる

か又は暗に含まれる

<列名>  CVN によって識別される列 CV を権限記述子 が識別し,か

つ,次のうちの一つが真である。

I)

の動作が REFERENCES で,かつ,の識別される列が CT であるか又は の識別され

る表が であるような,の元の<問合せ式>に含まれる<表参照>によって識別される表

T,及び の列で,かつ,CV の基となる列である列 CT が存在する。

II)  の動作が SELECT で,かつ,の識別される列が CT であるか又は の識別される表

が であるような,の元の<問合せ式>に含まれる<表参照>によって識別される表 T

及び の列で,かつ,CV の基となる列である列 CT が存在する。

B) <照合順定義>  CO の<照合順名>を権限記述子 が識別し,の識別される文字集合名が

CO の照合順記述子に含まれるか又は の識別される文字変換名が CO の照合順記述子に

含まれる。

C) <文字変換定義> TD の<文字変換名>を権限記述子 が識別し,TD に直に含まれる<源文字

集合指定

>又は<相手文字集合指定>に,の識別される文字集合名が含まれる。

iii)  次の条件の全てを満たす。

1)  権限付与者が特別な付与者の値“_SYSTEM”であることを の権限記述子が示す。

2)  の権限受領者が,によって識別される定義域の所有者であるか,又は の権限受領者が

PUBLIC である。

3) <定義域定義>  DO の<定義域名>を権限記述子 が識別し,かつ,列権限記述子 


655

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

REFERENCES の動作をもち,DO の定義域記述子に含まれる<探索条件>中で参照される列を

識別するか,又は権限記述子 が USAGE の動作をもち,DO の定義域記述子の<探索条件>

に含まれる

<定義域>,<照合順名>,<文字集合名>若しくは<文字変換名>をもつ定義域,照合

順,文字集合若しくは文字変換を識別するかのいずれかである。

6)  権限依存グラフ  (privilege dependency graph)  は,次の全てが真であるような有向グラフとする。

a)  各ノードが権限記述子を表現する。

b)  ノード P2 がノード P1 に直接依存しているという事実を,P1 から P2 への各アークが表現する。

独立ノード  (independent node)  は,入ってくるアークをもたないノードとする。

7)  次の全てが真ならば,権限記述子 は,修正される  (modified)  という。

a)  表現する権限が付与可能であることを が示す。

b)  識別される権限記述子又は修正される権限記述子に が直接依存する。

c)

場合:

i)

が,<ビュー定義> の<ビュー列リスト>に陽に含まれるか又は暗に含まれる<列名> CVN 

含み,

SELECT でも REFERENCES でもない動作をもつ列権限記述子ならば,権限記述子 

よって識別されるオブジェクトの識別子,及び の動作を,それぞれ,XO 及び XA とする。P

が直接依存する権限記述子の集合内で,識別される権限記述子の集合と修正される権限記述子

の集合とを和集合演算したものが,

WITH GRANT OPTION 付きでの XO に関する XA の付与を

指定する全ての権限記述子を含むような,XO 及び XA が存在する。

ii)  が,<ビュー定義> の<ビュー列リスト>に陽に含まれるか又は暗に含まれる<列名> CVN 

よって識別される列 CV を識別し,REFERENCES 又は SELECT の動作 PA をもつ列権限記述子

ならば,が直接依存する権限の集合を SP とする。の<問合せ式>に含まれる<表参照>によ

って識別されるどの表 に対しても,の<表名>を RT とする。CRT である<列名>をもち,次

の全てが真であるような列 CT が存在する。

1)  CT が の列で,かつ,CV の基となる列である。

2)  SP の要素の記述子で,かつ,WITH GRANT OPTION 付きで CRT に関して動作 PA を指定す

るどの権限記述子 PD も,CRT の識別される権限記述子か又は CRT の修正される権限記述子

のいずれかである。

d)  次の少なくとも一つが真である。

i) GRANT

OPTION

FOR が指定され,の権限付与者が特別な付与者の値“_SYSTEM”である。

ii)  識別される権限記述子又は修正される権限記述子を含まない独立ノードから へのパスが存在

する。は,修正されるマーク付き権限記述子  (marked modified privilege descriptor)  という。

iii)  修正されるマーク付き権限記述子に が直接依存し,かつ,の権限付与者が特別な付与者の

値“

_SYSTEM”である。は,修正されるマーク付き権限記述子  という。

8)  次の条件の全てを満たすならば,役割認可記述子 は,別の役割認可記述子 RD に直接依存してい

る  という。

a)  表現する役割が付与可能であることを RD が示す。

b)  の役割名が RD の役割名と同じである。

c)

RD の権限受領者が の権限付与者と同じか若しくは RD の権限受領者が PUBLIC であるか,又

は の権限付与者が<役割名>ならば,RD の権限受領者が の権限付与者に適用可能な役割であ

る。


656

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

9)  役割依存グラフ  (role dependency graph)  は,次の全てが真であるような有向グラフとする。

a)  各ノードが役割認可記述子を表現する。

b)  ノード R2 がノード R1 に直接依存するという事実を,R1 から R2 への各アークが表現する。

独立ノード  は,入ってくるアークをもたないノードとする。

10)  役割認可記述子 RD が,独立ノードではなく,識別される役割認可記述子自体ではなく,かつ,識

別される役割認可記述子を含むパス以外の独立ノードから RD へのどのパスも存在しないならば,

RD は,破棄される  (abandoned)  という。

11)  次の全てが真ならば,権限依存グラフのノード からノード へのアークは,提供されない

(unsupported)  という。

a)  の権限付与者及び の権限受領者が両方とも<役割名>である。

b)  全ての破棄される役割認可記述子,及び ADMIN OPTION FOR が指定されないならば,全ての識

別される役割認可記述子の破壊の結果として,の権限受領者がもはや の権限付与者に適用可

能な役割ではなくなる。

12)  次の条件のうちの少なくとも一つが真ならば,権限記述子 が破棄される。

a)  が独立ノードではなく,識別される権限記述子又は修正される権限記述子自体ではなく,識別

される権限記述子若しくは修正される権限記述子を含むパス又は提供されないアーク以外の独立

ノードから へのどのパスも存在しないで,かつ,<REVOKE 文>が WITH HIERARCHY OPTION

を指定するならば,が WITH HIERARCHY OPTION をもつ。

b)  次の条件の全てを満たす。

i)

が,<ビュー定義> の<ビュー列リスト>に陽に含まれるか又は暗に含まれる<列名> CVN 

含み,かつ,

REFERENCES 又は SELECT の動作 PA をもつ,列権限記述子である。

ii)  が直接依存する権限の集合を SP とし,次の少なくとも一つが真である。

1)  次の全てが真であるような表名 RT が存在する。

A)  RT が,の元の<問合せ式>に含まれる<表参照>によって識別される表の名前である。

B)  RT に関する動作 PA を指定する SP の要素の記述子であるどの列権限記述子 CPD に対して

も,CPD が RT の識別される権限記述子か又は RT の破棄される権限記述子のいずれかで

ある。

2)  次の全てが真であるような列名 CRT が存在する。

A)  CRT が,

の元の<問合せ式>に含まれる<表参照>によって識別される表の列の名前である。

B)  CRT に関する動作 PA を指定する SP の要素の記述子であるどの列権限記述子 CPD に対し

ても,CPD が CRT の識別される権限記述子か又は CRT の破棄される権限記述子のいずれ

かである。

13)  REVOKE 破壊動作  (revoke destruction action)  は,次のこととして定義される。

場合:

a) <REVOKE 文>が<REVOKE 権限文>ならば,次のこととする。

場合:

i) <REVOKE 文>が WITH HIERARCHY OPTION を指定するならば,全ての識別される権限記述子

及び破棄される権限記述子から

WITH HIERARCHY OPTION を取り除くこと。

ii)  そうでなければ,全ての破棄される権限記述子,及び GRANT OPTION FOR が指定されないな

らば,全ての識別される権限記述子を破壊すること。


657

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

b) <REVOKE 文>が<REVOKE 役割文>ならば,全ての破棄される役割認可記述子,全ての破棄され

た権限記述子,及び

ADMIN OPTION FOR が指定されないならば,全ての識別される役割認可記

述子を破壊すること。

14)  スキーマの名前を S1 とし,

S1 によって識別されるスキーマを所有する<認可識別子>を A1 とする。

15)  S1 に含まれるビュー記述子を とする。の元の<問合せ式>を QE とする。REVOKE 破壊動作の

結果として,A1 がそれの適用可能な権限中に次のいずれかを,もはやもたなくなるならば,は,

破棄される  という。

a)  QE に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関する SELECT 権

限。

b)  QE に含まれる<列参照>によって識別される全ての列に関する SELECT 権限。

c)

QE に名前が含まれる全ての定義域,照合順,文字集合及び文字変換に関する USAGE 権限。

d)  に含まれる<データ型>が利用者定義型 UDT に用途依存であるような UDT に関する USAGE 権

限。

e)

04

 QE に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参

>の当該ルーチンである全ての SQL 呼出しルーチンに関する EXECUTE 権限。

f)

表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,QE に含まれる MR が存在する全ての T1 及び全ての に関する表/メ

ソッド権限。

g)  QE に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって識別される

列に関する

SELECT 権限。

h)  QE に含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

i)

QE に含まれる<参照解決>のための有効範囲化された表に関する SELECT 権限。

j)

が参照可能表の記述子ならば,によって記述されるビューに関連付けられた構造型に関する

USAGE 権限。

k)  によって記述されるビューの全ての直接上位表に関する UNDER 権限。

l)

QE に含まれ,<ONLY 指定>を単純に含む<表参照>によって識別される全ての型付き表の少なく

とも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

16)

09

 S1 に含まれる表記述子を とする。REVOKE 破壊動作の結果として,A1 が次のいずれかを,も

はやもたなくなるならば,は,破棄される  という。

a)  が参照可能表の記述子ならば,によって記述される表に関連付けられる構造型に関する

USAGE 権限。

b)  によって記述される表の全ての直接上位表に関する UNDER 権限。

17)  S1 に含まれる表制約記述子を TC とする。REVOKE 破壊動作の結果として,A1 がそれの適用可能

な権限中に次のいずれかを,もはやもたなくなるならば,TC は,破棄される  という。

a)  TC の適用可能な<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つ

の列に関する

REFERENCES 権限。

b)  TC の 適 用 可 能 な < 探 索 条 件 > に 含 ま れ る < 列 参 照 > に よ っ て 識 別 さ れ る 全 て の 列 に 関 す る

REFERENCES 権限。

c)

TC の適用可能な<探索条件>に名前が含まれる全ての定義域,照合順,文字集合及び文字変換に


658

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

関する

USAGE 権限。

d)  TC の適用可能な<探索条件>に含まれる<データ型>が利用者定義型 UDT に用途依存であるような

UDT に関する USAGE 権限。

e)

04

 TC の適用可能な<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド

呼出し

>又は<メソッド参照>の当該ルーチンである全ての SQL 呼出しルーチンに関する

EXECUTE 権限。

f)

表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,TC の適用可能な<探索条件>に含まれる MR が存在する全ての T1 及び

全ての に関する表/メソッド権限。

g)  TC の適用可能な<探索条件>に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列

参照

>によって識別される列に関する SELECT 権限。

h)  TC の適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表の少なくとも一

つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

i)

TC の適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表に関する

SELECT 権限。

j)

TC の適用可能な<探索条件>に含まれ,<ONLY 指定>を単純に含む<表参照>によって識別される

全ての型付き表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT

権限。

18)  S1 に含まれる表明記述子を AX とする。REVOKE 破壊動作の結果として,A1 がそれの適用可能な

権限中に次のいずれかを,もはやもたなくなるならば,AX は,破棄される  という。

a)  AX の適用可能な<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つ

の列に関する

REFERENCES 権限。

b)  AX の 適 用 可 能 な < 探 索 条 件 > に 含 ま れ る < 列 参 照 > に よ っ て 識 別 さ れ る 全 て の 列 に 関 す る

REFERENCES 権限。

c)

AX の適用可能な<探索条件>に名前が含まれる全ての定義域,照合順,文字集合及び文字変換に

関する

USAGE 権限。

d)  AX の適用可能な<探索条件>に含まれる<データ型>が利用者定義型 UDT に用途依存であるような

UDT に関する USAGE 権限。

e)

04

 AX の適用可能な<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド

呼出し

>又は<メソッド参照>の当該ルーチンである全ての SQL 呼出しルーチンに関する

EXECUTE 権限。

f)

表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,AX の適用可能な<探索条件>に含まれる MR が存在する全ての T1 及び

全ての に関する表/メソッド権限。

g)  AX の適用可能な<探索条件>に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列

参照

>によって識別される列に関する SELECT 権限。

h)  AX の適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表の少なくとも一

つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

i)

AX の適用可能な<探索条件>に含まれる<参照解決>のための有効範囲化された表に関する

SELECT 権限。


659

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

j)

AX の適用可能な<探索条件>に含まれ,<ONLY 指定>を単純に含む<表参照>によって識別される

全ての型付き表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT

権限。

19)

04

  S1 に含まれるトリガ記述子を TR とする。REVOKE 破壊動作の結果として,A1 がそれの適用可

能な権限中に次のいずれかを,もはやもたなくなるならば,TR は,破棄される  という。

a)  TR の当該表に関する TRIGGER 権限。

b)  TR の<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関す

REFRENCES 権限。

c)

TR の<探索条件>に含まれる<列参照>によって識別される全ての列に関する SELECT 権限。

d)  TR の<探索条件>に名前が含まれる全ての定義域,

照合順,

文字集合及び文字変換に関する

USAGE

権限。

e)

TR の<探索条件>に含まれる<データ型>が利用者定義型 UDT に用途依存であるような UDT に関

する

USAGE 権限。

f)

表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,TR の<探索条件>に含まれる MR が存在する全ての T1 及び全ての M

に関する表

/メソッド権限。

g)

04

 TR の<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又

<メソッド参照>の当該ルーチンである SQL 呼出しルーチンに関する EXECUTE 権限。

h)

04

  TR の<被トリガ SQL 文>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼

出し

>又は<メソッド参照>の当該ルーチンである SQL 呼出しルーチンに関する EXECUTE 権限。

i)

TR の<被トリガ SQL 文>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純に含

まれる

<問合せ式>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関

する

SELECT 権限。

j)

TR の<被トリガ SQL 文>に含まれる<SELECT 文:単一行>に直に含まれる<表式>又は<選択リス

>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関する SELECT 権

限。

k)  TR の<被トリガ SQL 文>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE 文>

に含まれる

<探索条件>に含まれる<表参照>及び<列参照>によって識別される全ての表の少なく

とも一つの列に関する

SELECT 権限。

l)

TR の<被トリガ SQL 文>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる<

表参照

>及び<列参照>によって識別される全ての表の少なくとも一つの列に関する SELECT 権限。

m)  次の全ての列に関する INSERT 権限。

場合:

i)

TR の<被トリガ SQL 文>に含まれる<INSERT 文>又は<MERGE 文>の<挿入列リスト>に含まれ

<列名>によって識別される列。

ii)  TR の<被トリガ SQL 文>に含まれ,かつ,<挿入列リスト>を含まない<INSERT 文>に直に含ま

れる

<表名>によって識別される表の列。

iii)  TR の<被トリガ SQL 文>に含まれ,<併合挿入指定>を含み,かつ,<挿入列リスト>を含まない

<MERGE 文>に含まれる<相手表>によって識別される表の列。

n)  TR の<被トリガ SQL 文>に含まれる <UPDATE 文:位置付け>,<UPDATE 文:探索>又は<MERGE


660

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

>のいずれかに含まれる<対象列>に含まれる<列名>によって識別される全ての列に関する

UPDATE 権限。

o)  TR の<被トリガ SQL 文>に含まれる<DELETE 文:位置付け>又は<DELETE 文:探索>のいずれか

に含まれる

<表名>によって識別される全ての表に関する DELETE 権限。

p)  TR の<被トリガ SQL 文>に含まれ,かつ,<併合削除指定>を含む<MERGE 文>に含まれる<相手

>によって識別される表に関する DELETE 権限。

q)  TR の<被トリガ SQL 文>に名前が含まれる全ての定義域,照合順,文字集合,文字変換及び順序

数生成子に関する

USAGE 権限。

r)

TR の<被トリガ SQL 文>に含まれる<データ型>が利用者定義型 UDT に用途依存であるような

UDT に関する USAGE 権限。

s)

表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,TR の<被トリガ SQL 文>に含まれる MR が存在する全ての T1 及び全

ての に関する表/メソッド権限。

t)

次のいずれかに含まれる

<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって

識別される列に関する

SELECT 権限。

i)

TR の<探索条件>。

ii)  TR の<被トリガ SQL 文>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純に

含まれる

<問合せ式>。

iii)  TR の<被トリガ SQL 文>に含まれる<SELECT 文:単一行>  に直に含まれる<表式>又は<選択リ

スト

>。

iv)  TR の<被トリガ SQL 文>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>。

v)  TR の<被トリガ SQL 文>に含まれる<更新元>又は<代入行>に含まれる<値式>。

u)  次のいずれかに含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に

関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

i)

TR の<探索条件>。

ii)  TR の<被トリガ SQL 文>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純に

含まれる

<問合せ式>。

iii)  TR の<被トリガ SQL 文>に含まれる<SELECT 文:単一行>に直に含まれる<表式>又は<選択リ

スト

>。

iv)  TR の<被トリガ SQL 文>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>。

v)  TR の<被トリガ SQL 文>に含まれる<更新元>又は<代入行>に含まれる<値式>。

v)  次のいずれかに含まれる<参照解決>のための有効範囲化された表に関する SELECT 権限。

i)

TR の<探索条件>。

ii)  TR の<被トリガ SQL 文>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純に

含まれる

<問合せ式>。

iii)  TR の<被トリガ SQL 文>に含まれる<SELECT 文:単一行>  に直に含まれる<表式>又は<選択リ

スト

>。

iv)  TR の<被トリガ SQL 文>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE


661

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

>に含まれる<探索条件>。

v)  TR の<被トリガ SQL 文>に含まれる<更新元>又は<代入行>に含まれる<値式>。

w)  TR の<被トリガ SQL 文>に含まれ,<ONLY 指定>を単純に含む<表参照>によって識別される全て

の型付き表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

20)  S1 に含まれる定義域制約記述子を DC とする。REVOKE 破壊動作の結果として,A1 がそれの適用

可能な権限中に次のいずれかを,もはやもたなくなるならば,DC は,破棄される  という。

a)  DC の<探索条件>に含まれる<表参照>によって識別される全ての表の少なくとも一つの列に関す

REFERENCES 権限。

b)  DC の<探索条件>に含まれる<列参照>によって識別される全ての列に関する REFERENCES 権限。

c)

DC の<探索条件>に名前が含まれる全ての定義域,利用者定義型,照合順,文字集合及び文字変

換に関する

USAGE 権限。

d)  DC の<探索条件>に含まれる<データ型>が利用者定義型 UDT に用途依存であるような UDT に関

する

USAGE 権限。

e)

04

 DC の<探索条件>に含まれる<ルーチン呼出し>,<メソッド呼出し>,<静的メソッド呼出し>又

<メソッド参照>の当該ルーチンである全ての SQL 呼出しルーチンに関する EXECUTE 権限。

f)

表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,DC の<探索条件>に含まれる MR が存在する全ての T1 及び全ての M

に関する表

/メソッド権限。

g)  DC の<探索条件>に含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によっ

て識別される列に関する

SELECT 権限。

h)  DC の<探索条件>に含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表

に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

i)

DC の<探索条件>に含まれる<参照解決>のための有効範囲化された表に関する SELECT 権限。

j)

DC の<探索条件>に含まれ,<ONLY 指定>を単純に含む<表参照>によって識別される全ての型付

き表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

21)  S1 に含まれるどの定義域記述子 DO に対しても,REVOKE 破壊動作の結果として,DO に含まれる

データ型記述子に含まれる全ての文字集合に関する

USAGE 権限を,A1 がそれの適用可能な権限中

に,もはやもたなくなるならば,DO は,失われる  (lost)  という。

22)  S1 に含まれるどの表記述子 TD に対しても,TD に含まれる全ての列記述子 CD に対して,次のい

ずれかが真ならば,CD は,失われる  という。

a) REVOKE 破壊動作の結果として,CD に含まれるデータ型記述子に含まれる文字集合に関する

USAGE 権限を,A1 がそれの適用可能な権限中に,もはやもたなくなる。

b) REVOKE 破壊動作の結果として,CD に含まれるデータ型記述子が利用者定義型 UDT に用途依存

である型を記述するような UDT に関する USAGE 権限を,A1 がそれの適用可能な権限中に,も

はやもたなくなる。

c)

CD に含まれる定義域 DN があるならば,その定義域の名前が,失われる定義域記述子を識別し,

かつ,

REVOKE 破壊動作の結果として,DN の定義域記述子のデータ型記述子に含まれる文字集

合に関する

USAGE 権限を,A1 がそれの適用可能な権限中に,もはやもたなくなる。

d)

04

 CD が生成式 GE をもち,かつ,REVOKE 破壊動作の結果として,GE に含まれる<ルーチン呼

出し

>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである SQL


662

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

呼出しルーチンに関する

EXECUTE 権限を,A1 がそれの適用可能な権限中に,もはやもたなくな

る。

23)  どの SQL クライアントモジュール MO に対しても,MO を所有する<モジュール認可識別子>を G

とする。

REVOKE 破壊動作の結果として,MO の<モジュール文字集合指定>中で参照される文字集

合に関する

USAGE 権限を,がそれの適用可能な権限中に,もはやもたなくなるならば,MO は,

失われる  という。

24)  S1 に含まれるどの利用者定義型記述子 DT に対しても,次のいずれかが真ならば,DT は,破棄さ

れる  という。

a) REVOKE 破壊動作の結果として,DT に含まれるデータ型記述子が利用者定義型 UDT に用途依存

である型を記述するような UDT に関する USAGE 権限を,A1 がそれの適用可能な権限中に,も

はやもたなくなる。

b)

13

 REVOKE 破壊動作の結果として,DT の直接上位型である利用者定義型に関する UNDER 権限

を,A1 がそれの適用可能な権限中に,もはやもたなくなる。

25) REVOKE 破壊動作の結果として,S1 に含まれる既定文字集合に関する USAGE 権限を,A1 がそれ

の適用可能な権限中に,もはやもたなくなるならば,S1 は,失われる  という。

26)  S1 に含まれるどの照合順記述子 CN に対しても,REVOKE 破壊動作の結果として,CN の<既存照

合順名

>に名前が含まれる照合順に関する USAGE 権限を,A1 がそれの適用可能な権限中に,もは

やもたなくなるならば,CN は,影響を受ける  (impacted)  という。

27)  S1 に含まれるどの文字集合記述子 CSD に対しても,REVOKE 破壊動作の結果として,CSD に名前

が含まれる照合順に関する

USAGE 権限を,A1 がそれの適用可能な権限中に,もはやもたなくなる

ならば,CSD は,影響を受ける  という。

28)

13

 S1 に含まれ,データ型記述子 DTD を含むどの記述子に対しても,REVOKE 破壊動作の結果とし

て,DTD に名前が含まれる照合順に関する USAGE 権限を,A1 がそれの適用可能な権限中に,もは

やもたなくなるならば,DTD は,影響を受ける  という。

29)  S1 に含まれ,DEFINER の SQL 安全保護特性をもつルーチン記述子を RD とする。REVOKE 破壊動

作の結果として,A1 がそれの適用可能な権限中に次のいずれかを,もはやもたなくなるならば,RD

は,

破棄される  という。

a)

04

  RD の<SQL ルーチン本体>又は RD の SQL パラメタの<パラメタ既定値>に含まれる<ルーチン

呼出し

>,<メソッド呼出し>,<静的メソッド呼出し>又は<メソッド参照>の当該ルーチンである

SQL 呼出しルーチンに関する EXECUTE 権限。

b)  RD の<SQL ルーチン本体>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純に

含まれる

<問合せ式>に含まれる<表参照>によって識別される各表の少なくとも一つの列に関す

SELECT 権限。

c)

RD の<SQL ルーチン本体>に含まれる<SELECT 文:単一行>に直に含まれる<表式>又は<選択リ

スト

>に含まれる<表参照>によって識別される各表の少なくとも一つの列に関する SELECT 権限。

d)  RD の<SQL ルーチン本体>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>に含まれる<表参照>によって識別される各表の少なくとも一つの列に

関する

SELECT 権限。

e)

RD の<SQL ルーチン本体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる

<表参照>によって識別される各表の少なくとも一つの列に関する SELECT 権限。


663

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

f)

RD の<SQL ルーチン本体>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>に含まれる<列参照>によって識別される少なくとも一つの列に関する

SELECT 権限。

g)  RD の<SQL ルーチン本体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>に含まれる

<列参照>によって識別される少なくとも一つの列に関する SELECT 権限。

h)  次の各列に関する INSERT 権限。

場合:

i)

RD の<SQL ルーチン本体>に含まれる<INSERT 文>又は<MERGE 文>の<挿入列リスト>に含ま

れる

<列名>によって識別される列。

ii)  RD の<SQL ルーチン本体>に含まれ,かつ,<挿入列リスト>を含まない<INSERT 文>に直に含

まれる

<表名>によって識別される表の列。

iii)  RD の<SQL ルーチン本体>に含まれ,<併合挿入指定>を含み,かつ,<挿入列リスト>を含まな

<MERGE 文>に直に含まれる<相手表>によって識別される表の列。

i)

RD の<SQL ルーチン本体>に含まれる<UPDATE 文:位置付け>,<UPDATE 文:探索>又は<MERGE

>のいずれかに含まれる<対象列>に名前が含まれる各列に関する UPDATE 権限。

j)

RD の<SQL ルーチン本体>に含まれる<DELETE 文:位置付け>又は<DELETE 文:探索>のいずれ

かに含まれる

<表名>に名前が含まれる各表に関する DELETE 権限。

k)  RD の<SQL ルーチン本体>に含まれ,かつ,<併合削除指定>を含む<MERGE 文>に含まれる<相手

>によって識別される表に関する DELETE 権限。

l)

RD の<SQL ルーチン本体>に名前が含まれる各定義域,照合順,文字集合,文字変換及び順序数

生成子に関する

USAGE 権限。

m)  RD に含まれる SQL パラメタ,

戻りデータ型又は結果型変換の宣言型が利用者定義型 UDT に用途

依存であるような各 UDT に関する USAGE 権限。

n)  RD の<SQL ルーチン本体>に含まれる<データ型>が利用者定義型 UDT に用途依存であるような各

UDT に関する USAGE 権限。

o)  表 T1 が<メソッド参照> MR の<値式一次子>の有効範囲内にあり,かつ,メソッド が MR の当

該ルーチンであるような,RD の<SQL ルーチン本体>に含まれる MR が存在する全ての T1 及び全

ての に関する表/メソッド権限。

p)  次のいずれかに含まれる<内参照演算>と等価な<スカラ副問合せ>に含まれる<列参照>によって

識別される列に関する

SELECT 権限。

i)

RD の<SQL ルーチン本体>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純

に含まれる

<問合せ式>。

ii)  RD の<SQL ルーチン本体>に含まれる<SELECT 文:単一行>に直に含まれる<表式>又は<選択

リスト

>。

iii)  RD の<SQL ルーチン本体>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>。

iv)  RD の<SQL ルーチン本体>に含まれる<更新元>又は<代入行>に含まれる<値式>。

q)  次のいずれかに含まれる<参照解決>のための有効範囲化された表の少なくとも一つの上位表に

関する

WITH HIERARCHY OPTION 付きの SELECT 権限。

i)

RD の<SQL ルーチン本体>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純


664

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

に含まれる

<問合せ式>。

ii)  RD の<SQL ルーチン本体>に含まれる<SELECT 文:単一行>に直に含まれる<表式>又は<選択

リスト

>。

iii)  RD の<SQL ルーチン本体>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>。

iv)  RD の<SQL ルーチン本体>に含まれる<更新元>又は<代入行>に単純に含まれる<値式>。

r)

次のいずれかに含まれる

<参照解決>のための有効範囲化された表に関する SELECT 権限。

i)

RD の<SQL ルーチン本体>に含まれる<カーソル指定>,<INSERT 文>又は<MERGE 文>に単純

に含まれる

<問合せ式>。

ii)  RD の<SQL ルーチン本体>に含まれる<SELECT 文:単一行>に直に含まれる<表式>又は<選択

リスト

>。

iii)  RD の<SQL ルーチン本体>に含まれる<DELETE 文:探索>,<UPDATE 文:探索>又は<MERGE

>に含まれる<探索条件>。

iv)  RD の<SQL ルーチン本体>に含まれる<更新元>又は<代入行>に含まれる<値式>。

s)

13

 RD の<SQL ルーチン本体>に含まれ,<ONLY 指定>を単純に含む<表参照>によって識別される

全ての型付き表の少なくとも一つの上位表に関する

WITH HIERARCHY OPTION 付きの SELECT

権限。

30)

09

 S1 に含まれるどの表記述子 TD に対しても,TD に含まれる全ての列記述子に対して,CD が次の

うちの一つを含むならば,CD は,汚染されている  (contaminated)  という。

a)  破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子。

b)  破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子を含む参照型記述子。

c)

破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子を含む集まり型記述子。

d)  破棄される利用者定義型記述子によって記述される利用者定義型の上位型を記述する利用者定義

型記述子を含む参照型記述子を含む集まり型記述子。

31)

09

13

 RESTRICT が指定され,かつ,破棄される権限記述子,破棄されるビュー,破棄される表制約,

破棄される表明,破棄される定義域制約,失われる定義域,失われる列,失われるスキーマ,又は

影響を受けるデータ型記述子,影響を受ける照合順,影響を受ける文字集合,破棄される利用者定

義型若しくは破棄されるルーチン記述子を含む記述子が存在するならば,例外条件:

依存している

権限記述子がまだ存在する  (dependent privilege descriptors still exist)  が引き起こされる。

32)

04

 CASCADE が指定されるならば,失われるモジュールであると決定される SQL クライアントモジ

ュールに与える影響は,処理系定義とする。

33)  場合:

a) <REVOKE 文>が<REVOKE 権限文>ならば,次による。

場合:

i) WITH

HIERARCHY

OPTION も,GRANT OPTION FOR も,指定されないならば,次による。

1)  全ての破棄される権限記述子が破壊される。

2)  識別される権限記述子が破壊される。


665

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

3)  修正される権限記述子は,付与可能でないことを示すように設定される。

ii) WITH

HIERARCHY

OPTION が指定されるならば,識別される権限記述子又は破棄される権限

記述子が存在するとき,それらの全てから

WITH HIERARCHY OPTION が取り除かれる。

iii) GRANT

OPTION

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

場合:

1) CASCADE が指定されるならば,全ての破棄される権限記述子が破壊される。

2)  そうでなければ,修正される権限記述子ではない識別される権限記述子に直接依存している

権限記述子が存在するならば,例外条件:

依存している権限記述子がまだ存在する  が引き起

こされる。

識別される権限記述子及び修正される権限記述子は,付与可能でないことを示すように設定さ

れる。

b) <REVOKE 文>  が<REVOKE 役割文>ならば,次による。

i) CASCADE が指定されるならば,全ての破棄される役割認可記述子が破壊される。

ii)  全ての破棄される権限記述子が破壊される。

iii)  場合:

1)  ADMIN OPTION FOR が指定されるならば,識別される役割認可記述子は,付与可能でない

ことを示すように設定される。

2)  ADMIN OPTION FOR が指定されないならば,識別される役割認可記述子が破壊される。

34)  どの破棄されるビュー記述子 に対しても,の<表名>を S1.VN とする。これ以上のアクセス規

則の検査なしで,次の

<ビュー削除文>が実効的に実行される。

DROP VIEW S1.VN CASCADE

35)  どの破棄される表記述子 に対しても,の<表名>を S1.TN とする。これ以上のアクセス規則の

検査なしで,次の

<表削除文>が実効的に実行される。

DROP TABLE S1.TN CASCADE

36)  どの破棄される表制約記述子 TC に対しても,TC の<制約名>を S1.TCN とし,TC を含む表の<表

>を S2.T2S1 と S2 とは,場合によって等価)とする。これ以上のアクセス規則の検査なしで,

次の

<表変更文>が実効的に実行される。

ALTER TABLE S2.T2

 DROP

CONSTRAINT

S1.TCN

 CASCADE

37)  どの破棄される表明記述子 AX に対しても,AX の<制約名>を S1.AXN とする。これ以上のアクセ

ス規則の検査なしで,次の

<表明削除文>が実効的に実行される。

DROP ASSERTION S1.AXN CASCADE

38)  どの破棄されるトリガ記述子 TR に対しても,TR の<トリガ名>を S1.TRN とする。これ以上のア

クセス規則の検査なしで,次の

<トリガ削除文>が実効的に実行される。

DROP TRIGGER S1.TRN

39)  どの破棄される定義域制約記述子 DC に対しても,DC の<制約名>を S1.DCN とし,DC を含む定義

域の

<定義域名>を S2.DN とする。これ以上のアクセス規則の検査なしで,次の<定義域変更文>が

実効的に実行される。

ALTER DOMAIN S2.DN


666

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

 DROP

CONSTRAINT

S1.DCN

40)  どの失われる列記述子 CD に対しても,CD を記述子が含む表の<表名>を S1.TN とし,CD の<列名

>を CN とする。これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行される。

ALTER TABLE S1.TN

 DROP

COLUMN

CN CASCADE

41)  どの失われる定義域記述子 DO に対しても,DO の<定義域名>を S1.DN とする。これ以上のアクセ

ス規則の検査なしで,次の

<定義域削除文>が実効的に実行される。

DROP DOMAIN S1.DN CASCADE

42)  どの失われるスキーマ S1 に対しても,<スキーマ定義>が<スキーマ文字集合指定>を指定しなかっ

たときにこのスキーマの既定文字集合となる処理系定義の

<文字集合指定>の名前を含むように,そ

のスキーマの既定文字集合が修正される。

43)  によって識別されるオブジェクトが照合順ならば,その照合順の名前を OCN とする。

44)  影響を受けるデータ型記述子 DTD を含むどの記述子に対しても,DTD は,OCN を含まないように

修正される。

45)  照合順名 CN が含まれているどの影響を受ける照合順記述子 CD に対しても,これ以上のアクセス

規則の検査なしで,次の

<照合順削除文>が実効的に実行される。

DROP COLLATION CN CASCADE

46)  文字集合名 CSN が含まれているどの影響を受ける文字集合記述子 CSD に対しても,CSD は,含ま

れている照合順名が,CSD が基にする文字集合の既定照合順の名前になるように修正される。

47) <利用者定義型名> S1.DTN をもつどの破棄される利用者定義型記述子 DT に対しても,これ以上の

アクセス規則の検査なしで,次の

<データ型削除文>が実効的に実行される。

DROP TYPE S1.DTN CASCADE

48)

04

13

  どの破棄される SQL 呼出しルーチン記述子 RD に対しても,記述子が RD である SQL 呼出し

ルーチンを とする。の<特定名>を SN とする。これ以上のアクセス規則の検査なしで,次の<

ルーチン削除文

>が実効的に実行される。

DROP SPECIFIC ROUTINE SN CASCADE

49) <REVOKE 文>が<REVOKE 権限文>ならば,次による。

a) <権限>中に指定される に関する<権限受領者>と<動作>とのどの組合せに対しても,識別され

る権限記述子の集合中に,対応する権限記述子が存在しないならば,終了条件:

警告  (warning)  -

権限が剝奪されていない  (privilege not revoked)  が引き起こされる。

b) ALL

PRIVILEGES が指定されたとき,各<権限受領者>に対して,どの権限記述子も識別されなか

ったならば,終了条件:

警告  (warning)  -  権限が剝奪されていない  が引き起こされる。

50)  どの汚染されている列記述子 CD に対しても,CD を記述子が含む表の<表名>を S1.TN とし,CD

<列名>を CN とする。これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行さ

れる。

ALTER TABLE S1.TN

 DROP

COLUMN

CN CASCADE

適合性規則

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

2)  機能 F034“拡張 REVOKE 文”なしでは,適合する SQL 言語は,CASCADE を含む<削除動作>を含


667

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

<REVOKE 文>を含んではならない。

3)  機能 F034“拡張 REVOKE 文”なしでは,適合する SQL 言語は,GRANT OPTION FOR を含む<選

択肢剝奪範囲

>を含んではならない。

4)  機能 F034“拡張 REVOKE 文”なしでは,適合する SQL 言語は,<オブジェクト名>中に陽に指定さ

れるか又は暗に想定される

SQL スキーマの所有者が現行認可識別子ではない<オブジェクト名>を

含む

<権限>を含む<REVOKE 文>を含んではならない。

5)  機能 F034“拡張 REVOKE 文”なしでは,適合する SQL 言語は,次の全ての条件を満たす権限記述

子 PD が存在するような<REVOKE 文>を含んではならない。

a) <REVOKE 文>に含まれる<権限>に単純に含まれる<オブジェクト名>によって識別されるオブジ

ェクトを PD が識別する。

b) <REVOKE 文>に単純に含まれるいずれかの<権限受領者>によって識別される<権限受領者>を PD

が識別し,その

<権限受領者>は,<REVOKE 文>に含まれる<権限>に単純に含まれる<オブジェク

ト名

>中に陽に指定されるか又は暗に想定される SQL スキーマの所有者を識別しない。

c) <REVOKE 文>に含まれる<権限>に単純に含まれる<動作>によって識別される動作を PD が識別

する。

d)  権限が付与可能であることを PD が示す。

6)  機能 S081“下位表”なしでは,適合する SQL 言語は,HIERARCHY OPTION FOR を含む<選択肢剝

奪範囲

>を含んではならない。

12.8  権限付与者決定

細分箇条署名

 “権限付与者決定” [一般規則]

 (

パラメタ: “GRANTOR”

)

機能

権限付与者決定

 (Grantor determination) は,権限若しくは役割認可の権限付与者,又は役割の意図した

所有者を決定する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,GRANTOR を とする。

2)  権限付与者 は,次のとおりに,から導出される。

場合:

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

場合:

i)

現行利用者識別子が存在するならば,は,現行利用者識別子とする。

ii)  そうでなければ,は,現行役割名とする。

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

場合:


668

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

i)

現行利用者識別子が存在しないならば,例外条件:

権限付与者が正しくない  (invalid grantor)  が

引き起こされる。

ii)  そうでなければ,は,現行利用者識別子とする。

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

場合:

i)

現行役割名が存在しないならば,例外条件:

権限付与者が正しくない  が引き起こされる。

ii)  そうでなければ,は,現行役割名とする。

適合性規則

1)  機能 T332“拡張役割”なしでは,適合する SQL 言語は,<権限付与者>を含んではならない。

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

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

この細分箇条は,ISO/IEC 9075-9 の“14.1 <SQL クライアントモジュール定義>”によって修正される。 

機能

<SQL クライアントモジュール定義> (<SQL-client module definition>)  は,SQL クライアントモジュール

を定義する。

形式

<SQL クライアントモジュール定義> ::=

  <モジュール名句> <LANGUAGE 句> <モジュール認可句>

      [ <モジュールパス指定> ]

      [ <モジュール変換グループ指定> ]

      [ <モジュール照合順> ]

      [ <一時表宣言>... ]

      <モジュール内容>...

<モジュール認可句> ::=

  SCHEMA  <スキーマ名>

| AUTHORIZATION <モジュール認可識別子>

      [ FOR STATIC { ONLY | AND DYNAMIC } ]

| SCHEMA <スキーマ名> AUTHORIZATION <モジュール認可識別子>

      [ FOR STATIC { ONLY | AND DYNAMIC } ]

<モジュール認可識別子> ::=

  <認可識別子>

<モジュールパス指定> ::=

  <パス指定>

<モジュール変換グループ指定> ::=

  <変換グループ指定>

<モジュール照合順> ::=

  <モジュール照合順指定>...

<モジュール照合順指定> ::=

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


669

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

<文字集合指定リスト> ::=

  <文字集合指定> [ { <コンマ> <文字集合指定> }... ]

<モジュール内容> ::=

  <カーソル宣言>

 |

<動的カーソル宣言>

 |

<外部呼出し手続>

構文規則

1) <LANGUAGE 句>は,SQL を指定してはならない。

2) SCHEMA

<スキーマ名>が指定されないならば,<モジュール認可識別子>と等価な<スキーマ名>が

暗に想定される。

3)  陽に指定されるか又は暗に想定される<スキーマ名>が<カタログ名>を指定しないならば,処理系定

義の

<カタログ名>が暗に想定される。

4)  暗に想定されるか又は陽に指定される<カタログ名>は,<SQL クライアントモジュール定義>中の全

ての修飾なし

<スキーマ名>に対して暗に想定される<カタログ名>とする。

5) <モジュールパス指定>が指定されないならば,<モジュール認可句>に含まれる<スキーマ名>を含む

処理系定義の

<スキーマ名リスト>を含む<モジュールパス指定>が暗に想定される。

6) <モジュールパス指定>の<スキーマ名リスト>に含まれる各<スキーマ名>の陽に指定されるか又は

暗に想定される

<カタログ名>は,<モジュール認可句>に含まれる陽に指定されるか又は暗に想定さ

れる

<スキーマ名>の<カタログ名>と等価でなければならない。

7)  陽に指定されるか又は暗に想定される<モジュールパス指定>の<スキーマ名リスト>は,<SQL クラ

イアントモジュール定義

>の SQL パスとして用いられる。SQL パスは,<SQL クライアントモジュ

ール定義

>に含まれる<ルーチン呼出し>に直に含まれる修飾なし<ルーチン名>を実効的に修飾する

ために用いられる。

8)  場合:

a) <モジュール変換グループ指定>が指定されないならば,<SQL クライアントモジュール定義>に含

まれる各

<外部呼出し手続>の<ホストパラメタ宣言リスト>に含まれ,<位置付け子標識>をもたな

い利用者定義型を

<ホストパラメタデータ型>  UDT が識別する各<ホストパラメタ宣言>に対して,

<グループ指定> GS をもつ<複数グループ指定>を含む<モジュール変換グループ指定>が暗に想定

される。GS の<グループ名>は,処理系定義とし,それの<パス解決利用者定義型名>は,UDT 

する。

b) <グループ名>  GN をもつ<単一グループ指定>を<モジュール変換グループ指定>が含むならば,

<SQL クライアントモジュール定義>に含まれる各<外部呼出し手続>の<ホストパラメタ宣言リス

>に含まれ,<位置付け子標識>をもたない利用者定義型を<ホストパラメタデータ型> UDT が識

別する各

<ホストパラメタ宣言>に対して,<グループ指定> GS を含む<複数グループ指定>を含む

<モジュール変換グループ指定>が暗に想定される。GS の<グループ名>は,GN とし,それの<パ

ス解決利用者定義型名

>は,UDT とする。

c) <モジュール変換グループ指定>が<複数グループ指定>  MGS を含むならば,<SQL クライアント

モジュール定義

>に含まれる各<外部呼出し手続>の<ホストパラメタ宣言リスト>に含まれ,<位置

付け子標識

>をもたない利用者定義型を<ホストパラメタデータ型>  UDT が識別し,かつ,UDT

と等価のものが MGS に含まれるどの<グループ指定>にも含まれない各<ホストパラメタ宣言>に


670

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

対して,

<グループ指定> GS で拡張した MGS を含む<複数グループ指定>を含む<モジュール変換

グループ指定

>が暗に想定される。GS の<グループ名>は,処理系定義とし,それの<パス解決利

用者定義型名

>は,UDT とする。

9) <モジュール照合順指定>に含まれるどの二つの<文字集合指定>も,等価であってはならない。

10) <モジュール照合順指定>  MCS は,SQL クライアントモジュールの一つ以上の文字集合に対して,

SQL クライアントモジュール照合順を指定する。MCS に含まれる<照合順名>によって識別される

照合順を CO とする。

場合:

a) <文字集合指定リスト>が指定されるならば,CO によって指定される照合順は,<モジュール照合

順指定

>に単純に含まれる<文字集合指定>によって識別されるどの文字集合にも適用可能でなけ

ればならない。指定された各文字集合に対して,その文字集合の

SQL クライアントモジュール照

合順には,CO が設定される。

b)  そうでなければ,SQL クライアントモジュール照合順に CO が設定される文字集合は,処理系定

義とする。

11) <カーソル宣言>は,<SQL クライアントモジュール定義>のテキスト中で,その<カーソル宣言>の<

カーソル名

>を参照するどの<外部呼出し手続>にも先行しなければならない。

12) <動的カーソル宣言>は,<SQL クライアントモジュール定義>のテキスト中で,その<動的カーソル

宣言

>の<カーソル名>を参照するどの<外部呼出し手続>にも先行しなければならない。

13)  FOR STATIC ONLY も,FOR STATIC AND DYNAMIC も,指定されないならば,FOR STATIC AND

DYNAMIC が暗に想定される。

14) <SQL クライアントモジュール定義>中のどの<カーソル宣言>に対しても,<SQL クライアントモジ

ュール定義

>は,<カーソル宣言>中で宣言される<カーソル名>を指定するただ一つの<OPEN 文>を

含まなければならない。

注記 446  “14.1 <カーソル宣言>”の構文規則参照。

15) <SQL クライアントモジュール定義>に含まれ,同じ個数の<ホストパラメタ宣言>をもち,かつ,同

<カーソル名>を参照する<FETCH 文>を直に含む二つの<外部呼出し手続>を EIP1 及び EIP2 とす

る。

<ホストパラメタ宣言>の個数を とする。EIP1 の 番目の<ホストパラメタ宣言>を P1i,1 ≤ i ≤

とする。P1i に含まれる<データ型>を DT1i とする。EIP2 の 番目の<ホストパラメタ宣言>を P2i
とする。P2i に含まれる<データ型>を DT2i とする。各 i,1 ≤ i ≤ に対して,次による。 
場合:

a)  DT1i 及び DT2i が両方とも 2 進オクテット長大オブジェクト型を識別するならば,P1i 及び P2i

は,両方とも

2 進オクテット長大オブジェクト位置付け子パラメタであるか,又は両方とも 2 進

オクテット長大オブジェクト位置付け子パラメタでないかのいずれかでなければならない。

b)  DT1i 及び DT2i が両方とも文字長大オブジェクト型を識別するならば,P1i 及び P2i は,両方とも

文字長大オブジェクト位置付け子パラメタであるか,又は両方とも文字長大オブジェクト位置付

け子パラメタでないかのいずれかでなければならない。

c)

DT1i 及び DT2i の両方が利用者定義型を識別するならば,P1i 及び P2i は,両方とも利用者定義型
位置付け子パラメタであるか,又は両方とも利用者定義型位置付け子パラメタでないかのいずれ

かでなければならない。

アクセス規則


671

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

なし。 

一般規則

1) <SQL クライアントモジュール定義>中の<外部呼出し手続>の呼出しを実行する SQL エージェント

が,その

<SQL クライアントモジュール定義>の<LANGUAGE 句>によって指定されたプログラム言

語の仕様に適合するプログラムでないならば,その効果は,処理系依存とする。

2)  二つ以上の Ada タスクからの<外部呼出し手続>の呼出しを SQL エージェントが実行するならば,

その結果は,処理系依存とする。

3) FOR

STATIC

ONLY が指定されるならば,SQL クライアントモジュールは,そのモジュールに含ま

れる外部呼出し手続の実行の結果としてもたらされる被準備文が所有者をもたないことを示す標識

を含む。

4) SQL エージェントによる<外部呼出し手続>の呼出しの最後の実行の後は,次による。

a)

09

 <ROLLBACK 文>又は<COMMIT 文>が実効的に実行される。回復不可能な誤りが発生したか,

SQL エージェントが不意に終了したか,又はいずれかの強制制約が満たされないならば,

<ROLLBACK 文>が実行される。そうでなければ,これらの SQL 文のどちらが実行されるかの選

択は,処理系依存とする。処理系の選択が

<COMMIT 文>ならば,全ての保持可能カーソルが最初

に閉じられる。

SQL エージェントが不意に終了したかどうかの決定は,処理系依存とする。

b) SQL エージェントに関連付けられた SQL セション内で現在割り当てられているどの SQL 記述子

領域に対しても,その

SQL 記述子領域の<記述子名>を とし,次のテキストを指定する

<DEALLOCATE DESCRIPTOR 文>が実効的に実行される。

DEALLOCATE DESCRIPTOR D

c) SQL エージェントに関連付けられた全ての SQL セションを終了させる。

適合性規則

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

パス指定

>を含んではならない。

2)  機能 S241“変換関数”なしでは,適合する SQL 言語は,<モジュール変換グループ指定>を含んで

はならない。

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

<モジュール照合順指定>を含んではならない。

4)  機能 B051“拡張実行権”なしでは,適合する SQL 言語は,FOR STATIC ONLY 又は FOR STATIC AND

DYNAMIC を直に含む<モジュール認可句>を含んではならない。

5)  機能 B111“モジュール言語 Ada”なしでは,適合する SQL 言語は,ADA を含む<LANGUAGE 句>

を含む

<SQL クライアントモジュール定義>を含んではならない。

6)  機能 B112“モジュール言語 C”なしでは,適合する SQL 言語は,C を含む<LANGUAGE 句>を含む

<SQL クライアントモジュール定義>を含んではならない。

7)  機能 B113“モジュール言語 COBOL”なしでは,適合する SQL 言語は,COBOL を含む<LANGUAGE

>を含む<SQL クライアントモジュール定義>を含んではならない。

8)  機能 B114

“モジュール言語

Fortran”なしでは,適合する SQL 言語は,FORTRAN を含む<LANGUAGE

>を含む<SQL クライアントモジュール定義>を含んではならない。

9)  機能 B115“モジュール言語 MUMPS”なしでは,適合する SQL 言語は,M を含む<LANGUAGE 句

>を含む<SQL クライアントモジュール定義>を含んではならない。


672

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

10)  機能 B116“モジュール言語 Pascal”なしでは,適合する SQL 言語は,PASCAL を含む<LANGUAGE

>を含む<SQL クライアントモジュール定義>を含んではならない。

11)  機能 B117“モジュール言語 PL/I”なしでは,適合する SQL 言語は,PLI を含む<LANGUAGE 句>

を含む

<SQL クライアントモジュール定義>を含んではならない。

13.2  <モジュール名句>

機能

<モジュール名句> (<module name clause>)  は,SQL クライアントモジュールに名前を付ける。

形式

<モジュール名句> ::=

  MODULE  [  <SQL クライアントモジュール名> ] [ <モジュール文字集合指定> ]

<モジュール文字集合指定> ::=

  NAMES  ARE  <文字集合指定>

構文規則

1) <モジュール名句>が<SQL クライアントモジュール名>を指定しないならば,<SQL クライアントモ

ジュール定義

>は,名前なしとする。

2) <SQL クライアントモジュール名>は,同じ SQL 環境中の他のどの<SQL クライアントモジュール定

>の<SQL クライアントモジュール名>とも等価であってはならない。

注記 447 SQL 環境は,複数の名前なしの<SQL クライアントモジュール定義>をもってもよい。

3) <モジュール名句>を含む<SQL クライアントモジュール定義>の<LANGUAGE 句>が ADA を指定す

るならば,

<SQL クライアントモジュール名>を指定しなければならず,その<SQL クライアントモ

ジュール名

>は,正しい Ada ライブラリ単位名  (Ada library unit name)  でなければならない。

4) <モジュール文字集合指定>が指定されないならば,少なくとも<SQL 言語文字>中の全ての文字を含

む処理系定義の文字集合を指定する

<モジュール文字集合指定>が暗に想定される。

アクセス規則

なし。 

一般規則

1) <SQL クライアントモジュール名>が指定されるならば,SQL 環境中で,<モジュール名句>を含む

<SQL クライアントモジュール定義>は,<SQL クライアントモジュール名>によって与えられる名前

をもつ。

適合性規則

1)  機能 F461“名前付き文字集合”なしでは,適合する SQL 言語は,<モジュール文字集合指定>を含

んではならない。

13.3  <外部呼出し手続>

この細分箇条は,ISO/IEC 9075-4 の“11.1 <外部呼出し手続>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“14.2 <外部呼出し手続>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“13.1 <外部呼出し手続>”によって修正される。 

機能

<外部呼出し手続> (<externally-invoked procedure>)  は,外部呼出し手続を定義する。

形式

<外部呼出し手続> ::=


673

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

  PROCEDURE  <手続名> <ホストパラメタ宣言リスト> <セミコロン>

      <SQL 手続文> <セミコロン>

<ホストパラメタ宣言リスト> ::=

  <左括弧> <ホストパラメタ宣言>

      [ { <コンマ> <ホストパラメタ宣言> }... ] <右括弧>

<ホストパラメタ宣言> ::=

  <ホストパラメタ名> <ホストパラメタデータ型>

 |

<状態パラメタ>

<ホストパラメタデータ型> ::=

  <データ型> [ <位置付け子標識> ]

<状態パラメタ> ::=

  SQLSTATE

構文規則

1)

09

 <手続名>は,<外部呼出し手続>を含む<SQL クライアントモジュール定義>中の他のどの<外部呼

出し手続

>の<手続名>とも等価であってはならない。

注記 448  <手続名>は,当該<LANGUAGE 句>によって指定される言語の,規格に適合する手続名,

関数名又はルーチン名であることが望ましい。この推奨を守ることを怠ると,処理系依

存の影響を伴う。

2) <外部呼出し手続>中の各<ホストパラメタ宣言>の<ホストパラメタ名>は,その<外部呼出し手続>

中の他のどの

<ホストパラメタ宣言>の<ホストパラメタ名>とも等価であってはならない。

3) <外部呼出し手続>の<SQL 手続文>に含まれるどの<ホストパラメタ名>も,その<外部呼出し手続>

中の

<ホストパラメタ宣言>中で指定しなければならない。

4) <位置付け子標識>が<ホストパラメタ宣言>に単純に含まれるならば,次による。

a) <ホストパラメタデータ型>に直に含まれる<データ型>によって識別される宣言型 は,2 進オク

テット長大オブジェクト型,文字長大オブジェクト型,配列型,マルチ集合型又は利用者定義型

のいずれかでなければならない。

b)  が 2 進オクテット長大オブジェクト型ならば,<ホストパラメタ名>によって識別されるホスト

パラメタを 進オクテット長大オブジェクト位置付け子パラメタ  (binary large object locator 

parameter)  と呼ぶ。

c)

が文字長大オブジェクト型ならば,<ホストパラメタ名>によって識別されるホストパラメタを

文字長大オブジェクト位置付け子パラメタ  (character large object locator parameter)  と呼ぶ。

d)  が配列型ならば,<ホストパラメタ名>によって識別されるホストパラメタを配列位置付け子パ

ラメタ  (array locator parameter)  と呼ぶ。

e)

がマルチ集合型ならば,<ホストパラメタ名>によって識別されるホストパラメタをマルチ集合

位置付け子パラメタ  (multiset locator parameter)  と呼ぶ。

f)

が利用者定義型ならば,<ホストパラメタ名>によって識別されるホストパラメタを利用者定義

型位置付け子パラメタ  (user-defined type locator parameter)  と呼ぶ。

5) <外部呼出し手続> EP 中の<ホストパラメタ宣言>の個数を とする。

6) <外部呼出し手続>の呼出しは,個の引数を与えなければならない。

7) <外部呼出し手続>は,SQLSTATE ホストパラメタ  (SQLSTATE host parameter)  として参照される一


674

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

つの

<状態パラメタ>を含まなければならない。SQLSTATE ホストパラメタを状態パラメタ  (status 

parameter)  として参照する。

8)  各<ホストパラメタ宣言>に対して,対応するホストパラメタが入力ホストパラメタか,出力ホスト

パラメタか,又は入出力ホストパラメタ(入力ホストパラメタで,かつ,出力ホストパラメタ)か

を決定するために,

<ホストパラメタ宣言>を HOST  PARAM  DECL として,<SQL 手続文>を SQL

PROC STMT として,

9.8  ホストパラメタモード決定”の構文規則を適用する。

9)  番目の<ホストパラメタ宣言>を PDi,1 ≤ i ≤ とする。PDi に含まれる<データ型>を PDTi とする。

PDi に対応する引数のデータ型を ADTi とする。

10) <外部呼出し手続>の呼出し元言語が ADA ならば,次による。

a) SQL 処理系は,Ada ライブラリ単位パッケージ ALUP のソースコードを生成しなければならず,

それの名前は,次による。

場合:

i) <SQL クライアントモジュール定義>の<SQL クライアントモジュール名> SCMN が,

正しい

Ada

識別子ならば,SCMN と等価でなければならない。

ii)  そうでなければ,処理系定義でなければならない。

b) <SQL クライアントモジュール定義>の各<外部呼出し手続>に対して,手続を宣言する副プログラ

ム宣言

 (subprogram declaration) が ALUP 内に現れなければならない。

i) <手続名>が,正しい Ada 識別子ならば,その手続の名前 PN は,<手続名>と等価でなければな

らない。そうでなければ,PN は,処理系定義でなければならない。

ii)  各 Ada 手続宣言 APD 中のパラメタは,対応する<外部呼出し手続> EIP の<ホストパラメタ宣言

>と同じ順序で現れなければならない。EIP の<ホストパラメタ宣言>中で宣言されるパラメタ

の名前が,正しい

Ada 識別子ならば,APD 中のパラメタは,EIP に含まれる<ホストパラメタ

宣言

>中で宣言される対応するパラメタの名前と等価なパラメタ名をもたなければならない。そ

うでなければ,APD 中のパラメタは,処理系定義のパラメタ名をもたなければならない。

iii)  パラメタ仕様 (parameter specification) 中で用いるパラメタモード及び部分型標識 (subtype

mark)  は,この細分箇条の残りの段落によって制約される。

c)

各 i,1 ≤ i ≤ に対して,PDi が<位置付け子標識>を含まないならば,PDTi は,表 16“Ada のた
めのデータ型対応”の“

Ada データ型”列が“なし”の行の“SQL データ型”列中に記載された

データ型を識別してはならない。

d) Ada 副プログラム宣言内のパラメタ仕様の型は,ライブラリ単位パッケージ Interfaces.SQL,

それの子 Numerics 及び VARYING,並びに省略可能な子 Adacsn 及び Adacsn.VARYING から

選ばなければならない。

e)

04

09

14

  ライブラリ単位パッケージ Interfaces.SQL の宣言は,次のテンプレートに適合しなけ

ればならない。

package 

Interfaces.SQL is

–  CHAR 及び NCHAR の宣言は,部分型宣言でもよい。

 type CHAR is (

構文規則参照

)

 type NCHAR is (

構文規則参照

)

 type SMALLINT is range bs .. ts;


675

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

 type INT is range bi .. ti;

 type BIGINT is range bb .. tb;

 type REAL is digits dr;

 type DOUBLE_PRECISION is digits dd;

 type BOOLEAN is new Boolean;

 subtype INDICATOR_TYPE is t;

 type SQLSTATE_TYPE is new CHAR (1 .. 5);

 package SQLSTATE_CODES is

   AMBIGUOUS_CURSOR_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="3C000";

   ATTEMPT_TO_ASSIGN_TO_NON_UPDATABLE_COLUMN_NO_SUBCLASS:

     constant SQLSTATE_TYPE := "0U000";

   ATTEMPT_TO_ASSIGN_TO_ORDERING_COLUMN_NO_SUBCLASS:

     constant SQLSTATE_TYPE := "0V000";

   CARDINALITY_VIOLATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="21000";

   CLI_SPECIFIC_CONDITION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="HY000";

   CONNECTION_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="08000";

   CONNECTION_EXCEPTION_CONNECTION_DOES_NOT_EXIST:

     constant SQLSTATE_TYPE :="08003";

   CONNECTION_EXCEPTION_CONNECTION_FAILURE:

     constant SQLSTATE_TYPE :="08006";

   CONNECTION_EXCEPTION_CONNECTION_NAME_IN_USE:

     constant SQLSTATE_TYPE :="08002";

   CONNECTION_EXCEPTION_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION:

     constant SQLSTATE_TYPE :="08001";

   CONNECTION_EXCEPTION_SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION:

     constant SQLSTATE_TYPE :="08004";

   CONNECTION_EXCEPTION_TRANSACTION_RESOLUTION_UNKNOWN:

     constant SQLSTATE_TYPE :="08007";

   DATA_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="22000";

   DATA_EXCEPTION_ARRAY_ELEMENT_ERROR:

     constant SQLSTATE_TYPE :="2202E";

   DATA_EXCEPTION_ATTEMPT_TO_REPLACE_A_ZERO_LENGTH_STRING:

     constant SQLSTATE_TYPE :="2201U";

   DATA_EXCEPTION_CHARACTER_NOT_IN_REPERTOIRE:

     constant SQLSTATE_TYPE :="22021";


676

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

   DATA_EXCEPTION_DATETIME_FIELD_OVERFLOW:

     constant SQLSTATE_TYPE :="22008";

   DATA_EXCEPTION_DIVISION_BY_ZERO:

     constant SQLSTATE_TYPE :="22012";

   DATA_EXCEPTION_ERROR_IN_ASSIGNMENT:

     constant SQLSTATE_TYPE :="22005";

   DATA_EXCEPTION_ESCAPE_CHARACTER_CONFLICT:

     constant SQLSTATE_TYPE :="2200B";

   DATA_EXCEPTION_INDICATOR_OVERFLOW:

     constant SQLSTATE_TYPE :="22022";

   DATA_EXCEPTION_INTERVAL_FIELD_OVERFLOW:

     constant SQLSTATE_TYPE :="22015";

   DATA_EXCEPTION_INTERVAL_VALUE_OUT_OF_RANGE:

     constant SQLSTATE_TYPE :="2200P";

   DATA_EXCEPTION_INVALID_ARGUMENT_FOR_NATURAL_LOGARITHM:

     constant SQLSTATE_TYPE :="2201E";

    DATA_EXCEPTION_INVALID_ARGUMENT_FOR_NTILE_FUNCTION:

      constant SQLSTATE_TYPE :="22014";

    DATA_EXCEPTION_INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION:

      constant SQLSTATE_TYPE :="22016";

   DATA_EXCEPTION_INVALID_ARGUMENT_FOR_POWER_FUNCTION:

     constant SQLSTATE_TYPE :="2201F";

   DATA_EXCEPTION_INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION:

     constant SQLSTATE_TYPE :="2201G";

   DATA_EXCEPTION_INVALID_CHARACTER_VALUE_FOR_CAST:

     constant SQLSTATE_TYPE :="22018";

   DATA_EXCEPTION_INVALID_DATETIME_FORMAT:

     constant SQLSTATE_TYPE :="22007";

   DATA_EXCEPTION_INVALID_ESCAPE_CHARACTER:

     constant SQLSTATE_TYPE :="22019";

   DATA_EXCEPTION_INVALID_ESCAPE_OCTET:

     constant SQLSTATE_TYPE :="2200D";

   DATA_EXCEPTION_INVALID_ESCAPE_SEQUENCE:

     constant SQLSTATE_TYPE :="22025";

   DATA_EXCEPTION_INVALID_INDICATOR_PARAMETER_VALUE:

     constant SQLSTATE_TYPE :="22010";

   DATA_EXCEPTION_INVALID_INTERVAL_FORMAT:

     constant SQLSTATE_TYPE :="22006";

   DATA_EXCEPTION_INVALID_PARAMETER_VALUE:

     constant SQLSTATE_TYPE :="22023";


677

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

    DATA_EXCEPTION_INVALID_PERIOD_VALUE:

     constant SQLSTATE_TYPE :="22020";

   DATA_EXCEPTION_INVALID_PRECEDING_OR_FOLLOWING_SIZE_IN_WINDOW_FUNCTION:

     constant SQLSTATE_TYPE :="22013";

   DATA_EXCEPTION_INVALID_REGULAR_EXPRESSION:

     constant SQLSTATE_TYPE :="2201B";

   DATA_EXCEPTION_INVALID_REPEAT_ARGUMENT_IN_A_SAMPLE_CLAUSE:

     constant SQLSTATE_TYPE :="2202G";

    DATA_EXCEPTION_INVALID_ROW_COUNT_IN_FETCH_FIRST_CLAUSE:

     constant SQLSTATE_TYPE :="2201W";

    DATA_EXCEPTION_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE:

     constant SQLSTATE_TYPE :="2201X";

    DATA_EXCEPTION_INVALID_ROW_VERSION:

     constant SQLSTATE_TYPE :="2201H";

   DATA_EXCEPTION_INVALID_SAMPLE_SIZE:

     constant SQLSTATE_TYPE :="2202H";

   DATA_EXCEPTION_INVALID_TIME_ZONE_DISPLACEMENT_VALUE:

     constant SQLSTATE_TYPE :="22009";

   DATA_EXCEPTION_INVALID_USE_OF_ESCAPE_CHARACTER:

     constant SQLSTATE_TYPE :="2200C";

   DATA_EXCEPTION_INVALID_XQUERY_OPTION_FLAG:

     constant SQLSTATE_TYPE :="2201T";

   DATA_EXCEPTION_INVALID_XQUERY_REGULAR_EXPRESSION:

     constant SQLSTATE_TYPE :="2201S";

   DATA_EXCEPTION_INVALID_XQUERY_REPLACEMENT_STRING:

     constant SQLSTATE_TYPE :="2201V";

   DATA_EXCEPTION_NULL_VALUE_NO_INDICATOR_PARAMETER:

     constant SQLSTATE_TYPE :="2200G";

   DATA_EXCEPTION_MOST_SPECIFIC_TYPE_MISMATCH:

     constant SQLSTATE_TYPE :="22002";

   DATA_EXCEPTION_MULTISET_VALUE_OVERFLOW:

     constant SQLSTATE_TYPE :="2200Q";

   DATA_EXCEPTION_NONCHARACTER_IN_UCS_STRING:

     constant SQLSTATE_TYPE :="22029";

   DATA_EXCEPTION_NULL_VALUE_NOT_ALLOWED:

     constant SQLSTATE_TYPE :="22004";

   DATA_EXCEPTION_NULL_VALUE_SUBSTITUTED_FOR_MUTATOR_SUBJECT_PARAMETER:

     constant SQLSTATE_TYPE :="2202D";

   DATA_EXCEPTION_NUMERIC_VALUE_OUT_OF_RANGE:

     constant SQLSTATE_TYPE :="22003";


678

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

   DATA_EXCEPTION_SEQUENCE_GENERATOR_LIMIT_EXCEEDED:

     constant SQLSTATE_TYPE :="2200H";

   DATA_EXCEPTION_STRING_DATA_LENGTH_MISMATCH:

     constant SQLSTATE_TYPE :="22026";

   DATA_EXCEPTION_STRING_DATA_RIGHT_TRUNCATION:

     constant SQLSTATE_TYPE :="22001";

   DATA_EXCEPTION_SUBSTRING_ERROR:

     constant SQLSTATE_TYPE :="22011";

   DATA_EXCEPTION_TRIM_ERROR:

     constant SQLSTATE_TYPE :="22027";

   DATA_EXCEPTION_UNTERMINATED_C_STRING:

     constant SQLSTATE_TYPE :="22024";

   DATA_EXCEPTION_ZERO_LENGTH_CHARACTER_STRING:

     constant SQLSTATE_TYPE :="2200F";

   DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2B000";

   DIAGNOSTICS_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0Z000";

   DIAGNOSTICS_EXCEPTION_MAXIMUM_NUMBER_OF_DIAGNOSTICS_AREAS_EXCEEDED:

     constant SQLSTATE_TYPE :="0Z001";

   DYNAMIC_SQL_ERROR_NO_SUBCLASS:

     constant SQLSTATE_TYPE := "07000";

   DYNAMIC_SQL_ERROR_CURSOR_SPECIFICATION_CANNOT_BE_EXECUTED:

     constant SQLSTATE_TYPE := "07003";

   DYNAMIC_SQL_ERROR_INVALID_DATETIME_INTERVAL_CODE:

     constant SQLSTATE_TYPE := "0700F";

   DYNAMIC_SQL_ERROR_INVALID_DESCRIPTOR_COUNT:

     constant SQLSTATE_TYPE := "07008";

   DYNAMIC_SQL_ERROR_INVALID_DESCRIPTOR_INDEX:

     constant SQLSTATE_TYPE := "07009";

   DYNAMIC_SQL_ERROR_PREPARED_STATEMENT_NOT_A_CURSOR_SPECIFICATION:

     constant SQLSTATE_TYPE := "07005";

   DYNAMIC_SQL_ERROR_RESTRICTED_DATA_TYPE_ATTRIBUTE_VIOLATION:

     constant SQLSTATE_TYPE := "07006";

   DYNAMIC_SQL_ERROR_DATA_TYPE_TRANSFORM_FUNCTION_VIOLATION:

     constant SQLSTATE_TYPE := "0700B";

   DYNAMIC_SQL_ERROR_INVALID_DATA_TARGET:

     constant SQLSTATE_TYPE := "0700D";

   DYNAMIC_SQL_ERROR_INVALID_LEVEL_VALUE:

     constant SQLSTATE_TYPE := "0700E";


679

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

   DYNAMIC_SQL_ERROR_UNDEFINED_DATA_VALUE:

     constant SQLSTATE_TYPE := "0700C";

   DYNAMIC_SQL_ERROR_USING_CLAUSE_DOES_NOT_MATCH_DYNAMIC_PARAMETER_SPEC:

     constant SQLSTATE_TYPE := "07001";

   DYNAMIC_SQL_ERROR_USING_CLAUSE_DOES_NOT_MATCH_TARGET_SPEC:

     constant SQLSTATE_TYPE := "07002";

   DYNAMIC_SQL_ERROR_USING_CLAUSE_REQUIRED_FOR_DYNAMIC_PARAMETERS:

     constant SQLSTATE_TYPE := "07004";

   DYNAMIC_SQL_ERROR_USING_CLAUSE_REQUIRED_FOR_RESULT_FIELDS:

     constant SQLSTATE_TYPE := "07007";

   EXTERNAL_ROUTINE_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="38000";

   EXTERNAL_ROUTINE_EXCEPTION_CONTAINING_SQL_NOT_PERMITTED:

     constant SQLSTATE_TYPE :="38001";

   EXTERNAL_ROUTINE_EXCEPTION_MODIFYING_SQL_DATA_NOT_PERMITTED:

     constant SQLSTATE_TYPE :="38002";

   EXTERNAL_ROUTINE_EXCEPTION_PROHIBITED_SQL_STATEMENT_ATTEMPTED:

     constant SQLSTATE_TYPE :="38003";

   EXTERNAL_ROUTINE_EXCEPTION_READING_SQL_DATA_NOT_PERMITTED:

     constant SQLSTATE_TYPE :="38004";

   EXTERNAL_ROUTINE_INVOCATION_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="39000";

   EXTERNAL_ROUTINE_INVOCATION_EXCEPTION_NULL_VALUE_NOT_ALLOWED:

     constant SQLSTATE_TYPE :="39004";

   FEATURE_NOT_SUPPORTED_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0A000";

   FEATURE_NOT_SUPPORTED_MULTIPLE_ENVIRONMENT_TRANSACTIONS:

     constant SQLSTATE_TYPE :="0A001";

   INTEGRITY_CONSTRAINT_VIOLATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="23000";

   INTEGRITY_CONSTRAINT_VIOLATION_RESTRICT_VIOLATION:

     constant SQLSTATE_TYPE :="23001";

   INVALID_AUTHORIZATION_SPECIFICATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="28000";

   INVALID_CATALOG_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="3D000";

   INVALID_CHARACTER_SET_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2C000";

   INVALID_COLLATION_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2H000";


680

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

   INVALID_CONDITION_NUMBER_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="35000";

   INVALID_CONNECTION_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2E000";

   INVALID_CURSOR_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="34000";

   INVALID_CURSOR_STATE_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="24000";

   INVALID_GRANTOR_STATE_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0L000";

   INVALID_ROLE_SPECIFICATION:

     constant SQLSTATE_TYPE :="0P000";

   INVALID_SCHEMA_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="3F000";

   INVALID_SCHEMA_NAME_LIST_SPECIFICATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0E000";

   INVALID_SQL_DESCRIPTOR_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="33000";

   INVALID_SQL_INVOKED_PROCEDURE_REFERENCE_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0M000";

   INVALID_SQL_STATEMENT:

     constant SQLSTATE_TYPE :="30000";

   INVALID_SQL_STATEMENT_IDENTIFIER_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="30000";

   INVALID_SQL_STATEMENT_NAME_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="26000";

   INVALID_TRANSFORM_GROUP_NAME_SPECIFICATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0S000";

   INVALID_TRANSACTION_STATE_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="25000";

   INVALID_TRANSACTION_STATE_ACTIVE_SQL_TRANSACTION:

     constant SQLSTATE_TYPE :="25001";

   INVALID_TRANSACTION_STATE_BRANCH_TRANSACTION_ALREADY_ACTIVE:

     constant SQLSTATE_TYPE :="25002";

   INVALID_TRANSACTION_STATE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL:

     constant SQLSTATE_TYPE :="25008";

   INVALID_TRANSACTION_STATE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION:

     constant SQLSTATE_TYPE :="25003";

   INVALID_TRANSACTION_STATE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION:

     constant SQLSTATE_TYPE :="25004";


681

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

   INVALID_TRANSACTION_STATE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION:

     constant SQLSTATE_TYPE :="25005";

   INVALID_TRANSACTION_STATE_READ_ONLY_SQL_TRANSACTION:

     constant SQLSTATE_TYPE :="25006";

   INVALID_TRANSACTION_STATE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED:

     constant SQLSTATE_TYPE :="25007";

   INVALID_TRANSACTION_TERMINATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2D000";

   LOCATOR_EXCEPTION_INVALID_SPECIFICATION:

     constant SQLSTATE_TYPE :="0F001";

   LOCATOR_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0F000";

   NO_DATA_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="02000";

   NO_DATA_NO_ADDITIONAL_RESULT_SETS_RETURNED:

     constant SQLSTATE_TYPE :="02001";

   PROHIBITED_STATEMENT_DURING_TRIGGER_EXECUTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE := "0W000";

   PROHIBITED_STATEMENT_DURING_TRIGGER_EXECUTION_MODIFY_TABLE_MODIFIED_

BY_DATA_CHANGE_DELTA_TABLE:

     constant SQLSTATE_TYPE := "0W001";

   REMOTE_DATABASE_ACCESS_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="HZ000";

   SAVEPOINT_EXCEPTION_INVALID_SPECIFICATION:

     constant SQLSTATE_TYPE :="3B001";

   SAVEPOINT_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="3B000";

   SAVEPOINT_EXCEPTION_TOO_MANY:

     constant SQLSTATE_TYPE :="3B002";

   SQL_ROUTINE_EXCEPTION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2F000";

   SQL_ROUTINE_EXCEPTION_FUNCTION_EXECUTED_NO_RETURN_STATEMENT:

     constant SQLSTATE_TYPE :="2F005";

   SQL_ROUTINE_EXCEPTION_MODIFYING_SQL_DATA_NOT_PERMITTED:

     constant SQLSTATE_TYPE :="2F002";

   SQL_ROUTINE_EXCEPTION_PROHIBITED_SQL_STATEMENT_ATTEMPTED:

     constant SQLSTATE_TYPE :="2F003";

   SQL_ROUTINE_EXCEPTION_READING_SQL_DATA_NOT_PERMITTED:

     constant SQLSTATE_TYPE :="2F004";

   SUCCESSFUL_COMPLETION_NO_SUBCLASS:


682

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

     constant SQLSTATE_TYPE :="00000";

   SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="42000";

   SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION_IN_DIRECT_STATEMENT_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="2A000";

   SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION_IN_DYNAMIC_STATEMENT_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="37000";

   TARGET_TABLE_DISAGREES_WITH_CURSOR_SPECIFICATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="0T000";

   TRANSACTION_ROLLBACK_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="40000";

   TRANSACTION_ROLLBACK_INTEGRITY_CONSTRAINT_VIOLATION:

     constant SQLSTATE_TYPE :="40002";

   TRANSACTION_ROLLBACK_SERIALIZATION_FAILURE:

     constant SQLSTATE_TYPE :="40001";

   TRANSACTION_ROLLBACK_STATEMENT_COMPLETION_UNKNOWN:

     constant SQLSTATE_TYPE :="40003";

   TRIGGERED_DATA_CHANGE_VIOLATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="27000";

   TRIGGERED_DATA_CHANGE_VIOLATION_MODIFY_TABLE_MODIFIED_BY_DATA_CHANGE_DELTA_TABLE:

     constant SQLSTATE_TYPE := "27001";

   WARNING_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="01000";

   WARNING_ADDITIONAL_RESULT_SETS_RETURNED:

     constant SQLSTATE_TYPE :="0100D";

   WARNING_ARRAY_DATA_RIGHT_TRUNCATION:

     constant SQLSTATE_TYPE :="0102F";

   WARNING_ATTEMPT_TO_RETURN_TOO_MANY_RESULT_SETS:

     constant SQLSTATE_TYPE :="0100E";

   WARNING_CURSOR_OPERATION_CONFLICT:

     constant SQLSTATE_TYPE :="01001";

   WARNING_DEFAULT_VALUE_TOO_LONG_FOR_INFORMATION_SCHEMA:

     constant SQLSTATE_TYPE :="0100B";

   WARNING_DISCONNECT_ERROR:

     constant SQLSTATE_TYPE :="01002";

   WARNING_DYNAMIC_RESULT_SETS_RETURNED:

     constant SQLSTATE_TYPE :="0100C";

   WARNING_INSUFFICIENT_ITEM_DESCRIPTOR_AREAS:

     constant SQLSTATE_TYPE :="01005";

   WARNING_NULL_VALUE_ELIMINATED_IN_SET_FUNCTION:


683

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

     constant SQLSTATE_TYPE :="01003";

   WARNING_PRIVILEGE_NOT_GRANTED:

     constant SQLSTATE_TYPE :="01007";

   WARNING_PRIVILEGE_NOT_REVOKED:

     constant SQLSTATE_TYPE :="01006";

   WARNING_QUERY_EXPRESSION_TOO_LONG_FOR_INFORMATION_SCHEMA:

     constant SQLSTATE_TYPE :="0100A";

   WARNING_RESULT_SETS_RETURNED:

     constant SQLSTATE_TYPE :="0100C";

   WARNING_SEARCH_CONDITION_TOO_LONG_FOR_INFORMATION_SCHEMA:

     constant SQLSTATE_TYPE :="01009";

   WARNING_STATEMENT_TOO_LONG_FOR_INFORMATION_SCHEMA:

     constant SQLSTATE_TYPE :="0100F";

   WARNING_STRING_DATA_RIGHT_TRUNCATION_WARNING:

     constant SQLSTATE_TYPE :="01004";

   WITH_CHECK_OPTION_VIOLATION_NO_SUBCLASS:

     constant SQLSTATE_TYPE :="44000";

 end SQLSTATE_CODES;

end 

Interfaces.SQL;

ここで,bstsbitibbtbdrddbsc 及び tsc は,処理系定義の整数値とする。は,標識

パラメタの処理系定義の

<真数型>に対応する INT 又は SMALLINT とする。

ライブラリ単位パッケージ Interfaces.SQL は,後続の構文規則で規定するとおり,追加の

宣言を含んでもよい。

注記 449 Ada 識別子 INVALID_SQL_STATEMENT は,JIS X 3005 (ISO/IEC 9075)  規格群の前の

版 と の 互 換 性 の た め に 現 れ る 。 し か し , 目 的 と す る 記 号 は ,

INVALID_SQL_STATEMENT_IDENTIFIER_NO_SUBCLASS であり,これは,例外条件

名に正確に対応付けるために追加された。

f)

ライブラリ単位パッケージ Interfaces.SQL.Numerics は,次の形式の

10 進固定小数点型宣

言の並びを含まなければならない。

type Scale_s is delta 10.0 **-s digits max_p;

ここで,は,0 から処理系定義の最大値までの範囲の整数とし,max_p は,処理系定義の,整

数の最大精度とする。

g)  ライブラリ単位パッケージ Interfaces.SQL.VARYING は,定義識別子 CHAR 及び NCHAR を

もつ型宣言

 (type declaration) 又は部分型宣言 (subtype declaration) を含まなければならない。これ

ら の型宣 言又 は部分 型宣 言の定 義は ,処理 系定 義とす るが ,それ ぞれ ,

SQL データ型の

CHARACTER VARYING 及び NATIONAL CHARACTER VARYING を提供しなければならない。

h) <文字集合名>を SQLcsn とし,SQLcsn 中の<ピリオド>を<下線文字>に置き換えた結果を Adacsn

と す る 。 Adacsn が , 正 し い Ada 識 別 子 な ら ば , ラ イ ブ ラ リ 単 位 パ ッ ケ ー ジ

Interfaces.SQL.Adacsn 及び Interfaces.SQL.Adacsn.VARYING は,定義識別子

CHAR


684

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

をもつ型宣言又は部分型宣言を含まなければならない。Adacsn が,正しい Ada 識別子でないなら

ば,これらのパッケージの名前は,処理系定義でなければならない。

i)

Interfaces.SQL 及びそれの子 は ,必要 に応 じて, 文脈 節

 (context clause) 及び表現項目

(representation item)  を含んでもよい。これらのパッケージは,型 CHAR 及び NCHAR の宣言を提

供するために,必要に応じて,

Ada 文字型の宣言も含んでもよい。Interfaces.SQL.CHAR 及び

Interfaces.SQL.NCHAR の 定 義 は , 処 理 系 定 義 と す る が , そ れ ぞ れ ,

SQL デ ー タ 型 の

CHARACTER 及び NATIONAL CHARACTER を提供しなければならない。

注記 450  固定長文字列型に既定で用いる処理系定義の文字集合指定が Latin1 ならば,(適切な

文脈節を仮定した)Interfaces.SQL 内の次の宣言

subtype CHAR is String;

及び Interfaces.SQL.VARYING 内の次の宣言

subtype CHAR is

    Ada.Strings.Unbounded.Unbounded_String;

が,この細分箇条のこの段落の要件に適合する。

NATIONAL CHARACTER の基となる

文字集合が,与えられた文字集合上の文字列を格納する型 String_Type を宣言する

Ada パッケージ仕様 (Ada package specification) Host_Char_Pkg,及び,さらに,

Latin1

Ada.Strings.Unbounded.Unbounded_String

の 機 能 性 を 再 現 す る 型

String_Type_Varying を宣言する(Host_Char_Pkg とは必ずしも異ならない)

パ ッ ケ ー ジ 仕 様 Host_Char_Pkg_Varying に よ っ て 提 供 さ れ る な ら ば ,

Interfaces.SQL 内の次の宣言

subtype NCHAR is Host_Char_Pkg.String_Type;

及び Interfaces.SQL.VARYING 内の次の宣言

subtype NCHAR is Host_Char_Pkg_Varying.String_Type_Varying;

が,この段落の要件に適合する。同様の注釈が,他の文字集合,並びにパッケージ

Interfaces.SQL.Adacsn 及び Interfaces.SQL.Adacsn.VARYING に適用され

る。

j)

ライブラリ単位パッケージ Interfaces.SQL は,次の形式の宣言を含まなければならない。

package CHARACTER_SET renames Interfaces.SQL.Adacsn;

subtype CHARACTER_TYPE is CHARACTER_SET.cst;

ここで,cst は,既定文字集合からの単一の文字を格納することができるデータ型とする。パッケ

ージ Interfaces.SQL.Adacsn は,cst に必要な宣言を含まなければならない。

注記 451  既定文字集合が Latin1 ならば,次の形式の宣言は,CHARACTER_SET の別名宣言

(renaming declaration)  で代用してもよい。

package CHARACTER_SET is

  subtype  cst is Character;

end CHARACTER_SET;

k) SQLSTATE パラメタの基底型 (base type) は,Interfaces.SQL.SQLSTATE_TYPE でなければな

らない。

l) SQLSTATE パラメタの Ada パラメタモード (Ada parameter mode) は,out とする。


685

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

m)  番目の<ホストパラメタ宣言>が指定する<データ型>によって,次による。

i)

あ る の CHARACTER(L)  な ら ば , 番 目 の パ ラ メ タ 宣 言 中 の 部 分 型 標 識 は ,

Interfaces.SQL.CHAR を指定しなければならない。

ii)  ある の CHARACTER VARYING (L)  ならば,番目のパラメタ宣言中の部分型標識は,

Interfaces.SQL.VARYING.CHAR を指定しなければならない。

iii)  ある の NATIONAL CHARACTER (L)  ならば,番目のパラメタ宣言中の部分型標識は,

Interfaces.SQL.NCHAR を指定しなければならない。

iv)  ある の NATIONAL CHARACTER VARYING (L)  ならば,番目のパラメタ宣言中の部分型標

識は,Interfaces.SQL.VARYING.NCHAR を指定しなければならない。

v)  ある で,かつ,ある文字集合名 csn の CHARACTER(L) CHARACTER SET csn ならば,番目

のパラメタ宣言中の部分型標識は,Interfaces.SQL.Adacsn.CHAR を指定しなければなら

ない。

vi)  ある で,かつ,ある文字集合名 csn の CHARACTER VARYING (L) CHARACTER SET csn 

らば,番目のパラメタ宣言中の部分型標識は,Interfaces.SQL.Adacsn.VARYING.CHAR

を指定しなければならない。

が,包含している手続 (encompassing procedure) の呼出し中での,番目のパラメタに関連付け

られた実パラメタ

 (actual parameter) ならば,は,適切な文字集合中の長さ の文字列を格納す

るために十分でなければならない。

注記 452  文字集合が固定長の符号化を用いるならば,固定長文字列のための部分型 CHAR の定

義は,

要素型

 (element type) が Ada 文字型  (Ada character type)  の配列型 (array type) で

あってもよい。

SQL 符号化によって用いられる文字ごとのビット数を用いるために,

その

Ada 文字型が定義されるならば,に関する制限は,正確に,P'LENGTH = 

ある。固定長の符号化を用いる可変長文字列に対して,適切な

VARYING パッケージ

中の

CHAR の定義が型 Ada.Strings.Unbounded.Unbounded_String に基づくな

らば,に関する制限がない。そうでなければ,に関する制限の正確な記述は,処

理系定義である。

n)  ある<精度> で,かつ,<位取り> の NUMERIC(P,S)  である<データ型>を,番目の<ホストパ

ラメタ宣言

>が指定するならば,包含しているモジュールに対して生成される Ada ライブラリ単

位パッケージは,次の指定と等しい宣言を含まなければならない。

subtype Numeric_p_s is

  Interfaces.SQL.Numerics.Scale_s digits p;

番目のパラメタ宣言中の部分型標識は,この部分型を指定しなければならない。

o) SMALLINT である<データ型>を 番目の<ホストパラメタ宣言>が指定するならば,番目のパラ

メタ宣言中の部分型標識は,Interfaces.SQL.SMALLINT を指定しなければならない。

p) INTEGER である<データ型>を 番目の<ホストパラメタ宣言>が指定するならば,番目のパラメ

タ宣言中の部分型標識は,Interfaces.SQL.INT を指定しなければならない。

q) BIGINT である<データ型>を 番目の<ホストパラメタ宣言>が指定するならば,番目のパラメタ

宣言中の部分型標識は,Interfaces.SQL.BIGINT を指定しなければならない。

r) REAL である<データ型>を 番目の<ホストパラメタ宣言>が指定するならば,番目のパラメタ宣

言中の部分型標識は,Interfaces.SQL.REAL を指定しなければならない。


686

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

s) DOUBLE_PRECISION である<データ型>を 番目の<ホストパラメタ宣言>が指定するならば,i

番目のパラメタ宣言中の部分型標識は,Interfaces.SQL.DOUBLE_PRECISION を指定しなけ

ればならない。

t) <位置付け子標識>を 番目の<ホストパラメタ宣言>が指定するならば,

番目のパラメタ宣言中の

部分型標識は,Interfaces.SQL.INT を指定しなければならない。

u)  どのパラメタに対しても,次による。

場合:

i)

パラメタが入力パラメタであるが,出力パラメタでないならば,

Ada パラメタモードは,in 

する。

ii)  パラメタが出力パラメタであるが,入力パラメタでないならば,Ada パラメタモードは,out

とする。

iii)  パラメタが入出力パラメタ(入力パラメタで,かつ,出力パラメタ)ならば,Ada パラメタモ

ードは,in out とする。

iv)  そうでなければ,Ada パラメタモードは,inout 又は in out とする。

v)  次の Ada ライブラリ単位別名宣言  (Ada library unit renaming declaration)  が存在する。

with Interfaces.SQL;

package SQL_Standard renames Interfaces.SQL.

11) <外部呼出し手続>の呼出し元言語が C ならば,次による。

a) SQLSTATE ホストパラメタの宣言型は,長さ 6 の C の char でなければならない。

b)  各 i,1 ≤ i ≤ に対して,次による。

場合:

i)

PDi が<位置付け子標識>を含むならば,ADTi は,C の unsigned long でなければならない。

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

1)  PDTi は,表 17“C のためのデータ型対応”の“C データ型”列が“なし”の行の“SQL デ

ータ型”列中に記載されたデータ型を識別してはならない。

2)  ADTi は,表 17“C のためのデータ型対応”の“SQL データ型”列が PDTi の行の“C データ

型”列中に記載されたデータ型でなければならない。

12) <外部呼出し手続>の呼出し元言語が COBOL ならば,次による。

a) SQLSTATE ホストパラメタの宣言型は,COBOL の PICTURE X(5) でなければならない。

b)  各 i,1 ≤ i ≤ に対して,次による。

場合:

i)

PDi が<位置付け子標識>を含むならば,ADTi は,COBOL の PIC S9(9) USAGE IS BINARY
でなければならない。

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

1)  PDTi は,表 18“COBOL のためのデータ型対応”の“COBOL データ型”列が“なし”の行

の“

SQL データ型”列中に記載されたデータ型を識別してはならない。

2)  ADTi は,表 18“COBOL のためのデータ型対応”の“SQL データ型”列が PDTi の行の“COBOL

データ型”列中に記載されたデータ型でなければならない。

13) <外部呼出し手続>の呼出し元言語が FORTRAN ならば,次による。

a) SQLSTATE ホストパラメタの宣言型は,長さ 5 の Fortran の CHARACTER でなければならない。


687

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

b)  各 i,1 ≤ i ≤ に対して,次による。

場合:

i)

PDi が<位置付け子標識>を含むならば,ADTi は,Fortran の INTEGER でなければならない。

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

1)  PDTi は,表 19“Fortran のためのデータ型対応”の“Fortran データ型”列が“なし”の行の

SQL データ型”列中に記載されたデータ型を識別してはならない。

2)  ADTi は,表 19“Fortran のためのデータ型対応”の“SQL データ型”列が PDTi の行の“Fortran

データ型”列中に記載されたデータ型でなければならない。

14) <外部呼出し手続>の呼出し元言語が M ならば,次による。

a) SQLSTATE ホストパラメタの宣言型は,M の character でなければならない。

b)  各 i,1 ≤ i ≤ に対して,次による。

場合:

i)

PDi が<位置付け子標識>を含むならば,ADTi は,M の character でなければならない。

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

1)  PDTi は,表 20“M のためのデータ型対応”の“M データ型”列が“なし”の行の“SQL デ

ータ型”列中に記載されたデータ型を識別してはならない。

2)  ADTi は,表 20“M のためのデータ型対応”の“SQL データ型”列が PDTi の行の“M デー

タ型”列中に記載されたデータ型でなければならない。

15) <外部呼出し手続>の呼出し元言語が PASCAL ならば,次による。

a) SQLSTATE ホストパラメタの宣言型は,Pascal の PACKED ARRAY[1..5] OF CHAR でなければ

ならない。

b)  各 i,1 ≤ i ≤ に対して,次による。

場合:

i)

PDi が<位置付け子標識>を含むならば,ADTi は,Pascal の INTEGER でなければならない。

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

1)  PDTi は,表 21“Pascal のためのデータ型対応”の“Pascal データ型”列が“なし”の行の“SQL

データ型”列中に記載されたデータ型を識別してはならない。

2)  ADTi は,表 21“Pascal のためのデータ型対応”の“SQL データ型”列が PDTi の行の“Pascal

データ型”列中に記載されたデータ型でなければならない。

16) <外部呼出し手続>の呼出し元言語が PLI ならば,次による。

a) SQLSTATE ホストパラメタの宣言型は,PL/I の CHARACTER(5) でなければならない。

b)  各 i,1 ≤ i ≤ に対して,次による。

場合:

i)

PDi が<位置付け子標識>を含むならば,ADTi は,PL/I の INTEGER でなければならない。

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

1)  PDTi は,表 22“PL/I のためのデータ型対応”の“PL/I データ型”列が“なし”の行の“SQL

データ型”列中に記載されたデータ型を識別してはならない。

2)  ADTi は,表 22“PL/I のためのデータ型対応”の“SQL データ型”列が PDTi の行の“PL/I

データ型”列中に記載されたデータ型でなければならない。

アクセス規則


688

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

なし。 

一般規則

1) < 外 部 呼 出 し 手 続 > は , SQL エ ー ジ ェ ン ト に よ っ て 呼 び 出 さ れ て も よ い 外 部 呼 出 し 手 続

(externally-invoked procedure)  を定義する。

2) <外部呼出し手続>を含む<SQL クライアントモジュール定義>が,等価な<手続名>をもつ<外部呼出

し手続

>を含む別の<SQL クライアントモジュール定義>に関連付けられている SQL エージェントに

関連付けられるならば,その効果は,処理系定義とする。

3) <外部呼出し手続>を含む<SQL クライアントモジュール定義>の<LANGUAGE 句>に含まれる<言語

>によって識別される言語は,<外部呼出し手続>の呼出し元言語  (caller language)  とする。

4) <外部呼出し手続>の呼出しを実行する SQL エージェントが,<外部呼出し手続>の呼出し元言語に

よって指定されるプログラム言語の仕様に適合するプログラムでないならば,その効果は,処理系

依存とする。

5) <外部呼出し手続>の呼出し元言語が ADA で,かつ,二つ以上の Ada タスクからの<外部呼出し手続

>の呼出しを SQL エージェントが実行するならば,その結果は,処理系依存とする。

6) <外部呼出し手続>を含む<SQL クライアントモジュール定義>が,SQL セションの<認可識別子> SAI

と等価でない陽に指定される

<モジュール認可識別子> MAI をもつならば,次による。

a)  陽に指定される<モジュール認可識別子>  MAI をもつ<SQL クライアントモジュール定義>中の<

外部呼出し手続

>を SAI が呼び出すことができるかどうかは,そのような呼出しに関する制限を

含めて,処理系定義とする。

b)  陽に指定される<モジュール認可識別子>  MAI をもつ<SQL クライアントモジュール定義>中の<

外部呼出し手続

>を呼び出すことを SAI が制限されているならば,例外条件:認可指定が正しく

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

7) SQL エージェントによって与えられる入力ホストパラメタの値が,そのホストパラメタの宣言型の

許される値の集合の範囲外になるか,又は

<外部呼出し手続>の実行の結果として得られる出力ホス

トパラメタの値が,そのホストパラメタに対して

SQL エージェントによって提供される値の集合の

範囲外になるならば,その効果は,処理系定義とする。処理系定義の効果が例外条件を引き起こす

ことならば,例外条件:

データ例外  (data exception)  -  パラメタ値が正しくない  (invalid parameter 

value)  が引き起こされる。

8)  認可スタックの最上部セルの写しが認可スタックに押し込まれる。外部呼出し手続を含む SQL クラ

イアントモジュール が所有者をもつならば,認可スタックの最上部セルは,の所有者の認可識

別子だけを含むように設定される。

9)  これが現行 SQL セション中の の外部呼出し手続の最初の呼出しならば,の宣言カーソルの各

カーソル宣言記述子 CDD に対して,カーソル宣言記述子が CDD で,SQL セションが現行 SQL セ

ションで,かつ,状態が閉じている新しいカーソル実現値記述子を CID とする。

10) <外部呼出し手続>の<SQL 手続文>を とする。

11)  を EXECUTING STATEMENT として,

13.4 <SQL 手続文>”の一般規則を適用する。

12)  実行の完了時に,認可スタック中の最上部セルが取り除かれる。

適合性規則

1)  機能 S231“構造型位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,かつ,

構造型を識別する

<データ型>を単純に含む<ホストパラメタデータ型>を含んではならない。


689

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

2)  機能 S232“配列位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,かつ,

<配列型>を単純に含む<ホストパラメタデータ型>を含んではならない。

3)  機能 S233“マルチ集合位置付け子”なしでは,適合する SQL 言語は,<位置付け子標識>を含み,

かつ,

<マルチ集合型>を単純に含む<ホストパラメタデータ型>を含んではならない。

4)  機能 B221“ルーチン言語 Ada:VARCHAR 及び NUMERIC 提供”なしでは,<外部呼出し手続>の呼

出し元言語が

ADA ならば,<ホストパラメタデータ型>は,CHARACTER VARYING 又は NUMERIC

であってはならない。

13.4  <SQL 手続文>

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

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

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

細分箇条署名

 “<SQL 手続文>” [一般規則]

 (

パラメタ: “EXECUTING STATEMENT”

)

機能

<SQL 手続文> (<SQL procedure statement>)  は,<SQL 手続文>である全ての SQL 文を定義する。

形式

<SQL 手続文> ::=

  <SQL 実行可能文>

<SQL 実行可能文> ::=

  <SQL スキーマ文>

 |

<SQL データ文>

 |

<SQL 制御文>

 |

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

 |

<SQL コネクション文>

 |

<SQL セション文>

 |

<SQL 診断文>

 |

<動的 SQL 文>

<SQL スキーマ文> ::=

  <SQL スキーマ定義文>

 |

<SQL スキーマ操作文>

04

09

 <SQL スキーマ定義文> ::=

  <スキーマ定義>

 |

<表定義>

 |

<ビュー定義>

 |

<SQL 呼出しルーチン>

 |

<GRANT 文>

 |

<役割定義>

 |

<定義域定義>


690

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

 |

<文字集合定義>

 |

<照合順定義>

 |

<文字変換定義>

 |

<表明定義>

 |

<トリガ定義>

 |

<利用者定義型定義>

 |

<利用者定義型変換定義>

 |

<利用者定義順序付け定義>

 |

<変換定義>

 |

<順序数生成子定義>

04

09

 <SQL スキーマ操作文> ::=

  <スキーマ削除文>

 |

<表変更文>

 |

<表削除文>

 |

<ビュー削除文>

 |

<ルーチン変更文>

 |

<ルーチン削除文>

 |

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

 |

<REVOKE 文>

 |

<役割削除文>

 |

<定義域変更文>

 |

<定義域削除文>

 |

<文字集合削除文>

 |

<照合順削除文>

 |

<文字変換削除文>

 |

<表明削除文>

 |

<トリガ削除文>

 |

<型変更文>

 |

<データ型削除文>

 |

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

 |

<変換変更文>

 |

<変換削除文>

 |

<順序数生成子変更文>

 |

<順序数生成子削除文>

<SQL データ文> ::=

  <OPEN 文>

 |

<FETCH 文>

 |

<CLOSE 文>

 |

<SELECT 文:単一行>

| <FREE LOCATOR 文>


691

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

| <HOLD LOCATOR 文>

 |

<SQL データ変更文>

<SQL データ変更文> ::=

  <DELETE 文:位置付け>

 |

<DELETE 文:探索>

 |

<INSERT 文>

 |

<UPDATE 文:位置付け>

 |

<UPDATE 文:探索>

| <TRUNCATE TABLE 文>

 |

<MERGE 文>

04

 <SQL 制御文> ::=

  <CALL 文>

 |

<RETURN 文>

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

  <START  TRANSACTION 文>

| <SET TRANSACTION 文>

| <SET CONSTRAINTS MODE 文>

 |

<SAVEPOINT 文>

| <RELEASE SAVEPOINT 文>

 |

<COMMIT 文>

 |

<ROLLBACK 文>

<SQL コネクション文> ::=

  <CONNECT 文>

| <SET CONNECTION 文>

 |

<DISCONNECT 文>

09

14

 <SQL セション文> ::=

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

| <SET ROLE 文>

 |

<地方時刻帯設定文>

| <SET SESSION CHARACTERISTICS 文>

| <SET CATALOG 文>

| <SET SCHEMA 文>

| <SET NAMES 文>

| <SET PATH 文>

| <SET TRANSFORM GROUP 文>

 |

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

04

 <SQL 診断文> ::=

  <GET  DIAGNOSTICS 文>

<動的 SQL 文> ::=

  <SQL 記述子文>


692

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

 |

<PREPARE 文>

| <DEALLOCATE PREPARE 文>

 |

<記述文>

 |

<EXECUTE 文>

| <EXECUTE IMMEDIATE 文>

 |

<SQL 動的データ文>

<SQL 動的データ文> ::=

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

 |

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

 |

<動的 OPEN 文>

 |

<動的 FETCH 文>

 |

<動的 CLOSE 文>

 |

<動的 DELETE 文:位置付け>

 |

<動的 UPDATE 文:位置付け>

<SQL 記述子文> ::=

  <ALLOCATE  DESCRIPTOR 文>

| <DEALLOCATE DESCRIPTOR 文>

| <SET DESCRIPTOR 文>

| <GET DESCRIPTOR 文>

構文規則

1) <SQL 手続文>を とする。

2) <SQL 呼出しルーチン>によって指定される SQL 呼出しルーチンは,スキーマレベルルーチンでな

ければならない。

注記 453  “スキーマレベルルーチン”は,“11.60 <SQL 呼出しルーチン>”で定義している。

3)  が潜在的に非決定的  (possibly non-deterministic)  であることは,が<SQL スキーマ文>ではなく,

かつ,次の少なくとも一つを満たすことと同値とする。

a)  が,潜在的に非決定的な<SELECT 文:単一行>である。

b)  潜在的に非決定的な SQL 呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を,が含

む。

c)

潜在的に非決定的な

<問合せ指定>又は<問合せ式>を,が一般に含む。

d)

04

  潜在的に非決定的な<値式>を,が一般に含む。

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,EXECUTING STATEMENT を とする。

注記 454  は,必然的に“4.38 SQL セション”で定義される SQL セションの最も内側の実行文で

ある。

注記 455  は,必ずしも<SQL 手続文>ではない。

2)  文実行文脈  (statement execution context)  NEWSEC が,の実行のために確立される。最も新しい文

実行文脈を OLDSEC とする。NEWSEC が最も新しい文実行文脈になる。NEWSEC が,基本単位の


693

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

実行文脈であること,したがって,最も新しい基本単位の実行文脈であることは,が,基本単位

SQL 文であることと同値とする。

3)  現行トリガ実行文脈 CTEC は,あるならば,保存され,状態変更 SSC の空集合をもつ新しいトリガ

実行文脈 NTEC が作成される。

4) <SQL データ文>,<SQL 動的データ文>,<動的 SELECT 文>又は<動的単一行 SELECT 文>の動的で

ない実行又は動的実行が,

SQL スキーマ文の動的でない実行又は動的実行と同じ SQL トランザクシ

ョン内で発生し,かつ,これが

SQL 処理系によって許されないならば,例外条件:トランザクショ

ン状態が正しくない  (invalid transaction state)  -  スキーマ文とデータ文との混在は提供されない

(schema and data statement mixing not supported)  が引き起こされる。

5)  場合:

a)  が<外部呼出し手続>  EP に直に含まれるならば,EP の呼出し元言語を LANG とする。EP 中に

指定される

<ホストパラメタ宣言>の個数を とし,番目のこのような<ホストパラメタ宣言>を

PDi,1 ≤ i ≤ とし,PDi 中に指定される<ホストパラメタ名>及び<ホストパラメタデータ型>を,
それぞれ,PNi 及び DTi とし,PDi に対応するホストパラメタを Pi する。EP が SQL エージェン
トによって呼び出されるとき,手続の呼出し中の 番目の引数を PIi とする。 
場合:

i)

が<SQL コネクション文>ならば,次による。

1)  を含む SQL クライアントモジュールが SQL エージェントに関連付けられる。

2) 1 番目の診断領域が空にされる。

3)  各 i,1 ≤ i ≤ に対して,Pi が入力ホストパラメタ又は入出力ホストパラメタ(入力ホストパ

ラメタで,かつ,出力ホストパラメタ)

ならば,LANG を LANGUAGE として,DTi を SQL TYPE

として,PIi を HOST  VALUE として,“9.3  ホスト言語から SQL サーバへの値の受渡し”の
一般規則を適用する。これらの一般規則の適用によって戻される SQL VALUE を SV とする。

Pi には,SV の値が設定される。

4)  の一般規則を評価する。

5)  各 i,1 ≤ i ≤ に対して,Pi が出力ホストパラメタ又は入出力ホストパラメタならば,LANG

を LANGUAGE として,DTi を SQL TYPE として,Pi の値を SQL VALUE として,“9.4 SQL
サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用に

よって戻される HOST VALUE を LV とする。PIi には,LV の値が設定される。

6)  が SQL セションの開始又は再開に成功したならば,SQL エージェントによる<外部呼出し

手続

>の後続する呼出し及び<直接 SQL 文>の後続する起動は,SQL エージェントがその SQL

セションを終了させるか又は休眠の状態にするまで,その

SQL セションに関連付けられる。

ii)  が<SQL 診断文>ならば,次による。

1)  を含む SQL クライアントモジュールが SQL エージェントに関連付けられる。

2)  各 i,1 ≤ i ≤ に対して,Pi が入力ホストパラメタ又は入出力ホストパラメタならば,LANG

を LANGUAGE として,DTi を SQL TYPE として,PIi を HOST VALUE として,“9.3  ホスト
言語から

SQL サーバへの値の受渡し”の一般規則を適用する。これらの一般規則の適用によ

って戻される SQL VALUE を SV とする。Pi には,SV の値が設定される。

3)  の一般規則を評価する。

4)  各 i,1 ≤ i ≤ に対して,Pi が出力ホストパラメタ又は入出力ホストパラメタならば,LANG


694

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

を LANGUAGE として,DTi を SQL TYPE として,Pi の値を SQL VALUE として,“9.4 SQL
サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用に

よって戻される HOST VALUE を LV とする。PIi には,LV の値が設定される。

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

1) SQL エージェントに対して,現行の SQL セションがないならば,次による。

場合:

A) SQL エージェントが<SQL コネクション文>を実行しておらず,かつ,SQL エージェントに

関連付けられた既定の

SQL セションがないならば,次の<CONNECT 文>が実効的に実行さ

れる。

CONNECT TO DEFAULT

B) SQL エージェントが<SQL コネクション文>を実行しておらず,かつ,SQL エージェントに

関連付けられた既定の

SQL セションがあるならば,次の<SET CONNECTION 文>が実効的

に実行される。

SET CONNECTION DEFAULT

C)  そうでなければ,例外条件:コネクション例外  (connection exception)  -  コネクションが

存在しない  (connection does not exist)  が引き起こされ,この一般規則のこれ以降の部分規

則は評価されず,次の一般規則から評価を続ける。

2) SQL エージェントによる<外部呼出し手続>の後続する呼出し及び<直接 SQL 文>の後続する

起動は,

SQL エージェントがその SQL セションを終了させるか又は休眠の状態にするまで,

その

SQL セションに関連付けられる。

3) SQL エージェントに対して,動作中の SQL トランザクションがなく,かつ,が,SQL トラ

ンザクションを暗に開始する

SQL 文ならば,SQL トランザクションが開始される。を含む

SQL クライアントモジュールがその SQL トランザクションに関連付けられる。

注記 456  が<PREPARE 文>ならば,<SQL 文変数>の内容に基づいて,トランザクション

が開始されるかもしれないし,開始されないかもしれない。

4.34.4 SQL 文及びト

ランザクション状態”参照。

4)  を含む SQL クライアントモジュールが SQL エージェントに関連付けられる。

5)  が<SQL スキーマ文>を含み,かつ,現行 SQL トランザクションのアクセスモードが読込み

専用ならば,例外条件:

トランザクション状態が正しくない  が引き起こされ,この一般規則

のこれ以降の部分規則は評価されず,次の一般規則から評価を続ける。

6)

04

 1 番目の診断領域が空にされる。

7)  各 i,1 ≤ i ≤ に対して,Pi が入力ホストパラメタ又は入出力ホストパラメタならば,LANG

を LANGUAGE として,DTi を SQL TYPE として,PIi を HOST VALUE として,“9.3  ホスト
言語から

SQL サーバへの値の受渡し”の一般規則を適用する。これらの一般規則の適用によ

って戻される SQL VALUE を SV とする。Pi には,SV の値が設定される。

8) <SQL 手続文>の構文規則及びアクセス規則に が適合しないならば,例外条件:構文誤り又

はアクセス規則違反  (syntax error or access rule violation)  が引き起こされ,この一般規則のこ

れ以降の部分規則は評価されず,次の一般規則から評価を続ける。

9)  の一般規則を評価する。

10)  各 i,1 ≤ i ≤ に対して,Pi が出力ホストパラメタ又は入出力ホストパラメタならば,LANG


695

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

を LANGUAGE として,DTi を SQL TYPE として,Pi の値を SQL VALUE として,“9.4 SQL
サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用に

よって戻される HOST VALUE を LV とする。PIi には,LV の値が設定される。

11)  が<SELECT 文:単一行>又は<FETCH 文>で,かつ,終了条件:データなし  (no data)  が引

き起こされるか,又は例外条件が引き起こされるならば,PNi が 中の<相手指定>中で参照
される各 PIi の値は,処理系依存とする。

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

i) SQL エージェントに対して,動作中の SQL トランザクションがなく,かつ,が,SQL トラン

ザクションを暗に開始する

SQL 文ならば,SQL トランザクションが開始される。

注記 457  が<PREPARE 文>ならば,<SQL 文変数>の内容に基づいて,トランザクションが

開始されるかもしれないし,開始されないかもしれない。“4.34.4 SQL 文及びトラン

ザクション状態”参照。

ii)  が<SQL 診断文>でないならば,1 番目の診断領域が空にされる。

iii)  が<SQL スキーマ文>で,かつ,現行 SQL トランザクションのトランザクションアクセスモー

ドが読込み専用ならば,例外条件:

トランザクション状態が正しくない  が引き起こされる。

6)  どの強制の参照制約 RC に対しても,RC を CONSTRAINT として,

15.17 参照動作の実行”の一般

規則を適用する。

7)  トリガ事象が DELETE である SSC 中のどの状態変更 DSC に対しても,

DSC 中の遷移の集合を DSOT

とし,DSC の当該表を DBT とする。

場合:

a)  DBT がシステムバージョン表ならば,次による。

i)

DBT のシステム時刻期間開始列を STARTCOL とする。DBT のシステム時刻期間終了列を

ENDCOL とする。ENDCOL の宣言型を DT とする。

ii)  現行 SQL トランザクションのトランザクション時刻印を TTS とする。次の CAST 指定の結果

を CTTS とする。

CAST (TTS AS DT)

iii)  DBT からの削除のためにマーク付けされている各行 に対して,

STARTCOL の値を STARTVAL

とする。

場合:

1)  CTTS < STARTVAL ならば,例外条件:データ例外  (data exception)  -  行バージョンが正し

くない  (invalid row version)  が引き起こされる。

2)  CTTS = STARTVAL ならば,が DBT から削除される。

3)  そうでなければ,ENDCOL の値が CTTS によって置き換えられる。

b)  そうでなければ,DBT からの削除のためにマーク付けされている各行が,DBT から削除される。

8)  場合:

a)  ある強制制約 に対して,現行 SQL セション中の の制約モードが即時で,かつ,の記述子

に含まれる適用可能な

<探索条件>が偽  (False)  と評価されるならば,例外条件:整合性制約違反

(integrity constraint violation)  が引き起こされる。

注記 458 NO

ACTION を指定する参照制約及び参照動作の適用後に満たされない参照制約の両

方に適応するために,これが必要とされる。


696

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

b)  そうでなければ,SSC を SET  OF  STATE  CHANGES として,

15.18 AFTER トリガの実行”の構

文規則を適用する。

15.18 AFTER トリガの実行”の一般規則を適用する。

9)  NTEC がそれの全ての内容とともに破壊され,CTEC が存在するならば,それが現行トリガ実行文

脈になるように回復される。

10)  場合:

a)  が<外部呼出し手続>に直に含まれるならば,次による。

場合:

i)

が成功実行したならば,この規格群のこの細分箇条及び他の細分箇条の一般規則によって決

定されるとおりに,終了条件:

成功終了  (successful completion)  若しくは終了条件:警告

(warning)  が引き起こされるか,又は終了条件:データなし  が引き起こされるかのいずれかと

する。

ii)  が成功実行しなかったならば,次による。

1)  状態パラメタには,

24  状態コード”中の,条件に対して規定される値が設定される。

2)  が,基本単位の SQL 文ならば,の実行によって SQL データ又はスキーマになされた全て

の変更が取り消される。

注記 459  基本単位の SQL 文及び基本単位でない SQL 文は,“4.34.5 SQL 文の基本単位性及

び文実行文脈”で定義している。

b)  そうでなければ,に対する一般規則を評価する。

場合:

i)

が成功実行したならば,この規格群のこの細分箇条及び他の細分箇条の一般規則によって決

定されるとおりに,終了条件:

成功終了  若しくは終了条件:警告  が引き起こされるか,又は

終了条件:

データなし  が引き起こされるかのいずれかとする。

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

1)  が,基本単位の SQL 文ならば,の実行によって SQL データ又はスキーマになされた全て

の変更が取り消される。

注記 460  基本単位の SQL 文及び基本単位でない SQL 文は,“4.34.5 SQL 文の基本単位性及

び文実行文脈”で定義している。

2)  の実行を終了させた例外条件が引き起こされる。

11)  が<SQL 診断文>でないならば,の実行の結果として生じる診断情報が,1 番目の診断領域に格

納され,

1 番目の診断領域中の最初の条件領域が占有されることになる。他のいずれかの条件領域

が占有されることになるかどうかは,処理系定義とする。

12)

04

 NEWSEC が基本単位ならば,それが存在している間に確立された全ての保存点が破壊される。

13)  NEWSEC は,存在しなくなり,OLDSEC が最も新しい文実行文脈になる。

14)

04

 は,実行文ではなくなる。

注記 461  最も内側の実行文は,あるならば,の実行を引き起こした最も内側の実行文であった

ものになる。

適合性規則

なし。 

13.5  データ型対応

この細分箇条は,ISO/IEC 9075-9 の“14.5  データ型対応”によって修正される。 


697

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

この細分箇条は,ISO/IEC 9075-14 の“13.3  データ型対応”によって修正される。 

機能

データ型対応

 (Data type correspondences) は,SQL データ型とホスト言語の型とのデータ型対応を規定

する。

次の表の中で,

<精度>を とし,<位取り>を とし,<長さ>又は<長大オブジェクト長>を とし,<

文字長単位

>を とし,<文字集合指定>を CS とし,<時刻小数秒精度>を とし,<時間隔修飾子>を 

し,構造型参照の処理系定義の大きさを とする。

09

14

 表

16Ada のためのデータ型対応

SQL データ型 Ada データ型 

SQLSTATE

Interfaces.SQL.SQLSTATE_TYPE

CHARACTER (L U
CHARACTER SET CS

Interfaces.SQL.CHAR(1..L*k)

1)

CHARACTER VARYING (L U
CHARACTER SET CS

Interfaces.SQL.VARYING.CHAR (1..L*k) 又は

Interfaces.SQL.VARYING.NCHAR (1..L*k)

1), 3)

CHARACTER LARGE OBJECT (L U
CHARACTER SET CS

TYPE HVN IS

  RECORD

    HVN_RESERVED : Interfaces.SQL.INT;

    HVN_LENGTH : Interfaces.SQL.INT;

    HVN_DATA : Interfaces.SQL.CHAR(1..L*k)

1), 2), 4)

;

  END  RECORD;

BINARY (L) 

Interfaces.SQL.CHAR(1..L)

BINARY VARYING (L) 

TYPE HVN IS

  RECORD

    HVN_RESERVED : Interfaces.SQL.INT;

    HVN_LENGTH : Interfaces.SQL.INT;

    HVN_DATA : Interfaces.SQL.CHAR(1..L)

2), 4)

;

  END  RECORD;

BINARY LARGE OBJECT(L)

TYPE HVN IS

  RECORD

    HVN_RESERVED : Interfaces.SQL.INT;

    HVN_LENGTH : Interfaces.SQL.INT;

    HVN_DATA : Interfaces.SQL.CHAR(1..L)

2), 4)

;

  END  RECORD;

NUMERIC (PS)

Interfaces.SQL.NUMERIC_P_S

3)

DECIMAL (PS)

なし

SMALLINT

Interfaces.SQL.SMALLINT

INTEGER

Interfaces.SQL.INT

BIGINT

Interfaces.SQL.BIGINT

FLOAT (P)

なし

REAL

Interfaces.SQL.REAL

DOUBLE PRECISION

Interfaces.SQL.DOUBLE_PRECISION

BOOLEAN

Interfaces.SQL.BOOLEAN

DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし


698

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

09

14

 表

16Ada のためのデータ型対応(続き)

SQL データ型 Ada データ型 

INTERVAL (Q)

なし

利用者定義型

なし

REF

Interfaces.SQL.CHAR(1..N)

ROW

なし

ARRAY

なし

MULTISET

なし

1)

  が OCTETS ならば,は,1 とする。そうでなければ,は,文字集合 CS での文字当たりのオクテットの最

大個数とする。

2)

  HVN は,SQL データ型に対応するように定義するホスト変数の名前とする。

3)

 SQL データ型の CHARACTER VARYING 及び NUMERIC の Ada での提供は,機能 B211“モジュール言語 Ada:

VARCHAR 及び NUMERIC 提供”又は機能 B221“ルーチン言語 Ada:VARCHAR 及び NUMERIC 提供”  の提
供を条件とする。

4)

  この型の Ada の値 AV 中で,AV 

長さ部分

  (length portion)  は,HVN_LENGTH と呼ぶ AV のフィールドとし,AV

データ部分

  (data portion)  は,HVN_DATA と呼ぶ AV のフィールドとする。


699

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

09

14

 表

17のためのデータ型対応

SQL データ型 

データ型 

SQLSTATE

長さ

6 の char

CHARACTER (L U
CHARACTER SET CS

長さ

(L+1)* の unit

1)

CHARACTER VARYING (L U
CHARACTER SET CS

長さ

(L+1)* の unit

1)

CHARACTER LARGE OBJECT (L U
CHARACTER SET CS

struct {

    long  hvn_reserved ;

    unsigned  long  hvn_length ;

    unit  hvn_data [L*k ];

hvn ;

1), 2), 3)

BINARY (L) 

長さ の char

BINARY VARYING (L) 

struct {

    long  hvn_reserved ;

    unsigned  long  hvn_length ;

    char  hvn_data [L];

hvn ;

2), 3)

BINARY LARGE OBJECT (L)

struct {

    long  hvn_reserved ;

    unsigned  long  hvn_length ;

    char  hvn_data [L];

hvn

;

2), 3)

NUMERIC (PS)

なし

DECIMAL (PS)

なし

SMALLINT

short へのポインタ

INTEGER

long へのポインタ

BIGINT

long long へのポインタ

FLOAT (P)

なし

REAL

float へのポインタ

DOUBLE PRECISION

double へのポインタ

BOOLEAN

long へのポインタ

DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし

INTERVAL (Q)

なし

利用者定義型

なし

REF

長さ の char

ROW

なし

ARRAY

なし

MULTISET

なし

1)

  が OCTETS ならば,unit は,char とし,は,1 とする。そうでなければ,(すなわち,が CHARACTERS

ならば,

unit は,処理系定義の適切な C データ型(典型的には char,unsigned char,unsigned short

又は unsigned int)とし,は,unit を選択させる適切なサイズ決定係数とする。unit 及び の選択は,処
理系定義とし,文字集合 CS に基づく。例えば,UTF32 に対しては,unit が char で,が 4 であってもよいし,

unit が unsigned int で,が 1 であってもよい。

2)

  hvn は,SQL データ型に対応するように定義するホスト変数の名前とする。

3)

  この型の C の値 CV 中で,CV 

長さ部分

  (length portion)  は,hvn_length と呼ぶ CV のフィールドとし,CV

データ部分

  (data portion)  は,hvn_data と呼ぶ CV のフィールドとする。


700

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

09

14

 表

18COBOL のためのデータ型対応

SQL データ型 COBOL データ型 

SQLSTATE

PICTURE X(5)

CHARACTER (L U
CHARACTER SET CS

PICTURE X(L)

 3)

CHARACTER VARYING (L U
CHARACTER SET CS

なし

CHARACTER LARGE OBJECT (L U
CHARACTER SET CS

01  hvn.

   49  hvn-RESERVED PIC S9(9) USAGE IS BINARY.

   49  hvn-LENGTH PIC S9(9) USAGE IS BINARY.

   49  hvn-DATA PIC X(L)

2), 3), 4)

.

BINARY (L) 

PICTURE X(L)

BINARY VARYING (L) 

なし

BINARY LARGE OBJECT (L)

01  hvn.

   49  hvn-RESERVED PIC S9(9) USAGE IS BINARY.

   49  hvn-LENGTH PIC S9(9) USAGE IS BINARY.

   49  hvn-DATA PIC X(L)

2), 4)

.

NUMERIC (PS)

指定されたとおりの PICTURE

1)

  をもつ USAGE DISPLAY SIGN LEADING

SEPARATE

DECIMAL (PS)

なし

SMALLINT

PICTURE S9(SPI) USAGE BINARY

ここで,SPI は,処理系定義とする。

INTEGER

PICTURE S9(PI) USAGE BINARY

ここで,PI は,処理系定義とする。

BIGINT

PICTURE S9(BPI) USAGE BINARY

ここで,BPI は,処理系定義とする。

FLOAT (P)

なし

REAL

なし

DOUBLE PRECISION

なし

BOOLEAN

PICTURE X

DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし

INTERVAL (Q)

なし

利用者定義型

なし

REF

長さ の英数字 alphanumeric

ROW

なし

ARRAY

なし

MULTISET

なし

1)

  場合:

a)  S = ならば,’S’,それに続く’V’,及びそれに続く 個の’9’をもつ PICTURE とする。

b)  S > P > 0 ならば,’S’,それに続く P-個の’9’,それに続く’V’,及びそれに続く 個の’9’をもつ PICTURE

とする。

c)  S = 0 ならば,’S’,それに続く 個の’9’,及びそれに続く省略可能な’V’をもつ PICTURE とする。

2)

  hvn は,SQL データ型に対応するように定義するホスト変数の名前とする。

3)

  が CHARACTERS ならば,処理系定義の COBOL 固有の文字集合に対しては,PICTURE X(L)を用いる。他

の文字集合に対しては,その文字集合に対する適切なロケール名を LOCALE 句で指定して,PICTURE N(L)を
用いる。

4)

  この型の COBOL の値 CV 中で,CV 

長さ部分

  (length portion)  は,hvn-LENGTH と呼ぶ CV のフィールドとし,

CV 

データ部分

  (data portion)  は,hvn-DATA と呼ぶ CV のフィールドとする。


701

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

09

14

 表

19Fortran のためのデータ型対応

SQL データ型 Fortran データ型 

SQLSTATE

長さ

5 の CHARACTER

CHARACTER (L U
CHARACTER SET CS

長さ の CHARACTER

2)

CHARACTER VARYING (L U
CHARACTER SET CS

なし

CHARACTER LARGE OBJECT (L U
CHARACTER SET CS

CHARACTER hvn(L+8)

    INTEGER*4  hvn_RESERVED

    INTEGER*4  hvn_LENGTH

    CHARACTER  hvn_DATA

    EQUIVALENCE(hvn(1), hvn_RESERVED)

    EQUIVALENCE(hvn(5), hvn_LENGTH)

    EQUIVALENCE(hvn(9), hvn_DATA)

1), 2), 3)

BINARY (L) 

長さ の CHARACTER

BINARY VARYING (L) 

CHARACTER hvn(L+8)

    INTEGER*4  hvn_RESERVED

    INTEGER*4  hvn_LENGTH

    CHARACTER  hvn_DATA

    EQUIVALENCE(hvn(1), hvn_RESERVED)

    EQUIVALENCE(hvn(5), hvn_LENGTH)

    EQUIVALENCE(hvn(9), hvn_DATA)

1), 3)

BINARY LARGE OBJECT (L)

CHARACTER hvn(L+8)

    INTEGER*4  hvn_RESERVED

    INTEGER*4  hvn_LENGTH

    CHARACTER  hvn_DATA

    EQUIVALENCE(hvn(1), hvn_RESERVED)

    EQUIVALENCE(hvn(5), hvn_LENGTH)

    EQUIVALENCE(hvn(9), hvn_DATA)

1), 3)

NUMERIC (PS)

なし

DECIMAL (PS)

なし

SMALLINT

なし

INTEGER INTEGER 
BIGINT

なし

FLOAT (P)

なし

REAL REAL 
DOUBLE PRECISION

DOUBLE PRECISION

BOOLEAN LOGICAL 
DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし

INTERVAL (Q)

なし

利用者定義型

なし

REF

長さ の CHARACTER

ROW

なし

ARRAY

なし

MULTISET

なし


702

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

09

14

 表

19Fortran のためのデータ型対応(続き)

1)

  hvn は,SQL データ型に対応するように定義するホスト変数の名前とする。

2)

  が CHARACTERS ならば,文字集合 UTF16,及び符号単位が 2 オクテット以上を占める処理系定義の他の文

字集合に対して,

CHARACTER KIND = n”を用いるのがよい。この場合,与えられた文字集合に対応する n

の値は,処理系定義とする。そうでなければ,

(“

KIND = n”なしで)“CHARACTER”を用いるのがよい。

3)

  この型の Fortran の値 FV 中で,FV 

長さ部分

  (length portion)  は,hvn_LENGTH と呼ぶ FV のフィールドとし,

FV 

データ部分

  (data portion)  は,hvn_DATA と呼ぶ FV のフィールドとする。

09

14

 表

20のためのデータ型対応

SQL データ型 

データ型 

SQLSTATE

character

CHARACTER (L U
CHARACTER SET CS

なし

CHARACTER VARYING (L U
CHARACTER SET CS

character

CHARACTER LARGE OBJECT (L U
CHARACTER SET CS

なし

BINARY (L) 

なし

BINARY VARYING (L) 

なし

BINARY LARGE OBJECT (L)

なし

NUMERIC (PS)

なし

DECIMAL (PS)

character

SMALLINT

なし

INTEGER

character

BIGINT

なし

FLOAT (P)

なし

REAL

character

DOUBLE PRECISION

なし

BOOLEAN

なし

DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし

INTERVAL (Q)

なし

利用者定義型

なし

REF

character

ROW

なし

ARRAY

なし

MULTISET

なし


703

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

09

14

 表

21Pascal のためのデータ型対応

SQL データ型 Pascal データ型 

SQLSTATE

PACKED ARRAY [1..5] OF CHAR

CHARACTER (L U)  
CHARACTER SET CS

L

k = 1 ならば,CHAR

そうでなければ,PACKED ARRAY [1..L

 * k] OF CHAR

1)

CHARACTER VARYING (L U)  
CHARACTER SET CS

なし

CHARACTER LARGE OBJECT (L U)  
CHARACTER SET CS

VAR HVN = RECORD
                HVN_RESERVED : INTEGER;

                HVN_LENGTH : INTEGER;

                HVN_DATA : PACKED ARRAY [1..

L

 * k

] OF CHAR

1)

;

                END;

 2), 3)

BINARY (L) 

PACKED ARRAY [1..L] OF CHAR

BINARY VARYING (L) 

なし

BINARY LARGE OBJECT (L)

VAR HVN = RECORD
                HVN_RESERVED : INTEGER;

                HVN_LENGTH : INTEGER;

                HVN_DATA : PACKED ARRAY [1..

L

] OF CHAR;

                END;

 2), 3)

NUMERIC (PS)

なし

DECIMAL (PS)

なし

SMALLINT

なし

INTEGER

INTEGER

BIGINT

なし

FLOAT (P)

なし

REAL

REAL

DOUBLE PRECISION

なし

BOOLEAN

BOOLEAN

DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし

INTERVAL (Q)

なし

利用者定義型

なし

REF

PACKED ARRAY [1..N] OF CHAR

ROW

なし

ARRAY

なし

MULTISET

なし

1)

  が OCTETS ならば,は,1 とする。そうでなければ,は,文字集合 CS での文字当たり最大オクテット数

とする。

2)

  HVN は,SQL データ型に対応するように定義するホスト変数の名前とする。

3)

  この型の Pascal の値 PV 中で,PV 

長さ部分

  (length portion)  は,HVN_LENGTH と呼ぶ PV のフィールドとし,

PV 

データ部分

  (data portion)  は,HVN_DATA と呼ぶ PV のフィールドとする。


704

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

09

14

 表

22PL/I のためのデータ型対応

SQL データ型 PL/I データ型 

SQLSTATE

CHARACTER(5)

CHARACTER (L U)  
CHARACTER SET CS

CHARACTER (L

 * k)

2)

CHARACTER VARYING (L U)  
CHARACTER SET CS

CHARACTER (L

 * k) VARYING

2)

CHARACTER LARGE OBJECT (L U)  
CHARACTER SET CS

DCL 01 hvn ,

      49 hvn

_reserved FIXED BINARY (31) ,

      49 hvn

_length FIXED BINARY (31) ,

      49 hvn

_data CHAR (L * k)

1), 2), 3)

 ;

BINARY (L) 

CHARACTER (L)

BINARY VARYING (L) 

CHARACTER (L) VARYING

BINARY LARGE OBJECT (L)

DCL 01 hvn ,

      49 hvn

_reserved FIXED BINARY (31) ,

      49 hvn

_length FIXED BINARY (31) ,

      49 hvn

_data CHAR (L)

1), 3)

 ;

NUMERIC (PS)

なし

DECIMAL (PS)

FIXED DECIMAL (PS)

SMALLINT

FIXED BINARY(SPI)

ここで,SPI は,処理系定義とする。

INTEGER

FIXED BINARY(PI)

ここで,PI は,処理系定義とする。

BIGINT

FIXED BINARY(BPI)

ここで,BPI は,処理系定義とする。

FLOAT (P)

FLOAT BINARY (P)

REAL

なし

DOUBLE PRECISION

なし

BOOLEAN

BIT(1)

DATE

なし

TIME (T)

なし

TIMESTAMP (T)

なし

INTERVAL (Q)

なし

利用者定義型

なし

REF

CHARACTER(N) VARYING

ROW

なし

ARRAY

なし

MULTISET

なし

1)

  hvn は,SQL データ型に対応するように定義するホスト変数の名前とする。

2)

  が OCTETS ならば,は,1 とする。そうでなければ,は,文字集合 CS での文字当たり最大オクテット数

とする。

3)

  この型の PL/I の値 PV 中で,PV 

長さ部分

  (length portion)  は,hvn_length と呼ぶ PV のフィールドとし,

PV 

データ部分

  (data portion)  は,hvn_data と呼ぶ PV のフィールドとする。

適合性規則

なし。 


705

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

14  データ操作

14.1  <カーソル宣言>

この細分箇条は,ISO/IEC 9075-4 の“12.1 <カーソル宣言>”によって修正される。 

機能

<カーソル宣言> (<declare cursor>)  は,元祖カーソルを宣言する。

形式

<カーソル宣言> ::=

  DECLARE  <カーソル名> <カーソル特性>

      FOR  <カーソル指定>

構文規則

1)

04

 <カーソル宣言>が<SQL クライアントモジュール定義> に含まれるならば,次による。

a) <カーソル名>は,中の他のどの<カーソル宣言>,<動的カーソル宣言>又は<受取りカーソル割

当て文

>の<カーソル名>とも等価であってはならない。

b) <カーソル名>の有効範囲は,に含まれるどの<SQL スキーマ文>も除いて,とする。

c) <カーソル指定>に含まれるどの<ホストパラメタ名>も,<カーソル名>を指定し,かつ,その<カ

ーソル名

>の有効範囲に含まれる<OPEN 文>を含む<外部呼出し手続>中の<ホストパラメタ宣言>

で定義しなければならない。

注記 462  “13.1 <SQL クライアントモジュール定義>”の構文規則参照。

アクセス規則

なし。 

一般規則

1)  カーソル宣言記述子 CDD が作成される。CDD は,次のことを示す標識を含む。

a)  カーソルの種類が元祖カーソルである。

b)

04

  カーソルの出所が,<カーソル宣言>を含む<SQL クライアントモジュール定義>をもつ SQL ク

ライアントモジュールの標識である。

c)

カーソルの名前が

<カーソル名>である。

d)  カーソルの起源が,<カーソル宣言>に含まれる<カーソル指定>である。

e)

カーソルの宣言特性が,

<カーソル特性>によって決定されるとおりである。

適合性規則

1)  機能 F831“完全カーソル更新”なしでは,適合する SQL 言語は,FOR UPDATE を指定する<更新

可能性句

>を含む<カーソル指定>,及び<カーソルスクロール可能性>を含む<カーソル特性>の両方

を含む

<カーソル宣言>を含んではならない。

14.2  <カーソル特性>

機能

<カーソル特性> (<cursor properties>)  は,カーソルの宣言特性を指定する。

形式

<カーソル特性> ::=

  [  <カーソル感度> ] [ <カーソルスクロール可能性> ] CURSOR

      [ <カーソル保持可能性> ]

      [ <カーソル戻り可能性> ]


706

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

<カーソル感度> ::=

  SENSITIVE

 |

INSENSITIVE

 |

ASENSITIVE

<カーソルスクロール可能性> ::=

  SCROLL

| NO SCROLL

<カーソル保持可能性> ::=

  WITH  HOLD

| WITHOUT HOLD

<カーソル戻り可能性> ::=

  WITH  RETURN

| WITHOUT RETURN

構文規則

1) <カーソル感度>が指定されないならば,ASENSITIVE が暗に想定される。

2) <カーソルスクロール可能性>が指定されないならば,NO SCROLL が暗に想定される。

3) <カーソル保持可能性>が指定されないならば,WITHOUT HOLD が暗に想定される。

4) <カーソル戻り可能性>が指定されないならば,WITHOUT RETURN が暗に想定される。

アクセス規則

なし。 

一般規則

1) <カーソル特性>に関連付けられたカーソル宣言記述子の宣言特性は,次によって与えられる。

a)  宣言感度特性は,陽に指定されるか又は暗に想定される<カーソル感度>とする。

b)  宣言スクロール可能性特性は,

陽に指定されるか又は暗に想定される

<カーソルスクロール可能性

>とする。

c)

宣言保持可能性特性は,陽に指定されるか又は暗に想定される

<カーソル保持可能性>とする。

d)  宣言戻り可能性特性は,陽に指定されるか又は暗に想定される<カーソル戻り可能性>とする。

適合性規則

1)  機能 T231“敏感カーソル”なしでは,適合する SQL 言語は,SENSITIVE を直に含む<カーソル感

>を含んではならない。

2)  機能 F791“鈍感カーソル”なしでは,適合する SQL 言語は,INSENSITIVE を直に含む<カーソル

感度

>を含んではならない。

3)  機能 F791“鈍感カーソル”又は機能 T231“敏感カーソル”なしでは,適合する SQL 言語は,

ASENSITIVE を直に含む<カーソル感度>を含んではならない。

4)  機能 F431“読込み専用スクロール可能カーソル”なしでは,適合する SQL 言語は,<カーソルスク

ロール可能性

>を含んではならない。

5)  機能 T471“結果集合戻り値”なしでは,適合する SQL 言語は,<カーソル戻り可能性>を含んでは

ならない。

6)  機能 T551“既定構文のための省略可能なキーワード”なしでは,適合する SQL 言語は,WITHOUT

HOLD を直に含む<カーソル保持可能性>を含んではならない。


707

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

14.3  <カーソル指定>

機能

<カーソル指定> (<cursor specification>)  は,結果集合を定義する。

形式

<カーソル指定> ::=

  <問合せ式> [ <更新可能性句> ]

<更新可能性句> ::=

  FOR { READ ONLY | UPDATE [ OF <列名リスト> ] }

構文規則

1) <カーソル指定>を CS とする。

2)  CS に直に含まれる<問合せ式>を QE とする。

3)  場合:

a) <カーソル特性>を含む<カーソル宣言>  DC に CS が含まれるならば,その<カーソル特性>を CP

とする。

b)  CS が,<PREPARE 文>によって準備されているか,又は<拡張動的カーソル割当て文>若しくは<

動的

OPEN 文>によって再準備されている<準備可能文>ならば,次による。

i)

CS を準備している<PREPARE 文>,又は CS を再準備している<拡張動的カーソル割当て文>若

しくは

<動的 OPEN 文>を STMT とする。STMT を含む<SQL クライアントモジュール定義>を

SCMD とする。

ii)  場合:

1)  CS が<PREPARE 文>によって準備されているならば,その<PREPARE 文>を PS とする。

2)  そうでなければ,CS を以前に準備した<PREPARE 文>を PS とする。

iii)  PS に含まれる<SQL 文変数>を SSV とする。

iv)  場合:

1)  CS が<PREPARE 文>によって準備されているならば,次による。

場合:

A)  SSV が<文名>で,かつ,SSV と等価な<文名>をもち,SCMD に含まれるただ一つの<動的

カーソル宣言

DDC が存在するならば,DDC に含まれる<カーソル特性>を CP1 とする。

B)  SSV が,LOCAL である<有効範囲選択肢>を指定するか又は暗に想定する<拡張文名>で,

かつ,

LOCAL を指定するか又は暗に想定する<拡張文名>をもち,SCMD に含まれるただ

一つの

<拡張動的カーソル割当て文> ACS が存在するならば,ACS に含まれる<カーソル特

>を CP1 とする。

C)  そうでなければ,長さ 0 の文字列を CP1 とする。

2)  CS が<拡張動的カーソル割当て文> ACS によって再準備されているならば,ACS に含まれる

<カーソル特性>を CP1 とする。

3)  CS が<動的 OPEN 文>によって再準備されているならば,STMT に含まれる<カーソル名>と

等価な

<カーソル名>をもつ<動的カーソル宣言>を DDC とする。DDC に含まれる<カーソル

特性

>を CP1 とする。

v)  PS が<属性変数>を含むならば,その<属性変数>の値を CP2 とする。そうでなければ,長さ 0

の文字列を CP2 とする。


708

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

vi)  場合:

1)  CP2 が<カーソル感度>を含むならば,その<カーソル感度>を SENS とする。

2)  CP1 が<カーソル感度>を含むならば,その<カーソル感度>を SENS とする。

3)  そうでなければ,長さ 0 の文字列を SENS とする。

vii)  場合:

1)  CP2 が<カーソルスクロール可能性>を含むならば,その<カーソルスクロール可能性>を

SCRO とする。

2)  CP1 が<カーソルスクロール可能性>を含むならば,その<カーソルスクロール可能性>を

SCRO とする。

3)  そうでなければ,長さ 0 の文字列を SCRO とする。

viii) 場合:

1)  CP2 が<カーソル保持可能性>を含むならば,その<カーソル保持可能性>を HOLD とする。

2)  CP1 が<カーソル保持可能性>を含むならば,その<カーソル保持可能性>を HOLD とする。

3)  そうでなければ,長さ 0 の文字列を HOLD とする。

ix)  場合:

1)  CP2 が<カーソル戻り可能性>を含むならば,その<カーソル戻り可能性>を RET とする。

2)  CP1 が<カーソル戻り可能性>を含むならば,その<カーソル戻り可能性>を RET とする。

3)  そうでなければ,長さ 0 の文字列を RET とする。

x)  次の<カーソル特性>を CP とする。

SENS SCRO CURSOR HOLD RET

4) <更新可能性句>が指定されないで,かつ,CS が<カーソル宣言>に含まれるか,又は<拡張動的カー

ソル割当て文

>若しくは<動的 OPEN 文>によって再準備されているならば,次による。

場合:

a)  CP が INSENSITIVE 若しくは SCROLL を含むか,QE が<ORDER BY 句>を直に含むか,又は QE

が単純に更新可能な

<問合せ指定>でないならば,READ ONLY の<更新可能性句>が暗に想定され

る。

b)  そうでなければ,<列名リスト>なしの FOR UPDATE の<更新可能性句>が暗に想定される。

注記 463  CS が<PREPARE 文>によって準備されているならば,<更新可能性句>の既定値の設定

は,CS が再準備されるまで延期される。

5) <列名リスト>付き又は<列名リスト>なしの FOR UPDATE の<更新可能性句>が指定されるならば,

CP は,INSENSITIVE を含んではならず,QE は,更新可能でなければならず,かつ,QE は,QE

が末端で基となる表 LUT に関して 1 対 1 対応であるような,一つだけの LUT をもたなければなら

ない。

6)  場合:

a) FOR

UPDATE を指定する<更新可能性句>が指定されるか又は暗に想定されるならば,CS は,更

新可能  (updatable)  とする。

b) FOR

READ

ONLY を指定する<更新可能性句>が指定されるか又は暗に想定されるならば,CS は,

更新可能でない  (not updatable)。

c)

そうでなければ,CS の更新可能性の決定は,CS が再準備されるまで延期される。

7)  CS が更新可能ならば,LUT を参照する<表名>を LUTN とする。LUTN は,有効範囲が<更新可能性


709

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

>である露出した<表名又は問合せ名>とする。

8) <列名リスト>なしの FOR UPDATE の<更新可能性句>が指定されるか又は暗に想定されるならば,

LUT の全ての列の<列名>から成る<列名リスト>が暗に想定される。

9) <列名リスト>付きの FOR UPDATE の<更新可能性句>が指定されるならば,<列名リスト>中の各<

列名

>は,LUT の列の<列名>でなければならない。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 F831“完全カーソル更新”なしでは,適合する SQL 言語は,FOR UPDATE を指定する<更新

可能性句

>,及び<ORDER BY 句>の両方を含む<カーソル指定>を含んではならない。

2)  機能 T111“更新可能な結合,和集合及び列”なしでは,適合する SQL 言語中で,FOR UPDATE が

指定されるならば,QE は,単純に更新可能でなければならない。

14.4  <OPEN 文>

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

機能

<OPEN 文> (<open statement>)  は,元祖カーソルを開く。

形式

<OPEN 文> ::=

  OPEN  <カーソル名>

構文規則

1)

04

 <OPEN 文>中の<カーソル名>を CN とする。CN は,CN と等価な<カーソル名>の有効範囲内に含

まれなければならない。

2)  CN は,元祖カーソルを識別しなければならない。

3)  CN によって識別される元祖カーソルのカーソル宣言記述子を CDD とする。

アクセス規則

1) <カーソル名>によって識別される<カーソル宣言>に単純に含まれる<問合せ式>に対するアクセス

規則を適用する。

一般規則

1)  CDD であるカーソル宣言記述子をもつ,

現行

SQL セション中のカーソル実現値記述子を CR とする。

2)  CR を CURSOR として,

15.1  カーソルを開くことの効果”の一般規則を適用する。

適合性規則

なし。 

14.5  <FETCH 文>

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

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

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

機能

<FETCH 文> (<fetch statement>)  は,元祖カーソルの結果集合の指定された行の上に,元祖カーソルを位


710

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

置付けて,その行から値を取り出す。

形式

10

<FETCH 文> ::=

  FETCH [ [ <取出し方向> ] FROM ] <カーソル名> INTO <取出し相手リスト>

<取出し方向> ::=

  NEXT

 |

PRIOR

 |

FIRST

 |

LAST

| { ABSOLUTE | RELATIVE } <単純値指定>

14

<取出し相手リスト> ::=

  <相手指定> [ { <コンマ> <相手指定> }... ]

構文規則

1) <取出し相手リスト>は,<列参照>を指定する<相手指定>を含んではならない。

2)  <取出し方向>が省略されるならば,NEXT が暗に想定される。

3)

04

10

  <FETCH>文中の<カーソル名>を CN とする。CN は,CN と等価な<カーソル名>の有効範囲内

に含まれなければならない。

4)  CN は,元祖カーソルを識別しなければならない。

5)  CN によって識別される元祖カーソルのカーソル宣言記述子を CDD とする。

6)  CDD の<カーソル指定>によって定義される結果集合を とする。

7)  暗に想定されるか又は陽に指定される<取出し方向>が NEXT でないならば,CDD の宣言スクロー

ル可能性特性は,

SCROLL でなければならない。

8) <単純値指定>を含む<取出し方向>が指定されるならば,その<単純値指定>の宣言型は,位取り 0 の

真数でなければならない。

9)  場合:

a)  <取出し相手リスト>が単一の<相手指定> TS を含み,かつ,の次数が 1 より大きいならば,TS

の宣言型は,行型でなければならない。

場合:

i)

04

 TS が<SQL パラメタ参照>ならば,TS を TARGET として,の行型の任意の値を VALUE 

して,

9.2  格納代入”の構文規則を適用する。

ii)  そうでなければ,TS を TARGET として,の行型の任意の値を VALUE として,

9.1  取出し

代入”の構文規則を適用する。

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

i) <取出し相手リスト>中の<相手指定>の個数 NTS は,の次数と同じでなければならない。<取

出し相手リスト

>中の 番目の<相手指定>,1 ≤ i ≤ NTS は,の 番目の列に対応する。

ii) 1 から NTS までの範囲の に対して,の 番目の列の宣言型の任意の値を CSi とする。

iii)

04

 <SQL パラメタ参照>又は<相手配列要素指定>のいずれかである各<相手指定>  TS1i,1  ≤ i  ≤

NTS に対して,次による。

場合:

1)  TS1i が<単純値指定>を含むならば,宣言型が TS1i の宣言型である一時的な格納場所を


711

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

TARGET として CSi を VALUE として,“9.2  格納代入”の構文規則を適用する。

2)  そうでなければ,TS1i を TARGET として,CSi を VALUE として,“9.2  格納代入”の構文規

則を適用する。

iv)

10

 <ホストパラメタ指定>である各<相手指定> TS2i,1 ≤ i ≤ NTS に対して,TS2i を TARGET 

して,CSi を VALUE として,“9.1  取出し代入”の構文規則を適用する。

v) <埋込み変数指定>である各<相手指定> TS2i,1 ≤ i ≤ NTS に対して,TS2i を TARGET として,

CSi を VALUE として,“9.1  取出し代入”の構文規則を適用する。

アクセス規則

なし。 

一般規則

1)  CDD であるカーソル宣言記述子をもつ,現行 SQL セションのカーソル実現値記述子を CR とする。

2)  CR が開いている状態にないならば,例外条件:カーソル状態が正しくない  (invalid cursor state)  が

引き起こされる。

3)  CR を CURSOR として,<取出し方向>を FETCH  ORIENTATION として,

15.3  カーソルの現在行

の決定”の一般規則を適用する。

4)  終了条件:データなし  (no data)  が引き起こされたならば,この細分箇条の一般規則は,これ以上

適用しない。

5)  場合:

a)  <取出し相手リスト>が単一の<相手指定> TS を含み,かつ,の次数が 1 より大きいならば,現

在行が TS に代入され,かつ,次による。

場合:

i)

04

14

 TS が<SQL パラメタ参照>ならば,TS を TARGET として,現在行を VALUE として,“9.2  格

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

ii)  そうでなければ,TS を TARGET として,現在行を VALUE として,

9.1  取出し代入”の一般

規則を適用する。

b)

10

  そうでなければ,<取出し相手リスト>が二つ以上の<相手指定>を含むならば,現在行からの値

が,

<取出し相手リスト>によって識別されるそれらに対応する相手に代入される。代入は,処理

系依存の順序で行われる。相手を TV とし,CR の現在行中の対応する値を SV で示す。

場合:

i)

04

 TV が<SQL パラメタ参照>又は<相手配列要素指定>のいずれかならば,<取出し相手リスト>

中の各

<相手指定>に対して,<取出し相手リスト>中の 番目の<相手指定>を TVi とし,CR 

現在行中の 番目の対応する値を SVi で示す。 
場合:

1) <相手配列要素指定>が指定されるならば,次による。

場合:

A)  TVi の値がナル値ならば,例外条件:データ例外  (data exception)  -  配列相手にナル値  (null 

value in array target)  が引き起こされる。

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

I)

TVi の最大基数を とする。

II)  TVi の値の基数を とする。


712

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

III)  TVi に直に含まれる<単純値指定>の値を とする。

IV)  TVi の要素型を EDT とする。

V)  場合:

1)  が 0 より大きく,以下ならば,TVi の値は,要素型 EDT 及び基数 をもち,次の

とおりに導出される配列 によって置き換えられる。

a) 1 から I-1 まで,及び I+1 から までの範囲の に対して,中の 番目の要素は,

TVi 中の 番目の要素の値とする。

b)

14

 の 番目の要素を TARGET として,SVi を VALUE として,“9.2  格納代入”の

一般規則を適用する。

2)  が より大きく,以下ならば,TVi の値は,要素型 EDT 及び基数 をもち,次の

とおりに導出される配列 によって置き換えられる。

a) 1 から までの範囲の に対して,中の 番目の要素は,TVi 中の 番目の要素の

値とする。

b)  M+1 から までの範囲の に対して,中の 番目の要素は,ナル値とする。

c)

14

 の 番目の要素を TARGET として,SVi を VALUE として,“9.2  格納代入”の

一般規則を適用する。

3)  そうでなければ,例外条件:データ例外  -  配列要素誤り  (array element error)  が引き

起こされる。

2)

14

  そうでなければ,TVi を TARGET として,SVi を VALUE として,“9.2  格納代入”の一般

規則を適用する。

ii)  TV が<ホストパラメタ名>ならば,TV を TARGET として,SV を VALUE として,

9.1  取出し

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

iii)  TV が<埋込み変数指定>ならば,TV を TARGET として,SV を VALUE として,

9.1  取出し代

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

注記 464 SQL パラメタは,それらのデータ型として行型をもつことができない。

6)  相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とし,CR

は,現在行に位置付けられたままとする。

注記 465  <導出列>の導出中に例外条件が引き起こされるとき,CR が現在行の上に位置付けられ

たままかどうかは,処理系依存である。

適合性規則

1)  機能 F431“読込み専用スクロール可能カーソル”なしでは,適合する SQL 言語中で,<FETCH 文>

は,

<取出し方向>を含んではならない。

14.6  <CLOSE 文>

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

機能

<CLOSE 文> (<close statement>)  は,元祖カーソルを閉じる。

形式

<CLOSE 文> ::=

  CLOSE  <カーソル名>

構文規則


713

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

1)

04

 <CLOSE 文>中の<カーソル名>を CN とする。CN は,CN と等価な<カーソル名>の有効範囲内に

含まれなければならない。

2)  CN は,元祖カーソルを識別しなければならない。

3)  CN によって識別される元祖カーソルのカーソル宣言記述子を CDD とする。

アクセス規則

なし。 

一般規則

1)  CDD であるカーソル宣言記述子をもつ,現行 SQL セションのカーソル実現値記述子を CR とする。

2)  CR を CURSOR として,DESTROY を DISPOSITION として,

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

の一般規則を適用する。

適合性規則

なし。 

14.7  <SELECT 文:単一行>

この細分箇条は,ISO/IEC 9075-4 の“12.5 <SELECT 文:単一行>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10 の“11.14 <SELECT 文:単一行>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“14.2 <SELECT 文:単一行>”によって修正される。 

機能

<SELECT 文:単一行> (select statement: single row>)  は,表の指定された行から値を取り出す。

形式

<SELECT 文:単一行> ::=

  SELECT  [  <集合限定子> ] <選択リスト>

      INTO  <選択相手リスト>

      <表式>

14

<選択相手リスト> ::=

<相手指定> [ { <コンマ> <相手指定> }... ]

構文規則

1) <選択相手リスト>は,<列参照>を指定する<相手指定>を含んではならない。

2) <表式>によって定義される表を とする。

3)  場合:

a)  <選択相手リスト>が単一の<相手指定> TS を含み,かつ,の次数が 1 より大きいならば,TS

の宣言型は,行型でなければならない。

場合:

i)

TS が<SQL パラメタ参照>ならば,TS を TARGET として,の行型の任意の値を VALUE とし

て,“9.2  格納代入”の構文規則を適用する。

ii)  そうでなければ,TS を TARGET として,の行型の任意の値を VALUE として,

9.1  取出し

代入”の構文規則を適用する。

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

i) <選択リスト>中の要素の個数 NOE は,<選択相手リスト>中の要素の個数と同じでなければな

らない。

<選択相手リスト>中の 番目の<相手指定>,1 ≤ i ≤ NOE は,<選択リスト>の 番目の

要素に対応する。


714

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

ii)

04

 1 から NOE までの範囲の に対して,<選択相手リスト>中の,<SQL パラメタ参照>又は<相

手配列要素指定

>のいずれかである 番目の<相手指定>を TS1i とし,<選択相手リスト>中の<

相手指定

>に対応する<選択リスト>の 番目の要素を SLi とする。

場合:

1) <相手配列要素指定>が指定されるならば,

宣言型が TS1i の宣言型である一時的な格納場所を

TARGET として,SLi を VALUE として,“9.2  格納代入”の構文規則を適用する。

2)  そうでなければ,TS1i を TARGET として,<選択リスト>の対応する要素を VALUE として,

9.2  格納代入”の構文規則を適用する。

iii) <ホストパラメタ指定>である各<相手指定> TS2i,1 ≤ i ≤ NOE に対して,TS2i を TARGET とし

て,<選択リスト>の対応する要素を VALUE として,“9.1  取出し代入”の構文規則を適用する。

iv)

10

 <埋込み変数指定>である各<相手指定> TS2i,1 ≤ i ≤ NOE に対して,TS2i を TARGET として,

<選択リスト>の対応する要素を

VALUE として,

9.1  取出し代入”の構文規則を適用する。

4) <SELECT 文:単一行>中に指定される<選択リスト>及び<表式>である<選択リスト>及び<表式>を

もち,かつ,

<SELECT 文:単一行>中に<集合限定子>が指定されるならば,その<集合限定子>を指

定する

<問合せ指定>を とする。は,正しい<問合せ指定>でなければならない。

5)  の結果中の対応する列がナルでないことが分かるならば,<SELECT 文:単一行>の結果中の列は,

ナルでないことが分かる。

6)  が潜在的に非決定的ならば,

<SELECT 文:単一行>は,潜在的に非決定的  (possibly non-deterministic)

とする。

アクセス規則

なし。 

一般規則

1) <問合せ指定> の結果を とする。

2)  場合:

a)  の基数が 1 より大きいならば,例外条件:基数違反  (cardinality violation)  が引き起こされる。<

選択相手リスト>によって識別される相手に

SQL データの値が代入されるかどうかは,処理系依

存とする。

b)  が空ならば,<選択相手リスト>によって識別されるどの相手にも,SQL データの値が代入され

ず,かつ,終了条件:

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

c)

そうでなければ,の行中の値がそれらに対応する相手に代入される。

3)  終了条件:データなし  が引き起こされたならば,

この細分箇条の一般規則は,これ以上適用しない。

4)  場合:

a)  <選択相手リスト>が単一の<相手指定> TS を含み,かつ,表 の次数が 1 より大きいならば,現

在行が TS に代入され,次による。

場合:

i)

14

 TS が<SQL パラメタ参照>ならば,TS を TARGET として,現在行を VALUE として,“9.2  格

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

ii)  そうでなければ,TS を TARGET として,現在行を VALUE として,

9.1  取出し代入”の一般

規則を適用する。

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


715

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

i) <選択リスト>中の要素の個数を NOE とする。

ii)

04

 1 から NOE までの範囲の に対して,<SQL パラメタ参照>又は<相手配列要素指定>のいずれ

かである<選択相手リスト>中の 番目の<相手指定>を TSi とし,の行中の対応する(番目の)
値を SLi で示す。<選択相手リスト>中の相手への値の代入の順序は,処理系依存とする。 
場合:

1)  TSi が<相手配列要素指定>ならば,次による。

場合:

A)  TSi の値がナル値ならば,例外条件:データ例外  (data exception)  -  配列相手にナル値  (null 

value in array target)  が引き起こされる。

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

I)

TSi の最大基数を とする。

II)  TSi の値の基数を とする。

III)  TSi に直に含まれる<単純値指定>の値を とする。

IV)  TSi の要素型を EDT とする。

V)  場合:

1)  が 0 より大きく,以下ならば,TSi の値は,要素型 EDT 及び基数 をもち,次の

とおりに導出される配列 によって置き換えられる。

a) 1 から I-1 まで,及び I+1 から までの範囲の に対して,中の 番目の要素は,

TSi 中の 番目の要素の値とする。

b)

14

 の 番目の要素を TARGET として,SLi を VALUE として,“9.2  格納代入”の

一般規則を適用することによって,SLi が設定される。

2)  が より大きく,以下ならば,TSi の値は,要素型 EDT 及び基数 をもち,次の

とおりに導出される配列 によって置き換えられる。

a) 1 から までの範囲の に対して,中の 番目の要素は,TSi  中の 番目の要素の

値とする。

b)  M+1 から I-1 までの範囲の に対して,中の 番目の要素は,ナル値とする。

c)

14

 の 番目の要素を TARGET として,SLi を VALUE として,“9.2  格納代入”の

一般規則を適用する。

3)  そうでなければ,例外条件:データ例外  -  配列要素誤り  (array element error)  が引き

起こされる。

2)

14

  そうでなければ,TSi を TARGET として,の行中の対応する値 SLi を VALUE として,

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

iii) <ホストパラメタ指定>である各<相手指定>  TS に対して,TS を TARGET として,の行中の

対応する値を VALUE として,“9.1  取出し代入”の一般規則を適用する。<選択相手リスト>中

の相手への値の代入の順序は,処理系依存とする。

iv)

10

  <埋込み変数指定>である各<相手指定>  TS に対して,TS を TARGET として,の行中の対

応する値を VALUE として,“9.1  取出し代入”の一般規則を適用する。<選択相手リスト>中の

相手への値の代入の順序は,処理系依存とする。

5)  相手への値の代入中に例外条件が引き起こされるならば,全ての相手の値は,処理系依存とする。

適合性規則


716

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

なし。 

14.8  <DELETE 文:位置付け>

この細分箇条は,ISO/IEC 9075-4 の“12.6 <DELETE 文:位置付け>”によって修正される。 

この細分箇条は,ISO/IEC 9075-10 の“11.12 <DELETE 文:位置付け>”によって修正される。 

機能

<DELETE 文:位置付け> (<delete statement: positioned>)  は,表の一つの行を削除する。

形式

10

<DELETE 文:位置付け> ::=

  DELETE  FROM  <相手表> [ [ AS ] <相関名> ]

      WHERE  CURRENT  OF  <カーソル名>

<相手表> ::=

  <表名>

| ONLY <左括弧> <表名> <右括弧>

構文規則

1)

04

 <DELETE 文:位置付け>を DSP とし,DSP に直に含まれる<カーソル名>を CN とする。CN は,

CN と等価な<カーソル名>の有効範囲内に含まれなければならない。

2)  CN は,元祖カーソルを識別しなければならない。

3)  CN によって識別される元祖カーソルのカーソル宣言記述子を CDD とする。

4)  CDD のカーソル指定は,更新可能でなければならない。

5)  CN によって識別されるカーソルの単純に基となる表を TU とする。TU が TU の末端で基となる表

LUT に関して 1 対 1 対応であるような,TU の末端で基となる表を LUT とする。

6) <相手表>を TT とし,TT に含まれる<表名>を TN とする。TN は,LUT を識別しなければならない。

7)  LUT は,遷移旧表又は遷移新表であってはならない。

8)  TT が ONLY を直に含み,かつ,LUT が型付き表でないならば,TT は,TN と等価とする。

9)  TT が ONLY を指定しなければならないことは,LUT を参照する TU に含まれる<表参照>が ONLY

を指定することと同値とする。

10)  TN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマは,LUT 

記述子を含んでいなければならない。

11)  場合:

a) <相関名>が指定されるならば,その<相関名>を COR とする。COR は,露出する<相関名>とする。

b)  そうでなければ,TN を COR とする。COR は,露出する<表名又は問合せ名>とする。

注記 466  COR は,有効範囲をもたない。

アクセス規則

1)  場合:

a)  SQL SECURITY INVOKER を指定する<SQL ルーチン指定>を介在しないで,DSP が<SQL スキー

マ文

>に含まれるならば,そのスキーマを所有する認可識別子を とする。に適用可能な権限

は,TN によって識別される表に関する DELETE を含まなければならない。

b)  そうでなければ,現行の権限は,TN によって識別される表に関する DELETE を含まなければな

らない。

一般規則


717

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

1)  CDD であるカーソル宣言記述子をもつ,現行 SQL セションのカーソル実現値記述子を CR とする。

2)  CR を CURSOR として,DSP を STATEMENT として,TT を TARGET として,

15.5  位置付け削除

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

適合性規則

1)  機能 S111“問合せ式中の ONLY”なしでは,適合する SQL 言語は,ONLY を含む<相手表>を含んで

はならない。

14.9  <DELETE 文:探索>

この細分箇条は,ISO/IEC 9075-14 の“14.3 <DELETE 文:探索>”によって修正される。 

機能

<DELETE 文:探索> (<delete statement: searched>)  は,表の複数の行を削除する。

形式

14

<DELETE 文:探索> ::=

  DELETE  FROM  <相手表>

      [  FOR  PORTION  OF  <適用業務時刻期間名>

        FROM  <時点 1> TO <時点 2> ]

      [  [  AS  ]  <相関名> ]

      [  WHERE  <探索条件> ]

構文規則

1) <DELETE 文:探索>を DSS とし,<相手表>を TT とする。

2)  TT に含まれる<表名>を TN とする。TN によって識別される表を とする。

3)  は,更新可能な表又はトリガ削除可能な表でなければならない。

4)  は,遷移旧表又は遷移新表であってはならない。

5) WHERE

<探索条件>が指定されないならば,WHERE TRUE が暗に想定される。

6)  暗に想定されるか又は陽に指定される<探索条件>を DSC とする。DSC は,SQL データを潜在的に

修正する

SQL 呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含んではなら

ない。

場合:

a)  がシステムバージョン表ならば,のシステム時刻期間終了列を ENDCOL とする。ENDCOL

の宣言型によって提供される最高値を ENDVAL とする。次の<探索条件>を TSC とする。

DSC ) AND ( ENDCOL = ENDVAL )

b)  そうでなければ,DSC を TSC とする。

7)  場合:

a)

FOR PORTION OF <適用業務時刻期間名> ATPN が指定されるならば,の表記述子は,ATPN 

等価な期間名をもつ期間記述子を含まなければならない。

i)

の ATPN 期間開始列の名前を BSTARTCOL とする。

の ATPN 期間終了列の名前を BENDCOL

とする。

ii) <時点 1>を FROMVAL とする。FROMVAL は,の列への参照,又は潜在的に非決定的である

か若しくは

SQL データを潜在的に修正する SQL 呼出しルーチンである当該ルーチンをもつ<ル

ーチン呼出し

>を一般に含んではならない。

iii) <時点 2>を TOVAL とする。TOVAL は,の列への参照,又は潜在的に非決定的であるか若し


718

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

くは

SQL データを潜在的に修正する SQL 呼出しルーチンである当該ルーチンをもつ<ルーチン

呼出し

>を一般に含んではならない。

iv)  次の<探索条件>を SC とする。

TSC AND

(FROMVAL < TOVAL) AND

(BENDCOL > FROMVAL) AND

(BSTARTCOL < TOVAL)

b)  そうでなければ,TSC を SC とする。

8)  DSS が<被トリガ SQL 文>に含まれるならば,SC は,パラメタ参照を指定する<値指定>を含んでは

ならない。

9)  場合:

a) <相関名>が指定されるならば,その<相関名>を CN とする。CN は,露出する<相関名>とする。

b)  そうでなければ,TN を CN とする。CN は,露出する<表名又は問合せ名>とする。

10)  CN の有効範囲は,SC とする。

アクセス規則

1)  場合:

a)  SQL SECURITY INVOKER を指定する<SQL ルーチン指定>を介在しないで,DSS が<SQL スキー

マ文

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。

i)

に適用可能な権限は,に関する DELETE を含まなければならない。

ii)  TT が ONLY を直に含むならば,に適用可能な権限は,の少なくとも一つの上位表に関する

SELECT WITH HIERARCHY OPTION を含まなければならない。

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

i)

現行の権限は,に関する DELETE を含まなければならない。

ii)  TT が ONLY を直に含むならば,現行の権限は,の少なくとも一つの上位表に関する SELECT

WITH HIERARCHY OPTION を含まなければならない。

一般規則

1)  現行 SQL トランザクションのトランザクションアクセスモード,又は現行 SQL コネクションでの

現行

SQL トランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,

一時表でないならば,例外条件:

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

込み専用  SQL トランザクション  (read-only SQL-transaction)  が引き起こされる。

2)  この SQL 文が実行されている SQL トランザクション中で現在開いている敏感カーソル CR が存在

するならば,次による。

場合:

a)  後続の SQL トランザクション中に CR が保持されなかったならば,この文の成功実行の結果とし

て生じる変更が CR に対して可視になるか,又は例外条件:カーソル感度例外  (cursor sensitivity 

exception)  -  要求が失敗した  (request failed)  が引き起こされるかのいずれかでなければならな

い。

b)  そうでなければ,この SQL 文の成功実行の結果として生じる変更が CR に対して可視になるかど

うかは,処理系定義とする。

3)  開いている鈍感カーソル CR が存在するならば,この文の成功実行の結果として生じる変更が CR


719

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

に対して不可視であるか,又は例外条件:

カーソル感度例外  -  要求が失敗した  が引き起こされる

かのいずれかでなければならない。

4)  著しくない独立の変更を SQL 処理系が許さなくてもよい範囲は,処理系定義とする。

5)  露出する<相関名>又は<表名又は問合せ名>が行に結び付けられた の各行に対して,SC が実効的

に評価される。

6)  場合:

a)  TT が ONLY を含むならば,SC の結果が真  (True)  で,かつ,の真下位表中に下位行が存在しな

い行が,からの削除のために識別される。

b)  そうでなければ,SC の結果が真  である行が,からの削除のために識別される。

注記 467  削除のために行を識別することは,処理系依存の機構である。

7)  からの削除のために識別される全ての行から成る集合を とする。は,に対する削除操作の

差分旧表  (old delta table of delete operation)  とする。FOR PORTION OF が指定されるならば,

FROMVAL 及び TOVAL は,それぞれ,FROM 値の部分に対して関連するもの  (associated for portion 

of from-value)  及び TO 値の部分に対して関連するもの  (associated for portion of to-value)  として,S

中のどの行にも関連付けられる。

8)  場合:

a)  が実表ならば,次による。

i)

場合:

1)  TT が ONLY を指定するならば,

は,

下位表なしでの削除処理のために識別される  (identified 

for deletion processing without subtables)。

2)  そうでなければ,は,下位表ありでの削除処理のために識別される  (identified for deletion 

processing with subtables)。

注記 468  下位表あり又はなしでの削除処理のために実表を識別することは,処理系依存の機

構である。

ii)  “15.7  実表からの行の削除の効果”の一般規則を適用する。

b)  がビュー表ならば,TT を VIEW NAME として,

15.9  ビュー表からの行の削除の効果”の一般

規則を適用する。

9)  DSS によって削除のためにマーク付けされるいずれかの行が,開いているカーソル CR を識別する

<DELETE 文:位置付け>,<動的 DELETE 文:位置付け>若しくは<準備可能動的 DELETE 文:位置

付け

>によって削除のためにマーク付けされていたか,又は開いているカーソル CR を識別する

<UPDATE 文:位置付け>, <動的 UPDATE 文:位置付け>若しくは<準備可能動的 UPDATE 文:位置

付け

>によって更新されていたならば,終了条件:警告  (warning)  -  カーソル操作衝突  (cursor 

operation conflict)  が引き起こされる。

10)  どの行も,削除のためにマーク付けされないならば,終了条件:データなし  (no data)  が引き起こ

される。

適合性規則

1)  機能 F781“自己参照操作”なしでは,適合する SQL 言語は,次のいずれかが真である<DELETE 文:

探索

>を含んではならない。

a)  の末端で一般に基となる表が,<探索条件>に広く含まれる<問合せ式>の基となる表である。

b) SQL データを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ


720

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

ド呼出し

>,<静的メソッド呼出し>又は<メソッド参照>を,<探索条件>が広く含む。

2)  機能 T111“更新可能な結合,和集合及び列”なしでは,適合する SQL 言語は,単純に更新可能で

ない表を識別する

<相手表>を含む<DELETE 文:探索>を含んではならない。

3)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語中で,<DELETE 文:探索>は,FOR

PORTION OF を含んではならない。

14.10

<TRUNCATE TABLE 文>

機能

<TRUNCATE TABLE 文>(<truncate table statement>)は,どの被トリガ動作も引き起こさないで,実表

の全ての行を削除する。

形式

<TRUNCATE TABLE 文> ::=

  TRUNCATE  TABLE  <相手表> [<識別列再開始選択肢> ]

<識別列再開始選択肢> ::=

  CONTINUE  IDENTITY

| RESTART IDENTITY

構文規則

1) <TRUNCATE

TABLE 文>を TTS とし,TTS に含まれる<相手表>を TT とする。

2)  TT に含まれる<表名>を TN とし,TN によって識別される表を とする。TN の陽に指定されるか

又は暗に想定される

<スキーマ名>によって識別されるスキーマは,の記述子を含んでいなければ

ならない。

3)  は,実表でなければならず,システムバージョン表であってはならない。

4)  は,どの参照制約記述子中の被参照表の名前によっても識別されていてはならない。

5) <識別列再開始選択肢>が指定されないならば,CONTINUE IDENTITY が暗に想定される。

アクセス規則

1)  の<スキーマ名>によって識別されるスキーマを所有する<認可識別子>を とする。

2)  与えられた認可識別子は,を含まなければならない。

一般規則

1)  現行 SQL トランザクションのトランザクションアクセスモード,又は現行 SQL コネクションでの

現行

SQL トランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,

一時表でないならば,例外条件:

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

込み専用  SQL トランザクション  (read-only SQL-transaction)  が引き起こされる。

2)  この SQL 文が実行されている SQL トランザクション中で現在開いている敏感カーソル CR が存在

するならば,次による。

場合:

a)  後続の SQL トランザクション中に CR が保持されなかったならば,この文の成功実行の結果とし

て生じる変更が CR に対して可視になるか,又は例外条件:カーソル感度例外  (cursor sensitivity 

exception)  -  要求が失敗した  (request failed)  が引き起こされるかのいずれかでなければならな

い。

b)  そうでなければ,この SQL 文の成功実行の結果として生じる変更が CR に対して可視になるかど

うかは,処理系定義とする。


721

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

3)  開いている鈍感カーソル CR が存在するならば,この文の成功実行の結果として生じる変更が CR

に対して不可視であるか,又は例外条件:

カーソル感度例外  -  要求が失敗した  が引き起こされる

かのいずれかでなければならない。

4)  著しくない独立の変更を SQL 処理系が許さなくてもよい範囲は,処理系定義とする。

5)  場合:

a)  TT が ONLY を含むならば,の真下位表中に下位行が存在しない行が,から削除される。

b)  そうでなければ,全ての行が から削除される。

6)  TTS によって から削除されるいずれかの行が,開いているカーソル CR を識別する<DELETE 文:

位置付け

>,<動的 DELETE 文:位置付け>若しくは<準備可能動的 DELETE 文:位置付け>によって

削除のためにマーク付けされていたか,又は開いているカーソル CR を識別する<UPDATE 文:位置

付け

>, <動的 UPDATE 文:位置付け>若しくは<準備可能動的 UPDATE 文:位置付け>によって更新

されていたならば,終了条件:

警告  (warning)  -  カーソル操作衝突  (cursor operation conflict)  が引

き起こされる。

7)  どの行も,から削除されないならば,終了条件:データなし  (no data)  が引き起こされる。

8) RESTART

IDENTITY が指定され,かつ,識別列の列記述子 IDCD を の表記述子が含むならば,次

による。

a)  IDCD に含まれる列名を CN とし,IDCD に含まれる開始値を SV とする。

b)  これ以上のアクセス規則の検査なしで,次の<表変更文>が実効的に実行される。

ALTER TABLE TN ALTER COLUMN CN RESTART WITH SV

適合性規則

1)  機能 F200“TRUNCATE TABLE 文”なしでは,適合する SQL 言語は,<TRUNCATE TABLE 文>を含

んではならない。

2)  機能 F202“TRUNCATE TABLE 文:識別列再開始選択肢”なしでは,適合する SQL 言語は,<識別

列再開始選択肢

>を含んではならない。

14.11

<INSERT 文>

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

機能

<INSERT 文> (<insert statement>)  は,表中に新しい行を作成する。

形式

14

<INSERT 文> ::=

  INSERT  INTO  <挿入相手> <挿入列及び挿入元>

<挿入相手> ::=

  <表名>

<挿入列及び挿入元> ::=

  <副問合せ発>

 |

<構成子発>

 |

<既定値発>

<副問合せ発> ::=

  [  <左括弧> <挿入列リスト> <右括弧> ]

      [ <置換句> ]


722

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

      <問合せ式>

<構成子発> ::=

  [  <左括弧> <挿入列リスト> <右括弧> ]

      [ <置換句> ]

      <文脈型付き表値構成子>

<置換句> ::=

  OVERRIDING  USER  VALUE

| OVERRIDING SYSTEM VALUE

<既定値発> ::=

  DEFAULT  VALUES

<挿入列リスト> ::=

  <列名リスト>

構文規則

1) <INSERT 文>を IS とする。

2) <挿入相手>に含まれる<表名>を TN とする。TN によって識別される表を とする。

3)  は,挿入可能な表又はトリガ挿入可能な表でなければならない。

4)  は,遷移旧表又は遷移新表であってはならない。

5)  利用者定義型名 UDTN を含む記述子をもつ の末端で一般に基となる各表に対して,UDTN によっ

て識別される利用者定義型 UDT のデータ型記述子は,UDT が実現値生成可であることを示さなけ

ればならない。

6) DEFAULT

VALUES を指定する<挿入列及び挿入元>は,次の形式の<文脈型付き表値構成子>を指定

する

<挿入列及び挿入元>によって暗に置き換えられる。

VALUES (DEFAULT, DEFAULT, ..., DEFAULT)

ここで,“

DEFAULT”の実現値の個数は,の列の個数と等しい。

7) <挿入列リスト>が省略されるならば,内の順序位置の昇順の並びで,の全ての列を識別する<

挿入列リスト

>が暗に想定される。

8) <挿入列リスト>によって識別される列は,対象列とする。のどの<列名>も,2 回以上識別しては

ならない。

9)  がトリガ挿入可能でないならば,は,更新可能な表でなければならない。各対象列は,の更新

可能な列でなければならない。

注記 469  実表の更新可能な列の概念は,“4.15  表”で定義している。ビュー表の更新可能な列の

概念は,“11.32 <ビュー定義>”で定義している。

10) <文脈型付き表値構成子>  CTTVC が指定されるならば,基となる列が生成列である列を参照し,か

つ,位置で対応する

<列名>を,<挿入列リスト>中にもつ,CTTVC に単純に含まれるどの<文脈型付

き行値構成子要素

>も,<既定値指定>でなければならない。

11)  場合:

a) <挿入列リスト>に含まれる<列名>によって参照される列の基となる列がシステム生成自己参照

列又は導出自己参照列ならば,

<置換句>を指定しなければならない。

b)  ある に対して,<挿入列リスト>中の 番目の順序位置に含まれる<列名> CN によって参照され

る列の基となる列が,値が常時生成されることを示す標識を含む記述子をもつ識別列,システム


723

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

時刻期間開始列又はシステム時刻期間終了列ならば,次による。

場合:

i) <副問合せ発>が指定されるならば,<置換句>を指定しなければならない。

ii) <文脈型付き表値構成子>に単純に含まれるいずれかの<文脈型付き行値式>が<行値の特別な場

>ならば,<置換句>を指定しなければならない。

iii) <文脈型付き表値構成子>に単純に含まれるいずれかの<文脈型付き行値構成子>に単純に含ま

れる 番目の<文脈型付き行値構成子要素>が<既定値指定>でないならば,<置換句>を指定しな

ければならない。

注記 470  先行する部分規則は,全ての可能性を含むわけではない。残りの可能性は,どの識別

列に対しても,又はシステム時刻期間開始列若しくはシステム時刻期間終了列に対し

て,

<既定値指定>が指定される場合で,その場合には,<置換句>が指定されるかどう

かは,重要ではない。

c)

ある に対して,<挿入列リスト>中の 番目の順序位置に含まれる<列名> CN によって参照され

る列の基となる列が,値が既定生成されることを示す標識を含む記述子をもつ識別列ならば,

<

置換句

>が指定されるとき,<置換句>は,OVERRIDING USER VALUE を指定しなければならない。

d)  ある に対して,<挿入列リスト>中の 番目の順序位置に含まれる<列名> CN によって参照され

る列の基となる列が,値が常時生成されることを示す標識を含む記述子をもつシステム時刻期間

開始列又はシステム時刻期間終了列で,かつ,

<置換句>が指定されるならば,<置換句>は,

OVERRIDING USER VALUE を指定しなければならない。

e)

そうでなければ,

<置換句>を指定してはならない。

12) <文脈型付き表値構成子>  CVC が指定されるならば,CVC に含まれる全ての<文脈型付き行値式>

CRVS 中に指定される全ての<文脈型付き値指定> CVS のデータ型は,陽に指定されるか又は暗に想

定される

<挿入列リスト>中の,位置で対応する列に対する列記述子中で示されるデータ型 DT とす

る。CVS が ARRAY を指定する<空指定>ならば,DT は,配列型でなければならない。CVS 

MULTISET を指定する<空指定>ならば,DT は,マルチ集合型でなければならない。

13) <問合せ式>又は<文脈型付き表値構成子>によって指定される表を QT とする。QT の次数は,<挿入

列リスト

>中の<列名>の個数と等しくなければならない。<挿入列リスト>中の 番目の<列名>によ

って識別される表 の列は,QT の 番目の列に対応する。

14)  の各列に対して,の列を TARGET として,QT の対応する列を VALUE として,

9.2  格納代入”

の構文規則を適用する。

15)  IS が<被トリガ SQL 文>に含まれるならば,<挿入列及び挿入元>は,パラメタ参照を指定する<値指

>を含んではならない。

16) <副問合せ発>に単純に含まれる<問合せ式>は,<表値構成子>であってはならない。

注記 471  この規則は,構文上の曖昧さを取り除く。そうでなければ,“VALUES (1)”が次のどち

らとしても解析されることがあり得る。

<挿入列及び挿入元> ::=

    <副問合せ発> ::=

    <問合せ式> ::=

    <表値構成子> ::=

    VALUES  (1)


724

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

又は

<挿入列及び挿入元> ::=

    <構成子発> ::=

    <文脈型付き表値構成子> ::=

    VALUES  (1)

アクセス規則

1)  場合:

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,IS が<SQL スキーマ

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。に関して に適用

可能な権限は,各対象列に関する

INSERT を含まなければならない。

b)  そうでなければ,に関する現行の権限は,各対象列に関する INSERT を含まなければならない。

一般規則

1)  現行 SQL トランザクションのトランザクションアクセスモード,又は現行 SQL コネクションでの

現行

SQL トランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,

一時表でないならば,例外条件:

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

込み専用 SQL トランザクション  (read-only SQL-transaction)  が引き起こされる。

2)  この SQL 文が実行されている SQL トランザクション中で,現在開いている敏感カーソル CR が存

在するならば,次による。

場合:

a)  後続の SQL トランザクションに CR が保持されなかったならば,この文の成功実行の結果として

生じる変更は,CR に対して可視になるか,又は例外条件:カーソル感度例外  (cursor sensitivity 

exception)  -  要求が失敗した  (request failed)  が引き起こされるかのいずれかでなければならな

い。

b)  そうでなければ,この SQL 文の成功実行の結果として生じる変更が,CR に対して可視になるか

どうかは,処理系定義とする。

3)  開いている鈍感カーソル CR が存在するならば,この文の成功実行の結果として生じる変更が CR

に対して不可視であるか,又は例外条件:

カーソル感度例外  -  要求が失敗した  が引き起こされる

かのいずれかでなければならない。

4)  著しくない独立の変更を SQL 処理系が許さなくてもよい範囲は,処理系定義とする。

5)  QT は,にいずれかの行が挿入される前に実効的に評価される。

6)  QT を評価した結果を とする。

7)  の各行 に対して,次による。

a)  “11.5 <DEFAULT 句>”の一般規則で規定するとおりに,各列の値がその列の既定値である 

候補行が実効的に作成される。候補行は,の全ての列から成る。

b)  候補行中の各対象列に対して,<挿入列リスト>中の 番目の<列名>によって識別される対象列を

Ci とし,の 番目の値を SVi とする。

c)

Ci が,代入されないとしてマーク付けされていなくて,かつ,Ci の基となる列が自己参照列では
ないような,どの Ci に対しても,Ci を TARGET として,SVi を VALUE として,“9.2  格納代入”
の一般規則を適用する。Ci は,もはや代入されないとしてマーク付けされない。

d)  基となる列が自己参照列である列 RC を がもつならば,次による。


725

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

場合:

i)

RC がシステム生成自己参照列ならば,RC の値は,候補行の REF 値によって実効的に置き換え

られる。

ii)  RC が導出自己参照列ならば,RC の値は,処理系依存の方法で,RC の参照型の導出表現の属

性のリストに対応する候補行中の列から導出される値によって,実効的に置き換えられる。

e)

次の条件のうちの一つが真であるどの Ci に対しても,Ci を TARGET として,SVi を VALUE とし
て,“9.2  格納代入”の一般規則を適用する。

i)

Ci の基となる列が利用者生成自己参照列である。

ii)  Ci の基となる列が自己参照列で,かつ,OVERRIDING SYSTEM VALUE が指定されている。

iii)  Ci の基となる列が識別列で,の 番目の列が<既定値指定>から導出されず,かつ,

OVERRIDING SYSTEM VALUE が指定されている。

iv)  Ci の基となる列が,値が既定生成されることを示す標識を記述子が含む識別列で,かつ,

OVERRIDING USER VALUE も指定されないし,番目の列が<既定値指定>から導出されること

もない。

Ci は,もはや代入されないとしてマーク付けされない。

注記 472  OVERRIDING USER VALUE が指定されるならば,先行する規則の結果として,候補行

の幾つかの列は,代入されないとしてマーク付けされ続けるかもしれない。このような

列の値は,

<挿入列及び挿入元>中に指定された利用者値の置換の効果をもつ“15.10  実

表への表の挿入の効果”の一般規則によって最終的に決定される。

注記 473  候補行中で許されるデータ値が,WITH CHECK OPTION 制約によって制約されてもよい。

WITH CHECK OPTION 制約の効果は,“15.12  ビュー表への表の挿入の効果”の一般規

則で定義している。

8)  候補行から成る表を とする。

場合:

a)  が実表ならば,次による。

i)

は,挿入元の表 の挿入のために識別される  (identified for insertion of source table S)。

注記 474  挿入元の表の挿入のために実表を識別することは,処理系依存の操作である。

ii)  “15.10  実表への表の挿入の効果”の一般規則を適用する。

b)  がビュー表ならば,を SOURCE として,を TARGET として,

15.12  ビュー表への表の挿

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

9)  が空ならば,終了条件:データなし  (no data)  が引き起こされる。

適合性規則

1)  機能 F781“自己参照操作”なしでは,適合する SQL 言語は,次のいずれかが真である<INSERT 文>

を含んではならない。

a)  列参照の修飾する表の表名を除いて,の末端で一般に基となる表の<表名>が<副問合せ発>に広

く含まれる。

b) SQL データを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出し>,<メソッ

ド呼出し

>,<静的メソッド呼出し>又は<メソッド参照>を,<副問合せ発>が広く含む。

2)  機能 F222“INSERT 文:DEFAULT VALUES 句”なしでは,適合する SQL 言語は,<既定値発>を含

んではならない。


726

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

3)  機能 S024“拡張構造型”なしでは,適合する SQL 言語中で,陽に指定されるか又は暗に想定され

<挿入列リスト>中で識別される各列 に対して,の宣言型が構造型 TY ならば,<問合せ式>又

<文脈型付き表値構成子>の対応する列の宣言型は,TY でなければならない。

4)  機能 S043“拡張参照型”なしでは,適合する SQL 言語は,<置換句>を含んではならない。

5)  機能 T111“更新可能な結合,和集合及び列”なしでは,適合する SQL 言語は,単純に更新可能で

ない表を識別する

<挿入相手>を含む<INSERT 文>を含んではならない。

14.12

<MERGE 文>

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

機能

<MERGE 文> (<merge statement>)  は,条件付きで,表の複数の行の更新,表の複数の行の削除,及び/

又は表への複数の新しい行の挿入を行う。

形式

14

<MERGE 文> ::=

  MERGE  INTO  <相手表> [ [ AS ] <併合相関名> ]

      USING  <表参照>

      ON <探索条件> <併合操作指定>

<併合相関名> ::=

  <相関名>

<併合操作指定> ::=

  <併合 WHEN 句>...

<併合 WHEN 句> ::=

  <併合 WHEN MATCHED 句>

 |

<併合 WHEN NOT MATCHED 句>

<併合 WHEN MATCHED 句> ::=

  WHEN MATCHED [ AND <探索条件> ]

      THEN  <併合更新又は削除指定>

<併合更新又は削除指定> ::=

  <併合更新指定>

 |

<併合削除指定>

<併合 WHEN NOT MATCHED 句> ::=

  WHEN NOT MATCHED [ AND <探索条件> ]

      THEN  <併合挿入指定>

<併合更新指定> ::=

  UPDATE  SET  <設定句リスト>

<併合削除指定> ::=

  DELETE

<併合挿入指定> ::=

  INSERT  [  <左括弧> <挿入列リスト> <右括弧> ]

      [ <置換句> ]

      VALUES  <併合挿入値リスト>


727

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

<併合挿入値リスト> ::=

  <左括弧>

      <併合挿入値要素> [ { <コンマ> <併合挿入値要素> }... ]

      <右括弧>

<併合挿入値要素> ::=

  <値式>

 |

<文脈型付き値指定>

構文規則

1) <相手表> TT に含まれる<表名>を TN とし,TN によって識別される表を とする。

2) <併合 WHEN NOT MATCHED 句>が指定されるならば,は,挿入可能か又はトリガ挿入可能でな

ければならない。

3) <併合更新指定>が指定されるならば,は,更新可能か又はトリガ更新可能でなければならない。

4) <併合削除指定>が指定されるならば,は,更新可能か又はトリガ削除可能でなければならない。

5)  は,遷移旧表又は遷移新表であってはならない。

6)  利用者定義型名 UDTN を記述子が含む の末端で一般に基となる各表に対して,UDTN によって識

別される利用者定義型 UDT のデータ型記述子は,UDT が実現値生成可であることを示さなければ

ならない。

7)  がビューならば,<相手表>は,次の ONLY 指定によって実効的に置き換えられる。

ONLY ( TN )

8)  場合:

a) <併合相関名>が指定されるならば,<併合相関名>に含まれる<相関名>を CN とする。CN は,露

出する

<相関名>とする。

b)  そうでなければ,<相手表>に含まれる<表名>を CN とする。CN は,露出する<表名又は問合せ名

>とする。

9)  CN の有効範囲は,<MERGE 文>に直に含まれる<探索条件>,<併合 WHEN MATCHED 句>に直に含

まれる

<探索条件>,<併合 WHEN NOT MATCHED 句>に直に含まれる<探索条件>,及び<設定句リ

スト

>とする。

10) <MERGE 文>に直に含まれる<表参照>を TR とする。TR は,<結合表>を直接含んではならない。

11)  TR 中に露出する<相関名>又は<表名又は問合せ名>は,CN と等価であってはならない。

12) <挿入列リスト>が省略されるならば,内の順序位置の昇順の並びで,の全ての列を識別する<

挿入列リスト

>が暗に想定される。

13)  場合:

a) <挿入列リスト>に含まれる<列名>によって参照される列の基となる列が,システム生成自己参照

列又は導出自己参照列ならば,

<置換句>を指定しなければならない。

b)  ある に対して,<挿入列リスト>中の 番目の順序位置に含まれる<列名>によって参照される列

の基となる列が,値が常時生成されることを示す標識を記述子が含む識別列,システム時刻期間

開始列又はシステム時刻期間終了列で,かつ,

<併合挿入値リスト>に単純に含まれるどの<併合

挿入値要素

>に単純に含まれる 番目の<文脈型付き値指定>も,<既定値指定>でないならば,<

置換句

>を指定しなければならない。

c)

ある に対して,<挿入列リスト>中の 番目の順序位置に含まれる<列名>によって参照される列


728

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

の基となる列が,値が既定生成されることを示す標識を記述子が含む識別列で,かつ,

<置換句>

が指定されるならば,

<置換句>は,OVERRIDING USER VALUE を指定しなければならない。

d)  ある に対して,<挿入列リスト>中の 番目の順序位置に含まれる<列名>によって参照される列

の基となる列が,値が常時生成されることを示す標識を記述子が含むシステム時刻期間開始列又

はシステム時刻期間終了列で,かつ,

<置換句>が指定されるならば,<置換句>は,OVERRIDING

USER VALUE を指定しなければならない。

e)

そうでなければ,

<置換句>を指定してはならない。

14) <MERGE 文>に直に含まれる<探索条件>,

<併合 WHEN MATCHED 句>に直に含まれる<探索条件>,

及び

<併合 WHEN NOT MATCHED 句>に直に含まれる<探索条件>は,SQL データを潜在的に修正す

SQL 呼出しルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含んではならない。

15) <設定句リスト>中の<対象列>によって識別される各列は,

更新対象列  (update object column)  とする。

暗に想定されるか又は陽に指定される

<挿入列リスト>中の<列名>によって識別される各列は,挿入

対象列  (insert object column)  とする。各更新対象列及び各挿入対象列は,対象列  (object column)  と

する。

16) <併合 WHEN NOT MATCHED 句>  が指定され,かつ,がトリガ挿入可能でないか,又は<併合

WHEN MATCHED 句>が指定され,かつ,がトリガ更新可能でないならば,どの対象列も,

更新可能な列を識別しなければならない。

注記 475  実表の更新可能な列の概念は,“4.15  表”で定義している。ビュー表の更新可能な列の

概念は,“11.32 <ビュー定義>”で定義している。

17)  のどの<列名>も,<挿入列リスト>中で 2 回以上識別してはならない。

18)  各<併合 WHEN NOT MATCHED 句>に対して,次による。

a) <併合挿入値リスト>に含まれる<併合挿入値要素>の個数を NI とする。それらの<併合挿入値要素

>を EXP1EXP2,...,EXPNI とする。

b) <挿入列リスト>中の<列名>の個数は,NI と等しくなければならない。

c) <併合挿入値リスト>中のどの<文脈型付き値指定>  CVS の宣言型も,陽に指定されるか又は暗に

想定される

<挿入列リスト>中の,位置で対応する列に対する列記述子中で示されるデータ型 DT

とする。CVS が,ARRAY を指定する<空指定>ならば,DT は,配列型でなければならない。CVS

が,

MULTISET を指定する<空指定>ならば,DT は,マルチ集合型でなければならない。

d)  基となる列が生成列である列を参照し,かつ,位置で対応する<列名>を,<挿入列リスト>中にも

つどの

<併合挿入値要素>も,<既定値指定>でなければならない。

e) 1

≤ i ≤ NI に対して,EXPi を VALUE として,<挿入列リスト>中の 番目の<列名>によって識別さ

れる表 の列を TARGET として,“9.2  格納代入”の構文規則を適用する

19) <MERGE 文>に直に含まれる<探索条件>を DSC とする。

場合:

a)  がシステムバージョン表ならば,のシステム時刻期間終了列を ENDCOL とする。ENDCOL

の宣言型によって提供される最高値を ENDVAL とする。次の<探索条件>を SC1 とする。

DSC ) AND ( ENDCOL = ENDVAL )

b)  そうでなければ,DSC を SC1 とする。

アクセス規則

1)  場合:


729

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

a) SQL

SECURITY

INVOKER を指定する<SQL ルーチン指定>を介在しないで,<MERGE 文>が<SQL

スキーマ文

>に含まれるならば,そのスキーマを所有する<認可識別子>を とする。

i) <併合更新指定>が指定されるならば,に適用可能な権限は,各更新対象列に関する UPDATE

を含まなければならない。

ii) <併合削除指定>が指定されるならば,に適用可能な権限は,に関する DELETE を含まなけ

ればならない。

iii) <併合挿入指定>が指定されるならば,に適用可能な権限は,各挿入対象列に関する INSERT

を含まなければならない。

iv)  TT が ONLY を直に含むならば,に適用可能な権限は,の少なくとも一つの上位表に関する

SELECT WITH HIERARCHY OPTION を含まなければならない。

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

i) <併合更新指定>が指定されるならば,現行の権限は,各更新対象列に関する UPDATE を含まな

ければならない。

ii) <併合削除指定>が指定されるならば,に適用可能な権限は,に関する DELETE を含まなけ

ればならない。

iii) <併合挿入指定>が指定されるならば,現行の権限は,各挿入対象列に関する INSERT を含まな

ければならない。

iv)  TT が ONLY を直に含むならば,現行の権限は,の少なくとも一つの上位表に関する SELECT

WITH HIERARCHY OPTION を含まなければならない。

一般規則

1)  現行 SQL トランザクションのトランザクションアクセスモード,又は現行 SQL コネクションでの

現行

SQL トランザクションの分岐のトランザクションアクセスモードが読込み専用で,かつ,

一時表でないならば,例外条件:

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

込み専用 SQL トランザクション  (read-only SQL-transaction)  が引き起こされる。

2)  この SQL 文が実行されている SQL トランザクション中で,現在開いている敏感カーソル CR が存

在するならば,次による。

場合:

a)  後続の SQL トランザクションに CR が保持されなかったならば,この文の成功実行の結果として

生じる変更は,CR に対して可視になるか,又は例外条件:カーソル感度例外  (cursor sensitivity 

exception)  -  要求が失敗した  (request failed)  が引き起こされるかのいずれかでなければならな

い。

b)  そうでなければ,この SQL 文の成功実行の結果として生じる変更が,CR に対して可視になるか

どうかは,処理系定義とする。

3)  開いている鈍感カーソル CR が存在するならば,この文の成功実行の結果として生じる変更が CR

に対して不可視であるか,又は例外条件:

カーソル感度例外  -  要求が失敗した  が引き起こされる

かのいずれかでなければならない。

4)  著しくない独立の変更を SQL 処理系が許さなくてもよい範囲は,処理系定義とする。

5) <表参照>によって指定される表を QT とする。QT は,中のいずれかの行が更新されるか,削除さ

れるか又は挿入される前に実効的に評価される。QT を評価した結果を とする。

6) <併合操作指定>中に指定される順序で,各<併合 WHEN 句>に対して,次による。


730

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

場合:

a) <併合 WHEN MATCHED 句> MWMC が指定されるならば,次による。

i)

の各行 R1 に対して,次による。

1)  TT の露出する<表名>が結び付けられた R1,及び<表参照>の露出する<相関名>又は<表名又

は問合せ名

>が行に結び付けられた の各行に対して,SC1,及びあるならば,MWMC に直

に含まれる

<探索条件> SC2 が実効的に評価される。SC1 及び SC2 は,両方とも,のいずれ

かの行が更新されるか又は削除される前に,かつ,のいずれかの行の更新又は削除によっ

て引き起こされるどの

<被トリガ動作>の呼出しにも先立って,にいずれかの行が挿入され

る前に,かつ,のいずれかの行の挿入によって引き起こされるどの<被トリガ動作>の呼出

しにも先立って,実効的に評価される。

場合:

A)  TT が ONLY を含むならば,R1 が の真下位表中に下位行をもたないで,のいずれかの

行 R2 に対して SC1 及び SC2 の両方の結果が真  (True)  で,かつ,R1 が<併合操作指定>中

で MWMC に先行する他のどの<併合 WHEN MATCHED 句>によって識別される当該行でも

ないとき,R1 は,当該行とする。R2 は,一致行とする。

B)  そうでなければ,

のいずれかの行 R2 に対して SC1 及び SC2 の両方の結果が真  で,

かつ,

R1 が<併合操作指定>中で MWMC に先行する他のどの<併合 WHEN MATCHED 句>によっ

て識別される当該行でもないとき,R1 は,当該行とする。R2 は,一致行とする。

2)  R1 が当該行ならば,次による。

A)  R1 に対する 中の一致行の個数を とする。

B)  が 1 より大きいならば,例外条件:基数違反  (cardinality violation)  が引き起こされる。

C) <併合更新指定>が指定されるならば,次による。

I)

<設定句>の<更新元>は,のいずれかの行が更新される前に,かつ,のいずれかの

行の更新によって引き起こされるどの

<被トリガ動作>の呼出しにも先立って,実効的に

評価される。その結果の値は,更新値とする。

II)  当該行を写して,

14.15  <設定句リスト>”の一般規則を適用することによって,各<設

定句

>によって指定されるとおりにそれを更新することによって,新しい候補行が構成さ

れる。

ii)  全ての当該行から成る集合を とする。は,に対する併合操作の差分旧表  (old delta table of 

merge operation)  とする。

iii)  が実表ならば,各当該行も,対象行とする。そうでなければ,対象行は,当該行が導出され

る の末端で一般に基となる表の行とする。

注記 476  対象行中で許されるデータ値が,WITH CHECK OPTION 制約によって制約されても

よい。

WITH CHECK OPTION 制約の効果は,“15.15  ビュー表中の行の置換えの効

果”の一般規則で定義している。

iv)  対象行の集合中のいずれかの行が,開いているカーソル CR を識別する<DELETE 文:位置付け

>,<動的 DELETE 文:位置付け>若しくは<準備可能動的 DELETE 文:位置付け>によって削除

のためにマーク付けされていたか,又は開いているカーソル CR を識別する<UPDATE 文:位置

付け

>,<動的 UPDATE 文:位置付け>若しくは<準備可能動的 UPDATE 文:位置付け>によって

更新されていたならば,終了条件:

警告  (warning)  -  カーソル操作衝突  (cursor operation 


731

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

conflict)  が引き起こされる。

v) <併合更新指定>が指定されるならば,次による。

1) <設定句リスト>に含まれる<対象列>によって識別される の列を CL とする。

2)  各当該行 SR は,それに対応する新しい候補行 CNR による 中での置換えのために識別され

る。

(SRCNR)  対の集合は,に対する置換え集合  (replacement set)  とする。

注記 477  置換えのために行を識別すること,置換行を識別される行に関連付けること,及

び置換え集合を表に関連付けることは,処理系依存の操作である。

3)  場合:

A)  が実表ならば,次による。

I)

場合:

1)  TT が ONLY を指定するならば,は,対象列 CL に関して下位表なしでの置換え処理

のために識別される  (identified for replacement processing without subtables)。

2)  そうでなければ,は,対象列 CL に関して下位表ありでの置換え処理のために識別

される  (identified for replacement processing with subtables)。

注記 478  下位表あり又はなしでの置換え処理のために実表を識別することは,処理