SQLの実行

最終更新日: 2026年4月15日

利用方法

開発者が用意したSQLを定期的に実行することができます。
実行したいSQLはファイルとして用意し、customize/webapp/WEB-INF/classes フォルダに保存してください。ファイルの拡張子は .sql としてください。

ジョブの設定

設定方法

  1. 管理者権限をもったアカウントでログオンします。
  2. メニューから「ジョブ管理... > ジョブスケジュール検索」画面を開きます。
  3. 「登録画面へ」ボタンを押下し、ジョブスケジュールの新規登録処理を行います。
  4. ジョブ名から「SqlScript」を選択します。その下の説明欄に「SQL実行」と表示されます。
    「SqlScript」を選択
  5. 「スケジュールの詳細」は自由記述です。このSQLの目的などを記すとよいでしょう。
  6. ジョブパラメータの「追加」ボタンを押し、キーと値を指定します。
    下図ではキーを「filename」とし、パラメータに「sample.sql」というファイルを指定しています。拡張子は .sql とします。 キーと値の記述方法については、指定できるジョブパラメータをお読みください。
    sample.sql
  7. ジョブの実行スケジュールを指定します。
  8. 「有効」にチェックを入れます。これにより、このジョブが有効になります。
  9. 「ジョブ実行するアカウント」を指定します。ここでは"jobadmin"とします。
    「パスワード」欄には上で指定したアカウントのパスワードを入力します。
    実行アカウントとパスワードを入力
    アカウント"jobadmin"を利用するには事前に「準備:ジョブ実行アカウントを利用可能にする」を行う必要があります。
  10. 「保存」ボタンを押してジョブスケジュールを登録します。指定した時間になると、コマンドが実行されます。

ワンポイント

このSQLは、利用するデータベースが提供する文法に準拠する必要があります。

指定できるジョブパラメータ

ジョブに指定するパラメータを複数、指定することができます。
ここで指定できるパラメータ(キーと値)は次の通りです。

キー(パラメータ名) 必須 説明 値の記述例
filename SQLファイルを指定します。 sample.js
maintenance このジョブを実行する前にメンテナンスモードに切り替えることができます。ジョブ実行後にメンテナンスモードも終了します。 true
maintenanceOption メンテナンスモード切り替え時にログオン済みであったアカウントへの対応方法を指定します。 logout : ジョブ実行前にログオンしていたアカウントを強制ログアウトさせる。
fail : ジョブ実行前にログオンしているアカウントがいれば、ジョブを失敗させる。
(省略時) : ログオンしているアカウントはそのままに、モードを切り替える。
param<数字>:説明語 SQLに渡すプレースホルダを指定します。"param<数字>:" の後に続く(空白なしの)文言は、単なる説明語です。 param0:targetdate
param1:startid

この場合param0:targetdateが{0}に、param1:startidが{1}に解釈されます。SQL中に記述された {0}, {1} が、そのパラメータの「値」部分に置換されます。

paramの値に指定できる特別表記

paramの値部分に次の特別表記を指定できます。

YEAR(), MONTH(), DAY(), FISCAL_YEAR()

値はすべて「文字列」としてSQL中に埋め込まれます。PostgreSQLの例を示します。
ここでparam0:yearYEAR()を指定すると、以下のSQLの{0}部分に(文字列の)年号4桁が埋まります。

INSERT INTO "AT032" (
    "CDKYOTEN",
    "DTOFF"
)
SELECT
    a."CDKYOTEN",
    s."DTOFF"
FROM "AT030" a
JOIN "AT032" s
  ON s."CDKYOTEN" = 'SB9999'
WHERE a."CDKYOTEN" <> 'SB9999'
  AND s."DTOFF" >= TO_DATE({0} || '0101', 'YYYYMMDD')
  AND s."DTOFF" <  TO_DATE(CAST(CAST({0} AS INTEGER) + 1 AS TEXT) || '0101', 'YYYYMMDD')
  AND NOT EXISTS (
      SELECT 1
      FROM "AT032" t
      WHERE t."CDKYOTEN" = a."CDKYOTEN"
        AND t."DTOFF"    = s."DTOFF"
  );

ジョブの実行を停止する

ジョブを一時的に無効にすることができます。

  1. 管理者権限をもったアカウントでログオンします。
  2. 管理処理メニューから「ジョブ管理... > ジョブスケジュール検索」画面を開きます。
  3. 該当する「ジョブスケジュール」を検索し、更新画面を開きます。
  4. 「有効」フラグについているチェックをはずし、保存します。

実行結果をメールで送信する

ジョブの実行結果をメールで送信することができます。 スクリプト内で return で返す文字列がメールの本文になります。

多重実行の抑制

ジョブの多重実行を行うことはできません。

あるジョブを 1 分毎に起動させるようにした場合、1 分後にこのジョブの実行が終了していなければ、新しいジョブは実行されません。

すぐに実行する

時間指定ではなく、このジョブを今すぐ実行することもできます。「ジョブの即時実行」をお読みください。

実行対象

オートスケール環境でない場合、常に "1インスタンス" としてください。

オートスケール環境でジョブを運用する場合、"1インスタンス" と "全インスタンス" を選択することができます。[詳細...]