1.6.5 標識変数の値の設定
- 〈この項の構成〉
(1) データを受け取る場合(FETCH文,SELECT文,EXECUTE文,及びEXECUTE IMMEDIATE文のINTO句)
FETCH文,SELECT文,EXECUTE文,及びEXECUTE IMMEDIATE文を実行すると,そのINTO句に指定した標識変数には,次の表に示す値が設定されます。埋込み変数にナル値が返された場合,埋込み変数の値は保証しません。この場合,標識変数の指定がなければ,エラーになります。
標識変数の値 |
対応する埋込み変数が受け取った値 |
---|---|
負 |
ナル値です。 ただし,標識変数の値が−2の場合は,繰返し列の添字で指定した要素がないときに設定されたナル値です。また,標識変数の値が-4の場合は,SQL実行時に四則演算,集合関数演算,ウィンドウ関数演算,及びオーバフローエラー抑止の対象となるスカラ関数で,オーバフローエラー抑止オプションによって設定されたナル値です。このナル値を受け取った埋込み変数と演算は対応しているので,オーバフローが発生した演算を判別できます。オーバフローエラー抑止の対象となるスカラ関数については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。 |
0 |
ナル値ではない値です。 |
正 |
ナル値ではない値です。 ただし,受け取ったデータは文字データ,又は長大データで,埋込み変数の長さが不足していたため,右側が切り捨てられた値であることを示します。このときの標識変数には,切り捨てられる前の長さが設定されます。 ただし,クライアント環境定義PDCLTCNVMODEにUOCを指定して文字コード変換機能を使用している場合は,標識変数には切り捨て後の長さを設定します。 |
標識変数の値 |
対応する埋込み変数が受け取った値 |
---|---|
負 |
ナル値です(要素数が0)。 |
0 |
ナル値ではない値です(要素数が1以上)。 |
正 |
ナル値ではない値です(要素数が1以上)。 ただし,埋込み変数の領域の要素数が不足していたため,後の要素が切り捨てられたことを示します。このときの標識変数には,切り捨てられる前の要素数が設定されます。 |
繰返し列のデータを受け取る場合の標識変数,埋込み変数の構造とその例を次の図に示します。
(2) データを渡す場合(FETCH文,SELECT文,EXECUTE文,及びEXECUTE IMMEDIATE文のINTO句以外)
FETCH文,SELECT文,EXECUTE文,及びEXECUTE IMMEDIATE文以外のSQLを実行する場合,そのSQLの実行前の標識変数には,次の表に示す値をUAPで設定してください。標識変数の値によって,SQLの実行時に対応する埋込み変数の値を使用してください。
標識変数の値 |
対応する埋込み変数がSQLに渡す値 |
---|---|
負 |
ナル値です。 埋込み変数が持っている値は無視されます。 |
0又は正 |
ナル値ではない値です。 埋込み変数が持っている値です。 |
標識変数の値 |
対応する埋込み変数がSQLに渡す値 |
---|---|
負 |
ナル値です(要素数が0)。 埋込み変数の要素の値は無視されます。 |
0又は正 |
要素数が示す要素の値です。 ただし,要素数に0は指定できません。 |
繰返し列のデータを渡す場合の標識変数,埋込み変数の構造とその例を次の図に示します。