擬似命令

 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