SQLアクション

「SQLアクション」はSQLのSELECT文を直接記述して実行することのできるアクションです。
「SQLアクション」拡張オプションをCELF へ登録すると、アクションセットを組み立てる設定画面に「SQL」カテゴリのアクションが追加されます。
../../_images/img_0142.png
「SQLアクション」拡張オプションのダウンロードについてはこちら

参考

拡張オプションの登録については、 拡張オプションを登録する を参照してください。

SQLを使ってテーブルからデータを取得する

入力フィールドに実行するSQLを記載し、アクションセットを保存します。 取得したデータは指定したセルを起点に表示します。

../../_images/img_0241.png

注意

  • 1アクションでは1つのSQL文を設定してください。

  • 取得するカラム名は明示してください。記載した順序でセルに表示されます。
    「*(アスタリスク)」を使って全カラム取得することも可能ですが、取得するカラムの順番は保証されません。
  • SELECT文以外のSQLは登録することができません。登録、更新、削除については、データ操作に関連するアクション を利用してください。

検索条件をパラメータで指定する

SQL文内ではパラメータの指定による条件値の設定が可能です。 パラメータ名(任意の文字列)を「%」で囲ってSQL文内に記載します。

../../_images/img_0330.png

注意

SQLパラメータ名は半角英数字のみ使用できます

パラメータ名に対応する値は「SQLパラメータ設定」ダイアログにて設定してください。

../../_images/img_0429.png

ヒント

  • IN句内のパラメータを設定する場合は「IN句用パラメータ」をチェックして、値にはセル範囲を設定します。
../../_images/img_0526.png

SQLアクションに関する注意事項

  • SQL文についてはSQL標準に則っています。そのため、以下の制限事項があります。

    • データベース固有の構文は使用できない場合があります。
    • カラム名、テーブル名に利用できない文字があります。
    • 名前が数字で始まるテーブル、カラムは利用できません。
  • SQLの予約語と同じ名前の関数は利用できません。(例:LEFT関数、RIGHT関数)

  • 以下の場合は必ずカラムに別名を指定してください。

    • テーブルの結合等によりSQL文内のカラム名が重複する場合
      例)SELECT t1.カラム1 AS t1_column1, t2.カラム1 AS t2_column1 FROM テーブル1 t1, テーブル2 t2
    • 関数(COUNT、SUMなど)を利用して結果を取得する場合
      例)SELECT カラム1, SUM(カラム2) AS 合計 FROM テーブル1 GROUP BY カラム1
  • CELFデータベースはもちろん、ODBC接続やJDBC接続された外部データベースのテーブルでも利用できます。
    ただしテーブルの結合を行う場合、同じ接続先データベースにあるテーブルに限ります。(他システムや他接続先のデータベースとは連携できません。)
  • SQLを式やセル参照で指定する場合は、事前に公開時テーブル切替えの設定を行うことができません。
    (SQLを直接入力した場合は、テーブル切替えの設定が可能です。)
    ただし、同じアプリで同じテーブルに対するデータ操作系アクションがある場合、そのテーブルに対してテーブルの切替えを設定すると、
    式やセル参照で指定した場合でも設定された切替情報に従ってSQLアクションも動作します。
  • SQL文のサイズ上限は約60,000バイトです。ただし、接続先のデータベースにサイズの制限がある場合はそれらが上限となります。

SQLアクションに関する小技/逆引き

  • SQLのLEFT関数、RIGHT関数と同様のデータを取得する。
一度データをセルに展開してCELFのLEFT関数、RIGHT関数を利用することで可能です。
ここではSQLにCELF関数を文字列として設定しておく方法をご紹介します。
  1. SQLアクションに以下のようなSQLを指定する。
例)
SELECT
code AS code ,
"=LEFT(INDIRECT(ADDRESS(ROW(), COLUMN()-1)), 1)" AS initial
FROM テーブル1
../../_images/img_0619.png
  1. このアクションを実行する。

D列にはSQLで記載した関数がそのままセルに設定されますので、関数が実行された結果が表示されます。

../../_images/img_0720.png