埋め込み SQL で FROM 句がない SELECT 文を発行する
2021/04/19
方法
Microsoft SQL Server などの DBMS を利用する際、FROM 句が省略された SELECT 文をスクリプトから発行して結果集合を取得する場合は、動的 SQL 構文を使用します。
埋め込み SQL では FROM 句が省略された SELECT 文をそのまま記述すると、構文エラーとなります。このような場合は動的 SQL によりカーソルを利用して値をフェッチします。
【例】SQL Server の DateAdd 関数を利用して対象日付の 3 か月前の日付を取得する
string ls_sql date ld_target, ld_res integer li_month // カーソルを宣言 DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA; // SQL (FROM 句なし) を定義 ls_sql = "SELECT DateAdd( month, ?, ? )" ld_target = 2021-02-24 // 対象日付 li_month = -3 // 3 か月前 PREPARE SQLSA FROM :ls_sql; // カーソルオープン OPEN DYNAMIC my_cursor using :li_month, :ld_target; // 結果をフェッチ FETCH my_cursor INTO :ld_res; // カーソルクローズ CLOSE my_cursor; // 結果をメッセージボックスに表示 MessageBox("結果", String(ld_res, "yyyy/mm/dd"))
Tips情報
プロダクト :PowerBuilder
バージョン :2017R3