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

385

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

c)

の宣言型の要素型を TT とし,の宣言型の要素型を VT とし,宣言型が TT である一時的な格

納場所を T1 とし,宣言型が VT である任意の式を V1 とする。T1 を TARGET として,V1 を VALUE

として,この細分箇条の構文規則を適用する。

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,TARGET を とし,VALUE を とする。

2)  の宣言型が の宣言型に代入可能でないならば,この細分箇条の残りの一般規則に対しては,式

UDCF(V)  を評価した結果によって,が実効的に置き換えられる。

3)  がナル値で,かつ,がホストパラメタならば,次による。

場合:

a)  に対して,標識パラメタが指定されるならば,その標識パラメタには,-1 が設定される。

b)  に対して,標識パラメタが指定されないならば,例外条件:データ例外  (data exception)  -  ナ

ル値,標識パラメタなし  (null value, no indicator parameter)  が引き起こされる。

4)  がナル値で,かつ,がホスト変数ならば,次による。

場合:

a)  に対して,標識変数が指定されるならば,その標識変数には,-1 が設定される。

b)  に対して,標識変数が指定されないならば,例外条件:データ例外  -  ナル値,標識パラメタ

なし  が引き起こされる。

5)  がナル値でなく,がホストパラメタで,かつ,が標識パラメタをもつならば,次による。

場合:

a)  の宣言型が文字列又は 2 進オクテット列で,かつ,それぞれ,の文字単位又はオクテット単

位での長さ が の文字単位又はオクテット単位での長さを超えるならば,標識パラメタには,

が設定される。標識パラメタに格納できる最大値を が超えるならば,例外条件:データ例外

  標識あふれ  (indicator overflow)  が引き起こされる。

b)  そうでなければ,標識パラメタには,0 が設定される。

6)  がナル値でなく,がホスト変数で,かつ,が標識変数をもつならば,次による。

場合:

a)  の宣言型が文字列又は 2 進オクテット列で,かつ,それぞれ,の文字単位又はオクテット単

位での長さ が の文字単位又はオクテット単位での長さを超えるならば,標識変数には,

設定される。標識変数に格納できる最大値を が超えるならば,例外条件:データ例外  -  標識

あふれ  が引き起こされる。

b)  そうでなければ,標識変数には,0 が設定される。

7)

09

14

 がナル値でないならば,次による。

場合:

a)  の宣言型が,文字単位での長さ の固定長文字列で,かつ,の文字単位での長さが と等し

いならば,には,の値が設定される。

b)  の宣言型が,文字単位での長さ の固定長文字列で,かつ,の文字単位での長さが を超え

るならば,には,の最初の 個の文字が設定され,終了条件:警告  (warning)  -  データ列デ

ータ,右切捨て  (string data, right truncation)  が引き起こされる。


386

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

c)

の宣言型が,文字単位での長さ の固定長文字列で,かつ,の文字単位での長さ が 未満

ならば,の最初の 個の文字には,が設定され,の最後の L – 個の文字には,<空白>が

設定される。

d)  の宣言型が可変長文字列で,かつ,の文字単位での長さ が の文字単位での最大長を超え

ないならば,には,の値が設定され,の文字単位の長さには,が設定される。

e)

の宣言型が可変長文字列で,かつ,の文字単位での長さが の文字単位での最大長 を超え

るならば,には,の最初の 個の文字が設定され,の文字単位での長さは,になり,終

了条件:

警告  -  データ列データ,右切捨て  が引き起こされる。

f)

の宣言型が文字長大オブジェクト型で,かつ,の文字単位での長さ が の文字単位での最

大長を超えないならば,には,の値が設定され,の文字単位での長さには,が設定され

る。

g)  の宣言型が文字長大オブジェクト型で,かつ,の文字単位での長さが の文字単位での最大

長 を超えるならば,には,の最初の 個の文字が設定され,の文字単位での長さは,L

になり,終了条件:

警告  -  データ列データ,右切捨て  が引き起こされる。

h)  の宣言型が,オクテット単位での長さ の固定長 2 進オクテット列で,かつ,のオクテット

単位での長さが と等しいならば,には,の値が設定される。

i)

の宣言型が,オクテット単位での長さ の固定長 2 進オクテット列で,かつ,のオクテット

単位での長さが を超えるならば,には,の最初の 個のオクテットが設定され,終了条件:

警告  -  データ列データ,右切捨て  が引き起こされる。

j)

の宣言型が,オクテット単位での長さ の固定長 2 進オクテット列で,かつ,のオクテット

単位での長さ が 未満ならば,の最初の 個のオクテットには,が設定され,の最後の

L-個のオクテットには,X’00’  が設定される。

k)  の宣言型が可変長 2 進オクテット列で,かつ,のオクテット単位での長さ が のオクテッ

ト単位での最大長を超えないならば,には,の値が設定され,のオクテット単位での長さ

には,が設定される。

l)

の宣言型が可変長 2 進オクテット列で,かつ,のオクテット単位での長さが のオクテット

単位での最大長 を超えるならば,には,の最初の 個のオクテットが設定され,のオク

テット単位での長さは,になり,終了条件:警告  -  データ列データ,右切捨て  が引き起こさ

れる。

m)  の宣言型が長大オブジェクト 2 進オクテット列で,かつ,のオクテット単位での長さ が T

のオクテット単位での最大長を超えないならば,には,の値が設定され,のオクテット単

位での長さには,が設定される。

n)  の宣言型が長大オブジェクト 2 進オクテット列で,かつ,のオクテット単位での長さが 

オクテット単位での最大長 を超えるならば,には,の最初の 個のオクテットが設定され,

のオクテット単位での長さは,になり,終了条件:警告  -  データ列データ,右切捨て  が引

き起こされる。

o)  の宣言型が数ならば,次による。

場合:

i)

が の宣言型の要素ならば,には,の値が設定される。

ii)  の宣言型の要素を,丸め又は切捨てによって から得ることができるならば,には,その


387

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

値が設定される。の宣言型が真数ならば,近似が丸めによって得られるか,又は切捨てによ

って得られるかは,処理系定義とする。

iii)  そうでなければ,例外条件:データ例外  -  数値範囲外  (numeric value out of range)  が引き起こ

される。

p)  の宣言型がブールならば,には,の値が設定される。

q)  の宣言型 DT が日時ならば,次による。

i)

DT,及び の宣言型のうちの一つだけが時刻帯付き日時ならば,は,次の CAST 指定の結果

によって,実効的に置き換えられる。

CAST ( V AS DT )

ii)  場合:

1)  が の宣言型の要素ならば,には,の値が設定される。

2)  の宣言型の要素を,丸め又は切捨てによって から得ることができるならば,には,そ

の値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,処

理系定義とする。

3)  そうでなければ,例外条件:データ例外  -  日時フィールドあふれ  (datetime field overflow)  が

引き起こされる。

r)

の宣言型が時間隔ならば,次による。

場合:

i)

が の宣言型の要素ならば,には,の値が設定される。

ii)  の宣言型の要素を,丸め又は切捨てによって から得ることができるならば,には,その

値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,処理系

定義とする。

iii)  そうでなければ,例外条件:データ例外  -  時間隔フィールドあふれ  (interval field overflow)  が

引き起こされる。

s)

の宣言型が行型ならば,次による。

i)

の次数を とする。

ii) 1 から までの範囲の に対して,

の 番目の要素,

及び の 番目の要素を,それぞれ,TARGET

及び VALUE として,この細分箇条の一般規則を適用する。

t)

の宣言型が参照型ならば,には,の値が設定される。

u)  の宣言型が配列型,又は元型が配列型の個別型ならば,次による。

場合:

i)

の最大基数 が の基数 と等しいならば,

の要素を TARGET として,

の要素を VALUE

として,要素の各対に,この細分箇条の一般規則を適用することによって,の要素には,V

の対応する要素の値が設定される。

ii)  の最大基数 が の基数 未満ならば,の要素を TARGET として,の要素を VALUE 

して,要素の各対に,この細分箇条の一般規則を適用することによって,の要素には,

最初の 個の対応する要素の値が設定され,終了条件:警告  -  配列データ,右切捨て  (array 

data, right truncation)  が引き起こされる。

iii)  の最大基数 が の基数 を超えるならば,

の要素を TARGET として,

の要素を VALUE

として,要素の各対に,この細分箇条の一般規則を適用することによって,の最初の 個の


388

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

要素には,の対応する要素の値が設定される。の値の基数は,とする。

注記 278  の最大基数 は,変更されない。

v)  の宣言型がマルチ集合型,又は元型がマルチ集合型の個別型ならば,には,の値が設定さ

れる。

w)  の宣言型が利用者定義型ならば,には,の値が設定される。

適合性規則

なし。 

9.2

格納代入

この細分箇条は,ISO/IEC 9075-9 の“9.2  格納代入”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.2  格納代入”によって修正される。 

細分箇条署名

“格納代入” [構文規則] (

パラメタ: “TARGET”,

パラメタ: “VALUE”

)

“格納代入” [一般規則] (

パラメタ: “TARGET”,

パラメタ: “VALUE”

)

機能

格納代入

 (store assignment) は,SQL データの格納又は SQL パラメタの値の設定のように,標識パラメ

タ又は標識変数の利用なしで代入相手がナルを許す代入の規則を規定する。

構文規則

1)  この細分箇条の構文規則の適用では,TARGET を とし,VALUE を とする。

2)  及び の宣言型を,それぞれ,TD 及び SD とする。

3)  TD が文字列,2 進オクテット列,数,ブール,日時,時間隔又は利用者定義型ならば,SD が TD

に代入可能か,又は SD から TD への適切な利用者定義の型変換関数 UDCF が存在するかのいずれ

かでなければならない。

注記 279  “適切な利用者定義の型変換関数”は,“4.11  データ変換”で定義している。

4)  の宣言型が参照型ならば,の宣言型は,の被参照型の下位型である被参照型をもつ参照型で

なければならない。

5)  の宣言型が行型ならば,次による。

a)  の宣言型は,行型でなければならない。

b)  の次数は,の次数と同じでなければならない。その次数を とする。

c)

の 番目のフィールドの宣言型を TTi,1  ≤  i  ≤  とし,の 番目のフィールドの宣言型を VTi
とし,宣言型が TTi である一時的な格納場所を T1i とし,宣言型が VTi である任意の式を V1i 
する。各 i,1 ≤ i ≤ に対して,T1i を TARGET として,V1i を VALUE として,この細分箇条の
構文規則を適用する。

6)  の宣言型が集まり型,又は元型が集まり型の個別型ならば,次による。

a)  の宣言型が配列型,又は元型が配列型の個別型 DTAT ならば,の宣言型は,配列型又は DTAT


389

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

でなければならない。

b)  の宣言型がマルチ集合型,又は元型がマルチ集合型の個別型 DTMT ならば,の宣言型は,マ

ルチ集合型又は DTMT でなければならない。

c)

の宣言型の要素型を TT とし,の宣言型の要素型を VT とし,宣言型が TT である一時的な格

納場所を T1 とし,宣言型が VT である任意の式を V1 とする。T1 を TARGET として,V1 を VALUE

として,この細分箇条の構文規則を適用する。

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,TARGET を とし,VALUE を とする。

2)  の宣言型が の宣言型に代入可能でないならば,この細分箇条の残りの一般規則に対しては,式

UDCF(V)を評価した結果によって,が実効的に置き換えられる。

3)  場合:

a)  がナル値ならば,次による。

場合:

i)

が NULL を用いて指定されるならば,には,ナル値が設定される。

ii)  がホストパラメタで,かつ,標識パラメタを含むならば,次による。

場合:

1)  標識パラメタの値が-1 と等しいならば,には,ナル値が設定される。

2)  標識パラメタの値が-1 より小さいならば,例外条件:データ例外  (data exception)  -  標識パ

ラメタの値が正しくない  (invalid indicator parameter value)  が引き起こされる。

iii)  がホスト変数で,かつ,標識変数を含むならば,次による。

場合:

1)  標識変数の値が-1 と等しいならば,には,ナル値が設定される。

2)  標識変数の値が-1 より小さいならば,例外条件:データ例外  -  標識パラメタの値が正しく

ない  が引き起こされる。

iv)  そうでなければ,には,ナル値が設定される。

b)

09

14

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

場合:

i)

の宣言型が,文字単位での長さ の固定長文字列で,かつ,の文字単位での長さが と等

しいならば,には,の値が設定される。

ii)  の宣言型が,文字単位での長さ の固定長文字列で,かつ,の文字単位での長さ が 

超えるならば,次による。

場合:

1)  の最も右側の M-個の文字が全て<空白>ならば,には,の最初の 個の文字が設定さ

れる。

2)  の最も右側の M-個の文字のうちの一つ以上が<空白>でないならば,例外条件:データ

例外  -  データ列データ,右切捨て  (string data, right truncation)  が引き起こされる。

iii)  の宣言型が,文字単位での長さ の固定長文字列で,かつ,の文字単位での長さ が 

満ならば,の最初の 個の文字には,の値が設定され,の最後の L – 個の文字には,<


390

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

空白

>が設定される。

iv)  の宣言型が可変長文字列で,かつ,の文字単位での長さ が の文字単位での最大長を超

えないならば,には,の値が設定され,の文字単位での長さには,が設定される。

v)  の宣言型が可変長文字列で,かつ,の文字単位での長さ が の文字単位での最大長 

超えるならば,次による。

場合:

1)  の最も右側の M-個の文字が全て<空白>ならば,には,の最初の 個の文字が設定さ

れ,の文字単位での長さには,が設定される。

2)  の最も右側の M-個の文字のうちの一つ以上が<空白>でないならば,例外条件:データ

例外  -  データ列データ,右切捨て  が引き起こされる。

vi)  の宣言型が文字長大オブジェクト型で,かつ,の文字単位での長さ が の文字単位での

最大長を超えないならば,には,の値が設定され,の文字単位での長さには,が設定

される。

vii)  の宣言型が文字長大オブジェクト型で,かつ,の文字単位での長さ が の文字単位での

最大長 を超えるならば,次による。

場合:

1)  の最も右側の M – 個の文字が全て<空白>ならば,には,の最初の 個の文字が設定

され,の文字単位での長さには,が設定される。

2)  の最も右側の M – 個の文字のうちの一つ以上が<空白>でないならば,例外条件:データ

例外  -  データ列データ,右切捨て  が引き起こされる。

viiiの宣言型が,オクテット単位での長さ の固定長 2 進オクテット列で,かつ,のオクテッ

ト単位での長さが と等しいならば,には,の値が設定される。

ix)  の宣言型が,オクテット単位での長さ の固定長 2 進オクテット列で,かつ,のオクテッ

ト単位での長さ が を超えるならば,次による。

場合:

1)  の最も右側の M – 個のオクテットが全て X’00’  と等しいならば,には,の最初の L

個のオクテットが設定される。

2)  の最も右側の M – 個のオクテットのうちの一つ以上が X’00’  と等しくないならば,例外

条件:

データ例外  -  データ列データ,右切捨て  が引き起こされる。

x)  の宣言型が,オクテット単位での長さ の固定長 2 進オクテット列で,かつ,のオクテッ

ト単位での長さ が 未満ならば,の最初の 個のオクテットには,の値が設定され,T

の最後の L – 個のオクテットには,X’00’  が設定される。

xi)  の宣言型が可変長 2 進オクテット列で,かつ,のオクテット単位での長さ が のオクテ

ット単位での最大長を超えないならば,には,の値が設定され,のオクテット単位での

長さには,が設定される。

xii)  の宣言型が可変長 2 進オクテット列で,かつ,のオクテット単位での長さ が のオクテ

ット単位での最大長 を超えるならば,次による。

場合:

1)  の最も右側の M – 個のオクテットが全て X’00’  と等しいならば,には,の最初の L

個のオクテットが設定され,のオクテット単位での長さには,が設定される。


391

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

2)  の最も右側の M – 個のオクテットのうちの一つ以上が X’00’  と等しくないならば,例外

条件:

データ例外  -  データ列データ,右切捨て  が引き起こされる。

xiiiの宣言型が長大オブジェクト 2 進オクテット列で,かつ,のオクテット単位での長さ 

のオクテット単位での最大長を超えないならば,には,の値が設定され,のオクテット

単位での長さには,が設定される。

xiv)  の宣言型が長大オブジェクト 2 進オクテット列で,かつ,のオクテット単位での長さ 

のオクテット単位での最大長 を超えるならば,次による。

場合:

1)  の最も右側の M-個のオクテットが全て X’00’  と等しいならば,には,の最初の 

のオクテットが設定され,のオクテット単位での長さには,が設定される。

2)  の最も右側の M-個のオクテットのうちの一つ以上が X’00’  と等しくないならば,

例外条

件:

データ例外  -  データ列データ,右切捨て  が引き起こされる。

xv)  の宣言型が数型ならば,次による。

場合:

1)  が の宣言型の要素ならば,には,の値が設定される。

2)  の宣言型の要素を,丸め又は切捨てによって から得ることができるならば,には,そ

の値が設定される。の宣言型が真数ならば,近似が丸めによって得られるか,又は切捨て

によって得られるかは,処理系定義とする。

3)  そうでなければ,例外条件:データ例外  -  数値範囲外  (numeric value out of range)  が引き起

こされる。

xvi)  の宣言型 DT が日時ならば,次による。

1)  DT,及び の宣言型のうちの一つだけが時刻帯付き日時ならば,は,次の CAST 指定の結

果によって実効的に置き換えられる。

CAST ( V AS DT )

2)  場合:

A)  が の宣言型の要素ならば,には,の値が設定される。

B)  の宣言型の要素を,丸め又は切捨てによって から得ることができるならば,には,

その値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,

処理系定義とする。

C)  そうでなければ,例外条件:データ例外  -  日時フィールドあふれ  (datetime field overflow)

が引き起こされる。

xviiの宣言型が時間隔ならば,次による。

場合:

1)  が の宣言型の要素ならば,には,の値が設定される。

2)  の宣言型の要素を,丸め又は切捨てによって から得ることができるならば,には,そ

の値が設定される。近似が丸めによって得られるか,又は切捨てによって得られるかは,処

理系定義とする。

3)  そうでなければ,例外条件:データ例外  -  時間隔フィールドあふれ  (interval field overflow)

が引き起こされる。

xviiiの宣言型がブールならば,には,の値が設定される。


392

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

xix)  の宣言型が行型ならば,次による。

1)  の次数を とする。

2) 1 から までの範囲の に対して,の 番目の要素,及び の 番目の要素を,それぞれ,

TARGET 及び VALUE として,この細分箇条の一般規則を適用する。

xx)  の宣言型が参照型ならば,には,の値が設定される。

xxi)  の宣言型が配列型,又は元型が配列型の個別型ならば,次による。

場合:

1)  の最大基数 が の基数 と等しいならば,

の要素を TARGET として,

の要素を VALUE

として,要素の各対に,この細分箇条の一般規則を適用することによって,の要素には,V

の対応する要素の値が設定される。

2)  の最大基数 が の基数 未満ならば,次による。

場合:

A)  の最も右側の M-個の要素が全てナルならば,の要素を TARGET として,の要素

を VALUE として,要素の各対に,この細分箇条の一般規則を適用することによって,T

の要素には,の最初の 個の対応する要素の値が設定される。

B)  の最も右側の M-個の要素のうち一つ以上がナル値でないならば,例外条件:データ例

外  -  配列データ,右切捨て  (array data, right truncation)  が引き起こされる。

3)  の最大基数 が の基数 を超えるならば,

の要素を TARGET として,

の要素を VALUE

として,要素の各対に,この細分箇条の一般規則を適用することによって,の最初の 

の要素には,の対応する要素の値が設定される。の値の基数には,が設定される。

注記 280  の最大基数 は,変更されない。

xxiiの宣言型がマルチ集合型,又は元型がマルチ集合型の個別型ならば,には,の値が設定

される。

xxiiiの宣言型が利用者定義型ならば,には,の値が設定される。

適合性規則

なし。 

9.3

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

細分箇条署名

“ホスト言語から SQL サーバへの値の受渡し” [一般規則] (

パラメタ: “LANGUAGE”

パラメタ: “SQL TYPE”

パラメタ: “HOST VALUE”

) 戻り: “SQL VALUE”

機能

ホスト言語から

SQL サーバへの値の受渡し  (Passing a value from a host language to the SQL-server)  は,ホ

スト言語から

SQL サーバに値を受け渡す規則を規定する。

構文規則

なし。 

アクセス規則

なし。 


393

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

一般規則

1)  この細分箇条の一般規則の適用では,LANGUAGE を LANG とし,SQL  TYPE を DT とし,HOST

VALUE を PI とする。この細分箇条の適用の結果は,SV とする。それは,SQL VALUE として戻さ

れる。

注記 281  DT は,<ホストパラメタデータ型>又は<パラメタの型>のいずれかである。

2)  宣言型が SQL TYPE に含まれる<データ型>の格納場所を SV とする。

3)  LANG が ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI を指定するかどうかに依存して,

それぞれ,表 16“Ada のためのデータ型対応”,表 17“C のためのデータ型対応”,表 18“COBOL

のためのデータ型対応”,表 19“Fortran のためのデータ型対応”,表 20“M のためのデータ型対応”,

表 21“Pascal のためのデータ型対応”又は表 22“PL/I のためのデータ型対応”を適用データ型対応

表  (operative data type correspondences table)  とする。適用データ型対応表の二つの列を,“SQL デー

タ型

  (SQL data type)”の列及び“ホストデータ型  (host data type)”の列として参照する。

4)  次のホスト言語データ型を HDT とする。

場合:

a)  DT が<位置付け子標識>を含むならば,次による。

場合:

i)

LANG が ADA ならば,Interfaces.SQL.INT。

ii)  LANG が C ならば,unsigned long。

iii)  LANG が COBOL ならば,PIC S9(9) USAGE IS BINARY。

iv)  LANG が FORTRAN ならば,INTEGER。

v)  LANG が M ならば,character。

vi)  LANG が PASCAL ならば,INTEGER。

vii)  LANG が PLI ならば,FIXED BINARY(31)。

b)  そうでなければ,適用データ型対応表中で,

SQL データ型”の列の値が DT である行の“ホスト

データ型”の列に記載されたホスト言語データ型。

注記 282  PI のホスト言語データ型は,HDT である。

5)  場合:

a)  DT が<位置付け子標識>を含むならば,次による。

場合:

i)

PI が無効な位置付け子ならば,例外条件:位置付け子例外  (locator exception)  -  指定が正しく

ない  (invalid specification)  が引き起こされ,この細分箇条の一般規則は,これ以上適用しない。

ii)  そうでなければ,PI に対応する長大オブジェクト 2 進オクテット列値,長大オブジェクト文字

列値,配列値,マルチ集合値又は利用者定義型値を SV の値とする。

b)  DT が CHARACTER(L)  又は CHARACTER VARYING (L)  のデータ型を識別し,かつ,LANG が C

ならば,DT の文字集合での文字列型の値として暗に扱った PI を SV の値とする。ここで,PI 

オクテットは,SV の対応するオクテットとする。

C 文字列を終了させる処理系定義のナル文字を NC とする。

場合:

i)

DT が CHARACTER(L)  のデータ型を識別し,かつ,PI の最下位有効 C 文字に先行するある C

文字が NC を含むならば,SV の文字には,NC の最初の実現値から SV の最後まで<空白>が設


394

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

定される。

ii)  DT が CHARACTER VARYING (L)  のデータ型を識別するならば,SV の文字単位での長さには,

PI 中の NC の最初の実現値に先行する PI の文字の個数が設定される。

iii)  値 PI の最下位有効 C 文字が NC を含まないならば,

例外条件:

データ例外  (data exception)  -  C

文字列が終了していない  (unterminated C string)  が引き起こされる。そうでなければ,その最下

位有効

C 文字は,PI 中のどの文字にも対応せず,無視される。

注記 283  “C 文字列を終了させる処理系定義のナル文字”という句は,ビットの全てが 0 から成

り,オクテット数が DT の文字集合の最も大きい文字のオクテット数と等しい一つ以上

のオクテットを意味する。このようなオクテットの個数は,文字集合の定義に依存する。

したがって,処理系定義である。

c)

次のうちの一つが真ならば,DT の文字集合での文字列型の値として暗に扱った PI を SV の値と

する。ここで,PI のオクテットは,SV の対応するオクテットとする。

i)

DT が CHARACTER(L)  のデータ型を識別し,かつ,LANG が ADA,COBOL,FORTRAN 又は

PASCAL である。

ii)  DT が CHARACTER VARYING (L)  のデータ型を識別し,かつ,LANG が M である。

iii)  DT が CHARACTER(L)  又は CHARACTER VARYING (L)  のデータ型を識別し,かつ,LANG

PLI である。

d)  DT が INT,DEC 又は REAL を識別し,

かつ,LANG が M ならば,PI と等価な SQL 文字列を TEMP

とし,次の

CAST 指定の値を SV の値とする。

CAST (TEMP AS DT )

e)

DT が BOOLEAN 型を識別するならば,次による。

場合:

i)

LANG が ADA ならば,次による。

1)  PI の値が False ならば,偽  (False)  を SV の値とする。

2)  そうでなければ,真  (True)  を SV の値とする。

ii)  LANG が C ならば,次による。

1)  PI の値が 0 ならば,偽  (False)  を SV の値とする。

2)  そうでなければ,真  (True)  を SV の値とする。

iii)  LANG が COBOL ならば,次による。

1)  PI の値が 'F' ならば,偽  (False)  を SV の値とする。

2)  そうでなければ,真  (True)  を SV の値とする。

iv)  LANG が FORTRAN ならば,次による。

1)  PI の値が.FALSE.  ならば,偽  (False)  を SV の値とする。

2)  そうでなければ,真  (True)  を SV の値とする。

v)  LANG が PASCAL ならば,PI を SV の値とする。

注記 284 Pascal には,真  及び偽  の値をもつブール型がある。

vi)  LANG が PLI ならば,次による。

1)  PI の値が '0'B ならば,偽  (False)  を SV の値とする。

2)  そうでなければ,真  (True)  を SV の値とする。

f)

DT が CHARACTER LARGE OBJECT 型又は BINARY LARGE OBJECT 型を識別するならば,次に


395

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

よる。

場合:

i)

DT が CHARACTER LARGE OBJECT 型を識別するならば,DT に含まれ,陽に指定されたか又

は暗に想定された

<文字長単位>を CLU とする。次の値を SV とする。

場合:

1)  CLU が CHARACTERS ならば,文字単位での長さ LEN が PI の長さ部分の値で,かつ,値が

PI のデータ部分中の最初の LEN 個の文字である長大オブジェクト文字列。

2)  そうでなければ,オクテット単位での長さ LEN が PI の長さ部分の値で,かつ,値が PI のデ

ータ部分中の最初の LEN 個のオクテットである長大オブジェクト文字列。

ii)  DT が BINARY LARGE OBJECT 型を識別するならば,

長さ LEN が PI の長さ部分の値で,かつ,

値が PI のデータ部分中の最初の LEN 個のオクテットである長大オブジェクト 2 進オクテット

列を SV とする。

注記 285  PI の長さ部分及びデータ部分は,適用データ型対応表の脚注  (

footnotes

)  で定義してい

る。

g)  DT が BINARY(L)  又は BINARY VARYING(L)  のデータ型を識別し,

かつ,LANG が ADA ならば,

次による。

場合:

i)

DT が BINARY (L)  のデータ型を識別するならば,オクテットが PI の対応するオクテットであ

2 進オクテット列を SV の値とする。

ii)  DT が BINARY VARYING (L)  のデータ型を識別するならば,

長さ LEN が PI の長さ部分の値で,

かつ,値が PI のデータ部分中の最初の LEN 個のオクテットである 2 進オクテット列を SV 

値とする。

h)  DT が BINARY(L)  又は BINARY VARYING(L)  のデータ型を識別し,かつ,LANG が C ならば,

次による。

場合:

i)

DT が BINARY (L)  のデータ型を識別するならば,オクテットが PI の対応するオクテットで,

個のオクテットから成る 2 進オクテット列を SV の値とする。

ii)  DT が BINARY VARYING (L)  のデータ型を識別するならば,

長さ LEN が PI の長さ部分の値で,

かつ,値が PI のデータ部分中の最初の LEN 個のオクテットである 2 進オクテット列を SV 

値とする。

i)

次のうちの一つが真ならば,オクテットが PI の対応するオクテットである 2 進オクテット列を

SV の値とする。

i)

DT が BINARY (L)  のデータ型を識別し,かつ,LANG が COBOL,FORTRAN 又は PASCAL で

ある

ii)  DT が BINARY(L)  又は BINARY VARYING(L)  のデータ型を識別し,かつ,LANG が PLI であ

る。

j)

そうでなければ,値 PI を SV の値とする。

適合性規則

なし。 

9.4

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


396

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

細分箇条署名

“SQL サーバからホスト言語への値の受渡し” [一般規則] (

パラメタ: “LANGUAGE”

パラメタ: “SQL TYPE”

パラメタ: “SQL VALUE”

) 戻り: “HOST VALUE”

機能

SQL サーバからホスト言語への値の受渡し  (Passing a value from the SQL-server to a host language)  は,

SQL サーバからホスト言語に値を受け渡す規則を規定する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,

LANGUAGE を LANG とし,

SQL TYPE を DT とし,

SQL VALUE

を SV とする。この細分箇条の適用の結果は,PI とする。それは,HOST VALUE として戻される。

2)  LANG が ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI を指定するかどうかに依存して,

それぞれ,表 16“Ada のためのデータ型対応”,表 17“C のためのデータ型対応”,表 18“COBOL

のためのデータ型対応”,表 19“Fortran のためのデータ型対応”,表 20“M のためのデータ型対応”,

表 21“Pascal のためのデータ型対応”又は表 22“PL/I のためのデータ型対応”を適用データ型対応

表  (operative data type correspondences table)  とする。適用データ型対応表の二つの列を,“SQL デー

タ型

  (SQL data type)  ”の列及び“ホストデータ型  (host data type)  ”の列として参照する。

3)  次のホスト言語データ型を HDT とする。

場合:

a)  DT が<位置付け子標識>を含むならば,次による。

場合:

i)

LANG が ADA ならば,Interfaces.SQL.INT。

ii)  LANG が C ならば,unsigned long。

iii)  LANG が COBOL ならば,PIC S9(9) USAGE IS BINARY。

iv)  LANG が FORTRAN ならば,INTEGER。

v)  LANG が M ならば,character。

vi)  LANG が PASCAL ならば,INTEGER。

vii)  LANG が PLI ならば,FIXED BINARY(31)。

b)  そうでなければ,適用データ型対応表中で,

SQL データ型”の列の値が DT である行の“ホスト

データ型”の列に記載されたホスト言語データ型。

注記 286  PI のホスト言語データ型は,HDT である。

4)  ホスト言語データ型 HDT の格納場所を PI とする。

5)  場合:

a)  DT が<位置付け子標識>を含むならば,SV を一意に識別する 2 進オクテット長大オブジェクト位

置付け子の値,文字長大オブジェクト位置付け子の値,配列位置付け子の値,マルチ集合位置付


397

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

け子の値又は利用者定義型位置付け子の値を PI の値とする。

b)  DT が CHARACTER(L)  又は CHARACTER VARYING (L)  のデータ型を識別し,かつ,LANG が C

ならば,DT のオクテット単位での可能な最大長より 大きい長さを CL とする。ここで,は,

DT の文字集合中の最も大きい文字のオクテット単位での大きさとする。値のオクテットが SV 

対応するオクテットで,必要に応じて,長さ CL – になるまで右側に<空白>を埋めて,C 文字列

を終了させる処理系定義の単一のナル文字を連結した

C 文字列を PI の値とする。

注記 287  “C 文字列を終了させる処理系定義のナル文字”という句は,ビットの全てが 0 から

成る 個のオクテットを意味する。

c)

DT が CHARACTER(L)  のデータ型を識別し,かつ,LANG が ADA,COBOL,FORTRAN 又は

PASCAL ならば,DT のオクテット単位での可能な最大長を CL とする。値のオクテットが SV 

対応するオクテットで,必要に応じて,長さ CL オクテットになるまで右側に<空白>を埋めたホ

スト言語データ型 HDT の値を PI の値とする。

d)  DT が CHARACTER VARYING(L)  のデータ型を識別し,かつ,LANG が M ならば,DT のオクテ

ット単位での可能な最大長を CL とする。値のオクテットが SV の対応するオクテットで,必要に

応じて,長さ CL オクテットになるまで右側に<空白>を埋めた M 文字列を PI の値とする。

e)

DT が CHARACTER(L)  又は CHARACTER VARYING (L)  のデータ型を識別し,かつ,LANG 

PLI ならば,DT のオクテット単位での可能な最大長を CL とする。

場合:

i)

DT が CHARACTER(L)  のデータ型を識別するならば,値のオクテットが SV の対応するオクテ

ットである

PL/I 文字列を PI の値とする。

ii)  そうでなければ,値のオクテットが SV の対応するオクテットで,必要に応じて,長さ CL にな

るまで右側に

<空白>を埋めた PL/I 文字列を PI の値とする。

f)

DT が INT,DEC 又は REAL を識別し,かつ,LANG が M ならば,オクテットが次の CAST 指定

のオクテットである

M 文字列を PI とする。

CAST ( SV AS CHARACTER VARYING(ML) )

ここで,ML は,可変長文字列の処理系定義の最大長とする。

g)  DT が BOOLEAN 型を識別するならば,次による。

場合:

i)

LANG が ADA ならば,次による。

1)  SV が偽  (False)  ならば,値 False を PI の値とする。

2)  SV が真  (True)  ならば,値 True を PI の値とする。

ii)  LANG が C ならば,次による。

1)  SV が偽  (False)  ならば,値 0 を PI の値とする。

2)  SV が真  (True)  ならば,値 1 を PI の値とする。

iii)  LANG が COBOL ならば,次による。

1)  SV が偽  (False)  ならば,値 'F'を PI の値とする。

2)  SV が真  (True)  ならば,値 'T'を PI の値とする。

iv)  LANG が FORTRAN ならば,次による。

1)  SV が偽  (False)  ならば,値.FALSE.を PI の値とする。

2)  SV が真  (True)  ならば,値.TRUE.を PI の値とする。


398

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

v)  LANG が PASCAL ならば,SV を PI の値とする。

注記 288 Pascal には,真  及び偽  の値をもつブール型がある。

vi)  LANG が PLI ならば,次による。

1)  SV が偽  (False)  ならば,値 '0'B を PI の値とする。

2)  SV が真  (True)  ならば,値 '1'B を PI の値とする。

h)  DT が CHARACTER LARGE OBJECT 型又は BINARY LARGE OBJECT 型を識別するならば,次に

よる。

場合:

i)

DT が CHARACTER LARGE OBJECT 型を識別するならば,DT に含まれ,陽に指定されたか又

は暗に想定された

<文字長単位>を CLU とする。

場合:

1)  CLU が CHARACTERS ならば,SV 中の文字の個数 LEN を PI の長さ部分とし,SV と等価な

文字列を,PI のデータ部分中の最初の LEN 個の文字とする。

2)  そうでなければ,SV 中のオクテットの個数 LEN を PI の長さ部分とし,SV と等価な文字列

を,PI のデータ部分中の最初の LEN 個のオクテットとする。

ii)  DT が BINARY LARGE OBJECT 型を識別するならば,SV 中のオクテットの個数 LEN を PI 

長さ部分とし,SV と等価な 2 進オクテット列を,PI のデータ部分中の最初の LEN 個のオクテ

ットとする。

注記 289  PI の長さ部分及びデータ部分は,適用データ型対応表の脚注  (

footnotes

)  で定義してい

る。

i)

DT が BINARY(L)  のデータ型を識別するならば,長さ で,オクテットが SV の対応するオクテ

ットであるホスト言語データ型 HDT の 2 進オクテット列を PI とする。

j)

DT が BINARY VARYING(L)  のデータ型を識別し,かつ,LANG が ADA 又は C ならば,

OCTET_LENGTH(SV)  を LEN とし,LEN を PI の長さ部分とし,値 SV を,PI のデータ部分中の

最初の LEN 個のオクテットとする。

k) BINARY

VARYING(L)  のデータ型を識別し,かつ,LANG が PLI ならば,値のオクテットが SV

の対応するオクテットで,必要に応じて,長さ になるまで右側に X'00'を埋めたホスト言語デー

タ型 HDT の 2 進オクテット列を PI とする。

l)

そうでなければ,SV を PI の値とする。LANG が ADA で,かつ,PI に値が代入されなかったな

らば,処理系依存の値が PI に代入される。

適合性規則

なし。 

9.5

データ型組合せの結果

この細分箇条は,ISO/IEC 9075-9 の“9.3  データ型組合せの結果”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.3  データ型組合せの結果”によって修正される。 

細分箇条署名

“データ型組合せの結果” [構文規則] (

パラメタ: “DTSET”

) 戻り: “RESTYPE”

機能


399

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

データ型組合せの結果

  (result of data type combination)  は,<CASE 式>,<集まり値式>,又は<問合せ式>

の結果中の列のような,互換であるデータ型の値の特定の組合せの結果の宣言型を規定する。

構文規則

1)  この細分箇条の構文規則の適用では,DTSET を IDTS とする。この細分箇条の適用の結果は,結果

の宣言型とする。それは,RESTYPE として戻される。

2)  未定義のデータ型を除く,IDTS 中のデータ型の集合を DTS とする。DTS の基数が 0 ならば,結果

の宣言型は,未定義とし,この細分箇条の規則は,これ以上評価されない。

注記 290  “未定義のデータ型 (undefined data type)”の概念は,“20.6 <PREPARE 文>”で定義して

いる。

3)  場合:

a)  DTS 中のデータ型のいずれかが文字列ならば,次による。

i)

DTS 中の全てのデータ型が文字列でなければならず,かつ,それらの全てが同じ文字レパート

リをもたなければならない。結果の文字集合は,最も高い優先順序の文字符号化形式をもつ,

DTS 中のデータ型の文字集合とする。

ii)  結果の照合順起源及び宣言型照合順は,次のとおりに決定される。

場合:

1)  DTS 中のいずれかのデータ型が,明示  (explicit)  の照合順起源及び宣言型照合順 EC1 をもつ

ならば,

明示  の照合順起源をもつ DTS 中のどのデータ型も,EC1 である宣言型照合順をも

たなければならない。照合順起源は,

明示  とし,照合順は,EC1 とする。

2)  DTS 中の全てのデータ型が暗黙  (implicit)  の照合順起源をもつならば,次による。

場合:

A)  DTS 中の全てのデータ型が同じ宣言型照合順 IC1 をもつならば,照合順起源は,暗黙  と

し,宣言型照合順は,IC1 とする。

B)  そうでなければ,照合順起源は,なし  (none)  とする。

3)  そうでなければ,照合順起源は,なし  とする。

iii)  場合:

1)  DTS 中のデータ型のいずれかが文字長大オブジェクト型ならば,結果の宣言型は,DTS 中の

データ型の,文字単位での長さ及び文字単位での最大長の最大値と等しい文字単位での最大

長をもつ文字長大オブジェクト型とする。

2)  DTS 中のデータ型のいずれかが可変長文字列ならば,

結果の宣言型は,DTS 中のデータ型の,

文字単位での長さ及び文字単位での最大長の最大値と等しい文字単位での最大長をもつ可変

長文字列とする。

3)  そうでなければ,結果の宣言型は,DTS 中のデータ型の文字単位での長さの最大値と等しい

文字単位での長さをもつ固定長文字列とする。

b)  DTS 中のデータ型のいずれかが 2 進オクテット列ならば,次による。

場合:

i)

DTS 中のデータ型のいずれかが 2 進オクテット長大オブジェクト型ならば,結果の宣言型は,

DTS 中のデータ型の,オクテット単位での長さ及びオクテット単位での最大長の最大値と等し

いオクテット単位での最大長をもつ

2 進オクテット長大オブジェクト型とする。

ii)  DTS 中のデータ型のいずれかが可変長 2 進オクテット列型ならば,結果の宣言型は,DTS 中の


400

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

データ型の,オクテット単位での長さ及びオクテット単位での最大長の最大値と等しいオクテ

ット単位での最大長をもつ可変長

2 進オクテット列型とする。

iii)  そうでなければ,結果の宣言型は,DTS 中のデータ型のオクテット単位での長さの最大値と等

しいオクテット単位での長さをもつ固定長

2 進オクテット列型とする。

c)

DTS 中の全てのデータ型が真数ならば,結果の宣言型は,処理系定義の精度,及び DTS 中のデー

タ型の位取りの最大値と等しい位取りをもつ真数とする。

d)  DTS 中のいずれかのデータ型が概数ならば,DTS 中の各データ型は,数でなければならず,結果

の宣言型は,処理系定義の精度をもつ概数とする。

e)

DTS 中のいずれかのデータ型が日時データ型ならば,DTS 中のどのデータ型も,同じ日時フィー

ルドをもつ日時データ型でなければならない。結果の宣言型は,同じ日時フィールドをもつ日時

データ型とし,その小数秒精度は,DTS 中の小数秒精度のうちの最大のものとする。DTS 中のい

ずれかのデータ型が時刻帯時差値をもつならば,その結果は,時刻帯時差値をもつ。そうでなけ

れば,その結果は,時刻帯時差値をもたない。

f)

DTS 中のいずれかのデータ型が時間隔ならば,DTS 中の各データ型は,時間隔でなければならな

い。DTS 中のいずれかのデータ型の精度が YEAR 又は MONTH を指定するならば,各データ型の

精度は,

YEAR 又は MONTH だけを指定しなければならない。DTS 中のいずれかのデータ型の精

度が

DAY,HOUR,MINUTE 又は SECOND(N)  を指定するならば,DTS 中のどのデータ型の精度

も,

<基本日時フィールド> YEAR 及び MONTH を指定してはならない。結果の宣言型は,精度“S

TO  E”をもつ時間隔とする。ここで,及び は,それぞれ,DTS 中のデータ型の<開始フィー

ルド

>のうちの最上位有効フィールド,及び<終了フィールド>のうちの最下位有効フィールドと

する。

g)

09

14

 DTS 中のいずれかのデータ型がブールならば,DTS 中の各データ型は,ブールでなければな

らない。結果の宣言型は,ブールとする。

h)  DTS 中のいずれかのデータ型が行型ならば,DTS 中の各データ型は,同じ次数をもつ行型でなけ

ればならず,どの行型も,同じ順序位置の各フィールドのデータ型は,比較可能でなければなら

ない。結果の宣言型は,(

<フィールド名>,データ型)の対 FDi の順序付けられた並びによって

定義される行型とする。ここで,そのデータ型は,DTS 中の全ての行型の,FDi と同じ順序位置
のフィールドのデータ型の集合に,この細分箇条を適用した結果として得られるデータ型とし,

その

<フィールド名>は,次のとおりに決定される。

場合:

i)

DTS 中のどの行型も,FDi と同じ順序位置のフィールドが名前 をもつならば,FDi の<フィ
ールド名

>は,とする。

ii)  そうでなければ,FDi の<フィールド名>は,処理系依存とする。

i)

DTS 中のいずれかのデータ型が配列型か又は元型が配列型の個別型ならば,DTS 中のどのデータ

型も,配列型か又は元型が配列型の個別型でなければならない。結果の宣言型は,要素データ型

ETR をもつ配列型とする。ここで,ETR は,DTS の配列型の要素型の集合に,この細分箇条を適

用した結果として得られるデータ型とし,最大基数は,DTS 中のデータ型の最大基数の最大値と

等しい。

j)

DTS 中のいずれかのデータ型がマルチ集合型か又は元型がマルチ集合型の個別型ならば,DTS 

のどのデータ型も,マルチ集合型か又は元型がマルチ集合型の個別型でなければならない。結果


401

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

の宣言型は,要素データ型 ETR をもつマルチ集合型とする。ここで,ETR は,DTS のマルチ集

合型の要素型の集合に,この細分箇条を適用した結果として得られるデータ型とする。

k)  DTS 中のいずれかのデータ型が参照型ならば,DTS 中の各データ型が下位型族 STF の要素であ

るような下位型族 STF が存在しなければならない。DTS 中の各データ型の最小共通上位型を RT

とする。

 場合:

i)

DTS 中のどのデータ型のデータ型記述子も,参照型の有効範囲を識別する参照可能表の名前を

含み,かつ,そのような全ての名前が,ある名前 STN と等価ならば,結果の宣言型は,次の型

とする。

RT SCOPE ( STN )

ii)  そうでなければ,結果の宣言型は,RT とする。

l)

そうでなければ,DTS 中の各データ型が下位型族 STF の要素であるような下位型族 STF が存在

しなければならない。結果の宣言型は,DTS 中の各データ型の最小共通上位型とする。

注記 291  最小共通上位型  (minimal common supertype)  は,“4.7.3.4  下位型及び上位型”で定義し

ている。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

9.6

当該ルーチン決定

細分箇条署名

“当該ルーチン決定” [構文規則] (

パラメタ: “SET OF SQL-INVOKED ROUTINES”,

パラメタ: “SQL ARGUMENT LIST”

) 戻り: “SET OF SUBJECT ROUTINES”

機能

当該ルーチン決定

  (subject routine determination)  は,与えられたルーチン呼出しの当該ルーチンを決定す

る。

構文規則

1)  この細分箇条の構文規則の適用では,SET  OF  SQL-INVOKED  ROUTINES を SR とし,SQL

ARGUMENT LIST を AL とする。

この細分箇条の適用の結果は,

SQL 呼出しルーチンの集合とする。

それは,SET OF SUBJECT ROUTINES として戻される。

2)  SR 中の SQL 呼出しルーチンの個数を とする。SR の順序付けでの SR 中の 番目の SQL 呼出しル

ーチンを Ri,1 ≤ i ≤ とする。

3)  AL 中の SQL 引数の個数を とする。AL 中の 番目の SQL 引数を Aj,1 ≤ j ≤ とする。

4)  Aj,1 ≤ j ≤ に対しては,Aj の宣言型を SDTAj とする。

5)  Ri の 番目の SQL パラメタの宣言型の型指示子を SDTPi,とする。

6) 1 から までの範囲の に対して,Ar が<動的パラメタ指定>でなく,かつ,SR 中に二つ以上の SQL


402

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

呼出しルーチンがあるならば,SR 中の SQL 呼出しルーチンの各対{RpRq }に対して,次による。

a)  SDTAr を DATA TYPE として,“9.7  型優先順序リスト決定”の構文規則を適用する。これらの構

文規則の適用によって戻される TYPE PRECEDENCE LIST を TPLr とする。

b)  TPLr 中で,SDTPp

,

r < SDTPq

,

ならば,SR から Rq を取り除く。

7)  SR 中に残っている SQL 呼出しルーチンの集合は,この細分箇条の適用の結果とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

9.7

型優先順序リスト決定

この細分箇条は,ISO/IEC 9075-9 の“9.4  型優先順序リスト決定”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.4  型優先順序リスト決定”によって修正される。 

細分箇条署名

“型優先順序リスト決定” [構文規則] (

パラメタ: “DATA TYPE”

) 戻り: “TYPE PRECEDENCE LIST”

機能

型優先順序リスト決定

  (Type precedence list determination) は,与えられた型の型優先順序リストを決定

する。

構文規則

1)  この細分箇条の構文規則の適用では,DATA TYPE を DT とする。この細分箇条の適用の結果は,型

優先順序リスト  (type precedence listTPL とする。それは,TYPE PRECEDENCE LIST として戻され

る。

2)  この細分箇条の構文規則によって決定される型指示子  (type designator)  のリストを TPL とする。

3)  “が より高い優先順序をもつ”ことを“A < B”で表現し,

が と同じ優先順序をもつ”こ

とを“A  ≃ B”で表現する。

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

a)  DT の上位型の集合を ST とする。ST 中のデータ型の個数を とする。

b)  ST 中の二つのデータ型 TA 及び TB に対して,TA < TB であることは,TA が TB の真下位型であ

ることと同値とする。

c)

DT を T

1

とし,Ti の直接上位型を Ti

+

1

1 ≤ i ≤ n–1 とする。

d)  Ti のデータ型指示子を DTNi,1 ≤ i ≤ とする。

注記 292  利用者定義型の型指示子は,その利用者定義型記述子に含まれる型名である。

e)

TPL は,DTN

1

DTN

2

...,DTNn とする。

5)  DT が固定長文字列ならば,TPL は,次のリストとする。

CHARACTER, CHARACTER VARYING, CHARACTER LARGE OBJECT

6)  DT が可変長文字列ならば,TPL は,次のリストとする。

CHARACTER VARYING, CHARACTER LARGE OBJECT


403

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

7)  DT が固定長 2 進オクテット列ならば,TPL は,次のリストとする。

BINARY, BINARY VARYING, BINARY LARGE OBJECT

8)  DT が可変長 2 進オクテット列ならば,TPL は,次のリストとする。

BINARY VARYING, BINARY LARGE OBJECT

9)  DT が数ならば,次による。

a)  次の数型の集合を NDT とする。NUMERIC,DECIMAL,SMALLINT,INTEGER,BIGINT,REAL,

FLOAT 及び DOUBLE PRECISION。NDT 中の各型 に対して,実効的 進精度  (effective binary 

precision)  を次のとおりに定義する。

場合:

i)

が DECIMAL 又は NUMERIC ならば,実効的 2 進精度は,log

2

(10)  と,の処理系定義の最

大精度との積とする。

ii)  が FLOAT ならば,実効的 2 進精度は,の処理系定義の最大精度とする。

iii)  の基数が 10 進ならば,実効的 2 進精度は,log

2

(10)  と,の処理系定義の精度との積とする。

iv)  そうでなければ,実効的 2 進精度は,の処理系定義の精度とする。

b)  次のとおりに決定される全ての優先順序関係の集合を PTC とする。NDT 中の必ずしも異ならな

い二つの型 T1 及び T2 に対して,次による。

場合:

i)

T1 が真数で,かつ,T2 が概数ならば,T1 < T2 とする。

ii)  T1 が概数で,かつ,T2 が真数ならば,T1 > T2 とする。

iii)  T1 の実効的 2 進精度が T2 の実効的 2 進精度より大きいならば,T2 < T1 とする。

iv)  T1 の実効的 2 進精度が T2 の実効的 2 進精度と等しいならば,T2  ≃ T1 とする。

v)  そうでなければ,T1 < T2 とする。

c)

TPL は,次のとおりに決定される。

i)

TPL は,最初は空とする。

ii)  DT と,優先順序関係 DT < 又は DT  ≃ が PTC 中にある NDT 中の全ての型 とを含む型の

集合を ST とする。

iii)  ST 中の型の個数を とする。

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

1)  PTC に従って Tj < Tk を満たす他のどの型 Tj も ST 中に存在しないような ST 中の型 Tk の集

合を NT とする。

2)  場合:

A)  NT 中にただ一つの型 Tk が存在するならば,Tk が TPL 中の最後に追加され,Tk < Tr とい

う形式の全ての関係が PTC から取り除かれる。ここで,Tr は,ST 中のいずれかの型とす
る。

B)  NT 中に二つ以上の型 Tk が存在するならば,NT 中のどの型 Ts も,TPL 中の Tk と同じ位

置に割り当てられ,Tk < TrTk  ≃ TrTs < Tr 及び Ts  ≃ Tr という形式の全ての関係が PTC
から取り除かれる。ここで,Tr は,ST 中のいずれかの型とする。

10)  DT が年月時間隔を指定するならば,TPL は,次のリストとする。

INTERVAL YEAR

11)  DT が日時刻時間隔を指定するならば,TPL は,次のリストとする。


404

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

INTERVAL DAY

12)  DT が DATE を指定するならば,TPL は,次のリストとする。

DATE, TIMESTAMP

注記 293  この細分箇条の適合性規則 1)  参照。

13)  DT が TIME を指定するならば,TPL は,次のリストとする。

TIME

14)  DT が TIMESTAMP を指定するならば,TPL は,次のリストとする。

TIMESTAMP

15)  DT が BOOLEAN を指定するならば,TPL は,次のリストとする。

BOOLEAN

16)  DT が集まり型ならば,DT 中で指定される集まりの種別(ARRAY 又は MULTISET のいずれか)を

CTC とする。

DT の要素型に対する型優先順序リスト中の要素の個数を とする。1 から までの範囲の に対

して,そのような 番目の要素を RIOi とする。TPL は,次のリストとする。

RIO

1

CTC,

RIO

2

CTC, ...,

RIO

n 

CTC

17)  DT が参照型ならば,DT の被参照型に対する型優先順序リスト中の要素の個数を とする。1 から

までの範囲の に対して,そのような 番目の要素を KAWi とする。TPL は,次のリストとする。

REF(KAW

1

),

REF(KAW

2

), ...,

REF(KAW

n

)

18)  DT が行型ならば,TPL は,次のリストとする。

ROW

注記 294  この規則は,この細分箇条中で行型が言及されなかったならば,引き起こしたかもしれ

ない混乱を避けるためだけに記述されている。行型は,

<パラメタの型>として用いるこ

とができないので,行型の型優先順序リストは,決して参照されることがない。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 F054“DATE 型優先順序リスト中の TIMESTAMP”なしでは,DATE の型優先順序リストは,

次のリストとする。

DATE

9.8

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

細分箇条署名

“ホストパラメタモード決定” [構文規則] (

パラメタ: “HOST PARAM DECL”,

パラメタ: “SQL PROC STMT”


405

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

)

機能

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

  (Host parameter mode determination)  は,与えられたホストパラメタに対する

パラメタモードを決定する。

構文規則

1)  この細分箇条の構文規則の適用では,HOST  PARAM  DECL を PD とし,SQL  PROC  STMT を SPS

とする。

2)  PD によって指定されるホストパラメタを とし,PD に直に含まれる<ホストパラメタ名>を PN 

する。

3)  が入力ホストパラメタか,出力ホストパラメタか,又は入出力ホストパラメタ(入力ホストパラ

メタで,かつ,出力ホストパラメタ)かは,次のとおりに決定される。

場合:

a)  PD が<状態パラメタ>ならば,は,出力ホストパラメタとする。

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

場合:

i)

SPS に含まれる<CALL 文>に直に含まれる<ルーチン呼出し>の<SQL 引数リスト>の<SQL 引数

Ai に PN が含まれるならば,次による。

1) <ルーチン呼出し>の当該ルーチンを とする。

2)  の 番目の SQL パラメタを PRi とする。

3)  場合:

A)  Ai に単純に含まれる<相手指定>である<ホストパラメタ指定>に PN が含まれ,かつ,PRi

が出力

SQL パラメタならば,は,出力ホストパラメタとする。

B)  Ai に単純に含まれる<相手指定>である<ホストパラメタ指定>に PN が含まれ,かつ,PRi

が入出力

SQL パラメタ(入力 SQL パラメタで,かつ,出力 SQL パラメタ)ならば,は,

入出力ホストパラメタとする。

C)  そうでなければ,は,入力ホストパラメタとする。

ii)  SPS に含まれる<値指定>又は<単純値指定>に PN が含まれ,かつ,SPS に含まれる<相手指定>

又は

<単純相手指定>に PN が含まれないならば,は,入力ホストパラメタとする。

iii)  SPS に含まれる<相手指定>又は<単純相手指定>に PN が含まれ,かつ,SPS に含まれる<値指定

>又は<単純値指定>に PN が含まれないならば,は,出力ホストパラメタとする。

iv)  SPS に含まれる<値指定>又は<単純値指定>に PN が含まれ,かつ,SPS に含まれる<相手指定>

又は

<単純相手指定>に PN が含まれるならば,は,入出力ホストパラメタとする。

v)  そうでなければ,は,入力ホストパラメタでも,出力ホストパラメタでもない。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

9.9

型名決定


406

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

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

細分箇条署名

“型名決定” [構文規則] (

パラメタ: “TYPE”

) 戻り: “IDENTIFIER”

機能

型名決定

 (Type name determination) は,既定義型又は集まり型の名前に与える<識別子>を決定する。

構文規則

1)  この細分箇条の構文規則の適用では,TYPE を DT とする。この細分箇条の適用の結果は,FNSDT

とする。それは,IDENTIFIER として戻される。

2)

14

 FNSDT は,次のとおりに定義される。

場合:

a)  DT が CHARACTER を指定するならば,

CHAR”を FNSDT とする。

b)  DT が CHARACTER VARYING を指定するならば,

VARCHAR”を FNSDT とする。

c)

DT が CHARACTER LARGE OBJECT を指定するならば,

CLOB”を FNSDT とする。

d)  DT が BINARY を指定するならば,

BINARY”を FNSDT とする。

e)

DT が BINARY VARYING を指定するならば,

VARBINARY”を FNSDT とする。

f)

DT が BINARY LARGE OBJECT を指定するならば,

BLOB”を FNSDT とする。

g)  DT が SMALLINT を指定するならば,

SMALLINT”を FNSDT とする。

h)  DT が INTEGER を指定するならば,

INTEGER”を FNSDT とする。

i)

DT が BIGINT を指定するならば,

BIGINT”を FNSDT とする。

j)

DT が DECIMAL を指定するならば,

DECIMAL”を FNSDT とする。

k)  DT が NUMERIC を指定するならば,

NUMERIC”を FNSDT とする。

l)

DT が REAL を指定するならば,

REAL”を FNSDT とする。

m)  DT が FLOAT を指定するならば,

FLOAT”を FNSDT とする。

n)  DT が DOUBLE PRECISION を指定するならば,

DOUBLE”を FNSDT とする。

o)  DT が DATE を指定するならば,

DATE”を FNSDT とする。

p)  DT が TIME を指定するならば,

TIME”を FNSDT とする。

q)  DT が TIMESTAMP を指定するならば,

TIMESTAMP”を FNSDT とする。

r)

DT が INTERVAL を指定するならば,

INTERVAL”を FNSDT とする。

s)

DT が ARRAY を指定するならば,

ARRAY”を FNSDT とする。

t)

DT が MULTISET を指定するならば,

MULTISET”を FNSDT とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

9.10  同一値の決定

この細分箇条は,ISO/IEC 9075-9 の“9.5  同一値の決定”によって修正される。 


407

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

この細分箇条は,ISO/IEC 9075-14 の“10.6  同一値の決定”によって修正される。 

細分箇条署名

“同一値の決定” [一般規則] (

パラメタ: “FIRST VALUE”,

パラメタ: “SECOND VALUE”

)

機能

同一値の決定

  (Determination of identical values)  は,値の二つの実現値が同一であるか,すなわち,同じ

値の出現であるかどうかを決定する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,FIRST VALUE を V1 とし,SECOND VALUE を V2 とする。

注記 295  二つの値が同一  (identical)  という語が用いられるところではどこでも,この細分箇条が

暗に呼び出される。

2)  場合:

a)  V1 及び V2 が両方ともナル値ならば,V1 は,V2 と同一とする。

b)  V1 がナル値で,かつ,V2 がナル値でないか,又は V1 がナル値でなく,かつ,V2 がナル値なら

ば,V1 は,V2 と同一ではない。

c)

V1 及び V2 が比較可能な既定義型の値ならば,次による。

場合:

i)

V1 及び V2 が文字列ならば,CHARACTER_LENGTH(V1)  を とする。

場合:

1) CHARACTER_LENGTH(V2)  が と等しく,かつ,全ての i,1 ≤ i ≤ に対して,V1 の 番目

の文字が V2 の 番目の文字と,JIS  X  0221  [ISO10646]  の同じ文字位置に対応するならば,

V1 は,V2 と同一とする。

2)  そうでなければ,V1 は,V2 と同一ではない。

ii)  V1 及び V2 が TIME WITH TIME ZONE 又は TIMESTAMP WITH TIME ZONE で,それらが異な

らず,かつ,それらの時刻帯時差フィールドが異ならないならば,V1 は,V2 と同一とする。

iii)  そうでなければ,V1 が V2 と同一であることは,V1 が V2 と異ならないことと同値とする。

d)

09

14

 V1 及び V2 が構成型の値ならば,次による。

場合:

i)

V1 及び V2 が行で,かつ,それらのそれぞれのフィールドが同一ならば,V1 は,V2 と同一と

する。

ii)  V1 及び V2 が配列で,同じ基数をもち,かつ,二つの配列中の同じ順序位置にある要素が同一

ならば,V1 は,V2 と同一とする。

iii)  V1 及び V2 がマルチ集合で,同じ基数 をもち,かつ,全ての に対して,VE1i が VE2i と同

一であるような V1 の列挙 VE1i,1 ≤ i ≤ 及び V2 の列挙 VE2i,1 ≤ i ≤ が存在するならば,


408

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

V1 は,V2 と同一とする。

iv)  V1 及び V2 が参照で,かつ,V1 が V2 と異ならないならば,V1 は,V2 と同一とする。

v)  そうでなければ,V1 は,V2 と同一ではない。

e)

V1 及び V2 が同じ最特定型 MST の値で,かつ,MST が利用者定義型ならば,次による。

場合:

i)

MST が個別型で,その元型が SDT で,かつ,SDT(V1) 及び SDT(V2) の結果が同一ならば,

V1 は,V2 と同一とする。

ii)  MST が構造型で,かつ,MST に対して定義されるどの観測関数 に対しても,呼出し O(V1)  及

び O(V2)  の結果が同一ならば,V1 は,V2 と同一とする。

iii)  そうでなければ,V1 は,V2 と同一ではない。

f)

そうでなければ,V1 は,V2 と同一ではない。

適合性規則

なし。 

9.11  等値性演算

この細分箇条は,ISO/IEC 9075-9 の“9.6  等値性演算”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.8  等値性演算”によって修正される。 

機能

等値性演算

 (Equality operations) は,等値性のテストを含む演算でのデータ型による禁止及び制限を規定

する。

構文規則

1)

等値性演算  (equality operation)  は,次のいずれかとする。

a) <等号演算子>又は<不等号演算子>を指定する<比較述語>。

b) <等号演算子>又は<不等号演算子>を指定する<限定比較述語>。

c) <IN 述語>。

d) <DISTINCT 述語>。

e) <MATCH 述語>。

f) <MEMBER 述語>。

g) NATURAL 又は USING を指定する<結合表>。

h) MAP を指定する<利用者定義順序付け定義>。

i) <POSITION 式>。

2)  等値性演算のオペランド  (operand of an equality operation)  は,次のいずれかとする。

a) <等号演算子>又は<不等号演算子>を指定する<比較述語>に単純に含まれる<行値述語オペランド

>の宣言行型のフィールド。

b) <等号演算子>又は<不等号演算子>を指定する<限定比較述語>に単純に含まれる<行値述語オペラ

ンド

>の宣言行型のフィールド。

c) <等号演算子>又は<不等号演算子>を指定する<限定比較述語>に単純に含まれる<表副問合せ>の

列。

d) <IN 述語>に単純に含まれる<行値述語オペランド>又は<行値式>の宣言行型のフィールド。

e) <IN 述語>に単純に含まれる<表副問合せ>の列。

f) <DISTINCT 述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。


409

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

g) <MATCH 述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。

h) <MATCH 述語>に単純に含まれる<表副問合せ>の列。

i) <MEMBER 述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。

j) NATURAL 又は USING を指定する<結合表>の対応する結合列。

k) MAP を指定する<利用者定義順序付け定義>に単純に含まれる<写像関数指定>によって識別され

SQL 呼出し関数の<戻りデータ型>。

l) <POSITION 式>に単純に含まれる<データ列値式>。

m) <POSITION 式>に単純に含まれる<2 進オクテット値式>。

3)  等値性演算のオペランドの宣言型は,UDT-NC 順序付けであってはならない。

4)  等値性演算のオペランドの宣言型の集合を VS とする。VS が文字列型から成るならば,VS 

TYPESET として,

9.15  照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻

される COLL を等値性演算で用いるべき照合順とする。

5)  等値性演算のオペランド OP の宣言型がマルチ集合型ならば,OP は,マルチ集合要素グループ化操

作のマルチ集合オペランドとする。“9.13  マルチ集合要素グループ化操作”の構文規則及び適合性

規則を適用する。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 S024“拡張構造型”なしでは,適合する SQL 言語中で,等値性演算のオペランドの宣言型は,

ST 順序付けであってはならない。

2)  機能 T042“拡張 LOB データ型提供”なしでは,適合する SQL 言語中で,等値性演算のオペランド

の宣言型は,

LOB 順序付けであってはならない。

3)  機能 S275“高度マルチ集合提供”なしでは,適合する SQL 言語中で,等値性演算のオペランドの

宣言型は,マルチ集合順序付けであってはならない。

注記 296  等値性演算のオペランド OP の宣言型がマルチ集合型ならば,OP は,マルチ集合要素グ

ループ化操作のマルチ集合オペランドとする。“9.13  マルチ集合要素グループ化操作”

の適合性規則を適用する。

9.12  グループ化操作

この細分箇条は,ISO/IEC 9075-9 の“9.7  グループ化操作”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.9  グループ化操作”によって修正される。 

機能

グループ化操作

 (Grouping operations) は,データのグループ化を含む操作でのデータ型による禁止及び

制限を規定する。

構文規則

1)

グループ化操作  (grouping operation)  は,次のいずれかとする。

a) <GROUP

BY 句>。

b) <ウィンドウ区画句>。

c) DISTINCT を指定する<集約関数>。


410

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

d) DISTINCT を直に含む<問合せ指定>。

e) UNION

DISTINCT を単純に含むか又は暗に想定する<問合せ式本体>。

f) EXCEPT を単純に含む<問合せ式本体>。

g) INTERSECT を単純に含む<問合せ項>。

h) <UNIQUE 述語>。

i) <一意性制約定義>。

j) <参照制約定義>。

2)  グループ化操作のオペランド  (operand of a grouping operation)  は,次のいずれかとする。

a) <GROUP

BY 句>のグループ化列。

b) <ウィンドウ区画句>の分割列。

c) DISTINCT を指定する<集約関数>に単純に含まれる<値式>。

d) DISTINCT を直に含む<問合せ指定>の結果の列。

e) UNION

DISTINCT を単純に含むか又は暗に想定する<問合せ式本体>の結果の列。

f) EXCEPT を単純に含む<問合せ式本体>の結果の列。

g) INTERSECT を単純に含む<問合せ項>の結果の列。

h) <UNIQUE 述語>に単純に含まれる<表副問合せ>の列。

i) <一意性制約定義>の<一意列リスト>によって識別される列。

j) <参照制約定義>の参照列。

3)  グループ化操作のオペランドの宣言型は,LOB 順序付け,配列順序付け,マルチ集合順序付け,

UDT-EC 順序付け又は UDT-NC 順序付けであってはならない。

4)  グループ化操作のオペランドの宣言型の集合を VS とする。VS が文字列型から成るならば,VS 

TYPESET として,

9.15  照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻

される COLL をグループ化操作で用いるべき照合順とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 S024“拡張構造型”なしでは,適合する SQL 言語中で,グループ化操作のオペランドの宣言

型は,

ST 順序付けであってはならない。

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

この細分箇条は,ISO/IEC 9075-9 の“9.8  マルチ集合要素グループ化操作”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.10  マルチ集合要素グループ化操作”によって修正される。 

機能

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

  (Multiset element grouping operations)  は,マルチ集合の要素のグループ

化を含む操作のためのマルチ集合の宣言要素型のデータ型による禁止及び制限を規定する。

構文規則

1)

マルチ集合要素グループ化操作  (multiset element grouping operation)  は,次のいずれかとする。

a)  等値性演算のオペランドの宣言型がマルチ集合型であるような等値性演算。

b) <マルチ集合 SET 関数>。


411

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

c) MULTISET

UNION

DISTINCT を指定する<マルチ集合値式>。

d) MULTISET

EXCEPT を指定する<マルチ集合値式>。

e) MULTISET

INTERSECT を指定する<マルチ集合項>。

f) <SUBMULTISET 述語>。

g) <SET 述語>。

h) INTERSECTION を指定する<一般集合関数>。

2)  マルチ集合要素グループ化操作のマルチ集合オペランド  (multiset operand)  は,次のいずれかとする。

a) <マルチ集合 SET 関数>に単純に含まれる<マルチ集合値式>。

b)  MULTISET UNION DISTINCT を単純に含む<マルチ集合値式>に単純に含まれる<マルチ集合値式

>又は<マルチ集合項>。

c) MULTISET

EXCEPT を単純に含む<マルチ集合値式>に単純に含まれる<マルチ集合値式>又は<マ

ルチ集合項

>。

d) MULTISET

INTERSECT を単純に含む<マルチ集合項>に単純に含まれる<マルチ集合項>又は<マ

ルチ集合一次子

>。

e)

オペランドの宣言型がマルチ集合型であるような等値性演算のオペランド。

f) <SUBMULTISET 述語>に単純に含まれる<行値述語オペランド>のフィールド。

g) <SUBMULTISET 述語>に単純に含まれる<マルチ集合値式>。

h) <SET 述語>に単純に含まれる<行値述語オペランド>のフィールド。

i) INTERSECTION を指定する<一般集合関数>に単純に含まれる<値式>。

3)  マルチ集合要素グループ化操作のマルチ集合オペランドの宣言要素型は,LOB 順序付け,配列順序

付け,マルチ集合順序付け,

UDT-EC 順序付け又は UDT-NC 順序付けであってはならない。

4)  マルチ集合要素グループ化操作のマルチ集合オペランドの宣言要素型の集合を VS とする。VS が文

字列型から成るならば,VS を TYPESET として,“9.15  照合順決定”の構文規則を適用する。これ

らの構文規則の適用によって戻される COLL をマルチ集合要素グループ化操作で用いるべき照合順

とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 S024“拡張構造型”なしでは,適合する SQL 言語中で,マルチ集合要素グループ化操作のマ

ルチ集合オペランドの宣言要素型は,

ST 順序付けであってはならない。

9.14  順序付け操作

この細分箇条は,ISO/IEC 9075-9 の“9.9  順序付け操作”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“10.11  順序付け操作”によって修正される。 

機能

順序付け操作

 (Ordering operations) は,データの順序付けを含む操作でのデータ型による禁止及び制限

を規定する。

構文規則

1)  順序付け操作  (ordering operation)  は,次のいずれかとする。


412

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

a) <等号演算子>又は<不等号演算子>を指定しない<比較述語>。

b) <等号演算子>又は<不等号演算子>を指定しない<限定比較述語>。

c) <BETWEEN 述語>。

d) <OVERLAPS 述語>。

e) MAX 又は MIN を指定する<集約関数>。

f) <ソート指定リスト>。

g)  ORDER FULL BY MAP を指定する<利用者定義順序付け定義>。

2)  順序付け操作のオペランド  (operand of an ordering operation)  は,次のいずれかとする。

a) <等号演算子>又は<不等号演算子>を指定しない<比較述語>に単純に含まれる<行値述語オペラン

>の宣言行型のフィールド。

b) <等号演算子>又は<不等号演算子>を指定しない<限定比較述語>に単純に含まれる<行値述語オペ

ランド

>の宣言行型のフィールド。

c) <等号演算子>又は<不等号演算子>を指定しない<限定比較述語>に単純に含まれる<表副問合せ>

の列。

d) <BETWEEN 述語>に単純に含まれる<行値述語オペランド>の宣言行型のフィールド。

e) MAX 又は MIN を指定する<集約関数>に単純に含まれる<値式>。

f) <ソートキー>に単純に含まれる<値式>。

g)  ORDER FULL BY MAP を指定する<利用者定義順序付け定義>に単純に含まれる<写像関数指定>

によって識別される

SQL 呼出し関数の<戻りデータ型>。

3)  順序付け操作のオペランドの宣言型は,LOB 順序付け,配列順序付け,マルチ集合順序付け,参照

順序付け,

UDT-EC 順序付け又は UDT-NC 順序付けであってはならない。

注記 297  さらに,“10.9  <集約関数>”の構文規則によって,MAX 又は MIN のオペランドは,行

順序付けであってはならない。これは,ナルでない行順序付け値の順序付けが全順序付

けではない[例えば,行

 (1, NULL) 及び (NULL, 1) の相対的な順序は,決まらない]

からである。

10.10 <ソート指定リスト>”の一般規則は,ナル値を含む行を全順序付け

するための特殊な規則を提供するが,これらの規則は,

MAX 又は MIN には用いない。

他の順序付け操作では,全順序付けを必要としない。

4)  順序付け操作のオペランドの宣言型の集合を VS とする。VS が文字列型から成るならば,VS 

TYPESET として,

9.15  照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻

される COLL を順序付け操作で用いるべき照合順とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 S024“拡張構造型”なしでは,適合する SQL 言語中で,順序付け操作のオペランドの宣言型

は,

ST 順序付けであってはならない。

9.15  照合順決定

細分箇条署名

“照合順決定” [構文規則] (


413

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

パラメタ: “TYPESET”

) 戻り: “COLL”

機能

照合順決定

 (Collation determination) は,文字列の比較で用いるべき照合順を決定するための規則を規定

する。

構文規則

1)  この細分箇条の構文規則の適用では,TYPESET を TS とする。この細分箇条の適用の結果は,用い

るべき照合順とし,それは,COLL として戻される。

2)  TS 中の少なくとも一つの宣言型は,宣言型照合順をもたなければならない。

3)  TS を DTSET として,

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

用によって戻される RESTYPE を RDT とする。RDT の文字集合 CCS とする。

4)  場合:

a)  比較演算が<参照制約定義>ならば,各参照列に対して,用いるべき照合順は,被参照表の対応す

る列の宣言型照合順とする。

b)  少なくとも一つのオペランドが明示  (explicit)  の照合順起源をもつならば,明示  である照合順起

源をもつどのオペランドも,同じ宣言型照合順 EDTC をもたなければならず,用いるべき照合順

は,EDTC とする。

c) <EXECUTE

IMMEDIATE 文>若しくは<PREPARE 文>によって現行 SQL セション中で準備される<

準備可能文

>,又は直接起動される<直接 SQL 文>に比較演算が含まれ,かつ,CCS が SQL セシ

ョン照合順をもつならば,用いるべき照合順は,その

SQL セション照合順とする。

d)  CCS が SQL クライアントモジュール照合順をもつならば,用いるべき照合順は,その照合順とす

る。

e)

そうでなければ,

暗黙  (implicit)  である照合順起源をもつどのオペランドも,同じ宣言型照合順

IDTC をもたなければならず,用いるべき照合順は,IDTC とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

9.16  配列戻し関数の実行

この細分箇条は,ISO/IEC 9075-13 の“8.5  配列戻し関数の実行”によって修正される。 

細分箇条署名

“配列戻し関数の実行” [一般規則] (

パラメタ: “ARRAY”,

パラメタ: “EFFECTIVE SQL PARAMETER LIST”,

パラメタ: “PROGRAM”

)

機能

配列戻し関数の実行

  (Execution of array-returning function)  は,配列の値を戻す外部関数の実行を定義す


414

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

る。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,ARRAY を AR とし,EFFECTIVE SQL PARAMETER LIST 

ESPL とし,PROGRAM を とする。

2)  AR の基数を ARC とする。

3)  ESPL 中の項目の個数を EN とする。

4)  ESPL 中の 番目のパラメタを ESPi,1 ≤ i ≤ EN とする。

5)  結果データ項目の個数を FRN とする。

6)

13

 の静的 SQL 引数リスト中の値の個数を PN 及び とする。

7)  は,ホスト言語データ型が次のとおりに決定される EN 個のパラメタ PDi のリストをもつ。

a)  の言語が ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI を指定するかどうかに依存し

て,それぞれ,表 16“Ada のためのデータ型対応”,表 17“C のためのデータ型対応”,表 18“COBOL

のためのデータ型対応”,表 19“Fortran のためのデータ型対応”,表 20“M のためのデータ型対

応”,表 21“Pascal のためのデータ型対応”又は表 22“PL/I のためのデータ型対応”を適用デー

タ型対応表  (operative data type correspondences table)  とする。適用データ型対応表の二つの列を,

SQL データ型  (SQL data type)  ”の列及び“ホストデータ型  (host data type)  ”の列として参照

する。

b) 1 から EN までの範囲の に対して,ESPi の<データ型>を PTi とし,適用データ型対応表中で,

SQL データ型”の列の値が PTi の行の“ホストデータ型”の列に記載されたデータ型を,PDi

のホスト言語データ型 DTi とする。

8) 0 を とする。

9)

13

(“open call”を示す)

-1 の値を呼出し型データ項目がもつならば,次による。

a) 1 から EN までの範囲の に対して,パラメタ PDi には,次のとおりに値が設定される。の言語

を LANGUAGE として,PTi を SQL TYPE として,ESPi の値を SQL VALUE として,“9.4 SQL サ
ーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規則の適用によって

戻される HOST VALUE を PDi とする。

b)  が実行される。

c) 1 から EN までの範囲の に対して,の言語を LANGUAGE として,PTi を SQL  TYPE として,

PDi の値を HOST  VALUE として,“9.3 ホスト言語から SQL サーバへの値の受渡し”の一般規則
を適用する。これらの一般規則の適用によって戻される SQL VALUE を ESPi とする。

10)

13

  場合:

a)

13

  例外データ項目の値が[終了条件  成功終了  (successful completion)  に対応する]’00000’か,

又は例外データ項目の値の最初の

2 文字が[終了条件  部分条件付き警告  (warning)  に対応する]

01”ならば,呼出し型データ項目に(“fetch call”を示す)0 を設定する。

b)

13

  例外データ項目の値が[終了条件  データなし  (no data)  に対応する]’02000’ならば,次によ

る。


415

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

i) (PN + FRN)+ N + 1 から  (PN + FRN)+ N + FRN までの範囲の に対して,各 PDi(すなわち,

結果データ項目に対応する

SQL 標識引数)が負の値ならば,AR にナル値を設定する。

ii)  呼出し型データ項目に(

close call”を示す)

1 を設定する。

c)

13

  そうでなければ,呼出し型データ項目に(“close call”を示す)1 を設定する。

11)  呼出し型データ項目が(

fetch call”を示す)値

0 をもつ限り,次の手順が適用される。

a)

13

 EN 個のパラメタ PDi のリストの値が次のとおりに設定される。

i) 1 から EN -2 までの範囲の に対して,の言語を LANGUAGE として,PTi を SQL TYPE とし

て,ESPi の値を SQL VALUE として,“9.4 SQL サーバからホスト言語への値の受渡し”の一般
規則を適用する。これらの一般規則の適用によって戻される HOST VALUE を PDi とする。

ii)  保存領域データ項目に対して,EN  -1 と等しい に対して,PDi には,の前の実行によって

PDi 中に戻された値が設定される。

iii)  呼出し型データ項目に対して,EN と等しい に対して,PDi には,値 0 が設定される。

b)  が実行される。

c) 1 から EN までの範囲の に対して,の言語を LANGUAGE として,PTi を SQL  TYPE として,

PDi の値を HOST  VALUE として,“9.3 ホスト言語から SQL サーバへの値の受渡し”の一般規則
を適用する。これらの一般規則の適用によって戻される SQL VALUE を ESPi とする。

d)

13

  場合:

i)

13

  例外データ項目の値が(終了条件  成功終了  に対応する)’00000’か,又は例外データ項目

の値の最初の

2 文字が(終了条件  部分条件付き警告  に対応する)“01”ならば,次による。

1)  の値を 1 増加させる。

2)  E > ARC ならば,

例外条件:

データ例外  (data exception)  -  配列要素誤り  (array element error)

が引き起こされる。

3)  呼出し型データ項目が 0 ならば,次による。

場合:

A)

13

 (PN + FRN)+ N + 1 から  (PN + FRN)+ N + FRN までの範囲の に対して,各 PDi(すなわ

ち,結果データ項目に対応する

SQL 標識引数)が負の値ならば,ナル値を AR の 番目の

要素とする。

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

場合:

I)

13

    FRN が 1 ならば,結果データ項目の値を AR の 番目の要素とする。

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

1)  番目の結果データ項目の値を RDIi,1 ≤ i ≤ FRN とする。

2)  次の<行値式>の値を AR の 番目の要素とする。

ROW ( RDI

1

, ... ,

RDI

FRN

)

ii)

13

  例外データ項目の値が(終了条件  データなし  に対応する)’02000’ならば,次による。

1)  の値が 0 ならば,AR に基数が 0 の配列を設定する。

2)  呼出し型データ項目に(

close call”を示す)

1 を設定する。

iii)  そうでなければ,呼出し型データ項目に(

close call”を示す)

1 を設定する。

12)

13

  呼出し型データ項目が(“close call”を示す)値 1 をもつならば,次のとおりに値が設定さ


416

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

れた EN 個のパラメタ PDi のリストを用いて が実行される。

a) 1 から EN -2 までの範囲の に対して,

の言語を LANGUAGE として,

PTi を SQL TYPE として,

ESPi の値を SQL VALUE として,“9.4 SQL サーバからホスト言語への値の受渡し”の一般規則を
適用する。これらの一般規則の適用によって戻される HOST VALUE を PDi とする。

b)  保存領域データ項目に対して,EN -1 と等しい に対して,PDi には,の前の実行によって PDi

中に戻された値が設定される。

c)

呼出し型データ項目に対して,EN と等しい に対して,PDi には,値 1 が設定される。

d)  が実行される。

注記 298  “close  call”の出力引数は,無視される。この細分箇条の結果 AR は,既に計算されて

いる。

適合性規則

なし。 

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

細分箇条署名

 “マルチ集合戻し関数の実行” [一般規則] (

パラメタ: “MULTISET”,

パラメタ: “EFFECTIVE SQL PARAMETER LIST”,

パラメタ: “PROGRAM”

)

機能

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

  (Execute of multiset-returning functions)  は,マルチ集合の値を戻す外部関数の

実行を定義する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,MULTISET を MU とし,EFFECTIVE SQL PARAMETER LIST

を ESPL とし,PROGRAM を とする。

2)  MU の要素型を ET とする。

3)  要素型 ET をもつ配列型の処理系定義の最大基数を とする。

4)  配列型 ET ARRAY[C]  を AT とする。

5)  宣言型が AT である配列を AR とする。

6)  AR を ARRAY として,ESPL を EFFECTIVE SQL PARAMETER LIST として,を PROGRAM とし

て,“9.16  配列戻し関数の実行”の一般規則を適用する。

7)  “6.13 <CAST 指定>”の一般規則に従って,AR を MU のマルチ集合型に型変換した結果を MU 

する。

適合性規則

なし。 

9.18  XQuery 正規表現照合


417

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

細分箇条署名

“XQuery 正規表現照合” [一般規則] (

パラメタ: “STRING”,

パラメタ: “PATTERN”,

パラメタ: “POSITION”,

パラメタ: “UNITS”,

パラメタ: “FLAG”

) 戻り: “LIST”

機能

XQuery 正規表現照合  (XQuery regular expression matching) は,文字列中での XQuery 正規表現との一致

ベクトルのリストを決定する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,STRING を とし,PATTERN を PAT とし,POSITION を SP

とし,UNITS を とし,FLAG を FL とする。この細分箇条の適用の結果は,LOMV とする。それ

は,LIST として戻される。

2)  場合:

a)  PAT の文字レパートリが UCS ならば,PAT を とする。

b)  そうでなければ,PAT の UCS への処理系定義の文字変換の結果を とする。

3)  場合:

a)  FL の文字レパートリが UCS ならば,FL を とする。

b)  そうでなければ,FL の UCS への処理系定義の文字変換の結果を とする。

4)  が XQuery 正規表現でないならば,例外条件:データ例外  (data exception)  -  XQuery 正規表現が

正しくない  (invalid XQuery regular expression)  が引き起こされる。

5)  が XQuery オプションフラグでないならば,例外条件:データ例外  -  XQuery オプションフラグ

が正しくない  (invalid XQuery option flag)  が引き起こされる。

6)  の文字単位での長さを LEN とする。

7)  位置/長さ PL は,P = 0 で,かつ,L = 0 か,又は が正の値で,が負でない値で,かつ,P + L ≤ LEN

+ 1 かのいずれかであるような,真数値の位置 と長さ との対とする。が正の値ならば,PL は,

の部分文字列を表現し,その開始位置は,とし,その長さは,とする。が 0 ならば,PL は,

の部分文字列を表現しない。

注記 299  例えば,が'a'ならば,四つの位置/長さ,すなわち,の先頭からの長さ 0 の部分文

字列を示す

 (1,0),の最後からの長さ 0 の部分文字列を示す (2,0),の文字列全体を示

 (1,1) 及び の部分文字列ではないことを示す (0,0) がある。

8)  PAT 中の括弧付きグループの個数を とする。

9)  XQuery 正規表現一致  (XQuery regular expression match)  は,次のとおりに定義される。

場合:


418

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

a)  の文字レパートリが UCS ならば,XQuery 正規表現一致は,次の修正を行った  [XQueryFO]  に

よって,をパラメタ$flags の値として関数 fn:matches()に対して定義される一致とする。

i)

メタ文字“^”,“$”及び“.”は,

[Unicode18]  の“RL1.6 Line boundaries(行境界)”の指針に

従って解釈する。

ii)  複数文字エスケープ (multi-character escape) “\s”は,U+0020 (space),U+0009 (tab),又は

[Unicode18]  の“RL1.6 Line boundaries”によって newline sequence(改行並び)として識別され

る任意の単一文字若しくは

2 文字の並びと一致する。

iii)  複数文字エスケープ“\s”は,複数文字エスケープ“\s”と一致する単一文字と一致しない

任意の単一文字と一致する。

b)  そうでなければ,XQuery 正規表現一致の定義は,処理系定義とする。

10)  一致ベクトル MV は,添え字が 0 から までの G+1 個の位置/長さの配列とする。MV は,キャプ

チャグループについての情報を含む,PAT の XQuery 正規表現一致を表現する。MV[0]  は,PAT 

XQuery 正規表現一致全体を示す位置/長さとする。1 から までの範囲の に対して,MV[i]  は,

MV[0]  によって示される XQuery 正規表現一致内の 番目のキャプチャグループを示す位置/長さと

する。PAT の 番目の括弧付き部分表現が一致しないならば,MV[i]の位置は,0 とする。

注記 300  PAT の XQuery 正規表現一致が“部分文字列ではない (no substring)”になり得ないので,

MV[0]  の位置は,決して 0 ではない。が'a'で,かつ,PAT が'(a)|(b)'のときに,

一致しないキャプチャグループの例が発生する。この例では,

2 番目の括弧付き部分表

現に一致がないので,一致ベクトルは,MV[0] = (1,1),MV[1] = (1,1)  及び MV[2] = (0,0)  に

よって与えられる。

11)  この細分箇条の結果は,次のとおりに定義される一致ベクトルのリスト LOMV とする。

a)  SP –1 を P

0

とし,

0 を L

0

とする。

b)  i ≥ 1 に対して,Pi 及び Li は,次のとおりに再帰的に定義される。Pi > Pi-1 + Li-1–1 及び Pi > Pi-1

を満たすような,中での PAT の最初の XQuery 正規表現一致の 単位での位置を Pi とし,この
一致の 単位での長さを Li とする。 
注記 301  並び Pi は,厳密に増加し,LEN+1 によって上に限界があるので,この再帰的な定義

は,共通要素をもたない有限個数の一致を見つけた後で終了する。

c)

見つかった

XQuery 正規表現一致の個数を とする。

注記 302  一致が存在しない可能性があり,その場合には,は,0 で,LOMV は,空である。

(P0, L0) = (SP – 1, 0)  は,結果中に含まれない。それは,単に,最初の一致の探索を開

始するための位置として用いる。

d) 1 から までの範囲の に対して,次のような一致ベクトルを MVi とする。

i)

MVi [0]  が,位置が Pi で,かつ,長さが Li の位置/長さである。

ii) 1 から までの範囲の に対して,MVi [j]  が次の位置/長さである。

場合:

1)  番目の XQuery 正規表現一致中で,PAT の 番目の括弧付き部分表現が一致しないならば,

位置

0 及び長さ 0。

2)  そうでなければ,番目の XQuery 正規表現一致内の 番目のキャプチャグループの位置及び

長さ。

e) 1~の順序での 個の一致ベクトル MVi のリストを LOMV とする。


419

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

適合性規則

なし。 

9.19  XQuery 正規表現置換

細分箇条署名

“XQuery 正規表現置換” [一般規則] (

パラメタ: “STRING”,

パラメタ: “PATTERN”,

パラメタ: “MATCH”,

パラメタ: “REPLACEMENT”,

パラメタ: “FLAG”

) 戻り: “RESULT”

機能

XQuery 正規表現置換 (XQuery regular expression replacement) は,XQuery 正規表現と一致する部分文字

列を置換文字列に置き換える。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,STRING を STR とし,PATTERN を PAT とし,MATCH 

MV とし,REPLACEMENT を REP とし,FLAG を FL とする。この細分箇条の適用の結果は,文

字列とする。それは,RESULT として戻される。

2)  MV[0]  を PL とする。PL の位置を とし,PL の長さを とする。

3)  が 0 ならば,例外条件:データ例外  (data exception)  -  長さ のデータ列の置換えを試みた

(attempt to replace a zero-length string)  が引き起こされる。

4)  場合:

a)  REP の文字レパートリが UCS ならば,REP を とする。

b)  そうでなければ,REP の UCS への処理系定義の変換の結果を とする。

5)  が XQuery 置換文字列でないならば,例外条件:データ例外  -  XQuery 置換文字列が正しくない

(invalid XQuery replacement string)  が引き起こされる。

6)  STR の最初の  (P -1)  個の文字から成る文字列を STR

1

とする。

7)  STR の 番目から  (P + L -1)  番目までの文字から成る文字列を STR

2

とする。

8)  STR の  (P + L)  番目から最後までの文字から成る文字列を STR

3

とする。

9)  場合:

a)  STRPATREP 及び FL の文字レパートリが UCS ならば,XQuery 関数 fn:replace()の結果

を とする。ここで,$input 引数の値は,STR

2

とし,$pattern 引数の値は,PAT とし,

$replacement 引数の値は,

とし,$flags 引数の値は,FL とする。

b)  そうでなければ,の値は,処理系定義とする。

10)  この細分箇条の結果は,STR

1

と と STR

3

との連結とする。

適合性規則


420

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

なし。 

9.20  データ型の同一性

細分箇条署名

 “データ型の同一性” [構文規則] (

パラメタ: “TYPE1”,

パラメタ: “TYPE2”

)

機能

データ型の同一性

  (Data type identity)  は,二つのデータ型が互換で,かつ,同じ特性をもつかどうかを

決定する。

構文規則

1)  この細分箇条の構文規則の適用では,TYPE1 を PM とし,TYPE2 を とする。

2)  PM と とは,互換でなければならない。

3)  PM が固定長文字列型ならば,PM の長さは,の長さと等しくなければならない。

4)  PM が可変長文字列型ならば,PM の最大長は,の最大長と等しくなければならない。

5)  PM が真数型ならば,PM の精度及び位取りは,それぞれ,の精度及び位取りと等しくなければな

らない。

6)  PM が概数型ならば,PM の精度は,の精度と等しくなければならない。

7)  PM が固定長 2 進オクテット列型ならば,PM の長さは,の長さと等しくなければならない。

8)  PM が可変長 2 進オクテット列型ならば,PM の最大長は,の最大長と等しくなければならない。

9)  PM が<時刻小数秒精度>をもつ日時データ型ならば,PM の<時刻小数秒精度>は,の<時刻小数秒

精度

>と等しくなければならない。

10)  PM が時間隔型ならば,PM の<時間隔修飾子>は,の<時間隔修飾子>と等価でなければならない。

11)  PM が集まり型ならば,次による。

a)  PM の集まりの種類(ARRAY 又は MULTISET)と の集まりの種類とが同じでなければならな

い。

b)  PM が配列型ならば,PM の最大基数は,の最大基数と等しくなければならない。

c)

PM の要素型及び の要素型を二つのデータ型として,この細分箇条の構文規則を適用する。

12)  PM が行型ならば,次による。

a)  PM の次数を とする。

b)  PM の 番目のフィールドのデータ型,及び の 番目のフィールドのデータ型を,それぞれ,

DTFPMi 及び DTFPi とする。1 から までの範囲の に対して,DTFPMi 及び DTFPi を二つのデ
ータ型として,この細分箇条の構文規則を適用する。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

9.21  FROM-SQL 関数の決定


421

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

細分箇条署名

 “FROM-SQL 関数の決定” [構文規則] (

パラメタ: “TYPE”,

パラメタ: “GROUP”

)

機能

FROM-SQL 関数の決定  (Determination of a from-sql function)  は,利用者定義型の名前及びグループの名

前が与えられた利用者定義型の

FROM-SQL 関数を決定する。

構文規則

1)  この細分箇条の構文規則の適用では,TYPE を UDT とし,GROUP を GN とする。

2)  UDT の上位型の集合を SSUDT とする。

3)  GN と等価なグループ名を含むグループ記述子 GD を,データ型記述子に含まれる変換記述子が含

むようなデータ型が SSUDT 中にあるならば,そのデータ型を SUDT とする。

4)

適用可能な FROM-SQL 関数  (applicable from-sql function)  は,GD 中に FROM-SQL 関数があるなら

ば,その

FROM-SQL 関数の特定名によって識別される SQL 呼出し関数とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

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

細分箇条署名

 “置換メソッドのための FROM-SQL 関数の決定” [構文規則] (

パラメタ: “ROUTINE”,

パラメタ: “POSITION”

)

機能

置換メソッドのための

FROM-SQL 関数の決定 (Determination of a from-sql function for an overriding

method)  は,置換メソッドの名前及び SQL パラメタの順序位置が与えられた利用者定義型の FROM-SQL

関数を決定する。

構文規則

1)  この細分箇条の構文規則の適用では,ROUTINE を とし,POSITION を とする。

2)  の原メソッドを OM とする。

3)

適用可能な FROM-SQL 関数  (applicable from-sql function)  は,OM があるならば,その 番目の SQL

パラメタに関連付けられた

FROM-SQL 関数とする。

アクセス規則

なし。 

一般規則

なし。 


422

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

適合性規則

なし。 

9.23  TO-SQL 関数の決定

細分箇条署名

 “TO-SQL 関数の決定” [構文規則] (

パラメタ: “TYPE”,

パラメタ: “GROUP”

)

機能

TO-SQL 関数の決定  (Determination of a to-sql function)  は,利用者定義型の名前及びグループの名前が与

えられた利用者定義型の

TO-SQL 関数を決定する。

構文規則

1)  この細分箇条の構文規則の適用では,TYPE を UDT とし,GROUP を GN とする。

2)  UDT の上位型の集合を SSUDT とする。

3)  GN と等価なグループ名を含むグループ記述子 GD を,データ型記述子に含まれる変換記述子が含

むようなデータ型が SSUDT 中にあるならば,そのデータ型を SUDT とする。

4)

適用可能な TO-SQL 関数  (applicable to-sql function)  は,GD 中に TO-SQL 関数があるならば,その

TO-SQL 関数の特定名によって識別される SQL 呼出し関数とする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

なし。 

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

細分箇条署名

 “置換メソッドのための TO-SQL 関数の決定” [構文規則] (

パラメタ: “ROUTINE”

)

機能

置換メソッドのための

TO-SQL 関数の決定  (Determination of a to-sql function for an overriding method)  は,

置換メソッドの名前が与えられた利用者定義型の

TO-SQL 関数を決定する。

構文規則

1)  この細分箇条の構文規則の適用では,ROUTINE を とする。

2)  の原メソッドを OM とする。

3)

適用可能な TO-SQL 関数  (applicable to-sql function)  は,OM があるならば,その結果に関連付けら

れた

TO-SQL 関数とする。

アクセス規則

なし。 

一般規則


423

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

なし。 

適合性規則

なし。 

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

細分箇条署名

“順序数生成子の次値の生成” [一般規則] (

パラメタ: “SEQUENCE”

) 戻り: “RESULT”

機能

順序数生成子の次値の生成

  (Generation of the next value of a sequence generator)  は,順序数生成子の次値

を生成して戻す。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,SEQUENCE を SEQ とする。この細分箇条の適用の結果は,

V1 とする。それは,RESULT として戻される。

2)  SEQ のデータ型,現在基底値,増分,最大値及び最小値を,それぞれ,DTCBVINCSMAX 

び SMIN とする。

3)  SMIN ≤ CBV + N * INC ≤ SMAX で,かつ,値  (CBV + N * INC)  が現行の周期でまだ戻されていない

ような,負でない整数 が存在するならば,(CBV + N * INC)  を V1 とする。そうでなければ,次

による。

場合:

a)  SEQ の周期選択肢が NO CYCLE ならば,例外条件:データ例外  (data exception)  -  順序数生成

子の限界を超えた  (sequence generator limit exceeded)  が引き起こされる。

b)  そうでなければ,新しい周期が開始される。

場合:

i)

SEQ が昇順順序数生成子ならば,SMIN を V1 とする。

ii)  そうでなければ,SMAX を V1 とする。

4)  場合:

a)  SEQ が昇順順序数生成子ならば,SEQ の現在基底値には,周期中の最も低い未発行の値が設定さ

れる。

b)  そうでなければ,SEQ の現在基底値には,周期中の最も高い未発行の値が設定される。

5)  V1 は,RESULT として戻される。

適合性規則

なし。 

9.26  順序数生成子の作成

細分箇条署名

 “順序数生成子の作成” [構文規則] (


424

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

パラメタ: “OPTIONS”,

パラメタ: “DATA TYPE”

)

 “順序数生成子の作成” [一般規則] (

パラメタ: “OPTIONS”,

パラメタ: “DATA TYPE”

) 戻り: “SEQGENDESC”

機能

順序数生成子の作成

  (Creation of a sequence generator)  は,外部順序数生成子又は内部順序数生成子の定

義を完了する。

構文規則

1)  この細分箇条の構文規則の適用では,OPTIONS を OPT とし,DATA TYPE を DT とする。

2)  OPT は,<共通順序数生成子選択肢>の形式に適合しなければならない。この細分箇条の残りの部分

で用いる

BNF 非終端記号は,OPT の内容を参照する。

3) <順序数生成子 START WITH 選択肢>,<順序数生成子 INCREMENT BY 選択肢>,<順序数生成子

MAXVALUE 選択肢>,<順序数生成子 MINVALUE 選択肢>及び<順序数生成子 CYCLE 選択肢>のそ

れぞれは,高々

1 回指定しなければならない。

4) <順序数生成子 INCREMENT BY 選択肢>が指定されるならば,<順序数生成子増分>を INC とする。

そうでなければ,値が

1 の<符号付き数定数>を INC とする。

5)  INC の値は,0 であってはならない。

6)  INC が負の値ならば,作成される順序数生成子 SEQ は,降順順序数生成子  (descending sequence 

generator)  とする。そうでなければ,SEQ は,昇順順序数生成子  (ascending sequence generator)  と

する。

7)  場合:

a) <順序数生成子 MAXVALUE 選択肢>が指定されるならば,次による。

場合:

i) NO

MAXVALUE が指定されるならば,宣言型 DT の処理系定義の<符号付き数定数>を SMAX

とする。

ii)  そうでなければ,<順序数生成子最大値>を SMAX とする。

b)  そうでなければ,宣言型 DT の処理系定義の<符号付き数定数>を SMAX とする。

8)  場合:

a) <順序数生成子 MINVALUE 選択肢>が指定されるならば,次による。

場合:

i) NO

MINVALUE が指定されるならば,宣言型 DT の処理系定義の<符号付き数定数>を SMIN 

する。

ii)  そうでなければ,<順序数生成子最小値>を SMIN とする。

b)  そうでなければ,宣言型 DT の処理系定義の<符号付き数定数>を SMIN とする。

9)  場合:

a) <順序数生成子 START WITH 選択肢>が指定されるならば,<順序数生成子開始値>を START とす

る。


425

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

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

場合:

i)

SEQ が昇順順序数生成子ならば,SMIN を START とする。

ii)  そうでなければ,SMAX を START とする。

10)  INCSTARTSMAX 及び SMIN の値は,全て,DT の精度及び位取りで正確に表現可能でなければ

ならない。

11)  SMAX の値は,SMIN の値より大きくなければならない。

12)  START の値は,SMIN の値以上で,かつ,SMAX の値以下でなければならない。

13) <順序数生成子 CYCLE 選択肢>が指定されるならば,

<順序数生成子 CYCLE 選択肢>を CYC とする。

そうでなければ,

NO CYCLE を CYC とする。

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,OPTIONS を OPT とし,DATA TYPE を DT とする。この細分

箇条の適用の結果は,SEQ を記述する順序数生成子記述子 SEQDS とする。それは,SEQGENDESC

として戻される。

2)  SEQDS は,次の項目を含む。

a)  長さ 0 の文字列である順序数生成子名。

注記 303  外部順序数生成子の名前は,“11.72 <順序数生成子定義>”の一般規則 1)によって後で

設定される。しかし,内部順序数生成子は,名前がない。

b)  DT のデータ型記述子。

c)

START が設定された開始値。

d)  SMIN によって指定される最小値。

e)

SMAX によって指定される最大値。

f)

INC によって指定される増分。

g)  CYC によって指定される周期選択肢。

h)  START が設定された現在基底値。

適合性規則

なし。 

9.27  順序数生成子の変更

細分箇条署名

 “順序数生成子の変更” [構文規則] (

パラメタ: “OPTIONS”,

パラメタ: “SEQUENCE”

)

 “順序数生成子の変更” [一般規則] (

パラメタ: “OPTIONS”,

パラメタ: “SEQUENCE”

)

機能


426

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

順序数生成子の変更

  (Alterling a sequence generator)  は,内部順序数生成子又は外部順序数生成子の変更

を完了する。

構文規則

1)  この細分箇条の構文規則の適用では,OPTIONS を OPT とし,SEQUENCE を SEQ とする。

2)  OPT は,<順序数生成子変更選択肢>の形式に適合しなければならない。この細分箇条の残りの部分

で用いる

BNF 非終端記号は,OPT の内容を参照する。

3)  SEQ に含まれるデータ型記述子を,DT とする。

4) <順序数生成子変更 RESTART 選択肢>,<順序数生成子 INCREMENT BY 選択肢>,<順序数生成子

MAXVALUE 選択肢>,<順序数生成子 MINVALUE 選択肢>及び<順序数生成子 CYCLE 選択肢>のそ

れぞれは,高々一つ指定しなければならない。

5)  場合:

a)  <順序数生成子増分>が指定されるならば,次による。

i)

<順序数生成子増分>を NEWIV とする。

ii)  NEWIV の値は,0 であってはならない。

b)  そうでなければ,SEQ の増分を NEWIV とする。

6)  場合:

a) <順序数生成子 MAXVALUE 選択肢>が指定されるならば,次による。

場合:

i) NO

MAXVALUE が指定されるならば,宣言型 DT の処理系定義の<符号付き数定数>を

NEWMAX とする。

ii)  そうでなければ,<順序数生成子最大値>を NEWMAX とする。

b)  そうでなければ,SEQ の最大値を NEWMAX とする。

7)  場合:

a) <順序数生成子 MINVALUE 選択肢>が指定されるならば,次による。

場合:

i) NO

MINVALUE が指定されるならば,宣言型 DT の処理系定義の<符号付き数定数>を NEWMIN

とする。

ii)  そうでなければ,<順序数生成子最小値>を NEWMIN とする。

b)  そうでなければ,SEQ の最小値を NEWMIN とする。

8) <順序数生成子 CYCLE 選択肢>が指定されるならば,

<順序数生成子 CYCLE 選択肢>を NEWCYCLE

とする。そうでなければ,SEQ の周期選択肢を NEWCYCLE とする。

9)  場合:

a) <順序数生成子変更 RESTART 選択肢>が指定されないならば,SEQ の現在基底値を NEWVAL 

する。

b) <順序数生成子変更 RESTART 選択肢>が指定され,

かつ,

<順序数生成子再開始値>を含むならば,

<順序数生成子再開始値>を NEWVAL とする。

c)

そうでなければ(

<順序数生成子変更 RESTART 選択肢>が指定されるが,<順序数生成子再開始値

>を含まないならば),SEQ の開始値を NEWVAL とする。

10)  NEWIVNEWMAXNEWMIN 及び NEWVAL の値は,全て,DT の精度及び位取りで正確に表現

可能でなければならない。


427

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

11)  NEWMIN の値は,NEWMAX の値未満でなければならない。

12)  NEWVAL の値は,NEWMIN の値以上,NEWMAX の値以下でなければならない。

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,OPTIONS を OPT とし,SEQUENCE を SEQ とする。

2)  SEQ は,次のとおりに修正される。

a)  増分には,NEWIV が設定される。

b)  最大値には,NEWMAX が設定される。

c)

最小値には,NEWMIN が設定される。

d)  周期選択肢には,NEWCYCLE が設定される。

e)

現在基底値には,NEWVAL が設定される。

適合性規則

なし。 

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

細分箇条署名

 “ビューの階層的な<問合せ式>の生成” [一般規則] (

パラメタ: “VIEW”

)

機能

ビューの階層的な

<問合せ式>の生成  (Generation of the hierarchical <query expression> of a view)  は,ビュ

ーの階層的な

<問合せ式>を生成する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,VIEW を とする。

2)  の元の<問合せ式>を OQE とする。

3)  場合:

a)  が真下位表をもたないならば,OQE を QE とする。

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

i)

の真下位表の個数を とする。

ii)  の真下位表の<表名>の列挙を TN

1

...,TNN とする。

iii)  次の問合せ式を QE とする。

  OQE

UNION ALL CORRESPONDING

  SELECT * FROM ONLY (TN

1

)

UNION ALL CORRESPONDING

  ...


428

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

UNION ALL CORRESPONDING

  SELECT * FROM ONLY (TN

N

)

4)  のビュー記述子中の階層的な<問合せ式>は,QE によって置き換えられる。

適合性規則

なし。 

9.29  ビュー権限の決定

細分箇条署名

“ビュー権限の決定” [一般規則] (

パラメタ: “VIEW”

)

機能

ビュー権限の決定

  (Determination of view privileges)  は,<動作>が INSERT,UPDATE 又は DELETE であ

るビューの権限記述子を決定する。さらに,ビューのビュー権限依存記述子を決定する。

構文規則

なし。 

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,VIEW を とする。

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

有する

<認可識別子>を とする。

3)  を VIEW として,

9.30  ビュー構成要素権限の決定”の一般規則を適用する。これらの一般規則

の適用によって戻される DESCRIPTOR SET をビュー構成要素権限記述子の集合 SVCPD とする。

4)  SVCPD 中のビュー構成要素権限記述子 SPD は,

SPD が別の権限記述子 PD に直に依存しているか,

又は SPD がビュー構成要素権限記述子 SPD2 に直に依存していて,かつ,SPD2 が PD に単純に依

存しているような SPD2 が存在するならば,PD に単純に依存している  (simply dependent)。

5)  のビュー記述子に含まれる元の<問合せ式>であるビュー構成要素を VCN とする。

a)  識別されるオブジェクトが VCN である SVCPD 中の各ビュー構成要素表権限記述子 VCTPD に対

して,次による。

i)

権限記述子 PD1 が次のとおりに作成される。識別されるオブジェクトは,とし,動作は,

VCTPD の動作と同じとし,権限付与者は,特別な付与者の値“_SYSTEM”とし,権限受領者

は,とし,権限が付与可能であることは,VCTPD が付与可能であることと同値とする。

ii)  VCTPD が権限記述子 PD に単純に依存していて,かつ,PD のオブジェクトがビュー構成要素

又はビュー構成要素の列ではないような各権限記述子 PD に対して,ビュー権限依存記述子が

次のとおりに作成される。支援権限記述子は,PD とし,従属権限記述子は,PD1 とする。

b)  識別されるオブジェクトが VCN である SVCPD 中の各ビュー構成要素列権限記述子 VCCPD に対

して,次による。

i)

権限記述子 PD2 が次のとおりに作成される。識別されるオブジェクトは,VCCPD によって識

別される列の対応物である の列とし,動作は,VCCPD の動作と同じとし,権限付与者は,

特別な付与者の値“

_SYSTEM”とし,権限受領者は,とし,権限が付与可能であることは,


429

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

VCCPD が付与可能であることと同値とする。

ii)  VCCPD が権限記述子 PD に単純に依存していて,PD のオブジェクトがビュー構成要素又はビ

ュー構成要素の列ではないような各権限記述子 PD に対して,ビュー権限依存記述子が次のと

おりに作成される。支援権限記述子は,PD とし,従属権限記述子は,PD2 とする。

6)  のどの列 に対しても,識別されるオブジェクトが で,動作が UPDATE で,権限付与者が特別

な付与者の値“

_SYSTEM”で,かつ,権限受領者が である列権限記述子 CPD が存在するならば,

識別されるオブジェクトが で,動作が UPDATE で,権限付与者が特別な付与者の値“_SYSTEM”

で,かつ,権限受領者が である表権限記述子 TPD が作成されるかどうかは,処理系定義とする。

そのような表権限記述子が作成されるならば,それは,そのようなどの列権限記述子にも直接依存

していて,かつ,権限が付与可能であることを示す標識をそのような全ての列権限記述子がもつな

らば,権限が付与可能であることを示す標識をもつ。

TPD が作成されるならば,の各列 に対して一つのビュー権限依存記述子で,ビュー権限依存

記述子の集まりが作成され,そのビュー権限依存記述子の支援権限記述子は,CPD とし,従属権限

記述子は,TPD とする。

7)  のどの列 に対しても,識別されるオブジェクトが で,動作が INSERT で,権限付与者が特別

な付与者の値“

_SYSTEM”で,かつ,権限受領者が である列権限記述子 CPD が存在するならば,

識別されるオブジェクトが で,動作が INSERT で,権限付与者が特別な付与者の値“_SYSTEM”

で,かつ,権限受領者が である表権限記述子 TPD が作成されるかどうかは,処理系定義とする。

そのような表権限記述子が作成されるならば,それは,そのようなどの列権限記述子にも直接依存

していて,かつ,権限が付与可能であることを示す標識をそのような全ての列権限記述子がもつな

らば,権限が付与可能であることを示す標識をもつ。

TPD が作成されるならば,の各列 に対して一つのビュー権限依存記述子で,ビュー権限依存

記述子の集まりが作成され,そのビュー権限依存記述子の支援権限記述子は,CPD とし,従属権限

記述子は,TPD とする。

8)  SVCPD 中の全てのビュー構成要素権限記述子が破壊される。

適合性規則

なし。 

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

細分箇条署名

“ビュー構成要素権限の決定” [一般規則] (

パラメタ: “VIEW”

) 戻り: “DESCRIPTOR SET”

機能

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

 (Determination of view component privileges)  は,ビューの全てのビュー構成

要素に対するビュー構成要素権限記述子を決定する。

構文規則

なし。 

アクセス規則

なし。 

一般規則


430

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

1)  この細分箇条の一般規則の適用では,VIEW を とする。この細分箇条の適用の結果は,SVCPD 

する。それは,DESCRIPTOR SET として戻される。

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

有する

<認可識別子>を とする。

3)  のビュー構成要素の列挙を VC

1

...,VCN とする。列挙は,次の特性をもたなければならない。

a) 1 から までの範囲の全ての 及び に対して,VCi が VCj に含まれるならば,i < とする。

b) 1 から までの範囲の全ての 及び に対して,VCi が,<WITH リスト要素>に単純に含まれる<

問合せ式

>で,かつ,VCj が VCi によって定義される表を参照するならば,i < とする。

注記 304  の元の<問合せ式> OQE の BNF の深さ優先の左から右への走査が,そのような列挙

を得るための一つの方法である。必然的に,VCN は,OQE である。

4)  が実効的に更新可能ならば,幾つかのビュー構成要素権限記述子を再帰的に作成するために,次

の部分規則が実行される。次の部分規則は,ビュー構成要素権限が別の権限記述子に

直に依存して

いる  (immediately dependent)  ときも,再帰的に定義する。

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

場合:

a)  VCi が更新可能な<問合せ指定>ならば,次による。

i)

VCi の<FROM 句>が,ただ一つの<表参照> TR を含むならば,次による。

1)  場合:

A)  TR が<表名>又は<遷移表名>ならば,TR によって参照される表に関する に適用可能な権

限の集合を とする。

B)  そうでなければ,TR は,<問合せ名>で,VCj を参照する。ここで,j < とする。識別され

るオブジェクトが VCj か又は VCj の列であるビュー構成要素権限記述子の集合を とする。

2)  動作が DELETE である表権限記述子 PD を が含むならば,ビュー構成要素表権限記述子が

次のとおりに作成される。識別されるオブジェクトは,VCi とし,動作は,DELETE とし,
権限付与者は,特別な付与者の値“

_SYSTEM”とし,権限受領者は,とする。権限が付与

可能であることは,PD が付与可能な権限を示すことと同値とする。

3)  VCi の更新可能な各列 に対して,TR によって識別される表中の の対応物を CC とする。

A)  動作が UPDATE(CC)  である列権限記述子 PD を が含むならば,ビュー構成要素表権限記

述子が次のとおりに作成される。識別されるオブジェクトは,とし,動作は,UPDATE

とし,権限付与者は,特別な付与者の値“

_SYSTEM”とし,権限受領者は,とする。権

限が付与可能であることは,PD が付与可能な権限を示すことと同値とする。権限記述子は,

PD に直に依存している。

B)  が挿入可能で,かつ,動作が INSERT(CC)  である列権限記述子 PD を が含むならば,

ビュー構成要素表権限記述子が次のとおりに作成される。識別されるオブジェクトは,C

とし,動作は,

INSERT とし,権限付与者は,特別な付与者の値“_SYSTEM”とし,権限

受領者は,とする。権限が付与可能であることは,PD が付与可能な権限を示すことと同

値とする。権限記述子は,PD に直に依存している。

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

1)  VCi が表 LUT に関して 1 対 1 対応であるような VCi のどの末端で基となる表 LUT に対して

も,に適用可能な権限が,LUT に関する DELETE を含むならば,識別されるオブジェクト


431

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

が VCi で,動作が DELETE で,権限付与者が特別な付与者の値“_SYSTEM”で,かつ,権
限受領者が であるビュー構成要素表権限記述子が作成される。権限が付与可能であること

は,に適用可能な権限が,そのようなそれぞれの LUT に関する付与可能な DELETE 権限

を含むことと同値とする。権限記述子は,識別されるオブジェクトがそのような末端で基と

なる表で,動作が

DELETE で,かつ,権限受領者が であるどの権限記述子にも直に依存し

ている。

2)  VCi の更新可能な各列 に対して,に対する対応物 CC をもつ VCi の末端で基となる表を

LUT とする。

A)  に適用可能な権限が,LUT に関する UPDATE(CC)  を含むならば,ビュー構成要素列権

限記述子 VCCPD が次のとおりに作成される。識別されるオブジェクトは,とし,動作

は,

UPDATE とし,権限付与者は,特別な付与者の値“_SYSTEM”とし,権限受領者は,

とする。権限が付与可能であることは,に適用可能な権限が,LUT に関する付与可能

UPDATE(CC)  権限を含むことと同値とする。権限記述子は,識別されるオブジェクトが

CC で,動作が UPDATE で,かつ,権限受領者が であるどの権限記述子にも直に依存し

ている。

B)  が挿入可能で,かつ,に適用可能な権限が,LUT に関する INSERT (CC)  を含むならば,

ビュー構成要素列権限記述子 VCCPD が次のとおりに作成される。識別されるオブジェク

トは,とし,動作は,INSERT とし,権限付与者は,特別な付与者の値“_SYSTEM”と

し,権限受領者は,とする。権限が付与可能であることは,に適用可能な権限が,LUT

に関する付与可能な

INSERT(CC)  権限を含むことと同値とする。権限記述子は,識別され

るオブジェクトが CC で,動作が INSERT で,かつ,権限受領者が であるどの権限記述

子にも直に依存している。

b)  VCi が<表値構成子>ならば,VCi をオブジェクトとして識別するどのビュー構成要素権限記述子

も,存在しない。

c)

VCi が<明示表>ならば,<明示表>によって識別される表を とする。

i)

に適用可能な権限が に関する DELETE を含むならば,識別されるオブジェクトが VCi で,
動作が

DELETE で,権限付与者が特別な付与者の値“_SYSTEM”で,かつ,権限受領者が A

であるビュー構成要素表権限記述子が作成される。権限が付与可能であることは,に適用可

能な権限が,に関する付与可能な DELETE 権限を含むことと同値とする。権限記述子は,識

別されるオブジェクトが で,動作が DELETE で,かつ,権限受領者が である権限記述子に

直に依存している。

ii)  VCi の更新可能な各列 に対して,中の に対する対応物を CC とする。に適用可能な権

限が,に関する UPDATE(CC)  を含むならば,ビュー構成要素列権限記述子 VCCPD が次のと

おりに作成される。識別されるオブジェクトは,とし,動作は,UPDATE とし,権限付与者

は,特別な付与者の値“

_SYSTEM”とし,権限受領者は,とする。権限が付与可能であるこ

とは,に適用可能な権限が,に関する付与可能な UPDATE(CC)  権限を含むことと同値とす

る。権限記述子は,識別されるオブジェクトが CC で,動作が UPDATE で,かつ,権限受領者

が である権限記述子に直に依存している。

iii)  VCi の更新可能な各列 に対して,中の に対する対応物を CC とする。に適用可能な権

限が,に関する INSERT (CC)  を含むならば,ビュー構成要素列権限記述子 VCCPD が次のと


432

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

おりに作成される。識別されるオブジェクトは,とし,動作は,INSERT とし,権限付与者

は,特別な付与者の値“

_SYSTEM”とし,権限受領者は,とする。権限が付与可能であるこ

とは,に適用可能な権限が,に関する付与可能な INSERT (CC)  権限を含むことと同値とす

る。権限記述子は,識別されるオブジェクトが CC で,動作が INSERT で,かつ,権限受領者

が である権限記述子に直に依存している。

d)  VCi が<問合せ式>ならば,次による。

場合:

i)

VCi が<単純表> ST ならば,ST が VCj であるような j < が存在する。

1)  VCj の各ビュー構成要素表権限記述子 VCTPD に対して,新しいビュー構成要素表権限記述

子が次のとおりに作成される。識別されるオブジェクトは,VCi とし,権限付与者は,特別
な付与者の値“

_SYSTEM”とし,権限受領者は,とし,動作,及び権限が付与可能かどう

かを示す標識は,VCTPD と同じとする。権限記述子は,VCTPD に直に依存している。

2)  VCj の各ビュー構成要素列権限記述子 VCCPD に対して,VCi の新しいビュー構成要素列権限

記述子が次のとおりに作成される。識別されるオブジェクトは,VCCPD によって識別される

VCj の列の対応物である VCi の列とし,権限付与者は,特別な付与者の値“_SYSTEM”とし,
権限受領者は,とし,動作,及び権限が付与可能かどうかを示す標識は,VCCPD と同じと

する。権限記述子は,VCCPD に直に依存している。

ii)  そうでなければ,VCi は,UNION ALL を直に含む。VCi の左側のオペランド及び右側のオペラ

ンドを,それぞれ,VCl 及び VCr とする。

1)  識別されるオブジェクトが VCl で,動作が DELETE であるビュー構成要素表権限記述子

VCTPDl が存在し,かつ,識別されるオブジェクトが VCr で,動作が DELETE であるビュー
構成要素表権限記述子 VCTPDr が存在するならば,新しいビュー構成要素表権限記述子が次
のとおりに作成される。識別されるオブジェクトは,VCi とし,動作は,DELETE とし,権
限付与者は,特別な付与者の値“

_SYSTEM”とし,権限受領者は,とし,権限が付与可能

であることは,権限が付与可能であることを VCTPDl 及び VCTPDr の両方が示すことと同値
とする。権限記述子は,VCTPDl 及び VCTPDr に直に依存している。

2)  VCi の更新可能な各列 に対して,VCl 及び VCr 中の の対応物を,それぞれ,Cl 及び Cr

とする。識別されるオブジェクトが Cl で,動作が UPDATE であるビュー構成要素列権限記
述子 VCCPDl が存在し,かつ,識別されるオブジェクトが Cr で,動作が UPDATE であるビ
ュー構成要素列権限記述子 VCCPDr が存在するならば,新しいビュー構成要素列権限記述子
が次のとおりに作成される。識別されるオブジェクトは,とし,動作は,UPDATE とし,

権限付与者は,特別な付与者の値“

_SYSTEM”とし,権限受領者は,とし,権限が付与可

能であることは,権限が付与可能であることを VCCPDl 及び VCCPDr の両方が示すことと同
値とする。権限記述子は,VCCPDl 及び VCCPDr に直に依存している。

5)  この細分箇条の一般規則によって作成されるビュー構成要素表権限記述子及びビュー構成要素列権

限記述子の集合 SVCPD は,この細分箇条の適用の結果とする。

適合性規則

なし。 

10  その他の共通要素


433

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

10.1  <時間隔修飾子>

機能

<時間隔修飾子> (<interval qualifier>)  は,時間隔データ型の精度を指定する。

形式

<時間隔修飾子> ::=

  <開始フィールド> TO <終了フィールド>

 |

<単一日時フィールド>

<開始フィールド> ::=

  <非秒基本日時フィールド>

      [ <左括弧> <時間隔先行フィールド精度> <右括弧> ]

<終了フィールド> ::=

  <非秒基本日時フィールド>

| SECOND [ <左括弧> <時間隔小数秒精度> <右括弧> ]

<単一日時フィールド> ::=

  <非秒基本日時フィールド>

      [ <左括弧> <時間隔先行フィールド精度> <右括弧> ]

| SECOND [ <左括弧> <時間隔先行フィールド精度>

      [ <コンマ> <時間隔小数秒精度> ] <右括弧> ]

<基本日時フィールド> ::=

  <非秒基本日時フィールド>

 |

SECOND

<非秒基本日時フィールド> ::=

  YEAR

 |

MONTH

 |

DAY

 |

HOUR

 |

MINUTE

<時間隔小数秒精度> ::=

  <符号なし整数>

<時間隔先行フィールド精度> ::=

  <符号なし整数>

構文規則

1) <基本日時フィールド>には,有効性の順序がある。その順序は,最上位有効フィールドから最下位

有効フィールドの順に,

YEAR,MONTH,DAY,HOUR,MINUTE 及び SECOND とする。i > 

らば,

<時間隔先行フィールド精度>  をもつ<開始フィールド>又は<単一日時フィールド>は,<時

間隔先行フィールド精度

をもつ<開始フィールド>又は<単一日時フィールド>よりも上位とする。

i > ならば,<時間隔小数秒精度>  をもつ<終了フィールド>又は<単一日時フィールド>は,<時間

隔小数秒精度

をもつ<終了フィールド>又は<単一日時フィールド>よりも下位とする。

2) TO が指定されるならば,<開始フィールド>は,<終了フィールド>よりも上位でなければならず,<

開始フィールド

>は,MONTH を指定してはならない。<開始フィールド>が YEAR を指定するなら


434

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

ば,

<終了フィールド>は,MONTH を指定しなければならない。

3) <時間隔先行フィールド精度>の最大値は,処理系定義とするが,2 以上でなければならない。

4) <時間隔小数秒精度>の最大値は,処理系定義とするが,6 以上でなければならない。

5) <時間隔先行フィールド精度>が指定されるならば,それは,1 以上で,かつ,処理系定義の最大値

以下でなければならない。

<時間隔先行フィールド精度>が指定されないならば,2 の<時間隔先行フ

ィールド精度

>が暗に想定される。

6) <時間隔小数秒精度>が指定されるならば,それは,0 以上で,かつ,処理系定義の最大値以下でな

ければならない。

SECOND が指定され,かつ,<時間隔小数秒精度>が指定されないならば,6 の<

時間隔小数秒精度

>が暗に想定される。

7) <開始フィールド>又は<単一日時フィールド>以外のフィールドの精度は,次による。

場合:

a)  フィールドが SECOND でないならば,2 とする。

b)  そうでなければ,小数点以上は,2 桁とし,小数点以下は,陽に指定されるか又は暗に想定され

<時間隔小数秒精度>とする。

アクセス規則

なし。 

一般規則

1) <時間隔修飾子>によって修飾される項目は,<時間隔修飾子>によって識別される日時フィールドを

含む。

場合:

a) <時間隔修飾子>が<単一日時フィールド>を指定するならば,<時間隔修飾子>は,単一の<基本日

時フィールド

>を識別する。その項目の最上位有効  (most significant) <基本日時フィールド>又は最

下位有効  (least signifgicant) <基本日時フィールド>の参照は,その<基本日時フィールド>を参照す

る。

b)  そうでなければ,<時間隔修飾子>は,<開始フィールド>から<終了フィールド>までの,両端を含

めたそれらの日時フィールドを識別する。

2) <時間隔先行フィールド精度>は,次の精度を指定する。

場合:

a) <基本日時フィールド>が SECOND ならば,秒の<基本日時フィールド>の指定されるか又は暗に

想定される小数点以上の

10 進桁数の精度を指定する。

b)  そうでなければ,最初の<基本日時フィールド>の 10 進桁数の精度を指定する。

3) <時間隔小数秒精度>は,<基本日時フィールド> SECOND 中で指定されるか又は暗に想定される小

数点以下の

10 進桁数の精度を指定する。

4)  時間隔型の項目の位置単位での長さは,次のとおりに計算する。

場合:

a)  項目が年月時間隔ならば,次による。

場合:

i) <時間隔修飾子>が<単一日時フィールド>ならば,項目の位置単位での長さは,<単一日時フィ

ールド

>の暗に想定されるか又は陽に指定される<時間隔先行フィールド精度>とする。

ii)  そうでなければ,項目の位置単位での長さは,<開始フィールド>の暗に想定されるか又は陽に


435

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

指定される

<時間隔先行フィールド精度>と,(<終了フィールド>である<非秒基本日時フィー

ルド

>の長さ)2 と,(<年月定数>中の<年>と<月>との間の<負符号>の長さ)1 との和とする。

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

場合:

i) <時間隔修飾子>が,SECOND を指定しない<単一日時フィールド>ならば,項目の位置単位での

長さは,

<単一日時フィールド>の暗に想定されるか又は陽に指定される<時間隔先行フィール

ド精度

>とする。

ii) <時間隔修飾子>が,SECOND を指定する<単一日時フィールド>ならば,項目の位置単位での長

さは,

<単一日時フィールド>の暗に想定されるか又は陽に指定される<時間隔先行フィールド

精度

>と,暗に想定されるか又は陽に指定される<時間隔小数秒精度>との和とする。<時間隔小

数秒精度

>が 1 以上ならば,項目の位置単位での長さに,(<整数秒値>と<小数秒>との間の<ピ

リオド

>の位置単位での長さ)1 を加える。

iii)  そうでなければ,<時間隔修飾子>の<開始フィールド>よりも下位で,かつ,<終了フィールド>

よりも上位の日時フィールドを

関係する日時フィールド  (participating datetime field)  とする。

各関係する日時フィールドの位置単位での長さは,

2 とする。

場合:

1) <終了フィールド>が SECOND ならば,項目の位置単位での長さは,暗に想定されるか又は

陽に指定される

<時間隔先行フィールド精度>と,関係する日時フィールドの個数の 3 倍(各

関係する日時フィールドは,位置単位で長さ

2 をもち,それらに先行する<負符号>又は<コ

ロン

>は,位置単位で長さ 1 をもつ。)と,暗に想定されるか又は陽に指定される<時間隔小

数秒精度

>と,(<時間隔小数秒精度>以外の<終了フィールド>の位置単位での長さに,先行す

<コロン>の位置単位での長さを加えた長さ)3 との和とする。<時間隔小数秒精度>が 1 以

上ならば,項目の位置単位での長さに,(

<終了フィールド>によって識別されるフィールド

内の

<ピリオド>の位置単位での長さ)1 を加える。

2)  そうでなければ,項目の位置単位での長さは,暗に想定されるか又は陽に指定される<時間隔

先行フィールド精度

>と,関係する日時フィールドの個数の 3 倍(各関係する日時フィールド

は,位置単位で長さ

2 をもち,それらに先行する<負符号>又は<コロン>は,位置単位で長さ

1 をもつ。)と,(<終了フィールド>の位置単位での長さ)2 と,(<終了フィールド>に先行す

<コロン>の位置単位での長さ)1 との和とする。

適合性規則

1)  機能 F052“時間隔及び日時の算術”なしでは,適合する SQL 言語は,<時間隔修飾子>を含んでは

ならない。

10.2  <LANGUAGE 句>

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

機能

<LANGUAGE 句> (<language clause>)  は,プログラム言語を指定する。

形式

<LANGUAGE 句> ::=

  LANGUAGE  <言語名>

13

<言語名> ::=


436

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

  ADA

 |

C

 |

COBOL

 |

FORTRAN

| M | MUMPS

 |

PASCAL

 |

PLI

 |

SQL

構文規則

1) MUMPS が指定されるならば,M が暗に想定される。

アクセス規則

なし。 

一般規則

1) <LANGUAGE 句>によって指定されるホスト言語は,<言語名>のキーワードによって識別される規

格で規定される。表 15“標準プログラム言語”は,この関係を規定する。

13

  表 15-標準プログラム言語

言語キーワード 

関連規格 

ADA [ISO8652
C

JIS X 3010 [ISO9899]

COBOL

JIS X 3002 [ISO1989]

FORTRAN

JIS X 3001-1 [ISO1539]

M [ISO11756
PASCAL

JIS X 3008 [ISO7185]  及び  [ISO10206]

PLI [ISO6160
SQL

JIS X 3005 規格群(ISO/IEC 9075

適合性規則

なし。 

10.3  <パス指定>

機能

<パス指定> (<path specification>)  は,SQL 呼出しルーチンを探索する順序を指定する。

形式

<パス指定> ::=

 PATH

<スキーマ名リスト>

<スキーマ名リスト> ::=

<スキーマ名> [ { <コンマ> <スキーマ名> }... ]

構文規則

1) <スキーマ名リスト>に含まれるどの二つの<スキーマ名>も,等価であってはならない。

アクセス規則

なし。 

一般規則


437

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

なし。 

適合性規則

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

含んではならない。

10.4  <ルーチン呼出し>

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

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

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

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

細分箇条署名

 “<ルーチン呼出し>” [構文規則] (

パラメタ: “ROUTINE INVOCATION”,

パラメタ: “SQLPATH”,

パラメタ: “UDT”

)

 “<ルーチン呼出し>” [一般規則] (

パラメタ: “STATIC SQL ARG LIST”,

パラメタ: “SUBJECT ROUTINE”

)

機能

<ルーチン呼出し> (<routine invocation>)  は,SQL 呼出しルーチンを呼び出す。

形式

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

<ルーチン名> <SQL 引数リスト>

<ルーチン名>  ::=

 [

<スキーマ名> <ピリオド> ] <被修飾識別子>

<SQL 引数リスト>  ::=

<左括弧> [<SQL 引数> [ { <コンマ> <SQL 引数> }... ] ] <右括弧>

<SQL 引数>  ::=

  <値式>

 |

<一般式>

 |

<相手指定>

 |

<文脈型付き値指定>

 |

<名前付き引数指定>

<一般式>  ::=

<値式> AS <パス解決利用者定義型名>

<名前付き引数指定>  ::=

 <SQL パラメタ名> <名前付き引数代入トークン>

<名前付き引数 SQL 引数>

<名前付き引数 SQL 引数>  ::=


438

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

  <値式>

 |

<相手指定>

 |

<文脈型付き値指定>

構文規則

1)  この細分箇条の構文規則の適用では,ROUTINE  INVOCATION を RI とし,SQLPATH を TP とし,

UDT を UDTSM とする。

2)  RI に直に含まれる<ルーチン名>を RN とする。

3)  場合:

a)  RI が<CALL 文>に直に含まれるならば,RI の<SQL 引数リスト>は,<ルーチン呼出し>を介在し

ないで

<一般式>を含んではならない。

b)  RI が<CALL 文>に直に含まれないならば,RI の<SQL 引数リスト>は,<名前付き引数指定>又は<

文脈型付き値指定

>を含んではならない。

4) <SQL 引数リスト>が,<名前付き引数指定>である<SQL 引数>を含むならば,その<SQL 引数リスト

>に含まれる全ての<SQL 引数>が<名前付き引数指定>でなければならない。<SQL 引数リスト>に含

まれるどの二つの

<SQL パラメタ名>も,等価であってはならない。

5)  場合:

a)  RI が<CALL 文>に直に含まれるとき,SQL 呼出しルーチン が SQL 呼出し手続で,かつ,の<

ルーチン名

>の<被修飾識別子>が RN の<被修飾識別子>と等価ならば,は,RI に対する潜在的

な候補ルーチン  (possibly candidate routine)  とする(以下,単純に“潜在的な候補ルーチン”とい

う。

)。

b)  RI が<メソッド選択>に直に含まれるとき,SQL 呼出しルーチン がインスタンス SQL 呼出しメ

ソッドで,かつ,の<ルーチン名>の<被修飾識別子>が RN の<被修飾識別子>と等価ならば,R

は,RI に対する潜在的な候補ルーチン  とする。

c)

RI が<構成メソッド選択>に直に含まれるとき,SQL 呼出しルーチン が SQL 呼出し構成メソッ

ドで,かつ,の<ルーチン名>の<被修飾識別子>が RN の<被修飾識別子>と等価ならば,は,

RI に対する潜在的な候補ルーチン  とする。

d)  RI が<静的メソッド選択>に直に含まれるとき,SQL 呼出しルーチン が静的 SQL 呼出しメソッ

ドで,の<ルーチン名>の<被修飾識別子>が RN の<被修飾識別子>と等価で,かつ,のメソッ

ド指定記述子が,UDTSM の利用者定義型記述子又は UDTSM の上位型の利用者定義型記述子に

含まれるならば,は,RI に対する潜在的な候補ルーチン  とする。

e)

そうでなければ,

SQL 呼出しルーチン が SQL 呼出し通常関数で,かつ,の<ルーチン名>の<

被修飾識別子

>が RN の<被修飾識別子>と等価ならば,は,RI に対する潜在的な候補ルーチン  と

する。

6)

04

  場合:

a)  RI が<SQL スキーマ文>に含まれるならば,

SQL 呼出しルーチン が実行可能ルーチン  (executable 

routine)  であることは,が潜在的な候補ルーチンで,かつ,その<SQL スキーマ文>を含むスキ

ーマを所有する

<認可識別子>に適用可能な権限が,に関する EXECUTE を含むことと同値とす

る。

b)  そうでなければ,SQL 呼出しルーチン が実行可能ルーチン  であることは,が潜在的な候補

ルーチンで,かつ,現行の権限が に関する EXECUTE を含むことと同値とする。


439

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

7)  場合:

a)  RI が<メソッド選択>,<静的メソッド選択>又は<構成メソッド選択>に直に含まれるならば,TP

を DP とする。

b) SQL 呼出しルーチンが動作中であることを現行 SQL セションのルーチン実行文脈が示すならば,

そのルーチン実行文脈のルーチン

SQL パスを DP とする。

c)

04

 RI が<スキーマ定義>に含まれるならば,その<スキーマ定義>の SQL パスを DP とする。

d) <EXECUTE

IMMEDIATE 文>若しくは<PREPARE 文>によって現行 SQL セション中で準備される<

準備可能文

>,又は直接起動される<直接 SQL 文>に RI が含まれるならば,現行 SQL セションの

SQL パスを DP とする。

e)

そうでなければ,RI を含む<SQL クライアントモジュール定義>の SQL パスを DP とする。

8)  RI の<SQL 引数リスト> AL 中の<SQL 引数>の個数を NA とする。

9)  RI が<CALL 文>に直に含まれるならば,次による。

a)  呼出し可能ルーチン  (invocable routine)  は,次の条件が全て真となるような実行可能ルーチンで

ある

SQL 呼出しルーチン SIR とする。

i)

SIR が SIRNA 個の SQL パラメタをもつ。ここで,SIRNA ≥ NA とする。

ii) <SQL 引数リスト>が,<名前付き引数指定>である<SQL 引数>を含まないならば,各 kNA < k

≤ SIRNA に対して,番目の SQL パラメタが既定値をもつことを示す標識を SIR のルーチン記

述子が含む。

b)  RI の候補ルーチン  (candidate routine)  の集合は,次のとおりに定義される。

場合:

i)

RN が<スキーマ名>を含まないならば,RI の候補ルーチンは,<スキーマ名>が DP 中にある全

てのスキーマの呼出し可能ルーチンの和集合とする。

ii)  RN が<スキーマ名> SN を含むならば,

SN は,

スキーマ の<スキーマ名>でなければならない。

RI の候補ルーチンは,

(あるならば,

に含まれる呼出し可能ルーチンとする。

c)

RI の各候補ルーチン PCR に対して,AL が少なくとも一つの<名前付き引数指定>を含むならば,

次による。

i) <名前付き引数指定>に直に含まれる各<SQL パラメタ名>の,名前が等価な PCR のパラメタ名

との全ての対応付けを MAP とする。MAP が存在しないならば,PCR は,候補ルーチンの集合

から取り除かれる。

ii)  等価な<SQL パラメタ名>をもつ<名前付き引数指定>が AL 中にない SQL パラメタ SPWOD が存

在し,SPWOD が既定値をもつことを示す標識を PCR のルーチン記述子が含まないならば,PCR

は,候補ルーチンの集合から取り除かれる。

d)  場合:

i)

RN が<スキーマ名>を含まないならば,DP 中で先行し,かつ,RI の少なくとも一つの候補ル

ーチンを含む他のどのスキーマも存在しないような,DP に含まれ,RI の少なくとも一つの候

補ルーチンを含むスキーマを S1 とする。S1 に含まれないどのルーチンも,候補ルーチンの集

合から取り除かれる。

ii)  RN が<スキーマ名>を含むならば,<スキーマ名>によって識別されるスキーマを S1 とする。S1

は,RI の少なくとも一つの候補ルーチンを含まなければならない。S1 に含まれないどのルー

チンも,候補ルーチンの集合から取り除かれる。


440

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

e)

RI の最小パラメタ数の候補ルーチン  (candidate routines with minimal number of parameters)  の集合

は,より少ないパラメタをもつ他のどの候補ルーチンも存在しないようなそれらの候補ルーチン

から成る。

注記 305  最小パラメタ数の候補ルーチンの集合中には,高々一つのルーチンが存在する。

f)

RI の当該ルーチン SR は,最小パラメタ数の候補ルーチンがほかに存在しないような,RI の最小

パラメタ数の候補ルーチンである

SQL 呼出しルーチンとする。

g)  SR の SQL パラメタの個数を SRNP とする。SR の 番目の SQL パラメタを Pi,1 ≤ i ≤ SRNP とす

る。

i)

場合:

1)  AL が少なくとも一つの<名前付き引数指定>を直に含まないならば,次による。

A)  AL に含まれる 番目の<SQL 引数>を Ai,1 ≤ i ≤ NA とする。

B) DEFAULT を AiNA < i ≤ SRNP とする。

C)  番目の<SQL 引数>が Ai,1 ≤ i ≤ SRNP である<SQL 引数リスト>を XAL とする。

注記 306  SRNP = 0 ならば,XAL は,SQL 引数の空のリストである。

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

A)  Pi と等価な<SQL パラメタ名>をもつ AL 中の<名前付き引数指定>に直に含まれる<名前付

き引数

SQL 引数>を NPSAi,1 ≤ i ≤ SRNP とする。

B)  等価な<SQL パラメタ名>をもつ<名前付き引数指定>が AL 中に存在しない各 SQL パラメタ

Pi,1 ≤ i ≤ SRNP に対して,DEFAULT を NPSAi,1 ≤ i ≤ SRNP とする

C)  番目の<SQL 引数>が NPSAi,1 ≤ i ≤ SRNP である<SQL 引数リスト>を XAL とする。

ii)  XAL 中の 番目の<SQL 引数>を XAi,1 ≤ i ≤ SRNP とする。

iii)  出力 SQL パラメタ又は入出力 SQL パラメタ(入力 SQL パラメタで,かつ,出力 SQL パラメタ)

である各

SQL パラメタ Pi,1 ≤ i ≤ SRNP に対して,XAi は,<相手指定>でなければならない。

1) AFTER トリガの<被トリガ SQL 文>に RI が含まれるならば,XAi は,<列参照>であってはな

らない。

2)

10

  XAi が<埋込み変数指定>又は<ホストパラメタ指定>ならば,XAi を TARGET として,Pi

を VALUE として,“9.1  取出し代入”の構文規則を適用する。

3)

04

  XAi が<SQL パラメタ参照>,<列参照>又は<相手配列要素指定>ならば,XAi を TARGET

として,Pi を VALUE として,“9.2  格納代入”の構文規則を適用する。 
注記 307  <列参照>は,遷移新変数列参照だけがあり得る。

iv)  入力 SQL パラメタであるが,出力 SQL パラメタでない各 SQL パラメタ Pi,1 ≤ i ≤ SRNP に対

して,XAi は,<値式>又は<文脈型付き値指定>のいずれかでなければならない。

v)  入力 SQL パラメタ又は入出力 SQL パラメタである各 SQL パラメタ Pi,1 ≤ i ≤ SRNP,及び<文

脈型付き値指定

>でない各 XAi に対して,Pi を TARGET として,XAi を VALUE として,“9.2  格

納代入”の構文規則を適用する。

10)  RI が<CALL 文>に直に含まれないならば,次による。

場合:

a) <SQL 引数リスト>が少なくとも一つの<SQL 引数>を直に含まないならば,次による。

i) SQL 引数の空のリストを AL とする。呼出し可能ルーチン  は,SQL パラメタをもたない実行可

能ルーチンとする。


441

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

ii)  RN が<スキーマ名>を含まないならば,RI の当該ルーチン  (subject routine)  は,次のような SQL

呼出しルーチン SIRSR とする。

1)  SIRSR が呼出し可能ルーチンである。

2)  SIRSR のスキーマの<スキーマ名>が DP 中にある。

3)  場合:

A)  SIRSR のルーチン記述子が STATIC を示す標識を含まないならば,次のような別の呼出し

可能ルーチン R2 が存在しない。DP 中で,R2 を含むスキーマの<スキーマ名>が,SIRSR

を含むスキーマの

<スキーマ名>に先行する。

B)  SIRSR のルーチン記述子が STATIC を示す標識を含むならば,次のような別の呼出し可能

ルーチン R2 が存在しない。R2 のルーチン記述子を含む記述子によって記述される利用者

定義型が,SIRSR のルーチン記述子を含む利用者定義型記述子によって記述される利用者

定義型の下位型である。

iii)  RN が<スキーマ名> SN を含むならば,

SN は,

スキーマ の<スキーマ名>でなければならない。

RI の当該ルーチン  は,

(あるならば,

に含まれる呼出し可能ルーチンとする。

iv)  RI のただ一つの当該ルーチンが存在しなければならない。

v)  RI の実効的戻りデータ型  (effective returns data type)  は,RI の当該ルーチンの結果データ型と

する。

b) <SQL 引数リスト>が少なくとも一つの<SQL 引数>を直に含むならば,次による。

i)

呼出し可能ルーチン  は,NA 個の SQL パラメタをもつような実行可能ルーチンである SQL 呼

出しルーチン SIR とする。AL 中の 番目の<SQL 引数>を Ai,1 ≤ i ≤ NA とする。SIR の 番目

SQL パラメタを Pi とする。<動的パラメタ指定>でない各 Ai に対して,次による。

場合:

1)  Pi の宣言型が利用者定義型ならば,次による。

A)  Ai の宣言型の下位型の集合を STi とする。

B)  STi 中のある型のデータ型を DATA  TYPE として,“9.7  型優先順序リスト決定”の構文規

則を適用する。これらの構文規則の適用によって戻される TYPE  PRECEDENCE  LIST 

TPLi とする。

C)  Pi の宣言型の型指示子が TPLi 中になければならない。

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

A)  Ai の宣言型を DATA  TYPE として,“9.7  型優先順序リスト決定”の構文規則を適用する。

これらの構文規則の適用によって戻される TYPE PRECEDENCE LIST を TPLi とする。

B)  Pi の宣言型の型指示子が TPLi 中になければならない。

ii) <一般式>に直に含まれる各<値式>の宣言型は,<一般式>に直に含まれる<パス解決利用者定義

型名

>に単純に含まれる<利用者定義型名>によって識別される構造型の下位型でなければなら

ない。

iii)  RI の候補ルーチン (candidate routine) の集合は,次のとおりに定義される。

場合:

1)  RN が<スキーマ名>を含まないならば,RI の候補ルーチンは,<スキーマ名>が DP 中にある

全てのスキーマの呼出し可能ルーチンの和集合とする。

2)  RN が<スキーマ名> SN を含むならば,SN は,スキーマ の<スキーマ名>でなければならな


442

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

い。RI の候補ルーチンは,(あるならば,)に含まれる呼出し可能ルーチンとする。

iv)  全ての i,1 ≤ i ≤ NA に対して,Ai は,<値式>又は<一般式>でなければならない。

v)  全ての i,1 ≤ i ≤ NA に対して,次による。

場合:

1)  Ai が<一般式>ならば,<一般式>に直に含まれる<パス解決利用者定義型名>に単純に含まれる

<利用者定義型名>によって識別されるデータ型を,TSi とする。

2)  そうでなければ,Ai のデータ型のデータ型記述子にデータ型名が含まれるデータ型を TSi 

する。

vi)  当該ルーチン  は,次のとおりに定義される。

1)  各 Ai,1 ≤ i ≤ NA に対して,次による。

場合:

A)  Ai が<動的パラメタ指定>ならば,Ai を Vi とする。

B)  そうでなければ,宣言型が TSi の任意に選ばれた値を Vi とする。

2)  XAL 中の順序位置 に従って順序付けられた Vi から導出される 個の<SQL 引数>をもつ

<SQL 引数リスト>を XAL とする。

3)  XAL を SQL  ARGUMENT  LIST として,RI の候補ルーチンを SET  OF  SQL-INVOKED

ROUTINES として,

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

用によって戻される SET OF SUBJECT ROUTINES を候補当該ルーチンの集合 CSR とする。

4)  場合:

A)  RN が<スキーマ名>を含むならば,CSR 中にただ一つの候補当該ルーチンが存在しなけれ

ばならない。当該ルーチン SR は,CSR 中の候補当該ルーチンとする。

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

I)

CSR 中に少なくとも一つの候補当該ルーチンが存在しなければならない。

II)  場合:

1)  CSR 中にただ一つの候補当該ルーチンが存在するならば,当該ルーチン SR は,CSR

中の候補当該ルーチンとする。

2)  CSR 中に二つ以上の候補当該ルーチンが存在するならば,次による。

場合:

a)  RI が<静的メソッド選択>に直に含まれないならば,次のような SQL 呼出しルーチ

ン SIRCR2 が CSR 中に存在しなければならない。次のいずれかが真となる別の候補

当該ルーチン R2 が CSR 中に存在しない。

i)

DP 中で,R2 を含むスキーマの<スキーマ名>が,SIRCR2 を含むスキーマの<スキ

ーマ名

>に先行する。

ii)  R2 を含むスキーマの<スキーマ名>が,SIRCR2 を含むスキーマの<スキーマ名>と

等価である。

当該ルーチン SR は,SIRCR2 とする。

b)  そうでなければ,次のような SQL 呼出しルーチン SIRCR3 が CSR 中に存在しなけ

ればならない。別の候補当該ルーチン R2 のルーチン記述子を含む利用者定義型記

述子によって記述される利用者定義型が,SIRCR3 のルーチン記述子を含む利用者

定義型記述子によって記述される利用者定義型の下位型であるような R2  が CSR 


443

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

に存在しない。当該ルーチン SR は,SIRCR3 とする。

vii)  RI の当該ルーチンは,当該ルーチン SR とする。

viiiSR の SQL パラメタ Pi のリストを PL とする。

ix)  各 Pi に対して,Pi を TARGET として,Ai を VALUE として,“9.2  格納代入”の構文規則を適

用する。

x)  RI の実効的戻りデータ型  は,次のとおりに定義される。

1)  場合:

A)  SR が型保持関数ならば,SR の結果 SQL パラメタを Pi とする。Ai が<一般式>を含むなら

ば,Ai の<一般式>に含まれる<値式>の宣言型を RT とする。そうでなければ,Ai の宣言型
を RT とする。

B)  そうでなければ,SR の結果データ型を RT とする。

2)  RI の実効的戻りデータ型  は,RT とする。

11) SR が構成関数ならば,RI は,<新呼出し>に単純に含まれなければならない。

12)  場合:

a)  RI が<CALL 文>に直に含まれないで,かつ,<SQL 引数リスト>が少なくとも一つの<SQL 引数>

を直に含まないならば,

SQL 引数の空のリストを RI の静的 SQL 引数リスト  (static SQL argument 

list)  とする。

b)  そうでなければ,XAL を RI の静的 SQL 引数リスト  とする。

アクセス規則

なし。 

一般規則

1)  この細分箇条の一般規則の適用では,STATIC SQL ARG LIST を SAL とし,SUBJECT ROUTINE 

SR とする。

注記 308  “静的 SQL 引数リスト”及び“当該ルーチン”は,この細分箇条の構文規則で定義して

いる。

2)  場合:

a)  SAL が空のリストならば,SAL を動的 SQL 引数リスト  (dynamic SQL argument listDAL とする。

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

i)

値 Vi を得るために,処理系依存の順序で,SAL 中の<既定値指定>でない各 SQL 引数 Ai,1 ≤ i ≤ 
SRNP が評価される。

ii)  SAL 中の<既定値指定>である各 SQL 引数 Ai,1 ≤ i ≤ SRNP に対して,次のとおりに,処理系依

存の順序で,値 Vi が得られる。 
場合:

1) SQL パラメタ Pi が既定値をもつことを示す標識を SR の記述子が含まないならば,Vi は,ナ

ル値とする。

2)  そうでなければ,値 Vi を得るために,SR の記述子に含まれる<パラメタ既定値>が評価され

る。

iii)  値 Vi,1 ≤ i ≤ SRNP のこの順序でのリストを動的 SQL 引数リスト  DAL とする。

iv)  SR が型保持で,かつ,ナル値で結果パラメタを置き換えるならば,次による。

場合:


444

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

1)  SR が変異関数ならば,例外条件:データ例外  (data exception)  -  ナル値で変異当該パラメタ

を置き換えた  (null value substituted for mutator subject parameter)  が引き起こされ,この細分箇

条の一般規則は,これ以上適用しない。

2)  そうでなければ,RI の値は,ナル値とし,この細分箇条の一般規則は,これ以上適用しない。

v)  場合:

1)  SR が,インスタンス SQL 呼出しメソッドならば,次による。

A)  V

1

がナル値ならば,RI の値は,ナル値とし,この細分箇条の残りの一般規則は,適用しな

い。

B)  次の条件を満たす SQL 呼出しメソッド の集合を SM とする。

I)

SR の<ルーチン名>及び の<ルーチン名>が等価な<被修飾識別子>をもつ。

II)  SR 及び が,

同じ個数 の SQL パラメタをもつ。SR の 番目の SQL パラメタを PSRi

1 ≤ i ≤ とし,の 番目の SQL パラメタを PMi,1 ≤ i ≤ とする。

III)  の当該パラメタの宣言型が,SR の当該パラメタの宣言型の下位型である。

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

PMj の宣言型を TYPE1 として,PSRj の宣言型を TYPE2

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

注記 309  SR は,集合 SM の要素である。

C)  SM は,SR の置換メソッドの集合  (set of overriding methods)  とし,SM 中のどの SQL 呼出

しメソッド も,SR の置換メソッド  (overriding method)  とする。

D)  場合:

I)

SAL 中の最初の SQL 引数 A1 が<一般式>を含むならば,A1 の<一般式>に含まれる<利用

者定義型名

>によって識別されるデータ型を DT1 とする。

II)  そうでなければ,V

1

の最特定型を DT1 とする。

E)  次のような,SM 中の SQL 呼出しメソッドを とする。DT1 の型優先順位リスト中で,別

SQL 呼出しメソッド M1 の当該パラメタの宣言型の型指示子が,の当該パラメタの宣

言型の型指示子に先行するような M1 が SM 中に存在しない。

2)  そうでなければ,SR を とする。

3)  DAL 中の値 Vi の個数を 及び PN とする。の 番目の SQL パラメタ Pi の宣言型を Ti とする。1

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

a)  Vi の宣言型が DATE で,かつ,Ti が TIMESTAMP WITHOUT TIME ZONE 又は TIMESTAMP WITH

TIME ZONE のいずれかならば,次の CAST 指定から得られる値によって,Vi が実効的に置き換
えられる。

CAST (V

i

 AS TIMESTAMP )

注記 310 DATE の型優先順序リストが TIMESTAMP を含むときに限り,この選択が可能である。

9.7  型優先順序リスト決定”の構文規則 12)  参照。

b)  場合:

i)

14

  Pi が入力 SQL パラメタ又は入出力 SQL パラメタならば,Vi を VALUE として,宣言型が Ti

の一時的な格納場所 ST を TARGET として,“9.2  格納代入”の一般規則を適用する。ST の値

を CPVi とする。

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

場合:


445

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

1)

13

 が SQL ルーチンならば,ナル値を CPVi とする。

2)  そうでなければ,最特定型 Ti の処理系定義の値を CPVi とする。

4)

13

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

a)  の外部名によって識別されるプログラムを とする。

b) 1 から までの範囲の に対して,の 番目の SQL パラメタを Pi とし,Pi の宣言型を Ti とす

る。

場合:

i)

Pi が入力 SQL パラメタ又は入出力 SQL パラメタならば,次による。 
場合:

1)

14

 Pi が位置付け子パラメタならば,CPVi は,CPVi の値を一意に識別する,位置付け子の値

に置き換えられる。

2)  Ti が利用者定義型で,かつ,Pi が位置付け子パラメタでないならば,次による。

A)  のルーチン記述子中の,

Pi に関連付けられた FROM-SQL 関数の特定名によって識別され

SQL 呼出しルーチンを FSFi とする。FSFi の結果データ型を RTi とする。

B)  CPVi である単一引数をもつ静的 SQL 引数リストを STATIC SQL ARG LIST として,当該ル

ーチン FSFi を SUBJECT ROUTINE として,この細分箇条の一般規則を適用する。

C)  FSFi の呼出しの結果を RVi とする。CPVi は,RVi によって置き換えられる。

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

場合:

1)

14

 Pi が位置付け子パラメタならば,CPVi は,型 INTEGER の処理系依存の値に置き換えられ

る。

2)  Ti が利用者定義型で,かつ,Pi が位置付け子パラメタでないならば,次による。

A)  のルーチン記述子中の,

Pi と関連付けられた FROM-SQL 関数の特定名によって識別され

SQL 呼出しルーチンを FSFi とする。FSFi の結果データ型を RTi とする。

B)  CPVi は,型 RTi の処理系定義の値に置き換えられる。

5)  現行 SQL セション文脈 CSC を保存し,CSC から導出される新しい SQL セション文脈 RSC を次の

とおりに作成する。

a)  現行既定カタログ名,現行既定修飾なしスキーマ名,現行既定文字集合名,現行 SQL セションの

SQL パス,SQL パスを定義するテキスト,現行 SQL セションの現行既定時刻帯時差,全ての動

SQL 記述子領域の内容,既定変換グループ名を定義するテキスト,利用者によって陽に設定さ

れた,各利用者定義型に対する利用者定義型名と変換グループ名との対を定義するテキスト,及

び文実行文脈に,処理系定義の値を設定する。

b)  現行 SQL セション識別子,SQL セション利用者識別子,大域一時表の全ての実現値の識別体,SQL

セションでアクセス可能な開いている全てのカーソルのカーソル実現値記述子,各整合性制約に

対する現行制約モード,現行のトランザクションアクセスモード,現行のトランザクション隔離

性水準,現行の条件領域限界,当該表制限フラグ及び制限当該表名リストに,CSC 中のそれらの

値を設定する。

c)

原時刻帯時差に,CSC 中の現行既定時刻帯時差の値を設定する。

d)  CSC 中の全ての有効な位置付け子の値の集合を RSC に写す。

e)

RSC は,最初,どんなトリガ実行文脈も被準備文ももたない。


446

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

f)

CSC 中の診断領域スタックを RSC に写し,

PUSH”を OPERATION として,RSC 中の診断領域

スタックを STACK として,“23.2  診断領域スタックに対する押込み及び取出し”の一般規則を適

用する。

g)  場合:

i)

04

 が SQL ルーチンならば,作成局所一時表,<SQL クライアントモジュール定義>に含まれる

<一時表宣言>によって定義される宣言局所一時表,大域拡張動的カーソルでない全ての開いて

いるカーソルのカーソル実現値記述子,大域拡張名をもたない被準備文,及び大域拡張名をも

たない

SQL 記述子領域の全ての実現値の識別体を,RSC から取り除く。

ii)

13

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

1)

04

 の<SQL クライアントモジュール定義>ではない<SQL クライアントモジュール定義>中で

参照される作成局所一時表,の<SQL クライアントモジュール定義>ではない<SQL クライ

アントモジュール定義

>に含まれる<一時表宣言>によって定義される宣言局所一時表,及び

大域拡張動的カーソルでなく,かつ,

SQL クライアントモジュールが の SQL クライアン

トモジュールではない全ての開いているカーソルのカーソル実現値記述子の全ての実現値の

識別体を RSC から取り除く。

2)  の<SQL クライアントモジュール定義>中で参照される作成局所一時表,の<SQL クライ

アントモジュール定義

>に含まれる<一時表宣言>によって定義される宣言局所一時表,大域

拡張動的カーソルでなく,かつ,

SQL クライアントモジュールが の SQL クライアントモ

ジュールである全ての開いているカーソルのカーソル実現値記述子,大域拡張名をもたない

被準備文,及び大域拡張名をもたない

SQL 記述子領域の全ての実現値の識別体を RSC から

取り除くかどうかは,処理系定義とする。

h) SQL 呼出しルーチン が動作中であることを RSC のルーチン実行文脈中の標識で示す。

i)

場合:

i)

CSC の SQL データアクセス指示が SQL を潜在的に含むことを指定し,かつ,が SQL データ

を潜在的に読むか又は

SQL データを潜在的に修正するならば,次による。

1)  が外部ルーチンならば,例外条件:外部ルーチン例外  (external routine exception)  -  SQL

データを読むことは許されない  (reading SQL-data not permitted)  が引き起こされる。

2)  そうでなければ,例外条件:SQL ルーチン例外  (SQL routine exception)  -  SQL データを読む

ことは許されない  が引き起こされる。

ii)  CSC の SQL データアクセス指示が SQL データを潜在的に読むことを指定し,かつ,が SQL

データを潜在的に修正するならば,次による。

1)  が外部ルーチンならば,例外条件:外部ルーチン例外  -  SQL データを修正することは許

されない  (modifying SQL-data not permitted)  が引き起こされる。

2)  そうでなければ,例外条件:SQL ルーチン例外  -  SQL データを修正することは許されない

が引き起こされる。

j)

場合:

i)

が SQL を潜在的に含まないならば,RSC のルーチン実行文脈中の SQL データアクセス指示

に,SQL を潜在的に含まない  (does not possibly contain SQL)  ことを設定する。

ii)  が SQL を潜在的に含むならば,RSC のルーチン実行文脈中の SQL データアクセス指示に,

SQL を潜在的に含む  (possibly contains SQL)  ことを設定する。


447

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

iii)  が SQL データを潜在的に読むならば,RSC のルーチン実行文脈中の SQL データアクセス指

示に,SQL データを潜在的に読む  (possibly reads SQL-data)  ことを設定する。

iv)  が SQL データを潜在的に修正するならば,RSC のルーチン実行文脈中の SQL データアクセ

ス指示に,SQL データを潜在的に修正する  (possibly modifies SQL-data)  ことを設定する。

k)  RSC の認可スタックには,CSC の認可スタックの写しが設定される。

l)

最上部セルの写しが,RSC の認可スタックに押し込まれる。

m)  場合:

i)

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

1)  場合:

A)  の外部安全保護特性が IMPLEMENTATION DEFINED ならば,RSC の現行利用者識別子

及び現行役割名は,処理系定義とする。

B)  の外部安全保護特性が DEFINER ならば,RSC の認可スタックの最上部セルは,のル

ーチン認可識別子だけを含むように設定される。

2)  RSC のルーチン SQL パスには,の外部ルーチン SQL パスが設定される。

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

1)  の SQL 安全保護特性が DEFINER ならば,RSC の認可スタックの最上部セルは,のルー

チン認可識別子だけを含むように設定される。

2)  RSC のルーチン SQL パスには,のルーチン SQL パスが設定される。

n)  当該ルーチンが SQL 呼出し手続 SIP ならば,次による。

i)

起源が SIP の<特定ルーチン指示子>であるどの受取りカーソル RC に対しても,RC のカーソル

宣言記述子及びカーソル実現値記述子が破壊される。

ii)  SIP に関連付けられたどの結果集合並びも,破壊される。

iii)  SIP の呼出し元を INV とする。SQL 呼出し手続 SIP 及び呼出し元 INV に対して,空の結果集合

並び RSS が RSC に追加される。

注記 311  SIP の呼出し元は,“4.28.5 SQL 呼出し手続によって戻される結果集合”で定義して

いる。

o)  RSC が現行 SQL セション文脈になる。

6)  が呼び出されるときに新しい保存点水準が確立されることを示す標識を,の記述子が含むなら

ば,新しい保存点水準が確立される。

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

場合:

a)  がナル呼出し関数で,かつ,CPVi のいずれかがナル値ならば,ナル値を RV とする。

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

i) 1 から PN までの範囲の に対して,Pi に CPVi の値を設定する。

ii)  の SQL ルーチン本体を EXECUTING STATEMENT として,

13.4 <SQL 手続文>”の一般規則

を適用する。

iii)  の SQL ルーチン本体の実行の完了前に,SQL コネクション文を実行しようとするならば,例

外条件:SQL ルーチン例外  -  禁止されている SQL 文を試みた  (prohibited SQL-statement 

attempted)  が引き起こされる。

iv)  場合:


448

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

1) SQL 処理系が機能 T272“拡張保存点管理”を提供しておらず,かつ,の SQL ルーチン本

体の実行の完了前に,

SQL トランザクション文を実行しようとするならば,例外条件:SQL

ルーチン例外  -  禁止されている SQL 文を試みた  が引き起こされる。

2)  の SQL ルーチン本体の実行の完了前に,<SAVEPOINT 文>でも,<RELEASE SAVEPOINT

>でも,<SAVEPOINT 句>を指定する<ROLLBACK 文>でもない SQL トランザクション文を

実行しようとするならば,例外条件:SQL ルーチン例外  -  禁止されている SQL 文を試みた

が引き起こされる。

v) SQL 処理系が機能 T651“SQL ルーチン中の SQL スキーマ文”を提供しておらず,かつ,

SQL ルーチン本体の実行の完了前に,SQL スキーマ文を実行しようとするならば,例外条件:

SQL ルーチン例外  -  禁止されている SQL 文を試みた  が引き起こされる。

vi) SQL 処理系が機能 T652“SQL ルーチン中の動的 SQL 文”を提供しておらず,かつ,の SQL

ルーチン本体の実行の完了前に,動的

SQL 文を実行しようとするならば,例外条件:SQL ルー

チン例外  -  禁止されている SQL 文を試みた  が引き起こされる。

vii)  RSC の SQL データアクセス指示が,SQL を潜在的に含むことを指定し,かつ,の SQL ルー

チン本体の実行の完了前に,

SQL データを潜在的に読む SQL 文を実行しようとするか,又は

SQL データを潜在的に修正する SQL 文を実行しようとするならば,例外条件:SQL ルーチン

例外  -  SQL データを読むことは許されない  が引き起こされる。

viiiRSC の SQL データアクセス指示が,SQL データを潜在的に読むことを指定し,かつ,の SQL

ルーチン本体の実行の完了前に,

SQL データを潜在的に修正する SQL 文を実行しようとするな

らば,例外条件:SQL ルーチン例外  -  SQL データを修正することは許されない  が引き起こ

される。

ix)  が SQL 呼出し関数ならば,次による。

場合:

1)  の SQL ルーチン本体の実行の完了前に,<RETURN 文>が実行されないならば,例外条件:

SQL ルーチン例外  -  関数が RETURN 文を実行しなかった  (function executed no return 

statement)  が引き起こされる。

2)  そうでなければ,の SQL ルーチン本体の実行の戻り値を RV とする。

注記 312  “戻り値”は,“16.2 <RETURN 文>”で定義している。

x)  が SQL 呼出し手続ならば,出力 SQL パラメタ又は入出力 SQL パラメタである の各 SQL

パラメタに対して,CPVi に Pi の値を設定する。

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

a)

04

 を含むスキーマへの の結合方法及び結合時機は,処理系定義とする。

b)  が PARAMETER STYLE SQL を指定するならば,次による。

i)

場合:

1)  が SQL 呼出し関数ならば,の実効的 SQL パラメタリスト ESPL は,次のとおりに設定さ

れる。

A)  が,行型である要素型をもつ配列戻し外部関数又はマルチ集合戻し外部関数ならば,要

素型の次数を FRN とする。そうでなければ,1 を FRN とする。

B) 1 から PN までの範囲の に対して,ESPL 中の 番目の項目には,CPVi が設定される。

C)  PN + 1 から PN + FRN までの範囲の に対して,ESPL 中の 番目の項目は,結果データ項


449

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

目  (result data item)  とする。

D) (PN + FRN) + 1 から  (PN + FRN) + までの範囲の に対して,

ESPL 中の 番目の項目は,

CPVi

(

PN

+

 FRN

)

  に対応する SQL 標識引数  (SQL indicator argument)  とする。

E) (PN + FRN) + N + 1 から  (PN + FRN) + NFRN までの範囲の に対して,ESPL 中の 番目

の項目は,結果データ項目に対応する

SQL 標識引数とする。

F) (PN + FRN) + (N + FRN) + 1 と等しい に対して,ESPL 中の 番目の項目は,例外データ

項目  (exception data item)  とする。

G) (PN + FRN) + (N + FRN) + 2 と等しい に対して,ESPL 中の 番目の項目は,ルーチン名

テキスト項目  (routine name text item)  とする。

H) (PN + FRN) + (N + FRN) + 3 と等しい に対して,ESPL 中の 番目の項目は,特定名テキ

スト項目  (specific name text item)  とする。

I) (PN + FRN) + (N + FRN) + 4 と等しい に対して,ESPL 中の 番目の項目は,メッセージ

テキスト項目  (message text item)  とする。

J)  が配列戻し外部関数又はマルチ集合戻し外部関数ならば,(PN + FRN) + (N + FRN) + 5 と

等しい に対して,ESPL 中の 番目の項目は,保存領域データ項目  (save area data item)  と

し,

(PN + FRN) + (N + FRN) + 6 と等しい に対して,ESPL 中の 番目の項目は,呼出し

種別データ項目  (call type data item)  とする。

K)  結果データ項目に対応する SQL 標識引数[すなわち,(PN + FRN) + N + 1 から  (PN + FRN)

N + FRN までの SQL 引数値リスト項目]に,値 0 を設定する。

L) 1 から PN までの範囲の に対して,CPVi がナル値ならば,(PN + FRN) + 番目の項目(す

なわち,CPVi に対応する 番目の SQL 標識引数)に,値-1 を設定し,そうでなければ,
(PN + FRN) + 番目の項目(すなわち,CPVi に対応する 番目の SQL 標識引数)に,値 0
を設定する。

M)  が配列戻し外部関数又はマルチ集合戻し外部関数ならば,保存領域データ項目[すなわ

ち,

(PN + FRN) + (N + FRN) + 5 番目の SQL 引数値リスト項目]に,値 0 を設定し,呼出

し種別データ項目[すなわち,

(PN + FRN) + (N + FRN) + 6 番目の SQL 引数値リスト項目]

に,値-

1 を設定する。

2)  そうでなければ,の実効的 SQL パラメタリスト ESPL は,次のとおりに設定される。

A) 1 から PN までの範囲の に対して,ESPL 中の 番目の項目は,CPVi とする。

B)  PN + 1 から PN + までの範囲の に対して,ESPL 中の 番目の項目は,CPVi-PN に対応

する SQL 標識引数  とする。

C) (PN + N) + 1 と等しい に対して,ESPL 中の 番目の項目は,例外データ項目  とする。

D) (PN + N) + 2 と等しい に対して,ESPL 中の 番目の項目は,ルーチン名テキスト項目  と

する。

E) (PN + N) + 3 と等しい に対して,

ESPL 中の 番目の項目は,

特定名テキスト項目  とする。

F) (PN + N) + 4 と等しい に対して,ESPL 中の 番目の項目は,メッセージテキスト項目  と

する。

G) 1 から PN までの範囲の に対して,CPVi がナル値ならば,ESPL 中の PN + 番目の項目

(すなわち,CPVi に対応する 番目の SQL 標識引数)に,値-1 を設定し,そうでなけれ
ば,ESPL 中の PN + 番目の項目(すなわち,CPVi に対応する 番目の SQL 標識引数)に,


450

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

0 を設定する。

ii)  例外データ項目には,'00000'  が設定される。

iii)  ルーチン名テキスト項目には,のルーチン名の<スキーマ修飾付き名前>が設定される。

iv)  特定名テキスト項目には,の特定名の<被修飾識別子>が設定される。

v)  メッセージテキスト項目には,長さ 0 の文字列が設定される。

c)

が PARAMETER STYLE GENERAL を指定するならば,の実効的 SQL パラメタリスト ESPL

は,次のとおりに設定される。

i)

がナル呼出し関数でなく,かつ,1 から PN までの範囲の に対して,CPVi のいずれかがナ
ル値ならば,例外条件:

外部ルーチン呼出し例外  (external routine invocation exception)  -  ナル

値は許されない  (null value not allowed)  が引き起こされる。

ii) 1 から PN までの範囲の に対して,どの CPVi も,ナル値でないならば,1 から PN までの範

囲の に対して,ESPL 中の 番目の項目には,CPVj が設定される。

d)

13

 が DETERMINISTIC を指定し,かつ,同一の SQL 引数値リストでの の異なる実行が同一の

結果を生じないならば,結果は,処理系依存とする。

e)

ESPL 中の項目の個数を EN とする。ESPL 中の 番目の実効的 SQL パラメタを ESPi とする。

f) 1 から EN までの範囲の に対して,ESPi の<データ型>を PTi とする。

g)  場合:

i)

がナル呼出し関数で,かつ,CPVi のいずれかがナル値ならば,は,実行されたと仮定され
る。

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

1)

13

  が配列戻し外部関数又はマルチ集合戻し外部関数でないならば,パラメタ名が PNi で,

かつ,値が次のとおりに設定される EN 個のパラメタ PDi のリストで が実行される。

A)  の言語が ADA,C,COBOL,FORTRAN,M,PASCAL 又は PLI ならば,それぞれ,表

16“Ada のためのデータ型対応”

,表 17“C のためのデータ型対応”,表 18“COBOL のた

めのデータ型対応”

,表 19“Fortran のためのデータ型対応”,表 20“M のためのデータ型

対応”

,表 21“Pascal のためのデータ型対応”又は表 22“PL/I のためのデータ型対応”を

適用データ型対応表  (operative data type correspondences table)  とする。適用データ型対応

表の二つの列を,“

SQL データ型 (SQL data type) ”の列及び“ホストデータ型 (host data

type)  ”の列として参照する。

B) 1 から EN までの範囲の に対して,PDi のホスト言語データ型 DTi は,適用データ型対応

表中で,“

SQL データ型”の列の値が PTi に対応する行の“ホストデータ型”の列に記載

されたデータ型とする。

2)  の言語を LANGUAGE として,PTi を SQL TYPE として,ESPi の値を SQL VALUE として,

9.4 SQL サーバからホスト言語への値の受渡し”の一般規則を適用する。これらの一般規

則の適用によって戻される HOST VALUE を PDi とする。

3)

13

 が配列戻し外部関数ならば,次による。

A)  宣言型が の結果データ型である配列を AR とする。

B)  AR を ARRAY として,

ESPL を EFFECTIVE SQL PARAMETER LIST として,

を PROGRAM

として,“9.16  配列戻し関数の実行”の一般規則を適用する。

4)  がマルチ集合戻し外部関数ならば,次による。


451

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

A)  宣言型が の結果データ型であるマルチ集合を MU とする。

B)  MU を MULTISET として,ESPL を EFFECTIVE  SQL  PARAMETER  LIST として,

PROGRAM として,

9.17  マルチ集合戻し関数の実行”の一般規則を適用する。

5)

13

 RSC の SQL データアクセス指示が,SQL を潜在的に含まないことを指定し,かつ,の実

行の完了前に,

SQL 文を実行しようとするならば,例外条件:外部ルーチン例外  -  SQL 

含むことは許されない  (containing SQL not permitted)  が引き起こされる。

6)  の実行の完了前に,SQL コネクション文を実行しようとするならば,例外条件:外部ルー

チン例外  -  禁止されている SQL 文を試みた  が引き起こされる。

7)  場合:

A) SQL 処理系が機能 T272“拡張保存点管理”を提供しておらず,かつ,の実行の完了前に,

SQL トランザクション文を実行しようとするならば,例外条件:外部ルーチン例外  -  禁

止されている SQL 文を試みた  が引き起こされる。

B)  の 実 行 の 完 了 前 に , <SAVEPOINT 文 > で も , <RELEASE SAVEPOINT 文 > で も ,

<SAVEPOINT 句>を指定する<ROLLBACK 文>でもない SQL トランザクション文を実行し

ようとするならば,例外条件:

外部ルーチン例外  -  禁止されている SQL 文を試みた  が

引き起こされる。

8) SQL 処理系が機能 T653“外部ルーチン中の SQL スキーマ文”を提供しておらず,かつ,P

の実行の完了前に,

SQL スキーマ文を実行しようとするならば,例外条件:外部ルーチン例

外  -  禁止されている SQL 文を試みた  が引き起こされる。

9) SQL 処理系が機能 T654“外部ルーチン中の動的 SQL 文”を提供しておらず,かつ,の実

行の完了前に,動的

SQL 文を実行しようとするならば,例外条件:外部ルーチン例外  -  禁

止されている SQL 文を試みた  が引き起こされる。

10)  RSC の SQL データアクセス指示が,SQL を潜在的に含むことを指定し,かつ,の実行の完

了前に,

SQL データを潜在的に読む SQL 文を実行しようとするか,又は SQL データを潜在

的に修正する

SQL 文を実行しようとするならば,例外条件:外部ルーチン例外  -  SQL デー

タを読むことは許されない  が引き起こされる。

11)  RSC の SQL データアクセス指示が,SQL データを潜在的に読むことを指定し,かつ,の実

行の完了前に,

SQL データを潜在的に修正する SQL 文を実行しようとするならば,例外条

件:

外部ルーチン例外  -  SQL データを修正することは許されない  が引き起こされる。

12)  が,のための規格に従って規格に適合するプログラムでないならば,の実行の結果は,

処理系依存とする。

h)  の実行の完了後は,次による。

i)

13

  次によるかどうかは,処理系定義とする。

1)  RSC に関連付けられた,作成局所一時表の全ての実現値及び宣言局所一時表の全ての実現値

が破壊される。

2)  現行 SQL トランザクション中で によって準備され,によって解放されなかった全ての被

準備文 PS に対して,次による。

A)  PS を識別する<SQL 文名>を SSN とする。

B)  次の SQL 文が実効的に実行される。

DEALLOCATE PREPARE SSN


452

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

ii)

13

 1 から EN までの範囲の に対して,の言語を LANGUAGE として,PTi を SQL TYPE とし

て,PDi の値を HOST  VALUE として,“9.3 ホスト言語から SQL サーバへの値の受渡し”の一
般規則を適用する。これらの一般規則の適用によって戻される SQL VALUE を ESPi とする。

iii)  が PARAMETER STYLE SQL を指定するならば,次による。

場合:

1)  例外データ項目が値 '00000' をもつならば,の実行が成功した。

2)  例外データ項目の最初の 2 文字が,警告  (warning)  に対する SQLSTATE クラスコードと等し

いならば,例外データ項目の値の最後の

3 文字と等しいサブクラスコードを用いて,終了条

件:

警告  が引き起こされる。

3)  そうでなければ,例外データ項目の値の最初の 2 文字と等しいクラスコード及び例外データ

項目の値の最後の

3 文字と等しいサブクラスコードを用いて,例外条件が引き起こされる。

iv)  例外データ項目が '00000' でなく,が PARAMETER STYLE SQL を指定したならば,メッセ

ージテキスト項目が

1 番目の診断領域中に格納される。

i)

が SQL 呼出し関数ならば,次による。

i)

場合:

1)  が SQL 呼出しメソッドで,その SQL 呼出しメソッドのルーチン記述子が STATIC を示す標

識を含まないで,かつ,CPV

1

がナル値ならば,ナル値を RDI とする。

2)  がナル呼出し関数で,

が配列戻し外部関数又はマルチ集合戻し外部関数でなく,

かつ CPVi

のいずれかがナル値ならば,ナル値を RDI とする。

3)

13

 がナル呼出し関数でなく,が配列戻し外部関数又はマルチ集合戻し外部関数でなく,R

PARAMETER STYLE SQL を指定し,かつ,EPSL 中の  (PN + 1) + N + 1 番目の項目(すな

わち,結果データ項目に対応する N + 1 番目の SQL 標識引数)が負の値ならば,ナル値を RDI

とする。

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

A)  場合:

I)

が配列戻し外部関数又はマルチ集合戻し外部関数でなく,が PARAMETER STYLE

SQL を指定し,かつ,EPSL 中の  (PN + 1) + N + 1 番目の項目(すなわち,結果データ項

目に対応する N + 1 番目の SQL 標識引数)が負の値でないならば,結果データ項目の値

を ERDI とする。

II)  が配列戻し外部関数で,かつ,が PARAMETER STYLE SQL を指定するならば,AR

を ERDI とする。

III)  がマルチ集合戻し外部関数で,かつ,が PARAMETER STYLE SQL を指定するなら

ば,MU を ERDI とする。

IV)  が PARAMETER STYLE GENERAL を指定するならば,から戻されるホスト言語の値

を HLV とする。の<戻りデータ型>を RDT とする。RDT が<位置付け子標識>を含むな

らば,

INTEGER を EDT とする。そうでなければ,RDT に含まれる<データ型>を EDT

とする。の言語を LANGUAGE として,EDT を SQL TYPE として,HLV を HOST VALUE

として,“9.3 ホスト言語から SQL サーバへの値の受渡し”の一般規則を適用する。これ

らの一般規則の適用によって戻される SQL VALUE を ERDI とする。

注記 313  から戻されるホスト言語の値は,処理系依存の方法で SQL 処理系に渡され


453

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

る。引数値リスト項目は,このためには用いない。

B)  場合:

I)

ERDI が無効な位置付け子ならば,例外条件:位置付け子例外  (locator exception)  -  指

定が正しくない  (invalid specification)  が引き起こされ,この細分箇条の一般規則は,こ

れ以上適用しない。

II)  戻り値が位置付け子であることを,のルーチン記述子が示すならば,次による。

場合:

1)  RT が 2 進オクテット長大オブジェクト型ならば,ERDI に対応する 2 進オクテット長

大オブジェクト値を RDI とする。

2)  RT が文字長大オブジェクト型ならば,ERDI に対応する長大オブジェクト文字列を

RDI とする。

3)  RT が配列型ならば,ERDI に対応する配列値を RDI とする。

4)  RT がマルチ集合型ならば,ERDI に対応するマルチ集合値を RDI とする。

5)  RT が利用者定義型ならば,ERDI に対応する利用者定義型値を RDI とする。

III)  そうでなければ,次による。が<結果型変換>を指定するならば,<結果型変換>中に指

定される

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

場合:

1)  が<結果型変換>を指定し,かつ,<結果型変換>が位置付け子標識をもつことを,R

のルーチン記述子が示すならば,次による。

場合:

a)  CRT が 2 進オクテット長大オブジェクト型ならば,ERDI に対応する 2 進オクテッ

ト長大オブジェクト値を RDI とする。

b)  CRT が文字長大オブジェクト型ならば,ERDI に対応する長大オブジェクト文字列

を RDI とする。

c)

CRT が配列型ならば,ERDI に対応する配列値を RDI とする。

d)  CRT がマルチ集合型ならば,ERDI に対応するマルチ集合値を RDI とする。

e)

CRT が利用者定義型ならば,ERDI に対応する利用者定義型値を RDI とする。

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

場合:

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

i)

の結果に関連付けられた TO-SQL 関数の特定名によって識別される SQL 呼出し

ルーチンを TSF とする。

ii)  場合:

1)  TSF が SQL 呼出しメソッドならば,次による。

A)  が型保持関数ならば,の結果 SQL パラメタを置き換える引数の値の最特

定型を MAT とし,そうでなければ,CRT を MAT とする。

B) 1 番目の要素が次の呼出しによって戻される値で,

かつ,

2 番目の要素が ERDI

である静的

SQL 引数リストを STATIC SQL ARG LIST として,当該ルーチン

TSF を SUBJECT ROUTINE として,この細分箇条の一般規則を適用する。

MAT()


454

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

2)  そうでなければ,ERDI である単一の SQL 引数をもつ静的 SQL 引数リストを

STATIC SQL ARG LIST として,当該ルーチン TSF を SUBJECT ROUTINE とし

て,この細分箇条の一般規則を適用する。

iii)  TSF の呼出しの結果を RDI とする。

b)

14

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

ii)  が<結果型変換>を指定するならば,の<戻りデータ型>を RT とし,次の型変換の結果を RV

とする。

CAST ( RDI  AS  RT )

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

j)

が SQL 呼出し手続ならば,出力 SQL パラメタ又は入出力 SQL パラメタである各 Pi,1 ≤ i ≤ PN
に対して,次による。

場合:

i)

が PARAMETER STYLE SQL を指定し,かつ,ESPL 中の  (PN + i)  番目の項目(すなわち,

CPVi に対応する 番目の SQL 標識引数)が負の値ならば,CPVi には,ナル値が設定される。

ii)

13

 が PARAMETER STYLE SQL を指定し,ESPL 中の  (PN + i)  番目の項目(すなわち,CPVi

に対応する 番目の SQL 標識引数)が負の値でなく,かつ,ESPL 中の 番目の項目に値が代

入されなかったならば,CPVi には,型 Ti の処理系定義の値が設定される。

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

注記 314  この場合は,が PARAMETER STYLE SQL を指定し,ESPL 中の  (PN + i)  番目の

項目(すなわち,CPVi に対応する 番目の SQL 標識引数)が負の値でなく,かつ,
ESPL 中の 番目の項目に値が代入されたか,又は が PARAMETER STYLE

GENERAL を指定するかのいずれかである。

1)  ESPL 中の 番目の項目を EVi とする。Pi の宣言型を Ti とする。

2)  EVi が無効な位置付け子ならば,例外条件:位置付け子例外  -  指定が正しくない  が引き起

こされ,この細分箇条の一般規則は,これ以上適用しない。

3)  場合:

A)  Pi が位置付け子パラメタならば,次による。

場合:

I)

Ti が 2 進オクテット長大オブジェクト型ならば,CPVi には,EVi に対応する 2 進オクテ
ット長大オブジェクト値が設定される。

II)  Ti が文字長大オブジェクト型ならば,CPVi には,EVi に対応する長大オブジェクト文字

列が設定される。

III)  Ti が配列型ならば,CPVi には,EVi に対応する配列値が設定される。

IV)  Ti がマルチ集合型ならば,CPVi には,EVi に対応するマルチ集合値が設定される。

V)  Ti が利用者定義型ならば,CPVi には,EVi に対応する利用者定義型値が設定される。

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

I)

のルーチン記述子中の,Pi と関連付けられた TO-SQL 関数の特定名によって識別され

SQL 呼出し関数を TSFi とする。

II)  場合:

1)  TSFi が SQL 呼出しメソッドならば,1 番目の要素が次の呼出しによって戻される値で,


455

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

かつ,

2 番目の要素が EVi である静的 SQL 引数リストを STATIC SQL ARG LIST とし

て,当該ルーチン TSFi を SUBJECT ROUTINE として,この細分箇条の一般規則を適
用する。

T

i

 ()

2)  そうでなければ,EVi である単一の SQL 引数をもつ静的 SQL 引数リストを STATIC

SQL ARG LIST として,当該ルーチン TSFi を SUBJECT ROUTINE として,この細分
箇条の一般規則を適用する。

III)  CPVi には,TSFi の呼出しの結果が設定される。

C)

14

  そうでなければ,CPVi には,EVi が設定される。

9)  場合:

a)  が SQL 呼出し関数ならば,次による。

i)

が型保持関数ならば,次による。

1)  の結果 SQL パラメタを置き換える引数の値の最特定型を MAT とする。

2)  RV がナル値でなく,かつ,RV の最特定型が MAT と互換でないならば,例外条件:データ

例外  -  最特定型不一致  (most specific type mismatch)  が引き起こされる。

ii) <ルーチン呼出し>の実効的戻りデータ型を ERDT とする。

iii)

14

  RV を VALUE として,宣言型が ERDT の一時的な格納場所 ST を TARGET として,“9.2  格

納代入”の一般規則を適用する。ST の値を<ルーチン呼出し>の結果とする。

b)  そうでなければ,出力 SQL パラメタ又は入出力 SQL パラメタである の各 SQL パラメタ Pi 

対して,対応する

<SQL 引数> Ai の<相手指定>を TSi とする。

場合:

i)

TSi が<ホストパラメタ指定>又は<埋込み変数指定>ならば,TSi を TARGET として,CPVi 

VALUE として,

9.1  取出し代入”の一般規則を適用する。

ii)

04

 TSi が<SQL パラメタ参照>,<列参照>又は<相手配列要素指定>ならば,次による。

注記 315  <列参照>は,遷移新変数列参照だけがあり得る。

場合:

1) <相手配列要素指定>が指定されるならば,次による。

場合:

A)  TSi の値がナル値ならば,例外条件:データ例外  -  配列相手にナル値  (null value in array 

target)  が引き起こされる。

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

I)

TSi の最大基数を とする。

II)  TSi の値の基数を とする。

III)  TSi に直に含まれる<単純値指定>の値を とする。

IV)  TSi の要素型を EDT とする。

V)  場合:

1)  が 0 より大きく,かつ,以下ならば,TSi の値は,要素型 EDT 及び基数 をもち,

次のとおりに導出される配列 によって置き換えられる。

a) 1 から I -1 まで及び I +1 から までの範囲の に対して,中の 番目の要素は,

TSi 中の 番目の要素の値とする。


456

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

b)

14

 の 番目の要素を TARGET として,CPVi の値を VALUE として,“9.2  格納代

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

2)  が より大きく,かつ,以下ならば,TSi の値は,要素型 EDT 及び基数 をもち,

次のとおりに導出される配列 によって置き換えられる。

a) 1 から までの範囲の に対して,中の 番目の要素は,TSi 中の 番目の要素の

値とする。

b)  M +1 から までの範囲の に対して,中の 番目の要素は,ナル値とする。

c)

14

 の 番目の要素を TARGET として,CPVi の値を VALUE として,“9.2  格納代

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

3)  そうでなければ,例外条件:データ例外  -  配列要素誤り  (array element error)  が引き

起こされる。

2)

14

  そうでなければ,TSi を TARGET として,CPVi を VALUE として,“9.2  格納代入”の一

般規則を適用する。

10)  RSS が空でないならば,SIP の記述子を PR とする。

a)  PR に含まれる戻り結果集合の最大個数を MAX とする。

b)

13

 RSS に含まれる戻り結果集合の実際の個数を OPN とする。

c)

場合:

i)

OPN が MAX を超えるならば,次による。

1)  MAX を RTN とする。

2)  終了条件:警告  -  多すぎる結果集合を戻そうと試みた  (attempt to return too many result sets)

が引き起こされる。

ii)  そうでなければ,OPN を RTN とする。

d)

13

  各 i,1 ≤ i ≤ RTN に対して,RSS 中の 番目の戻り結果集合 RSi の WITH RETURN カーソルを

FRCi とする。

e)

各 i,1 ≤ i ≤ RTN に対して,次による。

場合:

i)

FRCi がスクロール可能カーソルならば,RSi の初期カーソル位置は,FRCi の現在カーソル位
置とする。

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

場合:

1)  FRCi が RSi 中のある行の前に位置付けられているならば,RSi 中のその行の前に順序付けら

れている行の個数を RN とする。

2)  FRCi が RSi 中のある行の上に位置付けられているならば,RSi 中のその行の順序位置を RN

とする。

3)  そうでなければ,RSi 中の行の個数を RN とする。

最初の RN 個の行が RSi から削除され,RSi の初期カーソル位置は,残っている行のうちの最
初の行の前とする。

f)

13

  終了条件:警告  -  結果集合が戻された  (result sets returned)  が引き起こされる。

11)  が SQL ルーチンならば,宣言カーソル又は局所拡張動的カーソルのいずれかであり,かつ,

実行中に開かれた全ての開いているカーソル CR に対して,CR を CURSOR として,SAVE を


457

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

DISPOSITION として“15.4  カーソルを閉じることの効果”の一般規則を適用する。

12)  が外部ルーチンならば,宣言カーソル又は局所拡張動的カーソルのいずれかであり,かつ,

実行中に開かれた全ての開いているカーソル CR に対して,次のとおりとするかどうかは,処理系

定義とする。

a)  CR を CURSOR として,SAVE を DISPOSITION として,

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

一般規則を適用する。

b)  CR のカーソル実現値記述子が破壊される。

13)

13

 CSC を現行 SQL セション文脈にするために,次のとおりに準備する。

a)  CSC 中の各整合性制約に対する現行制約モードに,RSC 中の各整合性制約に対する現行制約モー

ドの値を設定する。

b)  CSC 中の現行のトランザクションアクセスモードに,RSC 中の現行のトランザクションアクセス

モードの値を設定する。

c)

CSC 中の現行のトランザクション隔離性水準に,RSC 中の現行のトランザクション隔離性水準の

値を設定する。

d)  CSC 中の全ての有効な位置付け子の値の集合を,RSC 中の全ての有効な位置付け子の値の集合に

よって置き換える。

e)

CSC の当該表制限フラグ及び制限当該表名リストに,RSC の当該表制限フラグの値及び制限当該

表名リストを設定する。

f)

CSC 中の現行の条件領域限界に,RSC 中の現行の条件領域限界の値 CAL を設定する。

g)  RSC の 1 番目の診断領域中の占有された各条件領域 CA に対して,

CA 中の RETURNED_SQLSTATE

の値が

成功終了  (successful completion)  を表さないならば,次による。

場合:

i)

CSC 中の 1 番目の診断領域 DA1 中の占有された条件領域の個数が CAL 未満ならば,CA は,

DA1 中の最初の空きの条件領域に写される。

注記 316  これによって,DA1 中の最初の空きの条件領域は,占有される。

ii)  そうでなければ,DA1 の文情報領域中の MORE には,値’Y’が設定される。

h)  CSC 中の大域一時表の全ての実現値の識別体を,RSC 中の大域一時表の実現値の識別体に置き換

える。

i)

RSC の認可スタックから最上部セルを取り除き,CSC の認可スタックに RSC の認可スタックの

写しを設定する。

注記 317  RSC の認可スタックを CSC に写すことは,SQL セション利用者識別子の変更を元に

戻すために必要である。

j)

当該ルーチンが

SQL 呼出し手続ならば,結果集合並び RSS が CSC に追加される。

注記 318  これで,<受取りカーソル割当て文>  によって参照するために RSS が利用可能となる。

注記 319  CSC 中の他の全ての項目は,RSC の作成前にもっていた値を保持する。

14)  が SQL 呼出し関数であるか,又は が SQL 呼出し手続で,かつ,が呼び出されるときに新し

い保存点水準が確立されることを示す標識を の記述子が含むならば,現行保存点水準は,破壊さ

れる。

15)  CSC が現行 SQL セション文脈になる。

適合性規則


458

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

1)  機能 S023“基本構造型”なしでは,適合する SQL 言語は,<一般式>を含んではならない。

2)  機能 S201“配列に関する SQL 呼出しルーチン”なしでは,適合する SQL 言語は,宣言型が配列型

である

<SQL 引数>を含んではならない。

3)  機能 S202“マルチ集合に関する SQL 呼出しルーチン”なしでは,適合する SQL 言語は,宣言型が

マルチ集合型である

<SQL 引数>を含んではならない。

4)  機能 B033“SQL 呼出し関数の型付きでない引数”なしでは,適合する SQL 言語は,<CALL 文>に

単純に含まれないで,かつ,

<動的パラメタ指定>である<SQL 引数>を単純に含む<ルーチン呼出し>

を含んではならない。

5)  機能 T521“CALL 文中の名前付き引数”なしでは,適合する SQL 言語は,<名前付き引数指定>を

含んではならない。

6)  機能 T522“SQL 呼出し手続の入力パラメタのための既定値”なしでは,適合する SQL 言語中で,

<SQL 引数>は,<文脈型付き値指定>であってはならない。

10.5  <文字集合指定>

機能

<文字集合指定> (<character set specification>)  は,文字集合を識別する。

形式

<文字集合指定> ::=

  <標準文字集合名>

 |

<処理系定義文字集合名>

 |

<利用者定義文字集合名>

<標準文字集合名> ::=

  <文字集合名>

<処理系定義文字集合名> ::=

  <文字集合名>

<利用者定義文字集合名> ::=

  <文字集合名>

構文規則

1)  提供される<標準文字集合名>及び<処理系定義文字集合名>は,処理系定義とする。

2) <標準文字集合名>又は<処理系定義文字集合名>によって識別される文字集合には,次の<GRANT 文

>によって実効的に定義された権限記述子が関連付けられる。

GRANT USAGE ON

CHARACTER SET CS

TO PUBLIC

ここで,CS は,<文字集合指定>に含まれる<文字集合名>とする。権限記述子の権限付与者には,

特別な付与者の値“

_SYSTEM”が設定される。

3) <標準文字集合名>は,SQL_CHARACTER,並びにこの規格及び他の規格によって定義されるとおり

の“4.2.7  文字集合”で規定する文字集合を含まなければならない。

4) <処理系定義文字集合名>は,SQL_TEXT 及び SQL_IDENTIFIER を含まなければならない。

5) <文字集合指定>に含まれる<文字集合名>を とする。

<文字集合名>の陽に指定されるか又は暗に想

定される

<スキーマ名>によって識別されるスキーマは,の記述子を含んでいなければならない。


459

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

6) <文字集合指定>が<スキーマ定義>に含まれないならば,<文字集合定義>に直に含まれる<文字集合

>は,INFORMATION_SCHEMA と等価でない陽に指定される<スキーマ名>を含まなければならな

い。

アクセス規則

1)  場合:

a)  SQL SECURITY INVOKER を指定する<SQL ルーチン指定>を介在しないで,<文字集合指定>が

<SQL スキーマ文>に含まれるならば,その<SQL スキーマ文>を含むスキーマを所有する<認可識

別子

>の適用可能な権限は,に関する USAGE を含まなければならない。

b)  そうでなければ,現行の権限は,に関する USAGE を含まなければならない。

一般規則

1) <文字集合指定>は,文字集合を識別する。CS を識別される文字集合とする。

2) <標準文字集合名>は,各国規格又は国際規格によって定義される文字集合の名前を指定する。CS

の文字レパートリは,その

<標準文字集合名>によって識別される文字集合を定義する規格によって

定義される。文字集合の既定照合順は,規格中で文字の順序によって定義され,

PAD SPACE 特性を

もつ。

3) <処理系定義文字集合名>は,処理系定義の文字集合の名前を指定する。CS の文字レパートリは,

処理系定義とする。文字集合の既定照合順,及び照合順が

NO PAD 特性をもつか PAD SPACE 特性

をもつかは,処理系定義とする。

4) <利用者定義文字集合名>は,INFORMATION_SCHEMA と等価でない<スキーマ名>をもつスキーマ

に記述子が含まれる文字集合を識別する。

注記 320  文字集合の既定照合順は,“11.41 <文字集合定義>”で定義している。

5) <文字集合指定>によって指定できるどの文字集合に対しても,文字集合記述子が存在する。

適合性規則

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

ない。

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

機能

<特定ルーチン指示子> (<specific routine designator>)  は,SQL 呼出しルーチンを指定する。

形式

<特定ルーチン指示子> ::=

  SPECIFIC  <ルーチン種別> <特定名>

 |

<ルーチン種別> <メンバ名> [ FOR <スキーマ解決利用者定義型名> ]

<ルーチン種別> ::=

  ROUTINE

 |

FUNCTION

 |

PROCEDURE

| [ INSTANCE | STATIC | CONSTRUCTOR ] METHOD

<メンバ名> ::=

  <メンバ名代替手段> [ <データ型リスト> ]

<メンバ名代替手段> ::=


460

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

  <スキーマ修飾付きルーチン名>

 |

<メソッド名>

<データ型リスト> ::=

  <左括弧> [ <データ型> [ { <コンマ> <データ型> }... ] ] <右括弧>

構文規則

1) <特定名> SN が指定されるならば,<特定ルーチン指示子>は,<特定名>が SN である SQL 呼出しル

ーチンを識別しなければならない。

2) <ルーチン種別>が METHOD を指定し,かつ,INSTANCE,STATIC 又は CONSTRUCTOR のどれも,

指定されないならば,

INSTANCE が暗に想定される。

3) <メンバ名> MN が指定されるならば,次による。

a) <スキーマ解決利用者定義型名>が指定されるならば,<ルーチン種別>は,METHOD を指定しな

ければならない。

METHOD が指定されるならば,<スキーマ解決利用者定義型名>を指定しなけ

ればならない。

b)  場合:

i) <ルーチン種別>が METHOD を指定するならば,<メンバ名>を指定しなければならない。<スキ

ーマ解決利用者定義型名

>の暗に想定されるか又は陽に指定される<スキーマ名>を SCN とし,

<メソッド名>を METH とし,SCN.METH を RN とする。

ii)  そうでなければ,<スキーマ修飾付きルーチン名>を指定しなければならない。MN の<スキーマ

修飾付きルーチン名

>を RN とし,MN の<スキーマ名>を SCN とする。

c)

場合:

i)

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

1) <ルーチン種別>が FUNCTION を指定するならば,全ての i,1 ≤ i ≤引数の個数に対して,

目の

SQL パラメタの宣言型を TYPE1 として,MN の<データ型リスト>中の 番目の<データ

>を TYPE2 として,“9.20  データ型の同一性”の構文規則を適用すると,それらの構文規

則を満たし,かつ,RN である<スキーマ修飾付きルーチン名>をもつただ一つの SQL 呼出し

通常関数が,SCN によって識別されるスキーマ中に存在しなければならない。<特定ルーチ

ン指示子

>は,その SQL 呼出し関数を識別する。

2) <ルーチン種別>が PROCEDURE を指定するならば,全ての i,1 ≤ i ≤引数の個数に対して,i

番目の

SQL パラメタの宣言型を TYPE1 として,MN の<データ型リスト>中の 番目の<デー

タ型

>を TYPE2 として,“9.20  データ型の同一性”の構文規則を適用すると,それらの構文

規則を満たし,かつ,RN である<スキーマ修飾付きルーチン名>をもつただ一つの SQL 呼出

し手続が,SCN によって識別されるスキーマ中に存在しなければならない。<特定ルーチン

指示子

>は,その SQL 呼出し手続を識別する。

3) <ルーチン種別>が METHOD を指定するならば,次による。

場合:

A) STATIC が指定されるならば,全ての i,1  ≤  i  ≤引数の個数に対して,番目の SQL パラメ

タの宣言型を TYPE1 として,MN の<データ型リスト>中の 番目の<データ型>を TYPE2

として,

9.20  データ型の同一性”の構文規則を適用すると,それらの構文規則を満たし,

かつ,METH である<メソッド名>をもつ,<スキーマ解決利用者定義型名>によって識別さ

れる利用者定義型のただ一つの静的

SQL 呼出しメソッドが存在しなければならない。<特


461

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

定ルーチン指示子

>は,その静的 SQL 呼出しメソッドを識別する。

B) CONSTRUCTOR が指定されるならば,全ての i,1 ≤ i ≤引数の個数に対して,非拡張<SQL

パラメタ宣言リスト

>中の 番目の SQL パラメタの宣言型を TYPE1 として,MN の<デー

タ型リスト

>中の 番目の<データ型>を TYPE2 として,“9.20  データ型の同一性”の構文

規則を適用すると,それらの構文規則を満たし,かつ,METH である<メソッド名>をもつ,

<スキーマ解決利用者定義型名>によって識別される利用者定義型のただ一つの SQL 呼出

し構成メソッドが存在しなければならない。

<特定ルーチン指示子>は,その SQL 呼出し構

成メソッドを識別する。

C)  そうでなければ,全ての i,1 ≤ i ≤引数の個数に対して,非拡張<SQL パラメタ宣言リスト>

中の 番目の SQL パラメタの宣言型を TYPE1 として,MN の<データ型リスト>中の 番目

<データ型>を TYPE2 として,

9.20  データ型の同一性”の構文規則を適用すると,それ

らの構文規則を満たし,かつ,METH である<メソッド名>をもつ,<スキーマ解決利用者

定義型名

>によって識別される利用者定義型のただ一つのインスタンス SQL 呼出しメソッ

ドが存在しなければならない。

<特定ルーチン指示子>は,そのインスタンス SQL 呼出しメ

ソッドを識別する。

4) <ルーチン種別>が ROUTINE を指定するならば,全ての i,1  ≤  i  ≤引数の個数に対して,

目の

SQL パラメタの宣言型を TYPE1 として,MN の<データ型リスト>中の 番目の<データ

>を TYPE2 として,“9.20  データ型の同一性”の構文規則を適用すると,それらの構文規

則を満たし,かつ,RN である<スキーマ修飾付きルーチン名>をもつ,ただ一つの SQL 呼出

しルーチンが,SCN によって識別されるスキーマ中に存在しなければならない。<特定ルー

チン指示子

>は,その SQL 呼出しルーチンを識別する。

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

1) <ルーチン種別>が FUNCTION を指定するならば,RN である<スキーマ修飾付きルーチン名>

をもつただ一つの

SQL 呼出し通常関数が,SCN によって識別されるスキーマ中に存在しなけ

ればならない。

<特定ルーチン指示子>は,その SQL 呼出し関数を識別する。

2) <ルーチン種別>が PROCEDURE を指定するならば,RN である<スキーマ修飾付きルーチン

>をもつただ一つの SQL 呼出し手続が,SCN によって識別されるスキーマ中に存在しなけ

ればならない。

<特定ルーチン指示子>は,その SQL 呼出し手続を識別する。

3) <ルーチン種別>が METHOD を指定するならば,次による。

場合:

A) STATIC が指定されるならば,METH である<メソッド名>をもつ,<スキーマ解決利用者定

義型名

>によって識別される利用者定義型のただ一つの静的 SQL 呼出しメソッドが存在し

なければならない。

<特定ルーチン指示子>は,その静的 SQL 呼出しメソッドを識別する。

B) CONSTRUCTOR が指定されるならば,METH である<メソッド名>をもつ,<スキーマ解決

利用者定義型名

>によって識別される利用者定義型のただ一つの SQL 呼出し構成メソッド

が存在しなければならない。

<特定ルーチン指示子>は,その SQL 呼出し構成メソッドを識

別する。

C)  そうでなければ,METH である<メソッド名>をもつ,<スキーマ解決利用者定義型名>によ

って識別される利用者定義型のただ一つのインスタンス

SQL 呼出しメソッドが存在しな

ければならない。

<特定ルーチン指示子>は,そのインスタンス SQL 呼出しメソッドを識別


462

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

する。

4) <ルーチン種別>が ROUTINE を指定するならば,RN である<スキーマ修飾付きルーチン名>

をもつただ一つの

SQL 呼出しルーチンが,SCN によって識別されるスキーマ中に存在しなけ

ればならない。

<特定ルーチン指示子>は,その SQL 呼出しルーチンを識別する。

4) FUNCTION が指定されるならば,識別される SQL 呼出しルーチンは,SQL 呼出し通常関数でなけ

ればならない。

PROCEDURE が指定されるならば,識別される SQL 呼出しルーチンは,SQL 呼出

し手続でなければならない。

STATIC METHOD が指定されるならば,識別される SQL 呼出しルーチ

ンは,静的

SQL 呼出しメソッドでなければならない。CONSTRUCTOR METHOD が指定されるなら

ば,識別される

SQL 呼出しルーチンは,SQL 呼出し構成メソッドでなければならない。INSTANCE

METHOD が指定されるか又は暗に想定されるならば,識別される SQL 呼出しルーチンは,インス

タンス

SQL 呼出しメソッドでなければならない。ROUTINE が指定されるならば,識別される SQL

呼出しルーチンは,

SQL 呼出し関数又は SQL 呼出し手続のいずれかとする。

アクセス規則

なし。 

一般規則

なし。 

適合性規則

1)  機能 S024“拡張構造型”なしでは,適合する SQL 言語は,METHOD を直に含む<ルーチン種別>を

含む

<特定ルーチン指示子>を含んではならない。

10.7  <COLLATE 句>

機能

<COLLATE 句> (<collate clause>)  は,既定照合順を指定する。

形式

<COLLATE 句> ::=

  COLLATE  <照合順名>

構文規則

1) <COLLATE 句>に含まれる<照合順名>を とする。<照合順名>の陽に指定されるか又は暗に想定さ

れる

<スキーマ名>によって識別されるスキーマは,の記述子を含んでいなければならない。

アクセス規則

1)  場合:

a)  SQL SECURITY INVOKER を指定する<SQL ルーチン指定>を介在しないで,<COLLATE 句>が

<SQL スキーマ文>に含まれるならば,その<SQL スキーマ文>を含むスキーマを所有する<認可識

別子

>の適用可能な権限は,に関する USAGE を含まなければならない。

b)  そうでなければ,現行の権限は,に関する USAGE を含まなければならない。

一般規則

なし。 

適合性規則

1)  機能 F690“照合順提供”なしでは,適合する SQL 言語は,<COLLATE 句>を含んではならない。

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

機能


463

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

<制約名定義>及び<制約特性> (<constraint name definition> and <constraint characteristics>)  は,制約の名前

及びその特性を指定する。

形式

<制約名定義> ::=

  CONSTRAINT  <制約名>

<制約特性> ::=

  <制約検査時期> [ [ NOT ] DEFERRABLE ] [<制約強制> ]

| [ NOT ] DEFERRABLE [ <制約検査時期> ] [<制約強制> ]

 |

[<制約強制> ]

<制約検査時期> ::=

  INITIALLY  DEFERRED

| INITIALLY IMMEDIATE

<制約強制> ::=

  [ NOT ] ENFORCED

構文規則

1) <制約検査時期>が指定されないならば,INITIALLY IMMEDIATE が暗に想定される。

2)  場合:

a) INITIALLY

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

i) NOT

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

ii) DEFERRABLE が指定されないならば,DEFERRABLE が暗に想定される。

b) INITIALLY

IMMEDIATE が指定されるか又は暗に想定され,かつ,DEFERRABLE も,NOT

DEFERRABLE も,指定されないならば,NOT DEFERRABLE が暗に想定される。

3) ENFORCED も,NOT ENFORCED も,指定されないならば,ENFORCED が暗に想定される。

アクセス規則

なし。 

一般規則

1) <制約名>によって識別される制約を とする。

2) NOT

DEFERRABLE が指定されるならば,は,遅延可能でない。そうでなければ,遅延可能とす

る。

3) <制約検査時期>が INITIALLY DEFERRED ならば,の初期制約モードは,遅延  (deferred)  とする。

そうでなければ,の初期制約モードは,即時  (immediate)  とする。

4) NOT

ENFORCED が指定されるならば,は,強制でない。そうでなければ,強制とする。

適合性規則

1)  機能 F721“遅延可能制約”なしでは,適合する SQL 言語は,<制約強制>以外の<制約特性>を含ん

ではならない。

注記 321  これは,INITIALLY IMMEDIATE NOT DEFERRABLE が暗に想定されることを意味する。

2)  機能 F491“制約管理”なしでは,適合する SQL 言語は,<制約名定義>を含んではならない。

3)  機能 F492“選択可能な表制約強制”なしでは,適合する SQL 言語は,<制約強制>を指定する<制約

特性

>を含んではならない。

10.9  <集約関数>


464

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

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

機能

<集約関数> (<aggregate function>)  は,行の集まりから計算される値を指定する。

形式

14

<集約関数> ::=

  COUNT  <左括弧> <アスタリスク> <右括弧> [ <FILTER 句> ]

 |

<一般集合関数> [ < FILTER 句> ]

 |

<2 項集合関数> [ < FILTER 句> ]

 |

<順序付け集合関数> [ < FILTER 句> ]

 |

<配列集約関数> [ < FILTER 句> ]

<一般集合関数> ::=

  <集合関数種別> <左括弧> [ <集合限定子> ]

      <値式> <右括弧>

<集合関数種別> ::=

  <計算操作>

<計算操作> ::=

  AVG

 |

MAX

 |

MIN

 |

SUM

 |

EVERY

 |

ANY

 |

SOME

 |

COUNT

 |

STDDEV_POP

 |

STDDEV_SAMP

 |

VAR_SAMP

 |

VAR_POP

 |

COLLECT

 |

FUSION

 |

INTERSECTION

<集合限定子> ::=

  DISTINCT

 |

ALL

<FILTER 句> ::=

  FILTER  <左括弧> WHERE <探索条件> <右括弧>

<2 項集合関数> ::=

  <2 項集合関数種別> <左括弧> <従属変数式> <コンマ>

      <独立変数式> <右括弧>

<2 項集合関数種別> ::=


465

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

  COVAR_POP

 |

COVAR_SAMP

 |

CORR

 |

REGR_SLOPE

 |

REGR_INTERCEPT

 |

REGR_COUNT

 |

REGR_R2

 |

REGR_AVGX

 |

REGR_AVGY

 |

REGR_SXX

 |

REGR_SYY

 |

REGR_SXY

<従属変数式> ::=

  <数値式>

<独立変数式> ::=

  <数値式>

<順序付け集合関数> ::=

  <仮説集合関数>

 |

<逆分布関数>

<仮説集合関数> ::=

  <順位関数種別> <左括弧>

      <仮説集合関数値式リスト> <右括弧>

      <WITHIN  GROUP 指定>

<WITHIN GROUP 指定> ::=

  WITHIN  GROUP  <左括弧> ORDER BY <ソート指定リスト> <右括弧>

<仮説集合関数値式リスト> ::=

  <値式> [ { <コンマ> <値式> }... ]

<逆分布関数> ::=

  <逆分布関数種別> <左括弧>

      <逆分布関数引数> <右括弧>

      <WITHIN  GROUP 指定>

<逆分布関数引数> ::=

  <数値式>

<逆分布関数種別> ::=

  PERCENTILE_CONT

 |

PERCENTILE_DISC

<配列集約関数> ::=

  ARRAY_AGG

      <左括弧> <値式> [ ORDER BY <ソート指定リスト> ] <右括弧>

構文規則


466

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

1) <集約関数>を AF とする。

2) STDDEV_POP,STDDEV_SAMP,VAR_POP 又は VAR_SAMP が指定されるならば,<集合限定子>

を指定してはならない。

3) <一般集合関数>が指定され,かつ,<集合限定子>が指定されないならば,ALL が暗に想定される。

4) COUNT が指定されるならば,結果の宣言型は,位取り 0 をもつ処理系定義の真数型とする。

5) <一般集合関数>が指定されるならば,次による。

a) <値式> VE は,<ウィンドウ関数>を含んではならない。

b) <値式>の宣言型を DT とする。

c) <集合限定子>が DISTINCT である<一般集合関数>を AF が指定するならば,VE は,グループ化

操作のオペランドとする。

9.12  グループ化操作”の構文規則及び適合性規則を適用する。

d) MAX 又は MIN である<集合関数種別>を AF が指定するならば,VE は,順序付け操作のオペラン

ドとする。

i)

9.14  順序付け操作”の構文規則及び適合性規則を適用する。

ii)  DT は,行順序付けであってはならない。

e) EVERY,ANY 又は SOME が指定されるならば,DT は,ブール型でなければならず,結果の宣言

型は,ブール型とする。

f) MAX 又は MIN が指定されるならば,結果の宣言型は,DT とする。

g) SUM 又は AVG が指定されるならば,次による。

i)

DT は,数型又は時間隔型でなければならない。

ii) SUM が指定され,かつ,DT が,位取り の真数ならば,結果の宣言型は,位取り をもつ処

理系定義の真数型とする。

iii) AVG が指定され,かつ,DT が真数ならば,結果の宣言型は,DT の精度以上の精度及び DT 

位取り以上の位取りをもつ処理系定義の真数型とする。

iv)  DT が概数ならば,結果の宣言型は,DT の精度以上の精度をもつ処理系定義の概数型とする。

v)  DT が時間隔ならば,結果の宣言型は,DT と同じ精度をもつ時間隔型とする。

h) VAR_POP 又は VAR_SAMP が指定されるならば,結果の宣言型は,処理系定義の概数型とする。

DT が概数型ならば,結果の精度は,DT の精度以上とする。

i)

STDDEV_POP(X)

  は,SQRT(VAR_POP(X))  と等価とする。

j)

STDDEV_SAMP(X)

  は,SQRT(VAR_SAMP(X)) と等価とする。

k) COLLECT が指定されるならば,結果の宣言型は,DT MULTISET とする。

l)

COLLECT (X) は,FUSION (MULTISET [X]) と等価とする。

m) FUSION が指定されるならば,DT は,マルチ集合型でなければならず,DISTINCT を指定しては

ならない。結果の宣言型は,DT とする。

n) INTERSECTION が指定されるならば,DT は,マルチ集合型でなければならず,DISTINCT を指

定してはならない。VE は,マルチ集合要素グループ化操作のマルチ集合オペランドとし,“9.13

マルチ集合要素グループ化操作”の構文規則及び適合性規則を適用する。結果の宣言型は,DT

とする。

6) <FILTER 句>は,<問合せ式>,<ウィンドウ関数>又は外への参照を含んではならない。

7) <2 項集合関数>が指定されるならば,次による。

a) <従属変数式> DVE 及び<独立変数式> IVE は,<ウィンドウ関数>を含んではならない。


467

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

b)  DVE の宣言型を DTDVE とし,IVE の宣言型を DTIVE とする。

c)

場合:

i) REGR_COUNT が指定されるならば,結果の宣言型は,位取り 0 をもつ処理系定義の真数型と

する。

ii)  そうでなければ,結果の宣言型は,処理系定義の概数型とする。DTDVE が概数型ならば,結

果の精度は,DTDVE の精度以上とする。DTIVE が概数型ならば,結果の精度は,DTIVE の精

度以上とする。

8) <仮説集合関数>が指定されるならば,次による。

a) <仮説集合関数>は,<ウィンドウ関数>,<集合関数指定>又は<問合せ式>を含んではならない。

b) <仮説集合関数値式リスト>に単純に含まれる<値式>の個数は,<ソート指定リスト>に単純に含ま

れる

<ソートキー>の個数と同じでなければならない。

c) <仮説集合関数値式リスト>に単純に含まれる各<値式> HSFVE に対して,<ソート指定リスト>に

単純に含まれる対応する

<ソートキー>を SK とする。

場合:

i)

HSFVE の宣言型が文字列型ならば,SK の宣言型は,HSFVE の宣言型と同じ文字レパートリ

をもつ文字列型でなければならない。HSFVE 及び SK の宣言型の集合を TYPESET として,

9.15  照合順決定”の構文規則を適用する。これらの構文規則の適用によって戻される COLL

を照合順とする。

ii)  そうでなければ,HSFVE 及び SK の宣言型は,互換でなければならない。

d)  場合:

i) RANK 又は DENSE_RANK が指定されるならば,結果の宣言型は,処理系定義の精度及び位取

0 をもつ真数型とする。

ii)  そうでなければ,結果の宣言型は,処理系定義の精度をもつ概数型とする。

9) <逆分布関数>が指定されるならば,次による。

a) <WITHIN

GROUP 指定>は,単一の<ソート指定>を含まなければならない。

b) <逆分布関数>は,<ウィンドウ関数>,<集合関数指定>又は<問合せ式>を含んではならない。

c) <ソート指定>に単純に含まれる<値式>の宣言型を DT とする。

d)  DT は,数型又は時間隔型でなければならない。

e)

結果の宣言型は,次による。

場合:

i)

DT が数型ならば,処理系定義の精度をもつ概数型とする。

ii)  DT が時間隔型ならば,DT とする。

10) <配列集約関数> AAG が指定されるならば,次による。

a)  AAG に直に含まれる<値式>の宣言型を VET とする。

b)  AAG の宣言型は,要素型 VET,及び配列型に対する処理系定義の最大基数 IDMC と等しい最大

基数をもつ配列型とする。

アクセス規則

なし。 

一般規則

1) <集約関数>の引数の入力  (argument source)  は,次による。


468

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

場合:

a)  AF が<集合関数指定> SFS に直に含まれるならば,SFS の集約問合せのグループ表のグループと

する。

b)  そうでなければ,

7.11 <WINDOW 句>”で定義するとおりに,AF を単純に含む<ウィンドウ関数

>によって識別されるウィンドウ構造記述子によって定義される現在行のウィンドウ枠中の行の

集まりとする。

2)  AF の引数の入力を とする。

3)  AF の結果の計算中に,

中間結果が,その中間結果を含む格納場所の宣言型で表現可能でないならば,

次による。

場合:

a)  AF の結果の最特定型が時間隔型ならば,例外条件:データ例外  (data exception)  -  時間隔値範

囲外  (interval value out of range)  が引き起こされる。

b)

14

  AF の結果の最特定型がマルチ集合型ならば,例外条件:データ例外  -  マルチ集合値あふれ

(multiset value overflow)  が引き起こされる。

c)  AF の結果の最特定型が配列型ならば,

例外条件:

データ例外  -  配列データ,右切捨て  (array data, 

right truncation)  が引き起こされる。

d)  そうでなければ,例外条件:データ例外  -  数値範囲外  (numeric value out of range)  が引き起こさ

れる。

4)  場合:

a) <FILTER 句>が指定されるならば,の各行に対して<探索条件>が実効的に評価される。<探索条

>の結果が真  (True)  である の行の集まりを T1 とする。

b)  そうでなければ,を T1 とする。

5) COUNT(*)

が指定されるならば,結果は,T1 の基数とする。

6) <一般集合関数>が指定されるならば,次による。

a)  T1 の各行に<値式>を適用し,ナル値を取り除いた結果の単一列の表を TX とする。一つ以上のナ

ル値が取り除かれるならば,終了条件:

警告  (warning)  -  集合関数中でナル値がなくなった  (null 

value eliminated in set function)  が引き起こされる。

b)  場合:

i) DISTINCT が指定されるならば,冗長な重複値を識別するために,

8.2  <比較述語>”で規定す

る比較規則を用いて,TX から冗長な重複値を取り除いた結果を TXA とする。

ii)  そうでなければ,TX を TXA とする。

c)

TXA の基数を とする。

d)  場合:

i) COUNT が指定されるならば,結果は,とする。

ii)  TXA が空ならば,結果は,ナル値とする。

iii) AVG が指定されるならば,結果は,TXA 中の値の平均とする。

iv) MAX 又は MIN が指定されるならば,結果は,それぞれ,TXA 中の最大値又は最小値とする。

これらの結果は,“8.2  <比較述語>”で規定する比較規則を用いて決定される。DT が利用者定

義型で,かつ,TXA 中の二つの値の比較の結果が不定  (Unknown)  になるならば,TXA の最大

値又は最小値は,処理系依存とする。


469

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

v) SUM が指定されるならば,結果は,TXA 中の値の合計とする。合計が結果の宣言型の範囲内

にないならば,例外条件:

データ例外  -  数値範囲外  が引き起こされる。

vi) EVERY が指定されるならば,次による。

場合:

1)  TXA のいずれかの要素の値が偽  (False)  ならば,結果は,偽とする。

2)  そうでなければ,結果は,真  (True)  とする。

vii) ANY 又は SOME が指定されるならば,次による。

場合:

1)  TXA のいずれかの要素の値が真  ならば,結果は,真  とする。

2)  そうでなければ,結果は,偽  とする。

viii) VAR_POP 又は VAR_SAMP が指定されるならば,TXA の列の値の合計を S1 とし,TXA の列の

値の

2 乗の合計を S2 とする。

1) VAR_POP が指定されるならば,結果は,(S2-S1*S1/N)/とする。

2) VAR_SAMP が指定されるならば,次による。

場合:

A)  が 1 ならば,結果は,ナル値とする。

B)  そうでなければ,結果は,(S2-S1*S1/N)/(N-1)  とする。

ix) FUSION が指定されるならば,結果は,次のようなマルチ集合 とする。ナル値を含む DT 

要素型中の各値 に対して,と同一である の要素の個数が,TXA の各行の列の値である

マルチ集合中の の同一の写しの個数の合計である。

x) INTERSECTION が指定されるならば,結果は,次のような,あるマルチ集合 とする。ナル

値を含む DT の要素型中の各値 に対して,中の の重複の個数が,TXA の各行の列の値で

あるマルチ集合中の の重複の個数の最小値である。

注記 322  正確な重複値を規定していないので,この規則は,“結果は,マルチ集合”ではなく,

“結果は,あるマルチ集合”としている。したがって,この計算は,幾つかの要素

型,すなわち,文字列,時刻帯付き日時及び利用者定義型を基にする要素型に対し

て,非決定的である。

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

いる。

7) <2 項集合関数種別>が指定されるならば,次による。

a)  T1 の各行に<従属変数式>及び<独立変数式>を適用し,<従属変数式>又は<独立変数式>のいずれ

かがナル値である各行を取り除いた結果の

2 列の表を TXA とする。一つ以上のナル値が取り除か

れるならば,終了条件:

警告  -  集合関数中でナル値がなくなった  が引き起こされる。

b)  TXA の基数を とし,<独立変数式>の値の列の合計を SUMX とし,<従属変数式>の値の列の合

計を SUMY とし,<独立変数式>の列中の値の 2 乗の合計を SUMX2 とし,<従属変数式>の列中の

値の

2 乗の合計を SUMY2 とし,<独立変数式>の列中の値と<従属変数式>の列中の値との同じ行

での積の合計を SUMXY とする。

c)

場合:

i) REGR_COUNT が指定されるならば,結果は,とする。

ii)  が 0 ならば,結果は,ナル値とする。


470

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

iii) REGR_SXX が指定されるならば,結果は,(SUMX2-SUMX*SUMX/N)  とする。

iv) REGR_SYY が指定されるならば,結果は,(SUMY2-SUMY*SUMY/N)  とする。

v) REGR_SXY が指定されるならば,結果は,(SUMXY-SUMX*SUMY/N)  とする。

vi) REGR_AVGX が指定されるならば,結果は,SUMX/とする。

vii) REGR_AVGY が指定されるならば,結果は,SUMY/とする。

viii) COVAR_POP が指定されるならば,結果は,(SUMXY-SUMX*SUMY/N)/とする。

ix) COVAR_SAMP が指定されるならば,次による。

場合:

1)  が 1 ならば,結果は,ナル値とする。

2)  そうでなければ,結果は,(SUMXY-SUMX*SUMY/N)/(N-1)  とする。

x) CORR が指定されるならば,次による。

場合:

1)  N*SUMX2 が SUMX*SUMX と等しいならば,結果は,ナル値とする。

注記 324  この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

<独立変数式>が<従属変数式>と相関関係にない。

2)  N*SUMY2 が SUMY*SUMY と等しいならば,結果は,ナル値とする。

注記 325  この場合には,<従属変数式>の残っている全ての値が等しく,その結果として,

<従属変数式>が<独立変数式>と相関関係にない。

3)  そ う で な け れ ば , 結 果 は , SQRT(POWER(N*SUMXY-SUMX*SUMY,2) /

((N*SUMX2-SUMX*SUMX)*(N*SUMY2-SUMY*SUMY)))

  とする。演算の概算結果の指数が

結果の宣言型に対する処理系定義の指数の範囲内にないならば,結果は,ナル値とする。

xi) REGR_R2 が指定されるならば,次による。

場合:

1)  N*SUMX2 が SUMX*SUMX と等しいならば,結果は,ナル値とする。

注記 326  この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

最小

2 乗線が垂直になるか,又は N=1 ならば,一意に決定される最小 2 乗線が存

在しない。

2)  N*SUMY2 が SUMY*SUMY と等しいならば,結果は,1 とする。

注記 327  この場合には,<従属変数式>の残っている全ての値が等しく,その結果として,

最小

2 乗線が水平になる。

3)  そうでなければ,結果は,POWER(N*SUMXY-SUMX*SUMY,2) / ((N*SUMX2-SUMX*SUMX)

* (N*SUMY2-SUMY*SUMY))

  とする。演算の概算結果の指数が結果の宣言型に対する処理

系定義の指数の範囲内にないならば,結果は,ナル値とする。

xii) REGR_SLOPE(YX)  が指定されるならば,次による。

場合:

1)  N*SUMX2 が SUMX*SUMX と等しいならば,結果は,ナル値とする。

注記 328  この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

最小

2 乗線が垂直になるか,又は N=1 ならば,一意に決定される最小 2 乗線が存

在しない。

2)  そうでなければ,結果は,(N*SUMXY-SUMX*SUMY) / (N*SUMX2-SUMX*SUMX)  とする。


471

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

演算の概算結果の指数が結果の宣言型に対する処理系定義の指数の範囲内にないならば,結

果は,ナル値とする。

xiii) REGR_INTERCEPT が指定されるならば,次による。

場合:

1)  N*SUMX2 が SUMX*SUMX と等しいならば,結果は,ナル値とする。

注記 329  この場合には,<独立変数式>の残っている全ての値が等しく,その結果として,

最小

2 乗線が垂直になるか,又は N=1 ならば,一意に決定される最小 2 乗線が存

在しない。

2)  そうでなければ,結果は,(SUMY*SUMX2-SUMX*SUMXY) / (N*SUMX2-SUMX*SUMX)  とす

る。演算の概算結果の指数が結果の宣言型に対する処理系定義の指数の範囲内にないならば,

結果は,ナル値とする。

8) <仮説集合関数>が指定されるならば,次による。

a) <順位関数種別>を WIFT とする。

b)  T1 の処理系依存の名前を TNAME とする。

c) <仮説集合関数値式リスト>に単純に含まれる<値式>の個数を とする。

d) <仮説集合関数値式リスト>に単純に含まれる<値式>を VE

1

...,VEK とする。

e)

互いに異なる処理系依存の列名を,WIFTVALMARKER 及び CN

1

...,CNK とする。

f) <ソート指定リスト>に単純に含まれる<ソート指定>を SP

1

...,SPK とする。各 に対して,<ソ

ートキー

>を CNi に置き換えることによって SPi から得られる<ソート指定>を WSPi とする。

g)  結果は,次の<スカラ副問合せ>の結果とする。

( SELECT WIFTVAL

  FROM  (  SELECT  MARKERWIFT() OVER

            (  ORDER  BY  WSP

1

, ..., WSP

K

 )

        FROM  (  SELECT  0,  SK

1

, ..., SK

K

                FROM  TNAME

                  UNION  ALL

                    VALUES  (1,  VE

1

, ..., VE

K

) )

                  AS  TXNAME  (MARKERCN

1

, ..., CN

K

 )

        )  AS  TEMPTABLE  (MARKERWIFTVAL)

  WHERE  MARKER = 1 )

9) <逆分布関数>が指定されるならば,次による。

a) <逆分布関数引数>の値を NVE とする。

b)  NVE がナル値ならば,結果は,ナル値とする。

c)

NVE が 0 未満か又は 1 を超えるならば,例外条件:データ例外  -  数値範囲外  が引き起こされ

る。

d)  T1 の各行に<ソート指定>に単純に含まれる<値式>を適用し,ナル値を取り除いた結果の単一列

の表を TXA とする。一つ以上のナル値が取り除かれるならば,終了条件:警告  -  集合関数中で

ナル値がなくなった  が引き起こされる。TXA は,“10.10  <ソート指定リスト>”の一般規則で規

定するとおりに,

<ソート指定>によって順序付けられる。

e)

TXA の処理系依存の名前を TXANAME とする。


472

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

f)

TXA の列の処理系依存の列名を TXCOLNAME とする。

g) <ソートキー>を TXCOLNAME に置き換えることによって<ソート指定>から得られるものを WSP

とする。

h)  場合:

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

1)  NVE*(N-1)  の値以下で,位取り 0 をもつ最大の真数値を ROW0 とする。ROW0 を表現する<

定数

>を ROWLIT0 とする。

2)  NVE*(N-1)  の値以上で,位取り 0 をもつ最小の真数値を ROW1 とする。ROW1 を表現する<

定数

>を ROWLIT1 とする。

3)  NVE*(N-1)-ROW0 を表現する<概数定数>を FACTOR とする。

4)  結果は,次の<スカラ副問合せ>の結果とする。

( WITH TEMPTABLE(X, Y) AS

     (  SELECT  ROW_NUMBER()

                  OVER  (ORDER  BY  WSP)-1,

                TXCOLNAME

        FROM TXANAME )

SELECT CAST ( T0.Y + FACTOR * (T1.Y-T0.Y) AS DT )

FROM TEMPTABLE T0, TEMPTABLE T1

WHERE T0.ROWNUMBER = ROWLIT0

  AND  T1.ROWNUMBER  =  ROWLIT1 )

注記 330 ROW_NUMBER は,非決定的であるが,T0.Y 及び T1.Y の値は,この式によって

決定される。TXA の列だけが WSP によって完全に順序付けられることに注意す

る。NVE*(N–1)  が整数ならば,T0 及び T1 から選択される行は,同じであり,結

果は,まさに

T0.Y である。そうでなければ,順序付けられた集合中の行番号を全

体の中での割合とみなして,

PERCENTILE_CONT 演算子の引数を結合し,副問合

せが,それらの行番号をもつ連続した二つの値の間で線形内挿を行う。

ii) PERCENTILE_DISC が指定されるならば,次による。

1)  WSP に単純に含まれる<順序付け指定>が DESC ならば,MAX を MAXORMIN とする。そう

でなければ,

MIN を MAXORMIN とする。

2)  NVE の値を表現する<定数>を NVELIT とする。

3)  結果は,次の<スカラ副問合せ>の結果とする。

( SELECT MAXORMIN (TXCOLNAME)

   FROM  (  SELECT  TXCOLNAME,

                   CUME_DIST()  OVER  (ORDER  BY  WSP)

   FROM  TXANAME ) AS TEMPTABLE (TXCOLNAMECUMEDIST)

   WHERE  CUMEDIST >= NVELIT )

10) <配列集約関数>が指定されるならば,次による。

a) <ソート指定リスト>が指定されるならば,<ソートキー>の個数を とする。そうでなければ,0

を とする。

b) 1 番目の列を得るために,

<配列集約関数>に直に含まれる<値式>を T1 の各行に適用し,全ての i


473

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

1 ≤ i ≤ に対して,(i +1)  番目の列を得るために,番目の<ソートキー>に単純に含まれる<値式>

を T1 の各行に適用することによって得られる K +1  個の列から成る表を TXA とする。

c)

TXA の 2 番目から  (K +1)  番目までの列から得られる<ソートキー>の値に従って,TXA を順序付

ける。が 0 ならば,TXA の順序付けは,処理系依存とする。

d)  TXA 中の行の個数を とする。

e)

が IDMC を超えるならば,例外条件:データ例外  -  配列データ,右切捨て  が引き起こされ

る。

f)

TXA の順序付けに従って,TXA の行を Ri,1 ≤ i ≤ とする。

g)  場合:

i)

TXA が空ならば,<配列集約関数>の結果は,ナル値とする。

ii)  そうでなければ,<配列集約関数>の結果は,全ての i,1 ≤ i ≤ に対して,番目の要素の値が

Ri の 1 番目の列の値であるような 個の要素から成る配列とする。 
注記 331  <配列集約関数>を計算するときには,ナル値は,取り除かれない。このこと,及び

それに加えて省略可能な

<ソート指定リスト>が,<配列集約関数>を<一般集合関数>

と区別する。

適合性規則

1)  機能 T031“BOOLEAN データ型”なしでは,適合する SQL 言語は,EVERY,ANY 又は SOME を

直に含む

<計算操作>を含んではならない。

2)  機能 F561“完全な値式”又は機能 F801“完全な集合関数”なしでは,適合する SQL 言語は,DISTINCT

を直に含み,かつ,列参照ではない

<値式>を含む<一般集合関数>を含んではならない。

3)  機能 F441“拡張集合関数提供”なしでは,適合する SQL 言語は,COUNT を直に含む<計算操作>

を含み,かつ,

DISTINCT を直に含む<集合限定子>を含まない<一般集合関数>を含んではならない。

4)  機能 F441“拡張集合関数提供”なしでは,適合する SQL 言語は,DISTINCT を直に含む<集合限定

>を含まないで,かつ,の列を参照しない列参照を含む<値式>を含む<一般集合関数>を含んで

はならない。

5)  機能 F441“拡張集合関数提供”なしでは,適合する SQL 言語は,の列を参照する列参照を含む<

従属変数式

>も<独立変数式>も含まない<2 項集合関数>を含んではならない。

6)  機能 F441“拡張集合関数提供”なしでは,適合する SQL 言語は,<一般集合関数>に単純に含まれ,

かつ,外への参照である列参照を含む

<値式>で,列参照ではない<値式>を含んではならない。

7)  機能 F441“拡張集合関数提供”なしでは,適合する SQL 言語は,<従属変数式>又は<独立変数式>

に単純に含まれ,かつ,外への参照である列参照を含む

<数値式>で,列参照ではない<数値式>を含

んではならない。

8)  機能 F441“拡張集合関数提供”なしでは,適合する SQL 言語は,<集約関数> SFS2 を一般に含む<

値式

>から導出される列への参照を含み,かつ,<集約関数> SFS1 に含まれる列参照を含んではなら

ない。

9)  機能 T621“拡張数関数”なしでは,適合する SQL 言語は,STDDEV_POP,STDDEV_SAMP,VAR_POP

又は

VAR_SAMP を直に含む<計算操作>を含んではならない。

10)  機能 T621“拡張数関数”なしでは,適合する SQL 言語は,<2 項集合関数種別>を含んではならな

い。

11)  機能 T612“高度 OLAP 演算”なしでは,適合する SQL 言語は,<仮説集合関数>又は<逆分布関数>


474

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

を含んではならない。

12)  機能 T612“高度 OLAP 演算”なしでは,適合する SQL 言語は,<FILTER 句>を含んではならない。

13)  機能 S271“基本マルチ集合提供”なしでは,適合する SQL 言語は,COLLECT を直に含む<計算操

>を含んではならない。

14)  機能 S275“高度マルチ集合提供”なしでは,適合する SQL 言語は,FUSION 又は INTERSECTION

を直に含む

<計算操作>を含んではならない。

注記 332 INTERSECTION が指定されるならば,“9.13  マルチ集合要素グループ化操作”の適合性

規則も適用する。

15)  機能 F442“集合関数中の列参照の混在”なしでは,適合する SQL 言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である

<値式>を単純に含む<仮説集合関数値式リスト>を含んでは

ならない。

16)  機能 F442“集合関数中の列参照の混在”なしでは,適合する SQL 言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である

<値式>を単純に含む<逆分布関数引数>を含む<逆分布関数>

を含んではならない。

17)  機能 F442“集合関数中の列参照の混在”なしでは,適合する SQL 言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である

<値式>を単純に含む<一般集合関数>を含む<集約関数>を含

んではならない。

18)  機能 F442“集合関数中の列参照の混在”なしでは,適合する SQL 言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である

<従属変数式>又は<独立変数式>を単純に含む<2 項集合関数

>を含む<集約関数>を含んではならない。

19)  機能 F442“集合関数中の列参照の混在”なしでは,適合する SQL 言語は,二つ以上の列参照を含

み,そのうちの一つが外への参照である

<値式>を単純に含む<WITHIN GROUP 指定>を含んではな

らない。

20)  機能 S098“ARRAY_AGG”なしでは,適合する SQL 言語は,<配列集約関数>を含んではならない。

10.10

<ソート指定リスト>

機能

<ソート指定リスト> (<sort specification list>)  は,ソート順序を指定する。

形式

<ソート指定リスト> ::=

  <ソート指定> [ { <コンマ> <ソート指定> }... ]

<ソート指定> ::=

  <ソートキー> [ <順序付け指定> ] [ <ナル順序付け> ]

<ソートキー> ::=

  <値式>

<順序付け指定> ::=

  ASC

 |

DESC

<ナル順序付け> ::=

  NULLS  FIRST

| NULLS LAST


475

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

構文規則

1) <ソート指定>に含まれる<ソートキー>に単純に含まれる<値式>の宣言型を DT とする。

2) <ソート指定>に含まれる<ソートキー>に単純に含まれる各<値式>は,順序付け操作のオペランドと

する。

9.14  順序付け操作”の構文規則及び適合性規則を適用する。

3) <ナル順序付け>が指定されないならば,処理系定義の<ナル順序付け>が暗に想定される。<ナル順

序付け

>に対する処理系定義の既定値は,<ソート指定リスト>の外側の文脈に依存してはならない。

アクセス規則

なし。 

一般規則

1) <ソート指定リスト>は,次のとおりに,行の順序付けを定義する。

a) <ソート指定>の個数を とする。

b)  番目の<ソート指定>に含まれる<ソートキー>を Ki,1 ≤ i ≤ とする。

c)

<ソート指定>は,対応するソートキーKi に対するソート方向  (sort direction)  を指定する。

目の

<ソート指定>中に DESC が指定されないならば,Ki に対するソート方向は,昇順とし,適用

可能な

<比較演算子>は,<小なり演算子>とする。そうでなければ,Ki に対するソート方向は,降

順とし,適用可能な

<比較演算子>は,<大なり演算子>とする。

d)  順序付けられる行の集まりのいずれかの行を とし,行の同じ集まりの別の行を とする。

e)

及び の中の Ki の値を,それぞれ,PVi 及び QVi とする。結果中の行 と との相対位置は,
次のとおりに PVi と QVi とを比較することによって決定される。

i)

比較は,次の一般規則に従って実行する。

場合:

1)  Ki の宣言型が行型ならば,再帰的に適用されるこの細分箇条の一般規則。

2)  そうでなければ,

8.2 <比較述語>”の一般規則。ここで,<比較演算子>は,Ki に対して適用

可能な

<比較演算子>とする。

ii)  比較は,次のとおりにナル値を特別に扱って実行する。

場合:

1)  PVi 及び QVi が両方ともナル値ならば,それらは,互いに等しいとみなす。

2)  PVi がナル値で,かつ,QVi がナル値でないならば,次による。

場合:

A) NULLS

FIRST が指定されるか又は暗に想定されるならば,PVi  <比較演算子>  QVi は,真

(True)  とみなす。

B) NULLS

LAST が指定されるか又は暗に想定されるならば,PVi  <比較演算子>  QVi は,偽

(False)  とみなす。

3)  PVi がナル値でなく,かつ,QVi がナル値ならば,次による。

場合:

A) NULLS

FIRST が指定されるか又は暗に想定されるならば,PVi <比較演算子> QVi は,偽  と

みなす。

B) NULLS

LAST が指定されるか又は暗に想定されるならば,PVi <比較演算子> QVi は,真  と

みなす。

f)

適用可能な

<比較演算子>に対して,<比較述語>“PV

i

 <比較演算子> QV

i

”の値が

真  ならば,


476

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

PVi は,QVi に先行する  (precede)  という。

g)  PVi 及び QVi がナル値でなく,かつ,“PV

i

 <比較演算子> QV

i

”の結果が

不定  (Unknown)  なら

ば,PVi と QVi との相対的な順序付けは,処理系依存とする。

h)  ある n,1 ≤ n ≤ に対して,PVn が QVn に先行し,かつ,全ての i < に対して,PVi が QVi 

異ならないならば,行 の相対位置は,行 の前とする。

i) <ソート指定>に関して異ならない二つの行は,互いの同位行  (peers)  という。同位行の相対的な

順序付けは,処理系依存とする。

適合性規則

1)  機能 T611“基本 OLAP 操作”なしでは,適合する SQL 言語は,<ナル順序付け>を含んではならな

い。

注記 333  “9.14  順序付け操作”の適合性規則も適用する。

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

11.1  <スキーマ定義>

この細分箇条は,ISO/IEC 9075-4 の“9.1 <スキーマ定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“11.1 <スキーマ定義>”によって修正される。 

機能

<スキーマ定義> (<schema definition>)  は,スキーマを定義する。

形式

<スキーマ定義> ::=

  CREATE  SCHEMA  <スキーマ名句>

      [ <スキーマ文字集合又はパス> ]

      [ <スキーマ要素>... ]

<スキーマ文字集合又はパス> ::=

  <スキーマ文字集合指定>

 |

<スキーマパス指定>

 |

<スキーマ文字集合指定> <スキーマパス指定>

 |

<スキーマパス指定> <スキーマ文字集合指定>

<スキーマ名句> ::=

  <スキーマ名>

| AUTHORIZATION <スキーマ認可識別子>

 |

<スキーマ名> AUTHORIZATION <スキーマ認可識別子>

<スキーマ認可識別子> ::=

  <認可識別子>

<スキーマ文字集合指定> ::=

  DEFAULT CHARACTER SET <文字集合指定>

<スキーマパス指定> ::=

  <パス指定>

04

09

<スキーマ要素> ::=

  <表定義>


477

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

 |

<ビュー定義>

 |

<定義域定義>

 |

<文字集合定義>

 |

<照合順定義>

 |

<文字変換定義>

 |

<表明定義>

 |

<トリガ定義>

 |

<利用者定義型定義>

 |

<利用者定義型変換定義>

 |

<利用者定義順序付け定義>

 |

<変換定義>

 |

<スキーマルーチン>

 |

<順序数生成子定義>

 |

<GRANT

文>

 |

<役割定義>

構文規則

1) <スキーマ名>が指定されないならば,<スキーマ認可識別子>と等しい<スキーマ名>が暗に想定され

る。

2) AUTHORIZATION

<スキーマ認可識別子>が指定されないならば,次による。

場合:

a)  指定された<モジュール認可識別子>をもつ SQL クライアントモジュールに<スキーマ定義>が含

まれるならば,

<スキーマ定義>に対して,その<モジュール認可識別子>と等しい<認可識別子>

が暗に想定される。

b)  そうでなければ,SQL セション利用者識別子と等しい<認可識別子>が暗に想定される。

3)  陽に指定されるか又は暗に想定される<スキーマ名>の<修飾なしスキーマ名>は,<スキーマ名>の<

カタログ名

>によって識別されるカタログ中の他のどのスキーマの<スキーマ名>の<修飾なしスキ

ーマ名

>とも等価であってはならない。

4) <SQL クライアントモジュール定義>中の<外部呼出し手続>に<スキーマ定義>が含まれるならば,<

スキーマ定義

>の処理中の実効的な<スキーマ認可識別子>及び<スキーマ名>は,それぞれ,<スキー

マ定義

>中で指定されるか又は暗に想定される<スキーマ認可識別子>及び<スキーマ名>とする。

注記 334 SQL クライアントモジュール中の<外部呼出し手続>中で実行される他の SQL 文は,SQL

クライアントモジュールに対して指定されるか又は暗に想定される

<モジュール認可識

別子

>及び<スキーマ名>をもつ。

5) <スキーマ文字集合指定>が指定されないならば,<SQL 言語文字>中の少なくとも全ての文字を含む

処理系定義の文字集合を指定する

<スキーマ文字集合指定>が暗に想定される。

6) <スキーマパス指定>が指定されないならば,<スキーマ名句>に含まれる<スキーマ名>を含む処理系

定義の

<スキーマ名リスト>を含む<スキーマパス指定>が暗に想定される。

7) <スキーマパス指定>の<スキーマ名リスト>に含まれる各<スキーマ名>の陽に指定されるか又は暗

に想定される

<カタログ名>は,<スキーマ名句>に含まれる<スキーマ名>の<カタログ名>と等価でな

ければならない。


478

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

8)  陽に指定されるか又は暗に想定される<スキーマパス指定>の<スキーマ名リスト>は,スキーマの

SQL パスとして用いる。SQL パスは,<スキーマ定義>に含まれる<ルーチン呼出し>に直に含まれる

修飾なし

<ルーチン名>を実効的に修飾するために用いる。

注記 335  <ルーチン名>は,“5.4  名前及び識別子”で定義している。

アクセス規則

1) <スキーマ定義>を実行するために必要な権限は,処理系定義とする。

一般規則

1) <スキーマ定義>は,カタログ中に SQL スキーマ を作成する。は,次の項目を含む。

a)  陽に指定されるか又は暗に想定される<スキーマ名>と等価なスキーマ名。

b)  陽に指定されるか又は暗に想定される<認可識別子>と等価なスキーマ認可識別子。

c)

陽に指定されるか又は暗に想定される

<スキーマ文字集合指定>と等価なスキーマ文字集合名。

d)  陽に指定されるか又は暗に想定される<スキーマパス指定>と等価なスキーマ SQL パス。

e) <スキーマ定義>の全ての<スキーマ要素>によって作成される記述子。

2)  の所有者は,スキーマ認可識別子とする。

3)  陽に指定されるか又は暗に想定される<文字集合指定>は,文字集合を陽に指定しない全ての<列定

>及び<定義域定義>に対して用いられる既定文字集合として用いる。

適合性規則

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

ス指定

>を含んではならない。

2)  機能 F461“名前付き文字集合”なしでは,適合する SQL 言語は,<スキーマ文字集合指定>を含ん

ではならない。

3)  機能 F171“利用者ごとの複数スキーマ”なしでは,適合する SQL 言語は,<スキーマ名>を含む<

スキーマ名句

>を含んではならない。

4)  機能 T332“拡張役割”なしでは,適合する SQL 言語中で,<スキーマ認可識別子>は,<役割名>で

あってはならない。

11.2  <スキーマ削除文>

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

この細分箇条は,ISO/IEC 9075-9 の“11.2 <スキーマ削除文>”によって修正される。 

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

機能

<スキーマ削除文> (<drop schema statement>)  は,スキーマを破壊する。

形式

<スキーマ削除文> ::=

  DROP  SCHEMA  <スキーマ名> <削除動作>

<削除動作> ::=

  CASCADE

 |

RESTRICT

構文規則

1) <スキーマ名> SN によって識別されるスキーマを とする。

2)  SN は,陽に指定されるか又は暗に想定される<カタログ名>によって識別されるカタログ中のスキ


479

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

ーマを識別しなければならない。

3)  SN は,どのカタログ中でも,

INFORMATION_SCHEMA”と名付けられたスキーマを識別してはな

らない。

4)

09

13

 RESTRICT が指定されるならば,は,どの永続実表,大域一時表,作成局所一時表,ビュー,

定義域,表明,文字集合,照合順,文字変換,トリガ,利用者定義型,

SQL 呼出しルーチン,順序

数生成子又は役割も含んではならないし,の<スキーマ名>は,どのルーチン記述子の SQL ルーチ

ン本体にも含まれてはならない。

注記 336 CASCADE が指定されるならば,このようなオブジェクトは,この細分箇条の一般規則

で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE 文>の実行に

よって暗に削除される。

アクセス規則

1)  与えられた認可識別子は,SN によって識別されるスキーマを所有する<認可識別子>を含まなけれ

ばならない。

一般規則

1)

09

13

 に含まれる実表又は一時表の記述子に含まれる<表名>を とする。次の<表削除文>が実効的

に実行される。

DROP TABLE T CASCADE

2)  に含まれるビューの記述子に含まれる<表名>を とする。次の<ビュー削除文>が実効的に実行さ

れる。

DROP VIEW V CASCADE

3)  に含まれる定義域の記述子に含まれる<定義域名>を とする。次の<定義域削除文>が実効的に実

行される。

DROP DOMAIN D CASCADE

4)  に含まれる表明の記述子に含まれる<制約名>を とする。次の<表明削除文>が実効的に実行され

る。

DROP ASSERTION A CASCADE

5)  に含まれる照合順の記述子に含まれる<照合順名>を CD とする。次の<照合順削除文>が実効的に

実行される。

DROP COLLATION CD CASCADE

6)  に含まれる文字変換の記述子に含まれる<文字変換名>を TD とする。次の<文字変換削除文>が実

効的に実行される。

DROP TRANSLATION TD

7)  に含まれる文字集合の記述子に含まれる<文字集合名>を RD とする。次の<文字集合削除文>が実

効的に実行される。

DROP CHARACTER SET RD

8)

04

 に含まれる利用者定義型の記述子に含まれる<利用者定義型名>を DT とする。次の<データ型削

除文

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

DROP TYPE DT CASCADE

9)  に含まれるトリガの記述子に含まれる<トリガ名>を TT とする。次の<トリガ削除文>が実効的に

実行される。


480

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

DROP TRIGGER TT

10)  に含まれる記述子をもつどの SQL 呼出しルーチン に対しても,の<特定名>を SN とする。次

<ルーチン削除文>がどの に対しても実効的に実行される。

DROP SPECIFIC ROUTINE SN CASCADE

11)

04

 の<スキーマ名>を含む<SQL ルーチン本体>を含むルーチン記述子をもつ SQL 呼出しルーチンを

とする。の<特定名>を SN とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除

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

DROP SPECIFIC ROUTINE SN CASCADE

12)

13

 に含まれる順序数生成子の記述子に含まれる順序数生成子名を SEQN とする。次の<順序数生成

子削除文

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

DROP SEQUENCE SEQN CASCADE

13)  が破壊される。

適合性規則

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

を含んではならない。

2)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<スキーマ削除文>を含んではな

らない。

11.3  <表定義>

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

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

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

機能

<表定義> (<table definition>)  は,永続実表,作成局所一時表,又は大域一時表を定義する。

形式

<表定義> ::=

  CREATE  [  <表有効範囲> ] TABLE <表名> <表内容元>

      [  WITH  <SYSTEM  VERSIONING 句> ]

      [  ON  COMMIT  <表コミット動作> ROWS ]

<表内容元> ::=

  <表要素リスト>

 |

<型付き表句>

 |

<AS 副問合せ句>

<表有効範囲> ::=

  <GLOBAL 又は LOCAL> TEMPORARY

<GLOBAL 又は LOCAL> ::=

  GLOBAL

 |

LOCAL

<SYSTEM VERSIONING 句> ::=

  SYSTEM  VERSIONING

<表コミット動作> ::=


481

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

  PRESERVE

 |

DELETE

<表要素リスト> ::=

  <左括弧> <表要素> [ { <コンマ> <表要素> }... ] <右括弧>

<表要素> ::=

  <列定義>

 |

<表期間定義>

 |

<表制約定義>

 |

<LIKE 句>

<型付き表句> ::=

  OF  <パス解決利用者定義型名> [ <下位表句> ]

      [ <型付き表要素リスト> ]

<型付き表要素リスト> ::=

  <左括弧> <型付き表要素>

      [ { <コンマ> <型付き表要素> }... ] <右括弧>

<型付き表要素> ::=

  <列 OPTIONS>

 |

<表制約定義>

 |

<自己参照列指定>

<自己参照列指定> ::=

  REF  IS  <自己参照列名> [ <参照生成> ]

<参照生成> ::=

  SYSTEM  GENERATED

| USER GENERATED

 |

DERIVED

<自己参照列名> ::=

  <列名>

<列 OPTIONS> ::=

  <列名> WITH OPTIONS <列選択肢リスト>

09

<列選択肢リスト> ::=

  [  <SCOPE 句> ] [ <DEFAULT 句> ] [ <列制約定義>... ]

<下位表句> ::=

  UNDER  <上位表句>

<上位表句> ::=

  <上位表名>

<上位表名> ::=

  <表名>

<LIKE 句> ::=

  LIKE  <表名> [ <LIKE 選択肢の並び> ]

<LIKE 選択肢の並び> ::=


482

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

  <LIKE 選択肢>...

<LIKE 選択肢> ::=

  <IDENTITY 選択肢>

 |

<列既定値選択肢>

 |

<生成選択肢>

<IDENTITY 選択肢> ::=

  INCLUDING  IDENTITY

| EXCLUDING IDENTITY

<列既定値選択肢> ::=

  INCLUDING  DEFAULTS

| EXCLUDING DEFAULTS

<生成選択肢> ::=

  INCLUDING  GENERATED

| EXCLUDING GENERATED

<AS 副問合せ句> ::=

  [  <左括弧> <列名リスト> <右括弧> ] AS <表副問合せ>

      <WITH  DATA 又は WITH NO DATA>

<WITH DATA 又は WITH NO DATA> ::=

  WITH  NO  DATA

| WITH DATA

<表期間定義> ::=

  <システム又は適用業務時刻期間指定>

      <左括弧> <期間開始列名> <コンマ> <期間終了列名> <右括弧>

<システム又は適用業務時刻期間指定> ::=

  <システム時刻期間指定>

 |

<適用業務時刻期間指定>

<システム時刻期間指定> ::=

  PERIOD  FOR  SYSTEM_TIME

<適用業務時刻期間指定> ::=

  PERIOD  FOR  <適用業務時刻期間名>

<適用業務時刻期間名> ::=

  <識別子>

<期間開始列名> ::=

  <列名>

<期間終了列名> ::=

  <列名>

構文規則

1)  高々一つの<表要素>が,<システム時刻期間指定>を含む<表期間定義>でなければならない。高々一

つの

<表要素>が,<適用業務時刻期間指定>を含む<表期間定義>でなければならない。

2) <表期間定義> TPD が指定されるならば,次による。


483

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

a) <表有効範囲>を指定してはならない。

b) <表内容元>は,<表要素リスト>を指定しなければならない。

c)

TPD が<システム時刻期間指定>を含むならば,SYSTEM_TIME を PN とする。そうでなければ,

TPD に含まれる<適用業務時刻期間名>を PN とする。

d) <列定義>中のどの<列名>も,PN と等価であってはならない。

e) <表要素リスト>は,次の全てが真となるような二つの<列定義> CD1 及び CD2 を含まなければな

らない。

i)

CD1 に含まれる<列名> CN1 が,TPD に含まれる<期間開始列名>と等価である。CN1 によって

識別される列は,PN 期間開始列とする。

ii)  CD2 に含まれる<列名> CN2 が,TPD に含まれる<期間終了列名>と等価である。CN2 によって

識別される列は,PN 期間終了列とする。

iii)  CD1 に含まれる<データ型又は定義域名>が DATE 型又は時刻印型のいずれかで,かつ,CD2 

含まれる

<データ型又は定義域名>と等価である。

iv)  陽に指定されるか又は暗に想定され,NOT NULL NOT DEFERRABLE ENFORCED を指定する<

列制約定義

>を,CD1 及び CD2 の両方が含む。

v)  場合:

1)  TPD が<システム時刻期間指定>を含むならば,CD1 は,<システム時刻期間開始列指定>を含

まなければならず,CD2 は,<システム時刻期間終了列指定>を含まなければならない。

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

A)  CD1 も,CD2 も,<識別列指定>,<生成句>,<システム時刻期間開始列指定>又は<システ

ム時刻期間終了列指定

>を含んではならない。

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

とする。に含まれるどの表制約記述子の<制約名>とも等価でない処理系依存の<制約名

>を IDCN とする。次の<表制約定義>が暗に想定される。

CONSTRAINT

IDCN

 CHECK (

 CN1

 <

CN2

 )

3) WITH

<SYSTEM

VERSIONING 句>が指定されるならば,次による。

a) SYSTEM_TIME を指定する<表期間定義> STT を指定しなければならない。

4)

04

 <表内容元>は,<ホストパラメタ指定>,<SQL パラメタ参照>,<動的パラメタ指定>又は<埋込み

変数指定

>を含んではならない。

5) <表定義> TD によって定義される表を とする。TD に単純に含まれる<表名>を TN とする。

6) <表定義>が<スキーマ定義>  SD に含まれ,かつ,TN が<局所又はスキーマ修飾子>を含むならば,

その

<局所又はスキーマ修飾子>は,SD の暗に想定されるか又は陽に指定される<スキーマ名>と等

価でなければならない。

7)  TN は,存在する表記述子を識別してはならない。

8) <表定義>が<スキーマ定義>に含まれるならば,<スキーマ定義>の陽に指定されるか又は暗に想定さ

れる

<認可識別子>を とする。そうでなければ,TN の暗に想定されるか又は陽に指定される<スキ

ーマ名

>によって識別されるスキーマを所有する<認可識別子>を とする。

9) <表要素リスト> TEL が指定されるならば,次による。

a)  TEL は,少なくとも一つの<列定義>又は<LIKE 句>を含まなければならない。

b)  TEL に直接含まれる各<LIKE 句> LC に対して,次による。


484

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

i)

LC に含まれる<表名>によって識別される表を LT とする。LT は,システムバージョン表であ

ってはならない。

ii)  LT がビュー表ならば,<LIKE 選択肢の並び>を指定してはならない。

iii)  LT の次数を とする。i,1 ≤ i ≤ に対して,次による。

1)  LT の 番目の列の列記述子を LCDi とする。

2)  LCDi に含まれる列名を LCNi とする。

3)  LCDi に含まれるデータ型を LDTi とする。

4)  LCDi に含まれるナル可能性特性がナル可能でないことが分かるならば,NOT NULL を LNCi

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

0 の文字列を LNCi とする。

5)  次の<列定義>を CDi とする。

LCNi LDTi LNCi

iv) <LIKE 選択肢の並び>が指定されるならば,次による。

1) <IDENTITY 選択肢>を 2 回以上指定してはならず,<列既定値選択肢>を 2 回以上指定しては

ならず,

<生成選択肢>を 2 回以上指定してはならない。

2) <IDENTITY 選択肢>が指定されないならば,EXCLUDING IDENTITY が暗に想定される。

3) <列既定値選択肢>が指定されないならば,EXCLUDING DEFAULTS が暗に想定される。

4) <生成選択肢>が指定されないならば,EXCLUDING GENERATED が暗に想定される。

5) INCLUDING

IDENTITY が指定され,かつ,LT が識別列を含むならば,LT の表記述子に含

まれるその列の列記述子を ICD とする。ICD に含まれる順序数生成子記述子を SGD とする。

A)  SGD に含まれる開始値を SV とする。

B)  SGD に含まれる増分を IV とする。

C)  SGD に含まれる最大値を MAX とする。

D)  SGD に含まれる最小値を MIN とする。

E)  SGD に含まれる周期選択肢を CYC とする。

F)  ICD によって記述される列が,LT によって識別される表中に現れる順序位置を とする。

G)  場合:

I)

値が常時生成されることを ICD が示すならば,GENERATED ALWAYS を とする。

II)  値が既定生成されることを ICD が示すならば,

GENERATED BY DEFAULT を とする。

H)  CDk の値が次の文字列によって置き換えられる。

LCNk LDTk

  G AS IDENTITY ( START WITH SV, INCREMENT BY IV,

                     MAXVALUE  MAX, MINVALUE MINCYC ) LNCk

6) INCLUDING

GENERATED が指定されるならば,LT の記述子に含まれる列記述子を GCDj,1

≤ j ≤ とする。ここで,は,GCDj によって記述される列の順序位置とする。記述する列が
生成列であることを示す各 GCDj に対して,次による。

A)  GCDj に含まれる<生成式>を GEj とする。ここで,含まれるどの<列参照>に含まれる<表

>も,TN によって置き換えられる。

B)  CDj の値は,次の文字列によって置き換えられる。

LCN

j

 LDT

j

 GENERATED ALWAYS AS GE

j

 LNC

j

7) INCLUDING

DEFAULTS が指定されるならば,LT の記述子に含まれる列記述子を,DCDm


485

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

1 ≤ m ≤ とする。ここで,は,DCDm によって記述される列の順序位置とする。

各 DCDm に対して,DCDm が<既定値選択肢>  DOm を含むならば,CDm の値は,次の文

字列によって置き換えられる。

LCNm LDTm DEFAULT DOm LNCm

v)  LC は,次の文字列によって実効的に置き換えられる。

CD

1

, ..., CD

D

注記 337 NOT

NULL を除く<列制約>は,CDi に含まれない。<列制約定義>は,<表制約定義>

に実効的に変換され,その結果除外される。

10) <AS 副問合せ句>が指定されるならば,次による。

a) <AS 副問合せ句>に直に含まれる<表副問合せ>を ASQ とする。ASQ によって指定される表を QT

とする。

b)  QT 中のいずれか二つの列が等価な<列名>をもつか,

又は QT のいずれかの列が処理系依存の名前

をもつならば,

<列名リスト>を指定しなければならない。

c)

QT の次数を とする。

d) <列名リスト>は,二つ以上の等価な<列名>を含んではならない。

e) <列名リスト>中の<列名>の個数は,でなければならない。

f)

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

i)

場合:

1) <列名リスト>が指定されるならば,その<列名リスト>中の 番目の<列名>を QCNi とする。

2)  そうでなければ,QT の 番目の列の<列名>を QCNi とする。

ii)  QT の 番目の列の宣言型を QDTi とする。

iii)  QT の 番目の列のナル可能性特性がナル可能でないことが分かるならば,NOT NULL を QNCi

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

0 の文字列を QNCi とする。

iv)  次の<列定義>を CDi とする。

QCNi QDTi QNCi

g) <AS 副問合せ句>は,次の形式の<表要素リスト> TEL によって実効的に置き換えられる。

CD

1

, ..., CD

D

11) <型付き表句> TTC が指定されるならば,次による。

a) <パス解決利用者定義型名>に単純に含まれる<利用者定義型名>は,構造型 ST を識別しなければ

ならない。

b) <下位表句>が指定されるならば,<自己参照列指定>を指定してはならない。そうでなければ,<

自己参照列指定

>は,ただ 1 回指定しなければならない。

c) <自己参照列指定> SRCS が指定されるならば,参照型 REF(ST)  を RST とする。

i) <下位表句>を指定してはならない。

ii) <表有効範囲>を指定してはならない。

iii) SYSTEM

GENERATED が指定されるならば,RST は,システム定義表現をもたなければならな

い。

iv) USER

GENERATED が指定されるならば,RST は,利用者定義表現をもたなければならない。

v) DERIVED が指定されるならば,RST は,導出表現をもたなければならない。

vi)  RST が導出表現をもつならば,

RST の導出表現の属性のリストに含まれる属性の個数を とし,


486

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

それらの属性を Ai,1 ≤ i ≤ とする。

1)  TD は,A

1,A2,...,Am の属性名をその順序で含む<一意列リスト>をもつ<一意性制約定義

UCD を指定する<表制約定義>を含まなければならない。

2)  UCD が PRIMARY KEY を指定しないならば,どの属性 Ai,1 ≤ i ≤ に対しても,TD は,Ai

<属性名>と等価な<列名>をもち,NOT NULL を指定する<列制約定義>をもつ<列

OPTIONS> COi を含まなければならない。

vii)  次の<列定義>を CD

0

とする。

CN

0

 RST SCOPE(TN) UNIQUE NOT NULL

ここで,CN

0

は,SRCS に単純に含まれる<自己参照列名>を示す。

d) <下位表句>が指定されるならば,次による。

i) <下位表句>に含まれる<表名>は,の直接上位表  (direct supertable)  を識別し,それは,実表で

なければならない。を,の直接上位表の直接下位表  (direct subtable)  と呼ぶ。

ii)  ST は,の直接上位表の構造型の直接下位型でなければならない。

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

キーマは,の直接上位表の記述子を含んでいなければならない。

iv)  の下位表族は,自体以外の,関連付けられた構造型が ST である要素を含んではならない。

v)  TD は,PRIMARY KEY を指定する<表制約定義>を含んではならない。

vi)  の継承列  (inherited column)  という用語で,ST の継承属性に対応する の列を参照する。そ

のようなどの継承属性 IA に対しても,CA の<列名>が IA の<属性名>と等価であるような 

直接上位表の列 CA が存在する。CA を,の直接上位表中の IA の直接上位列  (direct supercolumn)

と呼ぶ。

vii)  次の<列定義>を CD

0

とする。

CN

0

 RST SCOPE(TN) UNIQUE NOT NULL

ここで,CN

0

は,SRCS に単純に含まれる<自己参照列名>を示す。

e)

13

 の原定義列  (originally-defined column)  という用語で,ST の原定義属性に対応する の列を参

照する。

f)

ST の属性の個数を とする。ST のデータ型記述子に含まれる属性記述子を,ADi,1 ≤ i ≤ とし,
<列定義> CNi DTi DCi を CDi とする。ここで,CNiDTi 及び DCi は,次による。

i)

CNi は,ADi に含まれる属性名とする。

ii)  DTi は,“6.1  <データ型>”の一般規則に基づいて,ADi に含まれるデータ型記述子の作成をも

たらす

<データ型>とする。

iii)  ADi が継承属性 IA を記述するならば,次による。

場合:

1)  IA の直接上位列の列記述子が既定値を含むならば,DCi は,<既定値選択肢>がこの既定値を

示す

<DEFAULT 句>とする。

2)  そうでなければ,DCi は,長さ 0 の文字列とする。

iv)  ADi が原定義属性 OA を記述するならば,次による。

場合:

1)  ADi が既定値を含むならば,DCi は,<既定値選択肢>がこの既定値を示す<DEFAULT 句>と

する。


487

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

2)  そうでなければ,DCi は,長さ 0 の文字列とする。

g) <型付き表要素リスト>  TTEL が指定され,かつ,<列 OPTIONS>  CO が指定されるならば,次に

よる。

i)

CO に単純に含まれる<列名> CN は,<列定義> CDj 中に指定される<列名> CNj と等価でなけれ
ばならず,の原定義列を参照しなければならない。

ii)  CN は,TTEL に含まれる他のどの<列 OPTIONS>に単純に含まれる<列名>とも等価であっては

ならない。

iii)

09

  <列選択肢リスト>は,<SCOPE 句>若しくは<DEFAULT 句>,又は少なくとも一つの<列制約

定義

>を直に含まなければならない。

iv)  CO が<SCOPE 句>  SC を指定するならば,DTj は,<参照型>  RT でなければならない。RT 

<SCOPE 句>を含むならば,その<SCOPE 句>は,SC によって置き換えられる。そうでなければ,

RT が RT SC によって置き換えられる。

注記 338  型付き表の列の有効範囲の変更は,基となる属性に対して定義された有効範囲に

影響を与えない。そのような属性の有効範囲は,型付き表が定義される時点で,

その列の有効範囲に対する一種の既定として用いられ,列の有効範囲が削除され

ても,元の状態に戻されない。

v)  CO が<DEFAULT 句> DC を指定するならば,DCj は,CDj 中の DC によって置き換えられる。

vi)

09

  CO が<列制約定義>の空でないリスト CCDL を指定するならば,CDj は,CDj  CCDL によっ

て置き換えられる。

vii)  CO は,TTEL から削除される。

h)  は,参照可能表とする。

i)

TTEL が空ならば,次の形式の<表要素リスト>を TEL とする。

CD

0

, ..., CDn

そうでなければ,次の形式の

<表要素リスト>を TEL とする。

CD

0

, ..., CDn TTEL

12) ON COMMIT が指定されるならば,TEMPORARY を指定しなければならない。

13) TEMPORARY が指定され,かつ,ON COMMIT が指定されないならば,ON COMMIT DELETE ROWS

が暗に想定される。

14)  TD に含まれる<列定義>又は<列 OPTIONS>に含まれる<SCOPE 句>によって参照されるどの参照可

能表も,次の表でなければならない。

場合:

a)  TD が<表有効範囲>を指定しないならば,永続実表。

b)  TD が GLOBAL TEMPORARY を指定するならば,大域一時表。

c)

TD が LOCAL TEMPORARY を指定するならば,作成局所一時表。

15)  高々一つの<表要素>が,<識別列指定>を含む<列定義>でなければならない。

16) <表名>は,<AS 副問合せ句>を除いて,有効範囲が<表定義>である範囲変数とする。

アクセス規則

1) <表定義>が<SQL クライアントモジュール定義>に含まれるならば,与えられた認可識別子は,

含まなければならない。

2) <LIKE 句>が<表定義>に含まれるならば,に適用可能な権限は,<LIKE 句>中で識別される表に関


488

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

する

SELECT 権限を含まなければならない。

3)  は,<下位表句>中で指定される<上位表名>に関する UNDER 権限を,その適用可能な権限中にも

たなければならない。

4)  “OF <パス解決利用者定義型名>”

が指定されるならば,に適用可能な権限は,ST に関する USAGE

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

一般規則

1) <表定義>は,通常永続実表,システムバージョン表,大域一時表又は作成局所一時表のいずれかを

定義する。

場合:

a) GLOBAL が指定されるならば,大域一時表が定義される。

b) LOCAL が指定されるならば,作成局所一時表が定義される。

c)  WITH <SYSTEM VERSIONING 句>が指定され,かつ,SYSTEM_TIME を指定する<表期間定義>

が指定されるならば,システムバージョン表が定義される。

d)  そうでなければ,通常永続実表が定義される。

2)

09

 の次数には,最初は,0 が設定される。“11.4 <列定義>”の一般規則が,の列の定義の間に,

の次数を規定する。

3) <パス解決利用者定義型名>が指定されるならば,次による。

a) <パス解決利用者定義型名>に単純に含まれる<利用者定義型名>によって識別される構造型を R

とする。

b)  は,に関連付けられる構造型とする。

4)  を記述する表記述子 TDS が作成される。TDS は,次の項目を含む。

a)  表名 TN

b)  表が,通常永続実表か,システムバージョン表か,大域一時表か,作成局所一時表か又は宣言局

所一時表かを示す標識。

c)

TEL に含まれる<列定義>が指定された順序で,それらの<列定義>に適用して,

11.4  <列定義>”

の構文規則及び一般規則に従った の全ての列の列記述子。

d) SYSTEM_TIME を指定する<表期間定義>が指定されるならば,期間の名前として SYSTEM_TIME

を含み,

SYSTEM_TIME 期間開始列及び SYSTEM_TIME 期間終了列の名前を含む期間記述子。

e) <適用業務時刻期間指定>を含む<表期間定義>が指定され,<適用業務時刻期間名> ATPN を含むな

らば,期間の名前として ATPN を含み,ATPN 期間開始列及び ATPN 期間終了列の名前を含み,

かつ,暗に想定される ATPN 期間制約の名前として IDCN を含む期間記述子。

f) <型付き表句>が指定されるならば,次の項目。

i)

表が参照可能表であることを示す標識。

ii)  順序位置 1 の列が の自己参照列であることを示す標識。TDS に含まれ,その列を記述する列

記述子は,自己参照列を識別するようにマーク付けされる。

iii)  RST がシステム定義表現をもつならば,自己参照列がシステム生成自己参照列であることを示

す標識。

iv)  RST が導出表現をもつならば,自己参照列が導出自己参照列であることを示す標識。

v)  RST が利用者定義表現をもつならば,自己参照列が利用者生成自己参照列であることを示す標

識。


489

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

g)  TEL に含まれる各<表制約定義>によって指定される表制約記述子。

h) <パス解決利用者定義型名>が指定されるならば,の利用者定義型名。

i) <下位表句>が指定されるならば,<下位表句>に含まれる の直接上位表の表名。

j)

4.19  関数従属性”で与えられる規則に従った関数従属性の空でない集合。

k)  候補キーの空でない集合。

l)

4.19  関数従属性”で与えられる規則に従って,主キーを付加的に示しても,示さなくてもよい

優先候補キー。

m) TEMPORARY が指定されるならば,次の項目。

場合:

i)

ON COMMIT PRESERVE ROWS が指定されるならば,ON COMMIT PRESERVE ROWS が指定

されたことを示す標識。

ii)  そうでなければ,ON COMMIT DELETE ROWS が指定されたか又は暗に想定されたことを示す

標識。

n)  場合:

i) <型付き表句>が指定されないならば,が挿入可能で,かつ,更新可能であることを示す標識。

ii)  そうでなければ,次の項目。

場合:

1)  が実現値生成可であることを,のデータ型記述子が示すならば,が挿入可能で,かつ,

更新可能であることを示す標識。

2)  そうでなければ,が挿入可能でなく,更新可能でないことを示す標識。

5)  の各直接上位表の記述子中で,直接下位表のリストの最後に TN が追加される。

6) <下位表句>が指定されるならば,この表の列の継承元の直接上位表の<表名>の陽に指定されるか又

は暗に想定される

<スキーマ名>によって識別されるスキーマを所有する<認可識別子>に対して,こ

の表の全ての継承列に関する権限

SELECT,UPDATE 及び REFERENCES を定義する権限記述子の

集合が作成される。これらの権限は,付与可能とする。これらの権限記述子のそれぞれに対する権

限付与者には,特別な付与者の値“

_SYSTEM”が設定される。

7)  この表に関する権限 SELECT,INSERT,UPDATE,DELETE,TRIGGER 及び REFERENCES,並び

に表定義中の全ての

<列定義>に対する権限 SELECT,INSERT,UPDATE 及び REFERENCES を定義

する権限記述子の集合が作成される。

OF <パス解決利用者定義型名>が指定されるならば,<パス解

決利用者定義型名

>によって識別される構造型のどのメソッドに対しても,この表に関する表/メソ

ッド権限記述子が作成され,表

SELECT 権限が WITH HIERARCHY OPTION をもつ。これらの権限

は,付与可能とする。

これらの権限記述子のそれぞれに対する権限付与者には,特別な付与者の値“

_SYSTEM”が設定

される。権限受領者は,

<認可識別子> とする。

8) <下位表句>が指定されるならば,の上位表の集合を ST とする。ST 中の表に関する SELECT WITH

HIERARCHY OPTION 権限を定義した権限記述子の集合を PDS とする。権限受領者 G,権限付与者

として,PDS 中のどの権限記述子に対しても,次による。

場合:

a)  権限が付与可能ならば,

WITH GRANT OPTION”を WGO とする。

b)  そうでなければ,長さ 0 の文字列を WGO とする。


490

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

これ以上のアクセス規則の検査なしで,次の

<GRANT 文>が実効的に実行される。

GRANT SELECT ON T TO G WGO FROM A

9) <表定義>によって定義される表 の行型 RT は,対(<フィールド名>,<データ型>)の集合とする。

ここで,

<フィールド名>は,の列 の名前とし,<データ型>は,の宣言型とする。この対の集

合は,中での列の順序位置の順序で,の各列に対して,一つの対を含む。

10) <AS 副問合せ句>が指定され,かつ,WITH DATA が指定されるならば,ASQ に単純に含まれる<問

合せ式

>を QE とする。これ以上のアクセス規則の検査なしで,次の<INSERT 文>が実効的に実行さ

れる。

INSERT INTO TN QE

適合性規則

1)  機能 T171“表定義中の LIKE 句”なしでは,適合する SQL 言語は,<LIKE 句>を含んではならない。

2)  機能 F531“一時表”なしでは,適合する SQL 言語は,<表有効範囲>を含んではならないし,大局

一時表又は局所一時表を参照してはならない。

3)  機能 S051“型の表作成”なしでは,適合する SQL 言語は,

OF <パス解決利用者定義型名>”を含

んではならない。

4)  機能 S043“拡張参照型”なしでは,適合する SQL 言語は,<SCOPE 句>を含む<列選択肢リスト>を

含んではならない。

5)  機能 S043“拡張参照型”なしでは,適合する SQL 言語は,SYSTEM GENERATED を含まない<参

照生成

>を含んではならない。

6)  機能 S081“下位表”なしでは,適合する SQL 言語は,<下位表句>を含んではならない。

7)  機能 T172“表定義中の AS 副問合せ句”なしでは,適合する SQL 言語は,<AS 副問合せ句>を含ん

ではならない。

8)  機能 T173“表定義中の拡張 LIKE 句”なしでは,適合する SQL 言語中で,<LIKE 句>は,<LIKE 選

択肢の並び

>を含んではならない。

9)  機 能 T180 “ シ ス テ ム バ ー ジ ョ ン 表 ” な し で は , 適 合 す る SQL 言 語 は ,“ WITH <SYSTEM

VERSIONING 句>”,又は SYSTEM_TIME を指定する<表期間定義>を含んではならない。

10)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語は,<適用業務時刻期間指定>を含

<表期間定義>を含んではならない。

11.4  <列定義>

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

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

機能

<列定義> (<column definition>)  は,実表の列を定義する。

形式

<列定義> ::=

  <列名> [ <データ型又は定義域名> ]

      [  <DEFAULT 句> | <識別列指定> | <生成句>

      | <システム時刻期間開始列指定>

      | <システム時刻期間終了列指定> ]

      [ <列制約定義>... ]


491

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

      [  <COLLATE 句> ]

<データ型又は定義域名> ::=

  <データ型>

 |

<定義域名>

<システム時刻期間開始列指定> ::=

  <時刻印生成規則> AS ROW START

<システム時刻期間終了列指定> ::=

  <時刻印生成規則> AS ROW END

<時刻印生成規則> ::=

  GENERATED  ALWAYS

<列制約定義> ::=

  [  <制約名定義> ] <列制約> [ <制約特性> ]

<列制約> ::=

  NOT  NULL

 |

<一意性指定>

 |

<参照指定>

 |

<検査制約定義>

<識別列指定> ::=

  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY

      [ <左括弧> <共通順序数生成子選択肢の並び> <右括弧> ]

<生成句> ::=

  <生成規則> AS <生成式>

<生成規則> ::=

  GENERATED  ALWAYS

14

<生成式> ::=

  <左括弧> <値式> <右括弧>

構文規則

1)

04

 <列定義>は,<ホストパラメタ指定>,<SQL パラメタ参照>,<動的パラメタ指定>又は<埋込み変

数指定

>を含んではならない。

2)  場合:

a) <列定義>が<表定義>に含まれるならば,<表定義>によって定義される表を とする。

b) <列定義>が<一時表宣言>に含まれるならば,<一時表宣言>によって宣言される表を とする。

c) <列定義>が<表変更文>に含まれるならば,それを含む<表変更文>中で識別される表を とする。

3) <列定義>中の<列名>は,の他のどの列の<列名>とも等価であってはならない。

4)  を所有する<認可識別子>を とする。

5) <列定義>の<列名>を とする。

6) <列定義>が<システム時刻期間開始列指定>又は<システム時刻期間終了列指定>を直に含むならば,

次による。

a) <列定義>は,SYSTEM_TIME を指定する<表期間定義>を指定する<表定義>に含まれなければなら

ない。


492

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

b) <データ型又は定義域名>は,DATE 又は時刻印型を指定しなければならない。

c) <列制約定義> NOT NULL NOT DEFERRABLE が暗に想定される。

d) <列定義>が<システム時刻期間開始列指定>を直に含むならば,は,システム時刻期間開始列と

する。そうでなければ,は,システム時刻期間終了列とする。

7) <データ型又は定義域名>は,<データ型>又は<定義域名>のいずれかを曖昧さなく参照しなければな

らない。

8) <定義域名>が指定されるならば,<定義域名>によって識別される定義域を とする。

9)  の記述子が定義域制約記述子を含むならば,は,永続実表でなければならない。

10) <生成句> GC が指定されるならば,次による。

a)  GC に含まれる<生成式>を GE とする。

b)  は,生成列とする。

c)

GE に含まれるどの<列参照>も,の実列を参照しなければならない。

d)  GE は,決定的でなければならない。

e)

GE は,当該ルーチンが SQL データを潜在的に読む<ルーチン呼出し>を含んではならない。

f)

GE は,<問合せ式>を含んではならない。

11) <生成句>が省略されるならば,<データ型>又は<定義域名>のいずれかを指定しなければならない。

12)  場合:

a) <列定義>が<定義域名>を直に含むならば,<COLLATE 句>も直に含んではならない。

b)  そうでなければ,<COLLATE 句>が<データ型>中に指定され,かつ,<列定義>に直に含まれては

ならない。

<COLLATE 句>が<列定義>に直に含まれるならば,<データ型>中に等価な<COLLATE

>を指定することと等価とする。

13)  列の宣言型は,次による。

場合:

a) <データ型>が指定されるならば,そのデータ型とする。<生成句>も,指定されるならば,<生成

>の宣言型は,列の宣言型に代入可能でなければならない。

b) <定義域名>が指定されるならば,の宣言型とする。<生成句>も,指定されるならば,<生成式>

の宣言型は,列の宣言型に代入可能でなければならない。

c) <生成句>が指定されるならば,GE の宣言型とする。

14)  がシステムバージョン表ならば,列の宣言型は,参照型であってはならない。

15) <データ型>が指定されるならば,次による。

a) <データ型>を DT とする。

b)  DT が CHARACTER,CHARACTER VARYING 又は CHARACTER LARGE OBJECT を指定し,か

つ,

<文字集合指定>を指定しないならば,それを含む<表定義>又は<表変更文>の<表名>に直に含

まれる

<スキーマ名>によって識別されるスキーマを作成した<スキーマ定義>の<スキーマ文字集

合指定

>中で指定されるか又は暗に想定される<文字集合指定>が,暗に想定される。

16) <識別列指定> ICS が指定されるならば,次による。

a)  場合:

i)

定義している列の宣言型が個別型 DIST ならば,DIST の元型は,位取り 0 をもつ真数でなけれ

ばならない。DIST の元型を ICT とする。

ii)  そうでなければ,定義している列の宣言型は,位取り 0 をもつ真数でなければならない。定義


493

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

している列の宣言型を ICT とする。

b) <共通順序数生成子選択肢の並び>を SGO とする。

c)

SGO を OPTIONS として,ICT を DATA TYPE として,

9.26  順序数生成子の作成”の構文規則を

適用する。

d) <列制約定義> NOT NULL NOT DEFERRABLE が暗に想定される。

17) <列制約定義>が指定されるとき,<制約名定義>が指定されるならば,それを CND とし,そうでな

ければ,長さ

0 の文字列を CND とし,<制約特性>が指定されるならば,それを CA とし,そうでな

ければ,長さ

0 の文字列を CA とする。<列制約定義>は,次のとおりの<表制約定義>と等価とする。

場合:

a) <列制約> NOT NULL を含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。

CND CHECK ( C IS NOT NULL ) CA

b) <一意性指定> US を含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。

CND US (CCA

注記 339  <一意性指定>は,“11.7 <一意性制約定義>”で定義している。

c) <参照指定> RS を含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。

CND FOREIGN KEY (CRS CA

注記 340  <参照指定>は,“11.8 <参照制約定義>”で定義している。

d) <検査制約定義> CCD を含む<列制約定義>が指定されるならば,次の<表制約定義>と等価とする。

CND CCD CA

<探索条件>に直接含まれる各列参照は,列 を参照しなければならない。

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

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

アクセス規則

1) <定義域名>が指定されるならば,に適用可能な権限は,に関する USAGE を含まなければなら

ない。

一般規則

1) <列定義>は,表中の列を定義する。

2) <列定義>が<データ型>を指定するならば,定義される列の宣言型を記述するデータ型記述子が作成

される。

3) <列定義>を含む<表定義>又は<一時表宣言>で定義しているか又は<列定義>を含む<表変更文>によ

って変更している表 の次数が 1 増やされる。

4)  定義される列を記述する列記述子が作成される。列記述子は,次の項目を含む。

a)  列の名前 C

b)  場合:

i) <列定義>が<データ型>又は<生成句>を指定するならば,列の宣言型のデータ型記述子。

ii)  そうでなければ,列の定義域を識別する<定義域名>。

c)

列の順序位置。

注記 341  この<列定義>が処理される時点では,列の順序位置は,の次数と等しい。

d)  “4.13  列,フィールド及び属性”中の規則に従って決定される,列のナル可能性特性。

注記 342  全ての列のナル可能性特性を決定するためには,<列制約定義>及び<表制約定義>の両


494

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

方を解析しなければならない。

e) <DEFAULT 句>が指定されるならば,<既定値選択肢>。

f) <識別列指定>が指定されるならば,次の項目。

i)

列が識別列であることを示す標識。

ii) ALWAYS が指定されるならば,値が常時生成されることを示す標識。

iii) BY

DEFAULT が指定されるならば,値が既定生成されることを示す標識。

iv)  SGO を OPTIONS として,ICT を DATA TYPE として,

9.26  順序数生成子の作成”の一般規則

を適用する。

これらの一般規則の適用によって SEQGENDESC として戻される順序数生成子 SG

の記述子。

g) <システム時刻期間開始列指定>が指定されるならば,列がシステム時刻期間開始列であることを

示す標識。

h) <システム時刻期間終了列指定>が指定されるならば,列がシステム時刻期間終了列であることを

示す標識。

i) <システム時刻期間開始列指定>又は<システム時刻期間終了列指定>が指定されるならば,トラン

ザクション時刻印の値が常時生成されることを示す標識。

j)

場合:

i) <列定義>が<生成句>を指定するならば,列が“ALWAYS(常に)

”生成されることを示す標識

及び GE

ii)  そうでなければ,列が“NEVER(決して)

”生成されないことを示す標識。

k)  列が更新可能であることを示す標識。

l) <列制約> NOT NULL を含む<列制約定義>が指定されるならば,次の項目。

i)

列が

NOT NULL として定義されたことを示す標識。

ii)  それが関連付けられる表制約定義の制約名。

注記 343  関連付けられる表制約定義は,この細分箇条の構文規則 17)a)  で規定している<表制

約定義

>である。

5) <定義域名>が指定されるならば,の定義域記述子に含まれる全ての定義域制約記述子 DCD に対

して,DCD に含まれるテンプレートの<探索条件>を DSC とする。<一般値指定> VALUE の全ての

実現値が によって置き換えられた DSC の写しを CSC とする。定義域制約用途記述子が作成され,

DCD に含まれる定義域制約用途記述子の集合に追加される。作成される定義域制約用途記述子は,

次の項目を含む。

a)  適用可能な列の名前。

b)  適用可能な定義域制約の名前として,DCD に含まれる制約名。

c)

制約が遅延可能かどうかを示す,DCD に含まれる標識。

d)  DCD に含まれる初期制約モード。

e)

適用可能な次の

<探索条件>。

( SELECT EVERY ( CSC )

  FROM  T )

注記 344  これは,宣言型 BOOLEAN の<スカラ副問合せ>である。

適合性規則

1)  機能 F692“拡張照合順提供”なしでは,適合する SQL 言語は,<COLLATE 句>を直に含む<列定義


495

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

>を含んではならない。

2)  機能 T174“識別列”なしでは,適合する SQL 言語は,<識別列指定>を含んではならない。

3)  機能 T175“生成列”なしでは,適合する SQL 言語は,<生成句>を含んではならない。

4)  機能 T180“システムバージョン表”なしでは,適合する SQL 言語は,<システム時刻期間開始列指

>又は<システム時刻期間終了列指定>を含んではならない。

11.5  <DEFAULT 句>

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

機能

<DEFAULT 句> (<default clause>)  は,列,定義域又は属性のための既定値を指定する。

形式

<DEFAULT 句> ::=

  DEFAULT  <既定値選択肢>

<既定値選択肢> ::=

  <定数>

 |

<日時値関数>

 |

USER

 |

CURRENT_USER

 |

CURRENT_ROLE

 |

SESSION_USER

 |

SYSTEM_USER

 |

CURRENT_CATALOG

 |

CURRENT_SCHEMA

 |

CURRENT_PATH

 |

<暗黙型付き値指定>

構文規則

1)

04

 <DEFAULT 句>の当該データ型は,<DEFAULT 句>を含む<列定義>,<定義域定義>,<属性定義>,

<列定義変更>又は<定義域変更文>によって識別される記述子中で指定されるデータ型とする。

2) USER が指定されるならば,CURRENT_USER が暗に想定される。

3)  場合:

a) <DEFAULT 句>の当該データ型が集まり型又は元型が集まり型の個別型ならば,<既定値選択肢>

は,

<暗黙型付き値指定>を指定しなければならない。

b) <DEFAULT 句>の当該データ型が利用者定義型,参照型又は行型ならば,<既定値選択肢>は,<

ナル指定

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

4)  場合:

a) <定数>が指定されるならば,次による。

場合:

i)

当該データ型が文字列ならば,

<定数>は,<文字列定数>でなければならない。当該データ型の

長さが固定ならば,

<文字列定数>の文字単位での長さは,当該データ型の長さを超えてはなら

ない。当該データ型の長さが可変ならば,

<文字列定数>の文字単位での長さは,当該データ型

の最大長を超えてはならない。

<定数>は,当該データ型と同じ文字レパートリをもたなければ


496

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

ならない。

ii)  当該データ型が 2 進オクテット列ならば,<定数>は,<2 進オクテット列定数>でなければなら

ない。当該データ型の長さが固定ならば,

<2 進オクテット列定数>のオクテット単位での長さ

は,当該データ型の長さを超えてはならない。当該データ型の長さが可変ならば,

<2 進オクテ

ット列定数

>のオクテット単位での長さは,当該データ型の最大長を超えてはならない。

iii)  当該データ型が真数ならば,<定数>は,<真数定数>を単純に含む<符号付き数定数>でなければ

ならない。当該データ型中で,有効桁を失わない

<定数>の値の表現がなければならない。

iv)  当該データ型が概数ならば,<定数>は,<符号付き数定数>でなければならない。

v)  当該データ型が日時ならば,<定数>は,当該データ型と同じ基本日時フィールド及び同じ時刻

帯日時フィールドをもつ

<日時定数>でなければならない。SECOND がこれらのフィールドのう

ちの一つならば,

<日時定数>の小数秒精度は,当該データ型の小数秒精度以下でなければなら

ない。

vi)  当該データ型が時間隔ならば,<定数>は,<時間隔定数>でなければならず,当該データ型と同

<時間隔修飾子>を含まなければならない。

vii)  当該データ型がブールならば,<定数>は,<ブール定数>でなければならない。

b) CURRENT_USER,CURRENT_ROLE,SESSION_USER,SYSTEM_USER,CURRENT_CATALOG

又は

CURRENT_SCHEMA が指定されるならば,当該データ型は,文字集合 SQL_IDENTIFIER を

もつ文字列でなければならない。当該データ型の長さが固定ならば,その長さは,

128 文字以上

でなければならない。当該データ型の長さが可変ならば,その最大長は,

128 文字以上でなけれ

ばならない。

c) CURRENT_PATH が指定されるならば,当該データ型は,文字集合 SQL_IDENTIFIER をもつ文字

列でなければならない。当該データの長さが固定ならば,その長さは,

1031 文字以上でなければ

ならない。当該データ型の長さが可変ならば,その最大長は,

1031 文字以上でなければならない。

d) <日時値関数>が指定されるならば,当該データ型は,<日時値関数>と同じ宣言日時データ型をも

つ日時でなければならない。

e) <空指定>が指定されるならば,当該データ型は,集まり型又は元型が集まり型の個別型でなけれ

ばならない。

<空指定>が ARRAY を指定するならば,当該データ型は,配列型又は元型が配列型

の個別型でなければならない。

<空指定>が MULTISET を指定するならば,当該データ型は,マル

チ集合型又は元型がマルチ集合型の個別型でなければならない。

アクセス規則

なし。 

一般規則

1) <DEFAULT 句>が列に適用されるならば,

列記述子に,

<DEFAULT 句>が定義域に適用されるならば,

定義域記述子に,又は

< DEFAULT 句>が属性に適用されるならば,属性記述子に,挿入される既定

値は,

<既定値選択肢>とする。

2) <既定値選択肢>によって指定される値は,次による。

場合:

a) <既定値選択肢>が<定数>を含むならば,次による。

場合:

i)

当該データ型が数ならば,

<定数>の数値とする。


497

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

ii)  当該データ型が可変長文字列ならば,<定数>の値とする。

iii)  当該データ型が固定長文字列ならば,<定数>の値を,当該データ型の文字単位での長さまで<

空白

>で右側に必要なだけ拡張した値とする。

iv)  当該データ型が固定長 2 進オクテット列ならば,<定数>の値を,当該データ型のオクテット単

位での長さまで

X'00'で右側に必要なだけ拡張した値とする。

v)  当該データ型が可変長 2 進オクテット列ならば,<定数>の値とする。

vi)  当該データ型が日時又は時間隔ならば,<定数>の値とする。

vii)  当該データ型がブールならば,<定数>の値とする。

b) <既定値選択肢>が CURRENT_USER,CURRENT_ROLE,SESSION_USER,SYSTEM_USER,

CURRENT_CATALOG,CURRENT_SCHEMA 又は,CURRENT_PATH を指定するならば,次によ

る。

場合:

i)

当該データ型が可変長文字列ならば,既定値を必要とする時点での,

CURRENT_USER,

CURRENT_ROLE , SESSION_USER , SYSTEM_USER , CURRENT_CATALOG ,

CURRENT_SCHEMA 又は CURRENT_PATH の評価によって得られる値とする。

ii)  当該データ型が固定長文字列ならば,既定値を必要とする時点での,CURRENT_USER,

CURRENT_ROLE , SESSION_USER , SYSTEM_USER , CURRENT_CATALOG ,

CURRENT_SCHEMA 又は CURRENT_PATH の評価によって得られる値を,当該データ型の文

字単位での長さまで

<空白>で右側に必要なだけ拡張した値とする。

c) <既定値選択肢>が<日時値関数>を含むならば,既定値を必要とする時点に,<日時値関数>を評価

した値とする。

d) <既定値選択肢>が<空指定>を指定するならば,空の集まりとする。

3)  格納場所 にそれの既定値が設定されるとき,次による。

場合:

a)  列を表現し,その列の基となる列が識別列,生成列,システム時刻期間開始列又はシステム時刻

期間終了列であることを の記述子が示すならば,は,代入されない  (unassigned)  としてマー

ク付けされる。

注記 345  代入されない格納場所の概念は,この規格での定義のためにだけ用いる。それは,SQL

データ中で可視になるように永続化することができる状態ではない。代入されない格

納場所の扱いは,“15.10  実表への表の挿入の効果”及び“15.13  実表中の行の置換え

の効果”で与えられる。

b)  の記述子が<既定値選択肢>を含むならば,には,その<既定値選択肢>によって指定される値

が設定される。

c) <既定値選択肢>を含む定義域記述子を識別する<定義域名>を,の記述子が含むならば,には,

その

<既定値選択肢>によって指定される値が設定される。

d)  既定値が,導出表 DT への挿入又は更新のための候補行の列 に対するもので,かつ,が,DT

の末端で一般に基となる表中に単一の対応物の列 CC をもつならば,には,この細分箇条の一

般規則を適用することによって得られる CC の既定値が設定される。

e)

そうでなければ,には,ナル値が設定される。

注記 346  < 既 定 値 選 択 肢 > が CURRENT_USER , CURRENT_ROLE , SESSION_USER ,


498

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

SYSTEM_USER,CURRENT_CATALOG,CURRENT_SCHEMA 又は CURRENT_PATH を

指定するならば,“列記述子中の値”は,実効的に

<既定値選択肢>のテキストになり,そ

れの評価は,既定値が必要となる時点で行われる。

4) <DEFAULT 句>が<SQL スキーマ文>に含まれ,かつ,情報スキーマ中で<既定値選択肢>の文字表現

を切捨てなしで表現できないならば,終了条件:

警告  (warning)  -  情報スキーマに対して既定値が

長すぎる  (default value too long for information schema)  が引き起こされる。

注記 347  情報スキーマは,[ISO9075-11]  で定義している。

適合性規則

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

を含む

<既定値選択肢>を含んではならない。

2)  機能 F321“利用者認可”なしでは,適合する SQL 言語は,CURRENT_USER,SESSION_USER 又

SYSTEM_USER を含む<既定値選択肢>を含んではならない。

注記 348 CURRENT_USER と USER とは,意味的に同じだが,機能 F321“利用者認可”なしでは,

CURRENT_USER は,USER として指定しなければならない。

3)  機能 T332“拡張役割”なしでは,適合する SQL 言語は,CURRENT_ROLE を含む<既定値選択肢>

を含んではならない。

4)  機能 F762“CURRENT_CATALOG”なしでは,適合する SQL 言語は,CURRENT_CATALOG を含む

<既定値選択肢>を含んではならない。

5)  機能 F763“CURRENT_SCHEMA”なしでは,適合する SQL 言語は,CURRENT_SCHEMA を含む<

既定値選択肢

>を含んではならない。

11.6  <表制約定義>

機能

<表制約定義> (<table constraint definition>)  は,整合性制約を指定する。

形式

<表制約定義> ::=

  [  <制約名定義> ] <表制約>

      [ <制約特性> ]

<表制約> ::=

  <一意性制約定義>

 |

<参照制約定義>

 |

<検査制約定義>

構文規則

1) <制約特性>が指定されないならば,INITIALLY IMMEDIATE NOT DEFERRABLE ENFORCED が暗

に想定される。

2) <制約名定義>が指定され,それの<制約名>が<スキーマ名>を含むならば,<スキーマ名>は,<制約

名定義

>を含む<表定義>又は<表変更文>によって識別される表の<表名>の陽に指定されるか又は暗

に想定される

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

3) <制約名定義>が指定されないならば,処理系依存の<制約名>を含む<制約名定義>が暗に想定される。

割り当てられる

<制約名>は,陽に指定される<制約名>の構文規則に従わなければならない。

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


499

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

する。は,制約名が<制約名>である制約記述子を含んではならない。

5) <一意性制約定義>が指定されるならば,<制約特性>は,<制約強制>を指定してはならない。

アクセス規則

なし。 

一般規則

1) <表制約定義>は,表制約を定義する。

2)  定義している表制約を記述する表制約記述子が作成される。表制約記述子は,次の項目を含む。

a)  陽に指定されるか又は暗に想定される<制約名定義>に含まれる<制約名>。

b)  制約が遅延可能か又は遅延可能でないかを示す標識。

c)

制約の初期制約モードが遅延か又は即時かを示す標識。

d)  制約が強制か又は強制でないかを示す標識。

e) <表制約定義>に含まれる特定の種類の<表制約>に適用可能な一般規則で規定するとおりの適用

可能な

<探索条件>,及びそれらの一般規則で規定する付加的な内容。

適合性規則

なし。 

11.7  <一意性制約定義>

この細分箇条は,ISO/IEC 9075-9 の“11.4 <一意性制約定義>”によって修正される。 

機能

<一意性制約定義> (<unique constraint definition>)  は,表に対する一意性の制約を指定する。

形式

<一意性制約定義> ::=

  <一意性指定> <左括弧> <一意列リスト> [ <コンマ> <WITHOUT OVERLAPS 指定> ] <右括弧>

| UNIQUE ( VALUE )

<一意性指定> ::=

  UNIQUE

| PRIMARY KEY

<一意列リスト> ::=

  <列名リスト>

<WITHOUT OVERLAPS 指定> ::=

  <適用業務時刻期間名> WITHOUT OVERLAPS

構文規則

1)

09

  <一意列リスト>中の<列名>によって識別される各列は,グループ化操作のオペランドとする。

9.12  グループ化操作”の構文規則又は適合性規則を適用する。

2) <一意性制約定義>を含む<表定義>又は<表変更文>によって識別される表を とする。の<表名>

を TN とする。

3) <WITHOUT

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

a) <WITHOUT

OVERLAPS 指定>に含まれる<適用業務時刻期間名>を ATPN とする。

b)  の表記述子は,ATPN 期間記述子を含まなければならない。

4)  場合:

a)  がシステムバージョン表ならば,次の<表一次子>を TNN とする。


500

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

TN FOR SYSTEM_TIME AS OF CURRENT_TIMESTAMP

b)  そうでなければ,TN を TNN とする。

5) <一意列リスト> UCL が指定されるならば,次による。

a) <一意列リスト>中の各<列名>は,の列を識別しなければならず,同じ列を 2 回以上識別しては

ならない。

b)  の記述子がシステム時刻期間記述子を含むならば,UCL は,のシステム時刻期間開始列又は

のシステム時刻期間終了列を含んではならない。

c) <一意列リスト>中の列の集合は,の実表記述子に含まれる他のどの一意性制約記述子の一意列

の集合とも異ならなければならない。

d)  場合:

i) <WITHOUT

OVERLAPS 指定>が指定されるならば,の ATPN 期間開始列を STARTCOL とし,

の ATPN 期間終了列を ENDCOL とし,STARTCOL の宣言型を DT とし,次の<探索条件>を

SC1 とする。

UNIQUE ( SELECT UCLTIMEPOINT FROM TNN AS Y,

                      UNNEST(EXPAND(STARTCOLENDCOL)) AS X(TIMEPOINT))

ここで,EXPAND は,STARTCOL の値以上で,かつ,ENDCOL の値未満の DT の全ての値か

ら成る

SET(DT)  型の値を戻す SQL 呼出し関数の<ルーチン名>とし,TIMEPOINT は,のど

の列の

<列名>とも等価でない<識別子>とする。

注記 349  上記の SQL 呼出し関数の呼出しは,この規格での定義のためにだけ用いる。

ii)  そうでなければ,次の<探索条件>を SC1 とする。

UNIQUE ( SELECT UCL

           FROM  TNN )

e)

場合:

i) <一意性指定>が PRIMARY KEY を指定するならば,次の<探索条件>を SC とする。

SC1

  AND

( SELECT EVERY ( UCL ) IS NOT NULL )

  FROM  TNN )

注記 350  この式中の AND の 2 番目のオペランドは,宣言型 BOOLEAN の<スカラ副問合せ>

である。

ii)  そうでなければ,SC1 を SC とする。

6) UNIQUE

(VALUE)

が指定されるならば,次の

<探索条件>を SC とする。

UNIQUE ( SELECT TN.* FROM TNN )

7) <一意性指定>が PRIMARY KEY を指定するならば,陽に指定されるか又は暗に想定される<一意列

リスト

>中の,NOT NULL が指定されない各<列名>に対して,<列定義>中に,NOT NULL が暗に想

定される。

8) <表定義>は,PRIMARY KEY を指定する高々一つの,陽に指定されるか又は暗に想定される<一意

性制約定義

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

9) PRIMARY

KEY を指定する<一意性制約定義>が<表制約定義追加>に含まれるならば,それを含む<

表変更文

>に直に含まれる<表名>によって識別される表は,PRIMARY KEY を指定する<一意性制約


501

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

定義

>によって定義された一意性制約をもっていてはならない。

アクセス規則

なし。 

一般規則

1) <一意性制約定義>は,一意性制約を定義する。

2) <一意性制約定義>を含む<表制約定義>の実行の結果として作成される表制約記述子に含まれる適

用可能な

<探索条件>は,SC とする。この記述子は,付加的に次の項目を含む。

a)  制約が PRIMARY KEY で定義されるか又は UNIQUE で定義されるかを示す<一意性指定>。

b) <一意列リスト>で指定された一意列の名前。

c) <WITHOUT

OVERLAPS 指定>が指定されるならば,ATPN

3)  一意性制約が満たされないことは,次の探索条件が真  (True)  であることと同値とする。

EXISTS ( SELECT * FROM TNN WHERE NOT ( SC ) )

適合性規則

1)  機能 S291“行全体の一意性制約”なしでは,適合する SQL 言語は,UNIQUE(VALUE)  を含んでは

ならない。

2)  機能 T591“潜在的にナルの列の UNIQUE 制約”なしでは,適合する SQL 言語中で,UNIQUE が指

定されるならば,

<一意列リスト>に含まれる<列名>をもつ各列に対する<列定義>は,NOT NULL

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

注記 351  “9.12  グループ化操作”の適合性規則も適用する。

3)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語は,<WITHOUT OVERLAPS 指定>

を含んではならない。

11.8  <参照制約定義>

機能

<参照制約定義> (<referential constraint definition>)  は,参照制約を指定する。

形式

<参照制約定義> ::=

  FOREIGN  KEY  <左括弧> <参照列リスト>

      [ <コンマ> <参照 PERIOD 指定> ] <右括弧>

      <参照指定>

<参照指定> ::=

  REFERENCES  <被参照表及び列>

      [  MATCH  <一致型> ] [ <参照被トリガ動作> ]

<一致型> ::=

  FULL

 |

PARTIAL

 |

SIMPLE

<参照列リスト> ::=

  <列名リスト>

<参照 PERIOD 指定> ::=

  PERIOD  <適用業務時刻期間名>


502

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

<被参照表及び列> ::=

  <表名> [ <左括弧> <被参照列リスト>

      [ <コンマ> <被参照 PERIOD 指定> ] <右括弧> ]

<被参照列リスト> ::=

  <列名リスト>

<被参照 PERIOD 指定> ::=

  PERIOD  <適用業務時刻期間名>

<参照被トリガ動作> ::=

  <更新規則> [ <削除規則> ]

 |

<削除規則> [ <更新規則> ]

<更新規則> ::=

  ON  UPDATE  <参照動作>

<削除規則> ::=

  ON  DELETE  <参照動作>

<参照動作> ::=

  CASCADE

| SET NULL

| SET DEFAULT

 |

RESTRICT

| NO ACTION

構文規則

1) <一致型>が指定されないならば,SIMPLE が暗に想定される。

2) <参照 PERIOD 指定>が指定されるならば,次による。

a) <被参照表及び列>は,<被参照列リスト>及び<被参照 PERIOD 指定>を直に含まなければならない。

b) <参照動作>は,CASCADE,SET NULL 又は SET DEFAULT を指定してはならない。

3) <参照制約定義>を含む<表定義>又は<表変更文>によって識別される表を参照表  (referencing table)

とする。

<被参照表及び列>中の<表名>によって識別される表を被参照表  (referenced table)  とする。

<参照列リスト>によって識別される一つ又は複数の列を参照列  (referencing column)  とする。

4)  場合:

a) <被参照表及び列>が<被参照列リスト>を指定するならば,その<被参照列リスト>に含まれる<列

>の集合と,対応する<列名>が等価な,被参照表の一意性制約の<一意列リスト>に含まれる<

列名

>の集合との間に,1 対 1 対応が存在しなければならない。<被参照列リスト>によって識別さ

れる一つ又は複数の列を

被参照列  (referenced column)  とする。各被参照列は,被参照表の列を識

別しなければならず,同じ列を

2 回以上識別してはならない。

b)  そうでなければ,被参照表の表記述子は,PRIMARY KEY を指定する一意性制約 UC を含まなけ

ればならない。UC の表制約記述子は,適用業務時刻期間名を含んではならない。その一意性制

約中の一意列によって識別される一つ又は複数の列を

被参照列  とする。<被参照表及び列>は,

その

<一意列リスト>と同一である<被参照列リスト>を暗に指定するとみなさなければならない。

5)  被参照列を識別する<一意列リスト>をもつ<一意性制約定義>を記述する表制約記述子は,一意性制

約が遅延可能でないことを示さなければならない。


503

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

6)  被参照表は,実表でなければならない。

場合:

a)  参照表が永続実表ならば,被参照表は,永続実表でなければならない。

b)  参照表が大域一時表ならば,被参照表は,大域一時表でなければならない。

c)

参照表が作成局所一時表ならば,被参照表は,大域一時表又は作成局所一時表のいずれかでなけ

ればならない。

d)  参照表が宣言局所一時表ならば,被参照表は,大域一時表,作成局所一時表又は宣言局所一時表

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

7)  被参照表が,ON COMMIT DELETE ROWS を指定した一時表ならば,参照表は,ON COMMIT

DELETE ROWS を指定しなければならない。

8)  各参照列は,参照表の列を識別しなければならず,同じ列を 2 回以上識別してはならない。

9)  各参照列は,グループ化操作のオペランドとする。

9.12  グループ化操作”の構文規則及び適合性

規則を適用する。

10)  参照表の表記述子がシステム時刻期間記述子を含むならば,どの参照列も,参照表のシステム時刻

期間開始列又は参照表のシステム時刻期間終了列を識別してはならない。

11) <参照列リスト>は,<被参照列リスト>と同じ個数の<列名>を含まなければならない。<参照列リス

>中で識別される 番目の列は,<被参照列リスト>中で識別される 番目の列と対応する。各参照

列の宣言型は,対応する被参照列の宣言型と比較可能でなければならない。一方の構成要素が時刻

帯付き日時で,かつ,他方の構成要素が時刻帯なし日時であるような,参照列の宣言型と被参照列

の宣言型との対応する構成要素があってはならない。

12) <参照制約定義>が<更新規則>を指定しないならば,NO ACTION の<参照動作>をもつ<更新規則>が

暗に想定される。

13) <参照制約定義>が<削除規則>を指定しないならば,NO ACTION の<参照動作>をもつ<削除規則>が

暗に想定される。

14)  いずれかの参照列が生成列ならば,次による。

a) <参照動作>は,SET NULL 又は SET DEFAULT を指定してはならない。

b) <更新規則>は,ON UPDATE CASCADE を指定してはならない。

15)  被参照表を とする。<表名>の陽に指定されるか又は暗に想定される<スキーマ名>によって識別さ

れるスキーマは,の記述子を含んでいなければならない。

16)  の<表名>を TN とする。

場合:

a)  がシステムバージョン表ならば,次の<表一次子>を TNN とする。

TN FOR SYSTEM_TIME AS OF CURRENT_TIMESTAMP

b)  そうでなければ,TN を TNN とする。

17)  参照表を とする。の<表名>を UN とする。

場合:

a)  がシステムバージョン表ならば,次の<表一次子>を UNN とする。

UN FOR SYSTEM_TIME AS OF CURRENT_TIMESTAMP

b)  そうでなければ,UN を UNN とする。

18) <被参照列リスト>を UCL とする。暗に想定されるか又は陽に指定される<被参照列リスト>を TCL


504

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

とする。

a)  場合:

i) <参照 PERIOD 指定> RPC が指定されるならば,次による。

1) <被参照表及び列>に直に含まれる<被参照 PERIOD 指定>を RPP とする。

2)  RPC に含まれる<適用業務時刻期間名>を CATPN とする。

3)  RPP に含まれる<適用業務時刻期間名>を PATPN とする。

4)  の表記述子は,PATPN 期間記述子を含まなければならない。

5)  の表記述子は,CATPN 期間記述子を含まなければならない。

6)  被参照列を識別する<一意列リスト>をもつ<一意性制約定義>を記述する表制約記述子は,

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

7)  の PATPN 期間開始列を TSTARTCOL とする。

の PATPN 期間終了列を TENDCOL とする。

TSTARTCOL の宣言型を TDT とする。の CATPN 期間開始列を USTARTCOL とする。

CATPN 期間終了列を UENDCOL とする。USTARTCOL の宣言型を UDT とする。

8)  TDT を TYPE1 として,UDT を TYPE2 として,

9.20  データ型の同一性”の構文規則を適用

する。

9)  次の<表副問合せ>を TTS とする。

 (  SELECT  TCLTIMEPOINT1

   FROM  TNN AS Y,

       UNNEST(EXPAND (TSTARTCOLTENDCOL)) AS X(TIMEPOINT1) )

ここで,EXPAND は,TSTARTCOL の値以上で,かつ,TENDCOL の値未満の TDT の全ての

値から成る

SET(TDT)  型の値を戻す SQL 呼出し関数の<ルーチン名>とし,TIMEPOINT1 は,

のどの列の<列名>とも等価でない<識別子>とする。

注記 352  上記の SQL 呼出し関数の呼出しは,この規格での定義のためにだけ用いる。

10)  次の<導出表>を UNNN とする。

( SELECT Z.*, TIMEPOINT2

   FROM  UNN AS Z,

       UNNEST(EXPAND (USTARTCOLUENDCOL)) AS X(TIMEPOINT2)

) AS Y

ここで,EXPAND は,USTARTCOL の値以上で,かつ,UENDCOL の値未満の UDT の全て

の値から成る

SET(UDT)  型の値を戻す SQL 呼出し関数の<ルーチン名>とし,TIMEPOINT2

は,のどの列の<列名>とも等価でない<識別子>とする。

注記 353  上記の SQL 呼出し関数の呼出しは,この規格での定義のためにだけ用いる。

11)  次の<列名リスト>を UCLL とする。

 UCLTIMEPOINT2

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

1)  次の<表副問合せ>を TTS とする。

 (  SELECT  TCL FROM TNN )

2)  次の<導出表>を UNNN とする。

( SELECT Z.*, FROM UNN AS Z) AS Y

3)  次の<列名リスト>を UCLL とする。


505

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

 UCL

b)  次の<MATCH 述語>を MP とする。

場合:

i) SIMPLE が指定されるか又は暗に想定されるならば,次の<MATCH 述語>。

UCLL

MATCH SIMPLE TTS

ii) PARTIAL が指定されるならば,次の<MATCH 述語>。

UCLL

MATCH PARTIAL TTS

iii) FULL が指定されるならば,次の<MATCH 述語>。

UCLL

MATCH FULL TTS

c)

次の

<スカラ副問合せ>を SC とする。

 ( SELECT EVERY ( MP )

   FROM  UNNN )

注記 354  これは,宣言型 BOOLEAN の<スカラ副問合せ>である。

アクセス規則

1)  の所有者に適用可能な権限は,各被参照列に関する REFERENCES を含まなければならない。

一般規則

1) <参照制約定義>は,参照制約を定義する。

2) <参照制約定義>を含む<表制約定義>の実行の結果として作成される表制約記述子に含まれる適用

可能な

<探索条件>は,SC とする。この記述子は,付加的に次の項目を含む。

a)  処理系定義の順序で,<参照列リスト>中で指定される参照列の名前のリスト。

b) <被参照表及び列>中で指定される被参照表の名前。

c)

各要素が,参照列の名前のリスト中の,それに対応する参照列の名前の位置と同じ位置になるよ

うに順序付けられた,

<被参照表及び列>中で指定される被参照列の名前のリスト。

d) <参照 PERIOD 指定>が指定されるならば,参照期間の名前として CATPN

e) <被参照 PERIOD 指定>が指定されるならば,被参照期間の名前として PATPN

f)

陽に指定されるか又は暗に想定される

<一致型>。

g)  陽に指定されるか又は暗に想定される<削除規則>,及び陽に指定されるか又は暗に想定される<

更新規則

>から成る<参照被トリガ動作>。

適合性規則

1)  機能 T191“参照動作 RESTRICT”なしでは,適合する SQL 言語は,RESTRICT を含む<参照動作>

を含んではならない。

2)  機能 F741“参照 MATCH 型”なしでは,適合する SQL 言語は,MATCH を含む<参照指定>を含ん

ではならない。

3)  機能 F191“参照削除動作”なしでは,適合する SQL 言語は,<削除規則>を含んではならない。

4)  機能 F701“参照更新動作”なしでは,適合する SQL 言語は,<更新規則>を含んではならない。

5)  機能 T201“参照制約のための比較可能なデータ型”なしでは,適合する SQL 言語は,各参照列の

データ型が,対応している被参照列のデータ型と同じでない

<参照列リスト>を含んではならない。

注記 355  “9.12  グループ化操作”の適合性規則も適用する。

6)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語は,<参照 PERIOD 指定>を含んで

はならない。


506

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

7)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語は,<被参照 PERIOD 指定>を含ん

ではならない。

11.9  <検査制約定義>

この細分箇条は,ISO/IEC 9075-4 の“9.6 <検査制約定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-9 の“11.5 <検査制約定義>”によって修正される。 

この細分箇条は,ISO/IEC 9075-14 の“12.2 <検査制約定義>”によって修正される。 

機能

<検査制約定義> (<check constraint definition>)  は,SQL データに対する条件を指定する。

形式

14

<検査制約定義> ::=

  CHECK  <左括弧> <探索条件> <右括弧>

構文規則

1)

04

 <探索条件>は,<ホストパラメタ指定>,<SQL パラメタ参照>,<動的パラメタ指定>,<埋込み変

数指定

>,又はシステム時刻期間開始列若しくはシステム時刻期間終了列を参照する<列参照>を含

んではならない。

2) <探索条件>は,<問合せ式>に含まれない<集合関数指定>を含んではならない。

3) <検査制約定義>が<表定義>又は<表変更文>に含まれるならば,それを含む<表定義>又は<表変更文

>によって識別される表を とする。

場合:

a)  が永続実表であるか,又は<検査制約定義>が<定義域定義>若しくは<定義域変更文>に含まれる

ならば,

<探索条件>に一般に含まれるどの<表参照>も,一時表を参照してはならない。

b)  が大域一時表ならば,<探索条件>に一般に含まれるどの<表参照>も,大域一時表以外の表を参

照してはならない。

c)

が作成局所一時表ならば,<探索条件>に一般に含まれるどの<表参照>も,大域一時表又は作成

局所一時表のいずれか以外の表を参照してはならない。

d)  が宣言局所一時表ならば,<探索条件>に一般に含まれるどの<表参照>も,永続実表を参照して

はならない。

4)  一時表を定義し,かつ,ON COMMIT PRESERVE ROWS を指定する<表定義>か,又は ON COMMIT

PRESERVE ROWS を指定する<一時表宣言>に,<検査制約定義>が含まれるならば,<探索条件>は,

ON COMMIT DELETE ROWS を指定する<表定義>又は<一時表宣言>によって定義される一時表へ

の参照を含んではならない。

5) <探索条件>は,回顧決定的である<ブール値式>を単純に含まなければならない。

注記 356  “回顧決定的”は,“6.35 <ブール値式>”で定義している。

6) <探索条件>は,SQL データを潜在的に修正する SQL 呼出しルーチンである当該ルーチンをもつ<ル

ーチン呼出し

>を一般に含んではならない。

7) <探索条件>は,SQL データを潜在的に読む外部ルーチンである当該ルーチンをもつ<ルーチン呼出

>を一般に含んではならない。

8)  の<表名>を TN とする。

場合:

a)  がシステムバージョン表ならば,次の<表一次子>を TNN とする。


507

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

TN FOR SYSTEM_TIME AS OF CURRENT_TIMESTAMP

b)  そうでなければ,TN を TNN とする。

9) <検査制約定義>に直に含まれる<探索条件>を SCC とする。次の<スカラ副問合せ>を SC とする。

 ( SELECT EVERY ( SCC )

   FROM  TNN )

注記 357  これは,宣言型 BOOLEAN の<スカラ副問合せ>である。

アクセス規則

なし。 

一般規則

1) <検査制約定義>は,検査制約を定義する。

2)  情報スキーマ中で<探索条件>の文字表現を切捨てなしで表現できないならば,終了条件:警告

(warning)  -  情報スキーマに対して探索条件が長すぎる  (search condition too long for information 

schema)  が引き起こされる。

注記 358  情報スキーマは,[ISO9075-11]  で定義している。

3) <検査制約定義>を含む<表制約定義>の実行の結果として作成される表制約記述子に含まれる適用

可能な

<探索条件>は,SC とする。

適合性規則

1)  機能 F671“CHECK 制約中の副問合せ”なしでは,適合する SQL 言語は,<問合せ式>を含む<検査

制約定義

>に含まれる<探索条件>を含んではならない。

2)  機 能 F672 “ 回 顧 検 査 制 約 ” な し で は , 適 合 す る SQL 言 語 は , CURRENT_DATE ,

CURRENT_TIMESTAMP 又は LOCALTIMESTAMP を一般に含む<検査制約定義>を含んではならな

い。

3)  機能 F673“CHECK 制約中の SQL データを読むルーチン呼出し”なしでは,適合する SQL 言語は,

SQL データを潜在的に読む SQL ルーチンである当該ルーチンをもつ<ルーチン呼出し>を一般に含

<探索条件>を含む<検査制約定義>を含んではならない。

11.10

<表変更文>

機能

<表変更文> (<alter table statement>)  は,表の定義を変更する。

形式

<表変更文> ::=

  ALTER  TABLE  <表名> <表変更動作>

<表変更動作> ::=

  <列定義追加>

 |

<列定義変更>

 |

<列定義削除>

 |

<表制約定義追加>

 |

<表制約定義変更>

 |

<表制約定義削除>

 |

<表期間定義追加>

 |

<表期間定義削除>


508

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

| <SYSTEM VERSIONING 句追加>

| <SYSTEM VERSIONING 句削除>

構文規則

1) <表名>によって識別される表を とする。

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

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

3) <表名>の有効範囲は,<表変更文>全体とする。

4)  は,実表でなければならない。

5)  は,宣言局所一時表であってはならない。

アクセス規則

1)  与えられた認可識別子は,<表名>によって識別される表の<スキーマ名>によって識別されるスキー

マを所有する

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

一般規則

1)  の実表記述子は,<表変更動作>によって指定されるとおりに修正される。

2) <列定義追加>又は<列定義削除>が指定されるならば,の行型 RT は,対(<フィールド名>,<デー

タ型

>)の集合とする。ここで,<フィールド名>は,の列 の名前とし,<データ型>は,の宣

言型とする。この対の集合は,中での列の順序位置の順序で,の各列に対して一つの対を含む。

適合性規則

なし。 

11.11

<列定義追加>

機能

<列定義追加> (<add column definition>)  は,表に列を追加する。

形式

<列定義追加> ::=

  ADD [ COLUMN ] <列定義>

構文規則

1) <列定義追加>を含む<表変更文>に直に含まれる<表名>によって識別される表を とする。

2)  は,参照可能表又はシステムバージョン表であってはならない。

3) <列定義>が<識別列指定>を含むならば,の表記述子は,識別列の列記述子を含んではならない。

4)  期間名が ATPN である期間記述子を の表記述子が含むならば,<列定義>に直に含まれる<列名>

は,ATPN と等価であってはならない。

アクセス規則

なし。 

一般規則

1) <列定義>によって定義される列が に追加される。

2)  に追加される列を とする。

場合:

a)  が生成列ならば,それを含む<表変更文>に直に含まれる<表名>を TN とし,<列定義>に直に含

まれる

<列名>を CN とし,の列記述子に含まれる生成式を GE とする。これ以上の構文規則又

はアクセス規則の検査なしで,次の

<UPDATE 文:探索>が実行される。


509

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

UPDATE TN SET CN = GE

b)  そうでなければ,は,実列とする。

場合:

i)

が識別列ならば,中の各行に対して,に対応する格納場所を CS とする。の列記述子に

含まれる順序数生成子記述子を SEQUENCE として,“9.25  順序数生成子の次値の生成”の一

般規則を適用する。これらの一般規則の適用によって戻される RESULT を NV とする。

場合:

1)  の宣言型が個別型 DIST ならば,DIST ( NV )  を CNV とする。

2)  そうでなければ,NV を CNV とする。

CS を TARGET として,CNV を VALUE として,“9.2  格納代入”の一般規則を適用する。

ii)  そうでなければ,中のどの値も,に対する既定値とする。

注記 359  列の既定値は,“11.5 <DEFAULT 句>”で定義している。

注記 360  表への列の追加は,ビュー記述子に含まれる既存の<問合せ式>,トリガ記述子に含まれ

<被トリガ動作>,又は制約記述子に含まれる<探索条件>にどんな効果も与えない。な

ぜならば,これらの記述子要素中の暗に想定される列参照は,“7.12 <問合せ指定>”の構

文規則で,陽に指定される列参照によって構文上置き換えられるからである。また,(こ

のことに反する一般規則がないことから)含意として,列参照の意味は,その列参照を

含む

<SQL スキーマ文>の起動の後の列の追加によって決してそ(遡)及変更されること

はない。

3)  T,及び SELECT,UPDATE,INSERT 又は REFERENCES の権限を指定するどの表権限記述子に対

しても,T,同じ動作,権限付与者及び権限受領者並びに同じ権限付与可能性を指定し,かつ,<列

定義

>の<列名>を指定する新しい列権限記述子が作成される。

4)  他の全ての点において,<表変更文>中の<列定義>の指定は,の<表定義>中の<列定義>の指定がも

つであろう効果と同じ効果をもつ。

注記 361  具体的には,“11.4 <列定義>”の一般規則で規定するとおり,の次数は,1 増加し,そ

の列の順序位置は,の新しい次数と等しい。

適合性規則

なし。 

11.12

<列定義変更>

機能

<列定義変更> (<alter column definition>)  は,列及びその定義を変更する。

形式

<列定義変更> ::=

  ALTER [ COLUMN ] <列名> <列変更動作>

<列変更動作> ::=

  <列 DEFAULT 句設定>

 |

<列 DEFAULT 句削除>

 |

<列 NOT NULL 句設定>

 |

<列 NOT NULL 句削除>

 |

<列 SCOPE 句追加>


510

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

 |

<列 SCOPE 句削除>

 |

<列データ型句変更>

 |

<識別列指定変更>

 |

<IDENTITY 特性句削除>

 |

<列生成式句削除>

構文規則

1) <列定義変更>を含む<表変更文>中で識別される表を とする。

2)  は,システムバージョン表であってはならない。

3) <列名>によって識別される列を とする。

4)  は,の列でなければならない。

5)  が の自己参照列か又は の生成列ならば,<列変更動作>は,<列 SCOPE 句追加>又は<列 SCOPE

句削除

>を含んではならない。

6)  が識別列ならば,<列変更動作>は,<識別列指定変更>又は<IDENTITY 特性句削除>のいずれかを

含まなければならない。

7) <識別列指定変更>又は<IDENTITY 特性句削除>が指定されるならば,は,識別列でなければなら

ない。

8) <列生成式句削除>が指定されるならば,は,の生成列でなければならない。

9)  が の生成列,のシステム時刻期間開始列又は のシステム時刻期間終了列ならば,<列変更動

>は,<列 DEFAULT 句設定>を含んではならない。

アクセス規則

なし。 

一般規則

1)  の列記述子が,<列変更動作>によって指定されるとおりに修正される。

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<列定義変更>を含んではならな

い。

11.13

<列 DEFAULT 句設定>

機能

<列 DEFAULT 句設定> (<set column default clause>)  は,列に対する DEFAULT 句を設定する。

形式

<列 DEFAULT 句設定> ::=

  SET  <DEFAULT 句>

構文規則

なし。 

アクセス規則

なし。 

一般規則

1) <列 DEFAULT 句設定>を含む<列定義変更>中の<列名>によって識別される列を とする。

2) <DEFAULT 句>によって指定される既定値が,の列記述子中に格納される。

適合性規則


511

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

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<列 DEFAULT 句設定>を含んで

はならない。

11.14

<列 DEFAULT 句削除>

機能

<列 DEFAULT 句削除> (<drop column default clause>)  は,列から DEFAULT 句を削除する。

形式

<列 DEFAULT 句削除> ::=

  DROP  DEFAULT

構文規則

1) <列 DEFAULT 句削除>を含む<列定義変更>中の<列名>によって識別される列を とする。

2)  の記述子は,既定値を含まなければならない。

アクセス規則

なし。 

一般規則

1)  の列記述子から既定値が取り除かれる。

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<列 DEFAULT 句削除>を含んで

はならない。

11.15

<列 NOT NULL 句設定>

機能

<列 NOT NULL 句設定> (<set column not null clause>)  は,列に NOT NULL 制約を追加する。

形式

<列 NOT NULL 句設定> ::=

  SET  NOT  NULL

構文規則

なし。 

アクセス規則

なし。 

一般規則

1) <列 NOT NULL 句設定>を含む<列定義変更>中の<列名>によって識別される列を とする。

が NOT

NULL として定義されていることを示す標識を の列記述子が含まないならば,次による。

a) <列 NOT NULL 句設定>を含む<表変更文>中の<表名>を TN とする。

b)  TN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマを とす

る。に含まれるどの表制約記述子の<制約名>とも等価でない処理系依存の<制約名>を IDCN 

する。

c)

の列記述子が次のとおりに修正される。

i)

が NOT NULL として定義されていることを示す標識が追加される。

ii) NOT

NULL に関連付けられた表制約定義の制約名として IDCN が追加される。

d)  これ以上のアクセス規則の検査なしで,次の<表変更文>が実行される。

ALTER TABLE TN ADD CONSTRAINT IDCN CHECK ( CN IS NOT NULL )


512

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

適合性規則

1)  機能 F383“列 NOT NULL 句設定”なしでは,適合する SQL 言語は,<列 NOT NULL 句設定>を含

んではならない。

11.16

<列 NOT NULL 句削除>

機能

<列 NOT NULL 句削除> (<drop column not null clause>)  は,列の NOT NULL 制約を削除する。

形式

<列 NOT NULL 句削除> ::=

  DROP  NOT  NULL

構文規則

1) <列 NOT NULL 句削除>を含む<列定義変更>中の<列名>によって識別される列を とする。

<列 NOT

NULL 句削除>を含む<表変更文>中の<表名> TN によって識別される表を とする。

2)  は,のシステム時刻期間開始列であってはならず,のシステム時刻期間終了列であってもな

らない。

3)  の記述子が適用業務時刻期間記述子を含むならば,

その記述子に含まれる期間名を ATPN とする。

は,の ATPN 期間開始列であってはならず,の ATPN 期間終了列であってもならない。

アクセス規則

なし。 

一般規則

1)  が NOT NULL として定義されていることを示す標識を の列記述子が含むならば,次による。

a)  の列記述子に含まれる NOT NULL に関連付けられた表制約定義の制約名を ACN とする。

b)  の列記述子が次のとおりに修正される。

i)

が NOT NULL として定義されていることを示す標識が取り除かれる。

ii) NOT

NULL に関連付けられた表制約定義の制約名が取り除かれる。

c)

これ以上のアクセス規則の検査なしで,次の

<表変更文>が実行される。

ALTER TABLE TN DROP CONSTRAINT ACN CASCADE

適合性規則

1)  機能 F383“列 NOT NULL 句設定”なしでは,適合する SQL 言語は,<列 NOT NULL 句削除>を含

んではならない。

11.17

<列 SCOPE 句追加>

機能

<列 SCOPE 句追加> (<add column scope clause>)  は,実表中のデータ型 REF の既存の列に対して,空で

ない有効範囲を追加する。

形式

<列 SCOPE 句追加> ::=

  ADD  <SCOPE 句>

構文規則

1) <列 SCOPE 句追加>を含む<列定義変更>中の<列名>によって識別される列を とする。の宣言型

は,参照型でなければならない。の記述子に含まれる参照型記述子を RTD とする。

2) <列 SCOPE 句追加>を含む<表変更文>中の<表名>によって識別される表を とする。が参照可能


513

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

表ならば,は,の原定義列でなければならない。

3)  RTD は,有効範囲を含んではならない。

4)  RTD に含まれる参照型の名前を UDTN とする。

5) <SCOPE 句>に含まれる<表名> STN は,構造型が UDTN である参照可能表を識別しなければならな

い。

アクセス規則

なし。 

一般規則

1)  の列記述子に含まれる参照型記述子中の有効範囲として,STN が含められる。

2)  の真下位表 PST に対して,中の対応する列が である列を PSC とする。PSC の列記述子に含

まれる参照型記述子中の有効範囲として,STN が含められる。

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<列 SCOPE 句追加>を含んではな

らない。

2)  機能 S043“拡張参照型”なしでは,適合する SQL 言語は,<列 SCOPE 句追加>を含んではならない。

11.18

<列 SCOPE 句削除>

この細分箇条は,ISO/IEC 9075-4 の“9.7 <列 SCOPE 句削除>”によって修正される。 

機能

<列 SCOPE 句削除> (<drop column scope clause>)  は,実表中のデータ型 REF の既存の列から有効範囲を

削除する。

形式

<列 SCOPE 句削除> ::=

  DROP  SCOPE  <削除動作>

構文規則

1) <列 SCOPE 句削除>を含む<列定義変更>中の<列名>によって識別される列を とする。の宣言型

は,有効範囲を含む参照型記述子をもつ参照型でなければならない。

2) <列 SCOPE 句削除>を含む<表変更文>中の<表名>によって識別される表を とする。が参照可能

表ならば,は,の原定義列でなければならない。

3)  C,及び の全ての真下位表の,上位列が である列から成る列の集合を SC とする。

4)

影響を受ける内参照演算  (impacted dereference operation)  は,SC 中の列を識別する列参照である<

参照値式

>をもつ<内参照演算>,SC 中の列を識別する列参照である<値式一次子>をもつ<メソッド

参照

>,又は SC 中の列を識別する列参照である<参照値式>をもつ<参照解決>とする。

5) RESTRICT が指定されるならば,影響を受ける内参照演算は,次のいずれかに含まれてはならない。

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

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

c)

制約記述子の

<探索条件>。

d)

04

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

注記 362 CASCADE が指定されるならば,このような参照しているオブジェクトは,この細分箇

条の一般規則で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE

>によって暗に削除される。


514

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

アクセス規則

なし。 

一般規則

1)

04

  影響を受ける内参照演算を含む<SQL ルーチン本体>を含むルーチン記述子をもつどの SQL 呼出

しルーチン に対しても,の<特定名>を SN とする。これ以上のアクセス規則の検査なしで,次

<ルーチン削除文>がどの に対しても実効的に実行される。

DROP SPECIFIC ROUTINE SN CASCADE

2)  影響を受ける内参照演算を含む元の<問合せ式>を含むビュー記述子をもつどのビューに対しても,

の<表名>を VN とする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>がどの 

対しても実効的に実行される。

DROP VIEW VN CASCADE

3)  影響を受ける内参照演算を含む<探索条件>を含む表明記述子をもつどの表明 に対しても,の<

制約名

>を AN とする。これ以上のアクセス規則の検査なしで,次の<表明削除文>がどの に対し

ても実効的に実行される。

DROP ASSERTION AN CASCADE

4)

04

  影響を受ける内参照演算を含む<探索条件>を含む表検査制約記述子をもつどの表検査制約 CC 

対しても,CC の<制約名>を CN とし,CC の記述子を含む記述子をもつ表の<表名>を TN とする。

これ以上のアクセス規則の検査なしで,次の

<表変更文>がどの CC に対しても実効的に実行される。

ALTER TABLE TN DROP CONSTRAINT CN CASCADE

5)  SC 中の全ての列の列記述子に含まれる参照型記述子に含まれる有効範囲が空にされる。

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<列 SCOPE 句削除>を含んではな

らない。

2)  機能 S043“拡張参照型”なしでは,適合する SQL 言語は,<列 SCOPE 句削除>を含んではならない。

11.19

<列データ型句変更>

この細分箇条は,ISO/IEC 9075-14 の“12.3 <列データ型句変更>”によって修正される。 

機能

<列データ型句変更> (<alter column data type clause>)  は,列の宣言型を変更する。

形式

<列データ型句変更> ::=

  SET DATA TYPE <データ型>

構文規則

1) <列データ型句変更>を含む<列定義変更>中の<列名>によって識別される列を とする。

2) <列データ型句変更>を含む<表変更文>中の<表名>によって識別される表を とする。

3)  は,の自己参照列であってはならない。

4)  の表記述子が,システム時刻期間記述子を含むならば,は,のシステム時刻期間開始列又は

システム時刻期間終了列であってはならない。

5)  の表記述子が,ピリオド名として ATPN を含む期間記述子を含むならば,は,の ATPN 期間

開始列又は ATPN 期間終了列であってはならない。

6)  の表記述子に含まれ,以外の列への参照を含まない表制約記述子以外の,どの制約記述子の<探


515

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

索条件

>中でも,が参照されていてはならない。

7)  どのトリガ記述子の,陽に指定されるトリガ列リスト又は被トリガ動作列集合のいずれかの中でも,

が参照されていてはならない。

8)  どのルーチン記述子の SQL ルーチン本体中でも,が参照されていてはならない。

9)  どのビュー記述子の元の<問合せ式>中でも,が参照されていてはならない。

10)  どの列記述子の生成式中でも,が参照されていてはならない。

11) <データ型>によって指定されるデータ型を とする。

12)  の宣言型を DTC とする。

13)  は,既定義型でなければならない。

14)  DTC は,既定義型でなければならない。

15)  場合:

a)  DTC が文字列型ならば,次による。

i)

は,文字列型でなければならない。

ii)  の長さ又は最大長を LD とする。

iii)  DTC の長さ又は最大長を LDTC とする。

iv)  LD は,LDTC 以上でなければならない。

b)  DTC が 2 進オクテット列型ならば,次による。

i)

は,2 進オクテット列型でなければならない。

ii)  の長さ又は最大長を LD とする。

iii)  DTC の長さ又は最大長を LDTC とする。

iv)  LD は,LDTC 以上でなければならない。

c)

DTC が真数型ならば,次による。

i)

は,真数型でなければならない。

ii)  の精度及び位取りを,それぞれ,PD 及び SD とする。

iii)  DTC の精度及び位取りを,それぞれ,PDTC 及び SDTC とする。

iv)  PD は,PDTC 以上でなければならない。

v)  SD は,SDTC 以上でなければならない。

vi) (PD-SD)  は,(PDTC-SDTC)  以上でなければならない。

d)  DTC が概数型ならば,次による。

i)

は,概数型でなければならない。

ii)  の精度を PD とする。

iii)  DTC の精度を PDTC とする。

iv)  PD は,PDTC 以上でなければならない。

e)

DTC が DATE ならば,は,DATE でなければならない。

f)

DTC が時刻帯付き時刻型又は時刻帯なし時刻型ならば,は,それぞれ,時刻帯付き時刻型又は

時刻帯なし時刻型でなければならない。

i)

の<時刻小数秒精度>の値を PD とする。

ii)  DTC の<時刻小数秒精度>の値を PDTC とする。

iii)  PD は,PDTC 以上でなければならない。

g)  DTC が時刻帯付き時刻印型又は時刻帯なし時刻印型ならば,は,それぞれ,時刻帯付き時刻印


516

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

型又は時刻帯なし時刻印型でなければならない。

i)

の<時刻小数秒精度>の値を PD とする。

ii)  DTC の<時刻小数秒精度>の値を PDTC とする。

iii)  PD は,PDTC 以上でなければならない。

h)  DTC が年月時間隔型ならば,は,年月時間隔型でなければならない。

i)

DTC が<開始フィールド>及び<終了フィールド>を指定するならば,は,同じ<開始フィール

>及び<終了フィールド>を指定しなければならない。

ii)  DTC が<単一日時フィールド>を指定するならば,は,同じ<単一日時フィールド>を指定しな

ければならない。

iii)  の陽に指定されるか又は暗に想定される<時間隔先行フィールド精度>は,DTC の陽に指定さ

れるか又は暗に想定される

<時間隔先行フィールド精度>以上でなければならない。

i)

DTC が日時刻時間隔型ならば,は,日時刻時間隔型でなければならない。

i)

DTC が<開始フィールド>及び<終了フィールド>を指定するならば,は,同じ<開始フィール

>及び<終了フィールド>を指定しなければならない。

ii)  DTC が<単一日時フィールド>を指定するならば,は,同じ<単一日時フィールド>を指定しな

ければならない。

iii)  の陽に指定されるか又は暗に想定される<時間隔先行フィールド精度>は,DTC の陽に指定さ

れるか又は暗に想定される

<時間隔先行フィールド精度>以上でなければならない。

iv)  DTC が陽に指定されるか又は暗に想定される<時間隔小数秒精度> PDTC を指定するならば,D

は,PDTC 以上の陽に指定されるか又は暗に想定される<時間隔小数秒精度>を指定しなければ

ならない。

j)

14

 DTC が BOOLEAN ならば,は,BOOLEAN でなければならない。

k)  そうでなければ,は,DTC でなければならない。

アクセス規則

なし。 

一般規則

1)  を記述するデータ型記述子で既存のデータ型記述子を置き換えることによって,の列記述子が

修正される。

適合性規則

1)  機能 F382“列データ型変更”なしでは,適合する SQL 言語は,<列データ型句変更>を含んではな

らない。

11.20

<識別列指定変更>

機能

<識別列指定変更> (<alter identity column specification>)  は,識別列に対して指定された選択肢を変更する。

形式

<識別列指定変更> ::=

  <識別列生成句設定> [ <識別列選択肢変更>... ]

 |

<識別列選択肢変更>...

<識別列生成句設定> ::=

  SET GENERATED { ALWAYS | BY DEFAULT }


517

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

<識別列選択肢変更> ::=

  <順序数生成子変更 RESTART 選択肢>

| SET <基本順序数生成子選択肢>

構文規則

1) <識別列選択肢変更>のうちの少なくとも一つの実現値が指定されるならば,次による。

a) <識別列指定変更>を含む<列定義変更>中の<列名>によって識別される列記述子に含まれる順序

数生成子記述子を SEQ とする。

b)  キーワード SET の各実現値を単一の空白文字に置き換えて,全ての<識別列指定変更>を連結する

ことによって得られる,

<順序数生成子変更選択肢の並び>の形式に適合するような文字列を OPT

とする。

c)

OPT を OPTIONS として,SEQ を SEQUENCE として,

9.27  順序数生成子の変更”の構文規則

を適用する。

アクセス規則

なし。 

一般規則

1)  少なくとも一つの<識別列選択肢変更>が指定されるならば,OPT を OPTIONS として,SEQ 

SEQUENCE として,

9.27  順序数生成子の変更”の一般規則を適用する。

2) <識別列生成句設定>が指定されるならば,次による。

a) <識別列指定変更>を含む<列定義変更>中の<列名>によって識別される列を とする。

b)  場合:

i) ALWAYS が指定されるならば,値が常時生成されることを示すように,の列記述子が修正さ

れる。

ii) BY

DEFAULT が指定されるならば,値が既定生成されることを示すように,の列記述子が修

正される。

適合性規則

1)  機能 T174“識別列”なしでは,適合する SQL 言語中で,<列定義変更>は,<識別列指定変更>を含

んではならない。

2)  機能 T178“識別列:単純再開始選択肢”なしでは,適合する SQL 言語中で,<識別列指定変更>に

含まれる

<順序数生成子変更 RESTART 選択肢>は,<順序数生成子再開始値>を含まなければならな

い。

3)  機能 F386“識別列生成句設定”なしでは,適合する SQL 言語は,<識別列生成句設定>を含んでは

ならない。

11.21

<IDENTITY 特性句削除>

機能

<IDENTITY 特性句削除> (<drop identity property clause>)  は,識別列を識別列でない列に変換する。

形式

<IDENTITY 特性句削除> ::=

  DROP  IDENTITY

構文規則

なし。 


518

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

アクセス規則

なし。 

一般規則

1) <IDENTITY 特性句削除>を含む<列定義変更>中の<列名>によって識別される列を とする。

2)  の列記述子が次のとおりに修正される。

a)  が識別列であることを示す標識が取り除かれる。

b)  値が常時生成されることを示す標識があるならば,それが取り除かれる。

c)

値が既定生成されることを示す標識があるならば,それが取り除かれる。

d)  の列記述子に含まれる順序数生成子 SG が取り除かれる。

3)  SG が破壊される。

適合性規則

1)  機能 F384“IDENTITY 特性句削除”なしでは,適合する SQL 言語は,<IDENTITY 特性句削除>を

含んではならない。

11.22

<列生成式句削除>

機能

<列生成式句削除> (<drop column generation expression clause>)  は,生成列を生成列でない列に変換する。

形式

<列生成式句削除> ::=

  DROP  EXPRESSION

構文規則

なし。 

アクセス規則

なし。 

一般規則

1) <列生成式句削除>を含む<列定義変更>中の<列名>によって識別される列を とする。

2)  の列記述子が次のとおりに修正される。

a)  の生成式が取り除かれる。

b)  値が常時生成されること(

ALWAYS”)を示す標識が取り除かれる。

c)

列が決して生成されないこと(“

NEVER”)を示す標識が追加される。

適合性規則

1)  機能 F385“列生成式句削除”なしでは,適合する SQL 言語は,<列生成式句削除>を含んではなら

ない。

11.23

<列定義削除>

この細分箇条は,ISO/IEC 9075-4 の“9.8 <列定義削除>”によって修正される。 

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

機能

<列定義削除> (<drop column definition>)  は,実表の列を破壊する。

形式

<列定義削除> ::=

  DROP [ COLUMN ] <列名> <削除動作>


519

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

構文規則

1) <列定義削除>を含む<表変更文>中の<表名>によって識別される表を とし,

の名前を TN とする。

2) <列名> CN によって識別される列を とする。

3)  は,参照可能表又はシステムバージョン表であってはならない。

4)  は,の列でなければならず,は,の唯一の列であってはならない。

5)  システム時刻期間記述子を の表記述子が含むならば,は,のシステム時刻期間開始列又は T

のシステム時刻期間終了列であってはならない。

6)  期間名として ATPN を含む期間記述子を の表記述子が含むならば,は,の ATPN 期間開始列

又は の ATPN 期間終了列であってはならない。

7) RESTRICT が指定されるならば,次のいずれかの中で が参照されていてはならない。

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

b)  他のどの列への参照も含まず,かつ,の表記述子に含まれる表制約記述子以外の制約記述子の<

探索条件

>。

c)

ルーチン記述子の

SQL ルーチン本体。

d)  ルーチン記述子の SQL パラメタの<パラメタ既定値>。

e)

04

  トリガ記述子の,陽に指定されるトリガ列リスト又は被トリガ動作列集合のいずれか。

f)

列記述子の生成式。

注記 363 CASCADE を指定しない<列定義削除>は,CORRESPONDING,NATURAL,(<EXIST 述

>に含まれる場合を除く)SELECT *,複数列<一意性制約定義>,又は<被参照表及び

>中に<被参照列リスト>がない REFERENCES の使用の結果としてその列への参照が

存在するならば,失敗する。また,複数列

<一意性制約定義>によって参照される列を参

照する,

<削除動作>が RESTRICT の<列定義削除>は,失敗するが,単一列<一意性制約

定義

>によって参照される列の削除は,成功することに注意する。

注記 364 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則で規定している

SQL スキーマ操作文によって陽に,及び/又は

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

注記 365  CN は,トリガ記述子の暗に想定されるトリガ列リストに含まれていてもよい。

アクセス規則

なし。 

一般規則

1)  CN を含む陽に指定されるトリガ列リスト又は被トリガ動作列集合をもつトリガ記述子のトリガ名

を TR とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行される。

DROP TRIGGER TR

2)

09

 を所有する<認可識別子>を とする。“_SYSTEM”の現行認可識別子で,かつ,これ以上のア

クセス規則の検査なしで,次の

<REVOKE 文>が実効的に実行される。

REVOKE INSERT(CN), UPDATE(CN),

SELECT(CN),

REFERENCES(CN) ON TABLE

TN FROM A CASCADE

3)  を参照する<列参照>を記述子中の生成式が含む の生成列を GC とする。これ以上のアクセス規


520

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

則の検査なしで,次の

<表変更文>が実効的に実行される。

ALTER TABLE T DROP COLUMN GC CASCADE

4)  列が定義域を基にしないならば,その列のデータ型記述子が破壊される。そうでなければ,を参

照する全ての定義域制約用途が破壊される。

5)  に関連付けられたデータが破壊される。

6)  の記述子から の記述子が取り除かれる。

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

8)  の次数が 1 減らされる。の順序位置より大きい順序位置をもつ全ての列の順序位置が 1 減らさ

れる。

適合性規則

1)  機能 F033“ALTER TABLE 文:DROP COLUMN 句”なしでは,適合する SQL 言語は,<列定義削除

>を含んではならない。

11.24

<表制約定義追加>

機能

<表制約定義追加> (<add table constraint definition>)  は,表に制約を追加する。

形式

<表制約定義追加> ::=

  ADD  <表制約定義>

構文規則

1) <表制約定義追加>を含む<表変更文>に含まれる<表名>によって識別される表を とする。

2) PRIMARY

KEY が指定されるならば,は,真上位表をもってはならない。

アクセス規則

なし。 

一般規則

1) <表制約定義>の表制約記述子は,の表記述子に含まれる。

2)  に追加される表制約を TC とする。TC によって,ある列 CN がナル可能でないことが分かり,か

つ,他のどの制約によっても,CN がナル可能でないことが分からないならば,CN の列記述子のナ

ル可能性特性は,ナル可能でないことが分かるに変更される。

注記 366  列のナル可能性特性は,“4.13  列,フィールド及び属性”で定義している。

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<表制約定義追加>を含んではな

らない。

11.25

<表制約定義変更>

機能

<表制約定義変更> (<alter table constraint definition>)  は,表制約の定義を変更する。

形式

<表制約定義変更> ::=

  ALTER  CONSTRAINT  <制約名> <制約強制>

構文規則

1) <表制約定義変更>を含む<表変更文>中の<表名>によって識別される表を とする。


521

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

2) <制約名>は,の表制約 TC を識別しなければならない。

3)  TC は,一意性制約を識別してはならない。

アクセス規則

なし。 

一般規則

1)  TC の表制約記述子が次のとおりに修正される。

場合:

a) NOT

ENFORCED が指定されるならば,制約が強制か又は強制でないかを示す標識が,制約が強

制でないことを示す標識に置き換えられる。

b)  そうでなければ,制約が強制か又は強制でないかを示す標識が,制約が強制であることを示す標

識に置き換えられる。

適合性規則

1)  機能 F492“選択可能な表制約強制”なしでは,適合する SQL 言語は,<制約強制>を含む<表制約定

義変更

>を含んではならない。

11.26

<表制約定義削除>

この細分箇条は,ISO/IEC 9075-4 の“9.9 <表制約定義削除>”によって修正される。 

機能

<表制約定義削除> (<drop table constraint definition>)  は,表に関する制約を破壊する。

形式

<表制約定義削除> ::=

  DROP  CONSTRAINT  <制約名> <削除動作>

構文規則

1) <表制約定義削除>を含む<表変更文>中の<表名>によって識別される表を とする。

2) <制約名>は,の表制約 TC を識別しなければならない。

3)  TC が一意性制約であり,参照制約 RC の被参照表が で,かつ,RC の被参照列が TC の一意列な

らば,RC は,TC に依存している  (dependent on)  という。

4)  暗に想定されるか又は陽に指定される<GROUP BY 句>を含む<問合せ指定>で,<集合関数指定>の

集約化引数に含まれない列 への列参照を<選択リスト>中に含む<問合せ指定>を QS とし,QS 

グループ化列の集合を とする。G  ↦ が QS 中の知られている関数従属性であることを推論する

のに TC が必要ならば,QS は,TC に依存している  という。

5)  TC に依存している<問合せ指定>を含むビューを V1 とする。V1 は,TC に依存している  という。

6)  TC に依存している<問合せ指定>を<SQL ルーチン本体>が含む SQL ルーチンを R1 とする。R1 は,

TC に依存している  という。

7)  TC に依存している<問合せ指定>を<探索条件>が含む制約又は表明を C1 とする。C1 は,TC に依存

している  という。

8)  TC に依存している<問合せ指定>を被トリガ動作が含むトリガを TR1 とする。TR1 は,TC に依存し

ている  という。

9)  が導出自己参照列をもつ参照可能表ならば,TC は,被参照型が の構造型である参照型の導出表

現の属性のリスト中の属性に対応する一意列をもつ一意性制約であってはならない。

10)  の記述子が適用業務時刻期間記述子 ATPD を含むならば,次による。


522

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

a)  TC は,ATPD に含まれる期間制約の名前であってはならない。

b)  ATPD に含まれる<適用業務時刻期間名>を ATPN とする。の ATPN 開始列又は の ATPN 終了

列のナル可能性特性の,ナル可能でないことが分かるから潜在的にナル可能への変更を,TC の削

除が引き起こしてはならない。

11)  TC は,の自己参照列である一意列をもつ一意性制約であってはならない。

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

a)  どの表制約も,TC に依存していてはならない。

b)  TC の<制約名>は,どのルーチン記述子の SQL ルーチン本体にも含まれてはならない。

c)

どのビューも,TC に依存していてはならない。

d)  どの SQL ルーチンも,TC に依存していてはならない。

e)

どの制約又は表明も,TC に依存していてはならない。

f)

どのトリガも,TC に依存していてはならない。

注記 367 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則で規定している

SQL スキーマ操作文によって陽に,及び/又は

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

アクセス規則

なし。 

一般規則

1)  TC に依存している表制約の<制約名>を TCN2 とし,

TCN2 を含む表記述子の<表名>を TN2 とする。

これ以上のアクセス規則の検査なしで,次の

<表変更文>がどの TCN2 及び TN2 に対しても実効的に

実行される。

ALTER TABLE TN2 DROP

CONSTRAINT TCN2 CASCADE

2)

04

  TC の<制約名>を SQL ルーチン本体に含むルーチン記述子をもつ SQL 呼出しルーチン,又は TC

に依存している

SQL 呼出しルーチンを とする。の<特定名>を SN とする。これ以上のアクセス

規則の検査なしで,次の

<ルーチン削除文>がどの に対しても実効的に実行される。

DROP SPECIFIC ROUTINE SN CASCADE

3)  TC に依存しているビューの表名を VN とする。これ以上のアクセス規則の検査なしで,次の<ビ

ュー削除文

>がどの に対しても実効的に実行される。

DROP VIEW VN CASCADE

4)  TC に依存している表明 の制約名を AN とする。これ以上のアクセス規則の検査なしで,次の<表

明削除文

>がどの に対しても実効的に実行される。

DROP ASSERTION AN CASCADE

5)  TC に依存しているトリガ TR のトリガ名を TRN とする。これ以上のアクセス規則の検査なしで,

次の

<トリガ削除文>がどの TR に対しても実効的に実行される。

DROP TRIGGER TRN CASCADE

6)  の記述子から TC の記述子が取り除かれる。

7)  TC によって,ある列 COL がナル可能でないことが分かり,かつ,他のどの制約によっても,COL

がナル可能でないことが分からないならば,COL の列記述子のナル可能性特性は,潜在的にナル可

能に変更される。


523

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

注記 368  列のナル可能性特性は,“4.13  列,フィールド及び属性”で定義している。

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

適合性規則

1)  機能 F381“拡張スキーマ操作”なしでは,適合する SQL 言語は,<表制約定義削除>を含んではな

らない。

11.27

<表期間定義追加>

機能

<表期間定義追加> (<add table period definition>)  は,永続実表にシステム時刻期間又は適用業務時刻期間

を追加する。

形式

<表期間定義追加> ::=

  ADD  <表期間定義> [ <システム時刻期間列リスト追加> ]

<システム時刻期間列リスト追加> ::=

  ADD [ COLUMN ] <列定義 1> ADD [ COLUMN ] <列定義 2>

<列定義 1> ::=

  <列定義>

<列定義 2> ::=

  <列定義>

構文規則

1) <表期間定義追加>を含む<表変更文>に直に含まれる<表名>を TN とする。TN によって識別される

表を とする。

2)  は,永続実表でなければならない。

3)  は,参照可能表であってはならない。

4) <表期間定義>が<システム時刻期間指定>を含むならば,次による。

a)  の表記述子がシステム時刻期間記述子を含んでいてはならない。

b)  のどの列も,SYSTEM_TIME と等価な列名をもっていてはならない。

c) <システム時刻期間列リスト追加>を指定しなければならない。

d) <システム時刻期間列リスト追加>は,<システム時刻期間開始列指定>を含むただ一つの<列定義>

CD1,及び<システム時刻期間終了列指定>を含むただ一つの<列定義> CD2 を含まなければならな

い。

e) <表期間定義>に含まれる<期間開始列名>を SCN1 とする。SCN1 は,CD1 に含まれる<列名>と等

価でなければならない。SCN1 によって識別される列は,システム時刻期間開始列とする。

f) <表期間定義>に含まれる<期間終了列名>を SCN2 とする。SCN2 は,CD2 に含まれる<列名>と等

価でなければならない。SCN2 によって識別される列は,システム時刻期間終了列とする。

g)  CD1 に含まれる<データ型又は定義域名>は,CD2 に含まれる<データ型又は定義域名>と等価でな

ければならない。

5) <表期間定義>が<適用業務時刻期間指定> ATPS を含むならば,次による。

a)  ATPS に含まれる<適用業務時刻期間名>を ATPN とする。

b)  の表記述子がシステム時刻期間記述子以外の期間記述子を含んでいてはならない。

c)

のどの列も,ATPN と等価な列名をもっていてはならない。


524

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

d) <システム時刻期間列リスト追加>を指定してはならない。

e) <表期間定義>に含まれる<期間開始列名>を BCN1 とする。の表記述子は,列名として BCN1 

含む列記述子を含まなければならない。BCN1 によって識別される列 BC1 は,ATPN 期間開始列

とする。

f) <表期間定義>に含まれる<期間終了列名>を BCN2 とする。の表記述子は,列名として BCN2 

含む列記述子を含まなければならない。BCN2 によって識別される列 BC2 は,ATPN 期間終了列

とする。

g)  BC1 の宣言型は,DATE 又は時刻印型のいずれかでなければならず,BC2 の宣言型と等価でなけ

ればならない。

h)  BC1 及び BC2 は,ナル可能でないことが分からなければならない。

i)

BC1 も,BC2 も,識別列,生成列,システム時刻期間開始列又はシステム時刻期間終了列であっ

てはならない。

アクセス規則

なし。 

一般規則

1) <表期間定義>が<システム時刻期間指定>を含むならば,次による。

a) <列定義 1>を CD1 とする。

これ以上のアクセス規則の検査なしで,

次の

<表変更文>が実行される。

ALTER TABLE TN ADD COLUMN CD1

b) <列定義 2>を CD2 とする。

これ以上のアクセス規則の検査なしで,

次の

<表変更文>が実行される。

ALTER TABLE TN ADD COLUMN CD2

c)

CD1 によって指定される列を C1 とする。CD2 によって指定される列を C2 とする。C2 のデータ

型を DT とする。型 DT の処理系定義の値を TTS とする。C1 に TTS が設定され,C2 に DT によ

って提供される最大の値が設定されるように,各

SQL 文の最後に の全ての行が実効的に更新さ

れる。

注記 369  この更新は,新しいトリガ実行文脈も,現行トリガ実行文脈中の新しい状態変更の定

義も作成しない。

d) <表期間定義>に含まれる<期間開始列名>を SCN1 とする。<表期間定義>に含まれる<期間終了列

>を SCN2 とする。期間の名前として SYSTEM_TIME を含み,システム時刻期間開始列の名前

として SCN1 を含み,かつ,システム時刻期間終了列の名前として SCN2 を含む期間記述子を,T

の表記述子が含むように修正される。

2) <表期間定義>が<適用業務時刻期間指定>を含むならば,次による。

a)  TN の陽に指定されるか又は暗に想定される<スキーマ名>によって識別されるスキーマを とす

る。

<表期間定義>に含まれる<期間開始列名>を BCN1 とする。<表期間定義>に含まれる<期間終

了列名

>を BCN2 とする。に含まれるどの表制約記述子の<制約名>とも等価でない処理系依存の

<制約名>を IDCN とする。

b)  これ以上のアクセス規則の検査なしで,次の<表変更文>が実行される。

ALTER TABLE TN ADD CONSTRAINT IDCN CHECK ( BCN1 < BCN2 )

c)

期間の名前として ATPN を含み,ATPN 期間開始列の名前として BCN1 を含み,かつ,ATPN 

間終了列の名前として BCN2 を含み,かつ,ATPN 期間制約名として IDCN を含む期間記述子を,

の表記述子が含むように修正される。


525

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

適合性規則

1)  機能 T180“システムバージョン表”なしでは,適合する SQL 言語は,ADD <システム時刻期間指

>を含んではならない。

2)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語は,ADD <適用業務時刻期間指定>

を含んではならない。

11.28

<表期間定義削除>

機能

<表期間定義削除> (<drop table period definition>)  は,永続実表からシステム時刻期間又は適用業務時刻

期間を取り除く。

形式

<表期間定義削除> ::=

  DROP  <システム又は適用業務時刻期間指定> <削除動作>

構文規則

1) <表期間定義削除>を含む<表変更文>に直に含まれる<表名>を TN とする。TN によって識別される

表を とする。

2) <システム又は適用業務時刻期間指定>が PERIOD SYSTEM_TIME を指定するならば,次による。

a)  は,システムバージョン表であってはならない。

b)  の記述子は,システム時刻期間記述子を含まなければならない。

c) RESTRICT が指定されるならば,のシステム時刻期間開始列も,のシステム時刻期間終了列

も,次のいずれかの中で参照されていてはならない。

i)

ビュー記述子の元の

<問合せ式>。

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

iii)  ルーチン記述子の SQL パラメタの<パラメタ既定値>。

iv)  トリガ記述子の<被トリガ動作>。

v)  列記述子の生成式。

注記 370 CORRESPONDING,NATURAL 又は (<EXISTS 述語>に含まれる場合を除く)SELECT

*の利用の結果として,のシステム時刻期間開始列又は のシステム時刻期間終了列

を参照するならば,

CASCADE を指定しない<表期間定義削除>は,失敗する。

注記 371 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則で規定している

<列定義削除>の実行によって削除される。

d) RESTRICT が指定されるならば,の SYSTEM_TIME 期間が,次のいずれかの中で参照されてい

てはならない。

i)

ビュー記述子の元の

<問合せ式>。

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

iii)  表明記述子の<探索条件>。

iv)  ルーチン記述子の SQL パラメタの<パラメタ既定値>。

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

vi)  トリガ記述子の<被トリガ動作>。

vii)  列記述子の生成式。

注記 372 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この


526

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

細分箇条の一般規則の実行によって削除される。

3) <システム又は適用業務時刻期間指定>が<適用業務時刻期間名> ATPN を指定するならば,次による。

a)  の記述子は,ATPN 期間記述子を含まなければならない。

b) RESTRICT が指定されるならば,である<相手表>を含み,かつ,ATPN と等価な<適用業務時刻

期間名

>を含む<DELETE 文:探索>が,次のいずれかの中で参照されていてはならない。

i)

ルーチン記述子の

SQL ルーチン本体。

ii)  トリガ記述子の<被トリガ動作>。

注記 373 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。

c) RESTRICT が指定されるならば,である<相手表>を含み,かつ,ATPN と等価な<適用業務時刻

期間名

>を含む<UPDATE 文:探索>が,次のいずれかの中で参照されていてはならない。

i)

ルーチン記述子の

SQL ルーチン本体。

ii)  トリガ記述子の<被トリガ動作>。

注記 374 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。

d) RESTRICT が指定されるならば,ATPN によって識別される期間が,次のいずれかの中で参照さ

れていてはならない。

i)

ビュー記述子の元の

<問合せ式>。

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

iii)  表明記述子の<探索条件>。

iv)  ルーチン記述子の SQL パラメタの<パラメタ既定値>。

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

vi)  トリガ記述子の<被トリガ動作>。

vii)  列記述子の生成式。

注記 375 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この

細分箇条の一般規則の実行によって削除される。

アクセス規則

なし。 

一般規則

1) <システム又は適用業務時刻期間指定>が PERIOD SYSTEM_TIME を指定するならば,次による。

a)  のシステム時刻期間開始列の<列名>を SCN とする。これ以上のアクセス規則の検査なしで,次

<表変更文>が実行される。

ALTER TABLE TN DROP COLUMN SCN CASCADE

b)  のシステム時刻期間終了列の<列名>を ECN とする。これ以上のアクセス規則の検査なしで,次

<表変更文>が実行される。

ALTER TABLE TN DROP COLUMN ECN CASCADE

c)

システム時刻期間記述子が の表記述子から取り除かれる。

d)  の SYSTEM_TIME 期間を参照する期間参照を PR とする。

場合:

i)

PR がビュー記述子の元の<問合せ式>に含まれるならば,そのビュー記述子に含まれるビュー


527

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

の名前を SON とする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的

に実行される。

DROP VIEW SON CASCADE

ii)  PR が表明記述子の<探索条件>に含まれるならば,その表明記述子に含まれる制約の名前を

SON とする。これ以上のアクセス規則の検査なしで,次の<表明削除文>が実効的に実行される。

DROP ASSERTION SON CASCADE

iii)  PR が表制約記述子 SOD の<探索条件>に含まれるならば,SOD に含まれる制約の名前を SON

とする。SOD を含む表記述子に含まれる<表名>を CTN とする。これ以上のアクセス規則の検

査なしで,次の

<表変更文>が実効的に実行される。

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE

iv)  PR がルーチン記述子の SQL ルーチン本体に含まれるか,又はルーチン記述子の SQL パラメタ

<パラメタ既定値>に含まれるならば,そのルーチン記述子に含まれる特定名を SON とする。

これ以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE SON CASCADE

v)  PR がトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ

名を SON とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実

行される。

DROP TRIGGER SON CASCADE

2) <システム又は適用業務時刻期間指定>が<適用業務時刻期間名> ATPN を指定するならば,次による。

a)  の ATPN 期間記述子に含まれる ATPN 期間制約の名前を IDCN とする。

b)  の表記述子から ATPN 期間記述子が取り除かれる。

c)

これ以上のアクセス規則の検査なしで,次の

<表変更文>が実効的に実行される。

ALTER TABLE TN DROP CONSTRAINT IDCN CASCADE

d)  である<相手表>を含み,かつ,ATPN と等価な<適用業務時刻期間名>を含む<DELETE 文:探索

>を TP とする。

i)

TP がルーチン記述子の SQL ルーチン本体に含まれるならば,そのルーチン記述子に含まれる

特定名を SON とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効

的に実行される。

DROP SPECIFIC ROUTINE SON CASCADE

ii)  TP がトリガ記述子の<被トリガ動作>に含まれるならば,

そのトリガ記述子に含まれるトリガ名

を SON とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行

される。

DROP TRIGGER SON CASCADE

e)

である<相手表>を含み,かつ,ATPN と等価な<適用業務時刻期間名>を含む<UPDATE 文:探索

>を TP とする。

i)

TP がルーチン記述子の SQL ルーチン本体に含まれるならば,そのルーチン記述子に含まれる

特定名を SON とする。これ以上のアクセス規則の検査なしで,次の<ルーチン削除文>が実効

的に実行される。

DROP SPECIFIC ROUTINE SON CASCADE

ii)  TP がトリガ記述子の<被トリガ動作>に含まれるならば,

そのトリガ記述子に含まれるトリガ名


528

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

を SON とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行

される。

DROP TRIGGER SON CASCADE

f)

の ATPN 期間を参照する期間参照を PR とする。

場合:

i)

PR がビュー記述子の元の<問合せ式>に含まれるならば,そのビュー記述子に含まれるビュー

の名前を SON とする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的

に実行される。

DROP VIEW SON CASCADE

ii)  PR が表明記述子の<探索条件>に含まれるならば,その表明記述子に含まれる制約の名前を

SON とする。これ以上のアクセス規則の検査なしで,次の<表明削除文>が実効的に実行される。

DROP ASSERTION SON CASCADE

iii)  PR が表制約記述子 SOD の<探索条件>に含まれるならば,SOD に含まれる制約の名前を SON

とする。SOD を含む表記述子に含まれる<表名>を CTN とする。これ以上のアクセス規則の検

査なしで,次の

<表変更文>が実効的に実行される。

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE

iv)  PR がルーチン記述子の SQL ルーチン本体に含まれるか,又はルーチン記述子の SQL パラメタ

<パラメタ既定値>に含まれるならば,そのルーチン記述子に含まれる特定名を SON とする。

これ以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE SON CASCADE

v)  PR がトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ

名を SON とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実

行される。

DROP TRIGGER SON CASCADE

適合性規則

1)  機能 T180“システムバージョン表”なしでは,適合する SQL 言語は,DROP PERIOD SYSTEM_TIME

を含んではならない。

2)  機能 T181“適用業務時刻期間表”なしでは,適合する SQL 言語は,<適用業務時刻期間名>を含む<

表期間定義削除

>を含んではならない。

11.29

<SYSTEM VERSIONING 句追加>

機能

<SYSTEM VERSIONING 句追加> (<add system versioning clause>)  は,通常永続実表をシステムバージョ

ン表に変更する。

形式

<SYSTEM VERSIONING 句追加> ::=

  ADD  <SYSTEM  VERSIONING 句>

構文規則

1) <SYSTEM

VERSIONING 句追加>を含む<表変更文>に直に含まれる<表名>を TN とする。TN によっ

て識別される表を とする。

2)  は,通常永続実表でなければならない。


529

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

3)  は,参照可能表であってはならない。

4)  の記述子は,システム時刻期間記述子を含まなければならない。

5)  は,システムバージョン表であってはならない。

6)  の記述子は,宣言型が参照型の列の記述子を含んでいてはならない。

アクセス規則

なし。 

一般規則

1)  の表記述子が修正され,が通常永続実表であることを示す標識が,がシステムバージョン表で

あることを示す標識に修正される。

適合性規則

1)  機能 T180“システムバージョン表”なしでは,適合する SQL 言語は,<SYSTEM VERSIONING 句

追加

>を含んではならない。

11.30

<SYSTEM VERSIONING 句削除>

機能

<SYSTEM VERSIONING 句削除> (<drop system versioning clause>)  は,システムバージョン表を通常永続

実表に変更する。

形式

<SYSTEM VERSIONING 句削除> ::=

  DROP SYSTEM VERSIONING <削除動作>

構文規則

1) <SYSTEM

VERSIONING 句削除>を含む<表変更文>に直に含まれる<表名>を TN とする。TN によっ

て識別される表を とする。

2)  は,システムバージョン表でなければならない。

3) RESTRICT が指定されるならば,<問合せシステム時刻期間指定>を指定し,かつ,を参照する<

表一次子

>は,次のいずれかの中で参照されていてはならない。

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

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

c)

表明記述子の

<探索条件>。

d)  ルーチン記述子の SQL パラメタの<パラメタ既定値>。

e)

ルーチン記述子の

SQL ルーチン本体。

f)

トリガ記述子の

<被トリガ動作>。

g)  列記述子の生成式。

注記 376 CASCADE が指定されるならば,このような依存しているどのオブジェクトも,この細

分箇条の一般規則の実行によって削除される。

アクセス規則

なし。 

一般規則

1)  の表記述子が修正され,がシステムバージョン表であることを示す標識が,が通常永続実表で

あることを示す標識に修正される。

2)  履歴システム行に対応する の全ての行が,SQL 文の最後に実効的に削除される。


530

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

注記 377  この削除は,新しいトリガ実行文脈も,現行トリガ実行文脈中の新しい状態変更の定義

も作成しない。

3) <問合せシステム時刻期間指定>を指定し,かつ,を参照する<表一次子>を TP とする。

場合:

a)  TP がビュー記述子の元の<問合せ式>に含まれるならば,そのビュー記述子に含まれるビューの

名前を SON とする。これ以上のアクセス規則の検査なしで,次の<ビュー削除文>が実効的に実

行される。

DROP VIEW SON CASCADE

b)  TP が表明記述子の<探索条件>に含まれるならば,その表明記述子に含まれる制約の名前を SON

とする。これ以上のアクセス規則の検査なしで,次の

<表明削除文>が実効的に実行される。

DROP ASSERTION SON CASCADE

c)

TP が表制約記述子 SOD の<探索条件>に含まれるならば,SOD に含まれる制約の名前を SON 

する。SOD を含む表記述子に含まれる<表名>を CTN とする。これ以上のアクセス規則の検査な

しで,次の

<表変更文>が実効的に実行される。

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE

d)  TP がルーチン記述子の SQL ルーチン本体に含まれるか,又はルーチン記述子の SQL パラメタの

<パラメタ既定値>に含まれるならば,そのルーチン記述子に含まれる特定名を SON とする。こ

れ以上のアクセス規則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE SON CASCADE

e)

TP がトリガ記述子の<被トリガ動作>に含まれるならば,そのトリガ記述子に含まれるトリガ名

を SON とする。これ以上のアクセス規則の検査なしで,次の<トリガ削除文>が実効的に実行さ

れる。

DROP TRIGGER SON CASCADE

適合性規則

1)  機能 T180“システムバージョン表”なしでは,適合する SQL 言語は,<SYSTEM VERSIONING 句

削除

>を含んではならない。

11.31

<表削除文>

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

機能

<表削除文> (<drop table statement>)  は,表を破壊する。

形式

<表削除文> ::=

  DROP  TABLE  <表名> <削除動作>

構文規則

1) <表名>によって識別される表を とし,その<表名>を TN とする。

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

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

3)  は,実表でなければならない。

4)  は,宣言局所一時表であってはならない。

5)  影響を受ける内参照演算  (impacted dereference operation)  は,次のいずれかとする。


531

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

a) <内参照演算> DO。ここで,は,DO に直に含まれる<参照値式>の参照型の有効範囲とする。

b) <メソッド参照>  MR。ここで,は,MR に直に含まれる<値式一次子>の参照型の有効範囲とす

る。

c) <参照解決> RR。ここで,は,RR に直に含まれる<参照値式>の参照型の有効範囲とする。

6) RESTRICT が指定されるならば,は,真下位表をもってはならない。

7)

04

 RESTRICT が指定されるならば,は,参照されていてはならず,影響を受ける内参照演算は,

次のいずれかに含まれていてはならない。

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

b)  の実表記述子に含まれる表検査制約記述子ではない制約記述子の<探索条件>。

c)

表明記述子の

<探索条件>。

d)  以外の表の参照制約記述子の被参照表の表記述子。

e)

ルーチン記述子の

SQL ルーチン本体。

f)

ルーチン記述子の

SQL パラメタの<パラメタ既定値>。

g)  トリガ記述子の<被トリガ動作>。

注記 378 CASCADE が指定されるならば,このようなオブジェクトは,この細分箇条の一般規則

で規定している

SQL スキーマ操作文によって陽に,及び/又は<REVOKE 文>の実行に

よって暗に削除される。

8) RESTRICT が指定され,かつ,が参照可能表ならば,TN は,次のいずれかに一般に含まれる参照

型記述子に含まれる有効範囲であってはならない。

a)  利用者定義型の属性の属性記述子。

b)  以外の表の列の列記述子。

c) <SQL 呼出しルーチン>のルーチン記述子に含まれる SQL パラメタ又は結果の型の記述子。

d)  利用者定義型の利用者定義型記述子に含まれるメソッド指定記述子に含まれる SQL パラメタ又

は結果の型の記述子。

e)

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

注記 379  別の記述子を“一般に含む”記述子は,JIS X 3005-1 [ISO9075-1]  の“6.3.4  記述子”で

定義している。

9)  TN によって識別される表の<スキーマ名>によって識別されるスキーマを所有する<認可識別子>を

とする。

アクセス規則

1)  与えられた認可識別子は,を含まなければならない。

一般規則

1)  の直接下位表の<表名>を STN とする。これ以上のアクセス規則の検査なしで,次の<表削除文>

が実効的に実行される。

DROP TABLE STN CASCADE

2)  のどの真上位表に対しても,整合性制約の検査に先立って,の全ての行の全ての上位行が SQL

文の終わりに実効的に削除される。

注記 380  この削除は,新しいトリガ実行文脈も,現行トリガ実行文脈中の新しい状態変更の定義

も作成しない。

3)  “_SYSTEM”の現行認可識別子で,かつ,これ以上のアクセス規則の検査なしで,次の<REVOKE


532

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

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

REVOKE ALL PRIVILEGES ON TN FROM A CASCADE

4)  が参照可能表ならば,次による。

a)  TN の有効範囲を含み,

かつ,次のいずれかに一般に含まれるどの参照型記述子 RTD に対しても,

RTD の有効範囲が空にされる。

i)

利用者定義型の属性の属性記述子。

ii)  以外の表の列の列記述子。

iii) SQL 呼出しルーチンのルーチン記述子に含まれる SQL パラメタ又は結果の型の記述子。

iv)  利用者定義型の利用者定義型記述子に含まれるメソッド指定記述子に含まれる SQL パラメタ

又は結果の型の記述子。

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

b)  の表記述子に依存しているスキーマオブジェクトの記述子を SOD とする。

場合:

i)

SOD がビュー記述子ならば,SOD に含まれるビューの名前を SON とする。これ以上のアクセ

ス規則の検査なしで,次の

<ビュー削除文>が実効的に実行される。

DROP VIEW SON CASCADE

ii)  SOD が表明記述子ならば,SOD に含まれる制約の名前を SON とする。これ以上のアクセス規

則の検査なしで,次の

<表明削除文>が実効的に実行される。

DROP ASSERTION SON CASCADE

iii)  SOD が表制約記述子ならば,SOD に含まれる制約の名前を SON とする。SOD を含む表記述子

に含まれる

<表名>を CTN とする。これ以上のアクセス規則の検査なしで,次の<表変更文>が

実効的に実行される。

ALTER TABLE CTN DROP CONSTRAINT SON CASCADE

iv)  SOD がルーチン記述子ならば,SOD に含まれる特定名を SON とする。これ以上のアクセス規

則の検査なしで,次の

<ルーチン削除文>が実効的に実行される。

DROP SPECIFIC ROUTINE SON CASCADE

v)  SOD がトリガ記述子ならば,SOD に含まれるトリガ名を SON とする。これ以上のアクセス規

則の検査なしで,次の

<トリガ削除文>が実効的に実行される。

DROP TRIGGER SON CASCADE

注記 381  別の記述子に“依存する”記述子は,JIS X 3005-1 [ISO9075-1]  の“6.3.4  記述子”で

定義している。

5)  の各直接上位表 DST に対して,DST の表記述子に含まれる DST の直接下位表の表名のリストか

ら の表名が取り除かれる。

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

適合性規則

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

を含む

<表削除文>を含んではならない。

11.32

<ビュー定義>

この細分箇条は,ISO/IEC 9075-4 の“9.11 <ビュー定義>”によって修正される。 

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


533

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

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

機能

<ビュー定義> (<view definition>)  は,ビュー表を定義する。

形式

<ビュー定義> ::=

  CREATE [ RECURSIVE ] VIEW <表名> <ビュー指定>

      AS <問合せ式> [ WITH [ <レベル句> ] CHECK OPTION ]

<ビュー指定> ::=

  <通常ビュー指定>

 |

<参照可能ビュー指定>

<通常ビュー指定> ::=

  [  <左括弧> <ビュー列リスト> <右括弧> ]

<参照可能ビュー指定> ::=

  OF  <パス解決利用者定義型名> [ <下位ビュー句> ]

      [ <ビュー要素リスト> ]

<下位ビュー句> ::=

  UNDER  <表名>

<ビュー要素リスト> ::=

  <左括弧> <ビュー要素> [ { <コンマ> <ビュー要素> }... ] <右括弧>

<ビュー要素> ::=

  <自己参照列指定>

 |

<ビュー列 OPTIONS>

<ビュー列 OPTIONS> ::=

  <列名> WITH OPTIONS <SCOPE 句>

<レベル句> ::=

  CASCADED

 |

LOCAL

<ビュー列リスト> ::=

  <列名リスト>

構文規則

1) <問合せ式>を QE とする。

2)

04

  QE は,<ホストパラメタ指定>,<SQL パラメタ参照>,<動的パラメタ指定>又は<埋込み変数指

>を含んではならない。

3) <ビュー定義>が<スキーマ定義>に含まれ,かつ,<表名>が<スキーマ名>を含むならば,その<スキ

ーマ名

>は,<ビュー定義>を含む<スキーマ定義>の陽に指定されるか又は暗に想定される<スキーマ

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

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

>である表名をもつ表記述子を含んでいてはならない。

5) <表名>を TN とする。TN が<問合せ式> QE2 に一般に含まれ,かつ,<表名> TN2 が QE に一般に含

まれるような,TN2 によって識別され,ビュー記述子が元の<問合せ式> QE2 を含むビュー表 V2 


534

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

存在してはならない。

6)  QE に一般的に含まれるどの<表参照>も,宣言局所一時表を識別してはならない。

7)  QE に一般的に含まれるどの<表参照>も,<データ変更差分表>を含んではならない。

8)  QE に一般的に含まれる<表参照>が,

<ビュー定義> VD によって定義されるビュー表 VT を識別する

ならば,VD 及び VT は,再帰的  (recursive)  という。

9)  VD が再帰的ならば,次による。

a) <ビュー列リスト>を指定しなければならない。

b) RECURSIVE を指定しなければならない。

c) CHECK

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

d) <参照可能ビュー指定>を指定してはならない。

e)

VD は,次の<ビュー定義>と等価とする。

CREATE VIEW <表名> AS

    WITH  RECURSIVE  <表名> (<ビュー列リスト>)

      AS (<問合せ式>)

    SELECT  <ビュー列リスト> FROM <表名>

10)  QE が更新可能ならば,ビュー表は,更新可能  (updatable)  とする。

11)  QE が単純に更新可能ならば,ビュー表は,単純に更新可能  (simply updatable)  とする。

12)  次のうちの少なくとも一つが真ならば,ビュー表は,実効的に更新可能  (effectively updatable)  とす

る。

a)  ビュー表が単純に更新可能。

b) SQL 処理系が機能 T111“更新可能な結合,和集合及び列”を提供し,かつ,ビュー表が更新可能。

13) <問合せ式>が挿入可能ならば,ビュー表は,挿入可能  (insertable-into)  とする。

14) <ビュー列リスト>中の<列名>の個数は,QE によって指定される表の次数と同じでなければならな

い。

15)  QE によって指定された表中の,宣言型が文字列