5.8.1 SET SESSION AUTHORIZATION文の形式と規則
(1) 機能
HiRDBに認可識別子,及びパスワードを連絡して,接続中のユーザを変更します。
(2) 使用権限
- DBA権限,又はCONNECT権限を持つユーザ
-
接続中のユーザを変更できます。
(3) 形式
SET SESSION AUTHORIZATION {:埋込み変数1|?パラメタ1} 〔{ USING | IDENTIFIED BY }{:埋込み変数2|?パラメタ2 }〕
(4) オペランド
(a) 埋込み変数1|?パラメタ1
認可識別子を値として持つ埋込み変数,又は?パラメタを指定します。
認可識別子の大文字,小文字を区別して扱う場合,認可識別子を引用符(")で囲んだ文字列を埋込み変数又は?パラメタに設定してください。
UAPの記述言語がC言語の場合,33バイト以下の固定長文字列のデータ型で,文字列はナル文字で終わらせてください。ナル文字で終わらないと,(エリア長−1)の文字列を認可識別子として使用します。ただし,埋め込み変数としてポインタを使用する場合は,文字列を必ずナル文字で終わらせてください。
UAPの記述言語がCOBOLの場合,32バイト以下の固定長文字列のデータ型で指定してください。認可識別子がエリア長より短い場合は文字列の右端に空白詰めしてください。文字列をナル文字で終わらせる必要はありません。
埋込み変数1には既定文字集合以外の文字集合は指定できません。?パラメタ1に文字集合名UTF16を指定した場合,64バイト以下の固定長文字列のデータ型で指定してください。
(b) 埋込み変数2|?パラメタ2
パスワードを値として持つ埋込み変数,又は?パラメタを指定します。
パスワードの大文字,小文字を区別して扱う場合,パスワードを引用符(")で囲んだ文字列を埋込み変数又は?パラメタに設定してください。
UAPの記述言語がC言語の場合,33バイト以下の固定長文字列のデータ型で,文字列はナル文字で終わらせてください。ナル文字で終わらないと,(エリア長−1)の文字列をパスワードとして使用します。
ただし,埋込み変数としてポインタを使用した場合は,エリア長として31バイトを仮定するため,指定できるパスワード長が引用符を含めて30バイトに制限されます。引用符を含めて31バイト以上のパスワードを指定する場合はポインタを使用しないでください。ポインタを使用する場合は,文字列をナル文字で終わらせてください。31バイト目までにナル文字がないと,30バイト目までの文字列をパスワードとして使用します。
UAPの記述言語がCOBOLの場合,32バイト以下の固定長文字列のデータ型で指定してください。パスワードがエリア長より短い場合は文字列の右端に空白詰めしてください。文字列をナル文字で終わらせる必要はありません。
埋込み変数2には既定文字集合以外の文字集合は指定できません。?パラメタ2に文字集合名UTF16を指定した場合,64バイト以下の固定長文字列のデータ型で指定してください。
(5) 共通規則
-
トランザクションの開始前,又はトランザクション内で最初に実行しなければユーザを変更できません。
-
PREPARE文で前処理した結果はすべて無効になります。
-
ホールダブルカーソルが開いている場合には,ユーザを変更できません。
-
LOCK TABLE文でUNTIL DISCONNECT指定の排他を掛けている場合は,ユーザを変更できません。
-
OLTP下のX/Openに従ったUAPでSET SESSION AUTHORIZATIONを指定する場合は,tx_begin又はxa_begin関数コール直後に実行するように指定します。
-
動的SQLのSET SESSION AUTHORIZATIONを実行した場合,処理完了時にCOMMITされます。
-
ストアドプロシジャ中では実行できません。
-
SET SESSION AUTHORIZATION文を実行すると,一時表の行データは削除されます。
-
EXECUTE文を実行するとき,?パラメタ1に設定する変数のデータ長は,最大32まで指定できますが,PREPARE文で前処理したSET SESSION AUTHORIZATION文に対してDESCRIBE INPUT文を実行すると,?パラメタ1のデータ長には30が設定されます。
-
EXECUTE文を実行するとき,?パラメタ2に設定する変数のデータ長は,最大32まで指定できますが,PREPARE文で前処理したSET SESSION AUTHORIZATION文に対してDESCRIBE INPUT文を実行すると,?パラメタ2のデータ長には30が設定されます。