Class CobolEsql

java.lang.Object
jp.osscons.opensourcecobol.libcobj.sql.CobolEsql

public final class CobolEsql extends Object
COBOL の埋め込み SQL 操作(CONNECT、EXEC SQL、カーソル、トランザクション)のエントリポイント。

本クラスは呼び出しを受け取るだけで、実際の処理は環境変数 OCDB_DB_TYPE から選んだ CobolEsqlBackendInterface の実装へ渡す。メソッドの形は変えていないので、生成コード (CobolEsql.xxx(...) という静的呼び出し)はそのままで、DB ごとに実装を入れ替えられる。

  • Method Details

    • resetThreadState

      public static void resetThreadState()
      現在のスレッドに紐づくESQLの状態を破棄する。実行単位の終了時に呼び出す。
      DISCONNECTされずに残っている接続は、未確定の更新をロールバックしてクローズされる。
    • connect

      public static void connect(CobolDataStorage sqlca, AbstractCobolField user, AbstractCobolField passwd, AbstractCobolField dbname)
      user、password、dbname を個別のパラメータとして受け取り、データベース接続を確立する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      user - ユーザー名フィールド
      passwd - パスワードフィールド
      dbname - データベース名フィールド
    • disconnect

      public static void disconnect(CobolDataStorage sqlca)
      commit を実行したうえで、デフォルトのデータベース接続を切断する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
    • exec

      public static void exec(CobolDataStorage sqlca, String query)
      ホスト変数パラメータを持たない SQL 文を実行する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      query - SQL クエリ文字列
    • execWithParams

      public static void execWithParams(CobolDataStorage sqlca, String query, AbstractCobolField... params)
      COBOL のホスト変数をバインドしたパラメータ付き SQL 文を実行する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      query - '?' プレースホルダを含む SQL クエリ文字列
      params - COBOL のホスト変数パラメータ
    • execWhereCurrentOf

      public static void execWhereCurrentOf(CobolDataStorage sqlca, String query, String cursorName)
      WHERE CURRENT OF を伴う UPDATE/DELETE(ホスト変数なし)を実行する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      query - 末尾が WHERE CURRENT OF の SQL(カーソル名は含まない)
      cursorName - 位置付け対象の(修飾済み)カーソル名
    • execWithParamsWhereCurrentOf

      public static void execWithParamsWhereCurrentOf(CobolDataStorage sqlca, String query, String cursorName, AbstractCobolField... params)
      WHERE CURRENT OF を伴う UPDATE/DELETE(ホスト変数あり)を実行する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      query - 末尾が WHERE CURRENT OF の SQL('?' プレースホルダを含む。カーソル名は含まない)
      cursorName - 位置付け対象の(修飾済み)カーソル名
      params - COBOL のホスト変数パラメータ
    • selectInto

      public static void selectInto(CobolDataStorage sqlca, String query, AbstractCobolField[] inputParams, AbstractCobolField[] resultParams)
      SELECT INTO 文を実行し、結果を COBOL のホスト変数に書き戻す。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      query - SELECT クエリ文字列
      inputParams - 入力のホスト変数パラメータ(WHERE 句のバインド)
      resultParams - 選択された列の値を受け取る出力ホスト変数
    • selectIntoOccurs

      public static void selectIntoOccurs(CobolDataStorage sqlca, int occursSize, int occursMax, String query, AbstractCobolField[] inputParams, AbstractCobolField[] resultParams)
      OCCURS 配列に対する SELECT INTO 文を実行し、複数行を書き込む。
      Parameters:
      sqlca - SQLCA データストレージ
      occursSize - OCCURS 要素 1 つあたりのバイト数(ストライド)
      occursMax - OCCURS 要素の最大数
      query - SELECT クエリ文字列
      inputParams - 入力のホスト変数パラメータ
      resultParams - 出力ホスト変数(1 つの OCCURS 要素のフィールド群)
    • declareCursor

      public static void declareCursor(CobolDataStorage sqlca, String cursorName, String query)
      パラメータを持たない SQL カーソルを宣言する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - カーソル名
      query - カーソル用の SQL クエリ
    • declareCursorWithParams

      public static void declareCursorWithParams(CobolDataStorage sqlca, String cursorName, String query, AbstractCobolField... params)
      ホスト変数パラメータを持つ SQL カーソルを宣言する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - カーソル名
      query - カーソル用の SQL クエリ
      params - カーソルをオープンする際にバインドするホスト変数パラメータ
    • openCursor

      public static void openCursor(CobolDataStorage sqlca, String cursorName)
      事前に宣言されたカーソルをオープンする。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - オープンするカーソル名
    • openCursorWithParams

      public static void openCursorWithParams(CobolDataStorage sqlca, String cursorName, AbstractCobolField... params)
      事前に宣言されたカーソルをホスト変数パラメータ付きでオープンする。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - オープンするカーソル名
      params - カーソルクエリ用のホスト変数パラメータ
    • fetchCursor

      public static void fetchCursor(CobolDataStorage sqlca, String cursorName, AbstractCobolField... resultParams)
      オープン済みのカーソルから次の行を取得し、COBOL のホスト変数に格納する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - fetch 対象のカーソル名
      resultParams - 列の値を受け取る出力ホスト変数
    • fetchCursorOccurs

      public static void fetchCursorOccurs(CobolDataStorage sqlca, String cursorName, int occursSize, int occursMax, AbstractCobolField... resultParams)
      カーソルから複数行を取得し、OCCURS 配列フィールドに格納する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - fetch 対象のカーソル名
      occursSize - OCCURS 要素 1 つあたりのバイトサイズ
      occursMax - 取得する行の最大数
      resultParams - 結果パラメータフィールド(列ごとに 1 つ)
    • closeCursor

      public static void closeCursor(CobolDataStorage sqlca, String cursorName)
      オープン済みのカーソルをクローズする。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      cursorName - クローズするカーソル名
    • prepare

      public static void prepare(CobolDataStorage sqlca, String stmtName, AbstractCobolField queryField)
      SQL 文を prepare し、COBOL のホスト変数参照を '?' プレースホルダに置き換える。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      stmtName - prepared statement に割り当てる名前
      queryField - SQL クエリ文を保持する COBOL フィールド
    • executePrepared

      public static void executePrepared(CobolDataStorage sqlca, String stmtName, AbstractCobolField... params)
      事前に prepare された statement を実行する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
      stmtName - prepared statement の名前
      params - バインドするホスト変数パラメータ
    • commit

      public static void commit(CobolDataStorage sqlca)
      デフォルト接続の現在の transaction を commit し、新しい transaction を開始する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ
    • rollback

      public static void rollback(CobolDataStorage sqlca)
      デフォルト接続の現在の transaction を rollback し、新しい transaction を開始する。
      Parameters:
      sqlca - ステータス報告用の SQLCA データストレージ