Class CobolEsql
java.lang.Object
jp.osscons.opensourcecobol.libcobj.sql.CobolEsql
COBOL の埋め込み SQL 操作(CONNECT、EXEC SQL、カーソル、トランザクション)のエントリポイント。
本クラスは呼び出しを受け取るだけで、実際の処理は環境変数 OCDB_DB_TYPE から選んだ
CobolEsqlBackendInterface の実装へ渡す。メソッドの形は変えていないので、生成コード
(CobolEsql.xxx(...) という静的呼び出し)はそのままで、DB ごとに実装を入れ替えられる。
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidcloseCursor(CobolDataStorage sqlca, String cursorName) オープン済みのカーソルをクローズする。static voidcommit(CobolDataStorage sqlca) デフォルト接続の現在の transaction を commit し、新しい transaction を開始する。static voidconnect(CobolDataStorage sqlca, AbstractCobolField user, AbstractCobolField passwd, AbstractCobolField dbname) user、password、dbname を個別のパラメータとして受け取り、データベース接続を確立する。static voiddeclareCursor(CobolDataStorage sqlca, String cursorName, String query) パラメータを持たない SQL カーソルを宣言する。static voiddeclareCursorWithParams(CobolDataStorage sqlca, String cursorName, String query, AbstractCobolField... params) ホスト変数パラメータを持つ SQL カーソルを宣言する。static voiddisconnect(CobolDataStorage sqlca) commit を実行したうえで、デフォルトのデータベース接続を切断する。static voidexec(CobolDataStorage sqlca, String query) ホスト変数パラメータを持たない SQL 文を実行する。static voidexecutePrepared(CobolDataStorage sqlca, String stmtName, AbstractCobolField... params) 事前に prepare された statement を実行する。static voidexecWhereCurrentOf(CobolDataStorage sqlca, String query, String cursorName) WHERE CURRENT OF を伴う UPDATE/DELETE(ホスト変数なし)を実行する。static voidexecWithParams(CobolDataStorage sqlca, String query, AbstractCobolField... params) COBOL のホスト変数をバインドしたパラメータ付き SQL 文を実行する。static voidexecWithParamsWhereCurrentOf(CobolDataStorage sqlca, String query, String cursorName, AbstractCobolField... params) WHERE CURRENT OF を伴う UPDATE/DELETE(ホスト変数あり)を実行する。static voidfetchCursor(CobolDataStorage sqlca, String cursorName, AbstractCobolField... resultParams) オープン済みのカーソルから次の行を取得し、COBOL のホスト変数に格納する。static voidfetchCursorOccurs(CobolDataStorage sqlca, String cursorName, int occursSize, int occursMax, AbstractCobolField... resultParams) カーソルから複数行を取得し、OCCURS 配列フィールドに格納する。static voidopenCursor(CobolDataStorage sqlca, String cursorName) 事前に宣言されたカーソルをオープンする。static voidopenCursorWithParams(CobolDataStorage sqlca, String cursorName, AbstractCobolField... params) 事前に宣言されたカーソルをホスト変数パラメータ付きでオープンする。static voidprepare(CobolDataStorage sqlca, String stmtName, AbstractCobolField queryField) SQL 文を prepare し、COBOL のホスト変数参照を '?' プレースホルダに置き換える。static void現在のスレッドに紐づくESQLの状態を破棄する。実行単位の終了時に呼び出す。
DISCONNECTされずに残っている接続は、未確定の更新をロールバックしてクローズされる。static voidrollback(CobolDataStorage sqlca) デフォルト接続の現在の transaction を rollback し、新しい transaction を開始する。static voidselectInto(CobolDataStorage sqlca, String query, AbstractCobolField[] inputParams, AbstractCobolField[] resultParams) SELECT INTO 文を実行し、結果を COBOL のホスト変数に書き戻す。static voidselectIntoOccurs(CobolDataStorage sqlca, int occursSize, int occursMax, String query, AbstractCobolField[] inputParams, AbstractCobolField[] resultParams) OCCURS 配列に対する SELECT INTO 文を実行し、複数行を書き込む。
-
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
commit を実行したうえで、デフォルトのデータベース接続を切断する。- Parameters:
sqlca- ステータス報告用の SQLCA データストレージ
-
exec
ホスト変数パラメータを持たない 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
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
パラメータを持たない 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
事前に宣言されたカーソルをオープンする。- 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
オープン済みのカーソルをクローズする。- Parameters:
sqlca- ステータス報告用の SQLCA データストレージcursorName- クローズするカーソル名
-
prepare
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
デフォルト接続の現在の transaction を commit し、新しい transaction を開始する。- Parameters:
sqlca- ステータス報告用の SQLCA データストレージ
-
rollback
デフォルト接続の現在の transaction を rollback し、新しい transaction を開始する。- Parameters:
sqlca- ステータス報告用の SQLCA データストレージ
-