擬似命令
SQLエディタでは擬似命令を書くことによって、SQLの実行時にA5:SQL Mk-2 に特別な指令を与えることができます。
擬似命令はコメントの中に書きます。以下の2種類の書き方のようにコメントの1文字目が*となります。
/**
[擬似命令]
[擬似命令]
*/
-- * [擬似命令]
擬似命令には以下の種類があります。
・BackupToTempTable DROP TABLE ステートメントにつけるとテーブルを削除する前にバックアップテーブルにデータを保存します。
・CaptionFromComment 結果セットの各カラムにキャプションをつけます。(キャプションはカラムのコメントから取得)
・Captions 結果セットの各カラムにキャプションをつけます。(カラム毎)
・DataTitle 結果セットにタイトルをつけます。
・Replace SQL実行前に文字列を置換します。
・RestoreFromTempTable CREATE TABLE ステートメントにつけるとテーブル作成後にバックアップテーブルからデータを復元します。
・SetParameter SQL実行時のパラメータを設定します。
・ShowParameterWindow パラメータ設定画面を表示します。
・BackupToTempTable
DROP TABLE ステートメントに付加するとテーブルを削除する前にテンポラリテーブルにデータを保存します。
テンポラリテーブル($$対象テーブル名)が自動的に作成されます。
CREATE TABLE ステートメントの RestoreFromTempTable 疑似命令とペアで使用します。
すでにテンポラリテーブルがある場合などはエラーとなります。
ERエディタからDDLを生成するときにオプションで BackupToTempTable 疑似命令を付加することができます。
-- * BackupToTempTable
drop table tb_order
・CaptionFromComment
Captions と同様に結果セットの各カラムにキャプションをつけます。パラメータは受け取らず、各カラムの後ろに記述されたコメントから列名を取得します。
-- * CaptionFromComment
SELECT
order_no -- 注文番号
, cust_no -- お客様番号
, postal_cd -- お届け先郵便番号
, order_dt -- 注文日
, address1 -- お届け先1
, address2 -- お届け先2
, delivery_flag -- 全て納品済みフラグ
, split_flag -- 分納可能フラグ
, regist_staff_id -- 登録者ID
, regist_dt -- 登録日時
, update_staff_id -- 更新者ID
, update_dt -- 更新日時
FROM
shopping.tb_order
WHERE
order_no = :order_no
ORDER BY
order_no
・Captions 'param1' 'param2' 'param3' ...
CaptionFromComment と同様に結果セットの各カラムにキャプションをつけます。カラム数だけパラメータを指定します。Excel出力時には列名とキャプションが併記されます。
-- * Captions '注文番号' 'お客様番号' 'お届け先郵便番号' '注文日' 'お届け先1' 'お届け先2' '全て納品済みフラグ' '分納可能フラグ'
'登録者ID' '登録日時' '更新者ID' '更新日時'
SELECT
order_no
, cust_no
, postal_cd
, order_dt
, address1
, address2
, delivery_flag
, split_flag
, regist_staff_id
, regist_dt
, update_staff_id
, update_dt
FROM
shopping.tb_order
WHERE
order_no = :order_no
ORDER BY
order_no
・DataTitle 'タイトル'
結果セットにタイトルをつけます。Excel出力時にもタイトルとして利用されます。
-- * DataTitle '受注テーブル'
select * from tb_order
・Replace '検索文字列' '置換文字列' [IC] [R]
SQL実行前に文字列を置換します。実行されるSQLの文字列置換が行われるのみで、編集中のエディタのSQLは置換されません。
IC (または IGNORE_CASE) を指定すると、大文字小文字を無視して置換します。
R (または REGEX) を指定すると、検索文字列に正規表現を使えるようになります。
-- * Replace '${schemaName}' 'shopping'
SELECT * FROM
${schemaName}.tb_order
・RestoreFromTempTable
CREATE TABLE ステートメントに付加するとテーブルを作成した後にテンポラリテーブルからデータを復元します。
テンポラリテーブル($$対象テーブル名)はデータを復元した後に削除されます。
DROP TABLE ステートメントの BackupToTempTable 疑似命令とペアで使用します。
データの復元はカラム名に基づき行われますが、文字列型の長さが短くなったり互換性のないデータ型変更された場合は復元に失敗します。
データの復元に失敗した場合はエラーとなります。
ERエディタからDDLを生成するときにオプションで RestoreFromTempTable 疑似命令を付加することができます。
-- * RestoreFromTempTable
create table shopping.tb_order (
order_no character varying(10) not null
, cust_no character varying(10)
, postal_cd character varying(7)
, order_dt date
, address1 character varying(60)
, address2 character varying(60)
, delivery_flag character(1)
, split_flag character(1)
, regist_staff_id character varying(6) not null
, regist_dt timestamp(6) without time zone not null
, update_staff_id character varying(6)
, update_dt timestamp(6) without time zone
, primary key (order_no)
);
・SetParameter 'パラメータ名' 値 データ型
SQL実行時のパラメータを設定します。
値に文字列型を使用する場合はシングルクォートで括ります。
文字列型 | String |
整数型 | Integer |
実数型 | Float |
論理値型 | Boolean |
日付型 | Date |
時刻型 | Time |
日付/時刻型 | DateTime |
-- * SetParameter ''order_no'' ''0000000001'' String
SELECT * FROM tb_order WHERE order_no = :order_no
・ShowParameterWindow
SQL実行前にパラメータ設定画面を表示します。
パラメータウィンドウが閉じた後にSQLが実行されます。
-- * ShowParameterWindow
SELECT * FROM tb_order WHERE order_no = :order_no