埋め込み SQL で FROM 句がない SELECT 文を発行する

PowerBuilder Tips

方法

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

Tips 一覧を見る
PowerBuilder マイグレーション
PowerBuilder 2019 R3 日本語版リリース 紹介動画