Tips

合成したSQLステートメントにコメントを挿入する

日付2010/12/06
ID76196 (英語原文参照)
バージョンv11
プラットフォームMac/Win

EXECUTE IMMEDIATEで実行されるSQL文は, 文字列を連結することにより合成されるのが一般的です。

C_TEXT($SQL_T)
$SQL_T :="SELECT employee_id "
$SQL_T :=$SQL_T +"FROM employees "
$SQL_T :=$SQL_T +"WHERE manager_id = 100 -- The boss "
$SQL_T :=$SQL_T +"INTO :myVar;"
Begin SQL
   	EXECUTE IMMEDIATE :$SQL_T;
End SQL

上記のSQLを実行するとエラーが返されます。合成されたSQLは一文なので, ダッシュによるコメント(--)以降に記述されたコードは, すべてコメントとみなされてしまうからです。このような位置にコメントを挿入するのであれば, 行の端末に改行コードを追加するか, /* と */ で括るのが適切です。

C_TEXT($SQL_T)
$SQL_T:="SELECT employee_id \r"
$SQL_T:=$SQL_T+"FROM employees \r"
$SQL_T:=$SQL_T+"WHERE manager_id = 100 -- The boss \r"
$SQL_T:=$SQL_T+"INTO :myVar;"
C_TEXT($SQL_T)
$SQL_T:="SELECT employee_id "
$SQL_T:=$SQL_T+"FROM employees "
$SQL_T:=$SQL_T+"WHERE manager_id = 100 /* The boss */ "
$SQL_T:=$SQL_T+"INTO :myVar;"