4.41.1 代入文 形式1の形式と規則
(1) 機能
SQL変数,又はSQLパラメタに値を代入します。
(2) 使用権限
なし。
(3) 形式 <SQL変数,又はSQLパラメタへの代入>
SET 代入先 = 代入値 代入先::={〔文ラベル.〕SQL変数名 |〔〔認可識別子.〕ルーチン識別子.〕SQLパラメタ名 |〔文ラベル.〕SQL変数名..属性名〔..属性名〕… |〔〔認可識別子.〕ルーチン識別子.〕SQLパラメタ名..属性名〔..属性名〕…} 代入値::={値式|NULL | DEFAULT}
(4) オペランド
(a) 代入先
::={〔文ラベル.〕SQL変数名 |〔〔認可識別子.〕ルーチン識別子.〕SQLパラメタ名 |〔文ラベル.〕SQL変数名..属性名〔..属性名〕… |〔〔認可識別子.〕ルーチン識別子.〕SQLパラメタ名..属性名〔..属性名〕…}
値を代入するSQL変数,SQLパラメタ,又はSQL変数の属性名,SQLパラメタの属性名を指定します。
パブリック手続き定義,又はパブリック関数定義のSQL手続き文中で認可識別子を指定する場合は,認可識別子にPUBLICを指定してください。
(b) 代入値::={値式|NULL|DEFAULT}
代入する値を指定します。
(5) 共通規則
-
代入先には,SQLルーチンで指定した入出力モード(パラメタモード)がINのSQLパラメタ名を指定できません。また,関数のSQLパラメタ名も指定できません。
-
代入先のデータ型は,代入値のデータ型と互換性がなければなりません。
-
代入先と代入値のデータ型が異なる場合には型変換され,同じ場合にはそのまま代入値が代入先に代入されます。
-
代入値が文字データ型の場合,代入先と代入値の文字集合は同じでなければなりません。ただし,代入値が文字列定数の場合は,代入先と代入値の文字集合が異なっていても,自動的に代入先の文字集合に変換してから代入します。
-
代入値に指定する値式中に,副問合せは指定できません。
-
代入値にDEFAULTを指定した場合,代入の対象となるSQL変数の既定値を代入します。SQL変数の既定値の宣言は「複合文(複数文実行)」を参照してください。代入先にSQLパラメタを指定し,代入値にDEFAULTを指定した場合,代入先のSQLパラメタにナル値を代入します。トリガSQL文中に指定した代入文(形式1)の代入先に新旧値相関名で修飾された列名を指定し,代入値にDEFAULTを指定した場合,代入先の列の既定値を代入します。ただし,代入先の新旧値相関名で修飾された列の既定値がUSING BESを指定したCURRENT_TIMESTAMPの場合は,代入値にDEFAULTを指定できません。トリガSQL文については「CREATE TRIGGER(トリガ定義)」を参照してください。
(6) 留意事項
-
代入文の形式1は,SQLルーチン中にだけ指定できます。SQLルーチン以外で代入文を指定する場合は,代入文の形式2を指定してください。