COBOL2002 ユーザーズガイド
24.2.11 動的SQLのODBC API関数発行の変更
SQL Server 2012では,メタデータ検出機能が強化されています。この影響で,使用されているSQL Serverをバージョンアップすると,SQL Serverのデータベースに動的SQLでアクセスするCOBOLプログラムの実行性能が劣化する場合があります。この場合,実行時環境変数CBLSQLDYNAMICを指定すると,実行性能が改善することがあります。
- 形式
CBLSQLDYNAMIC=REUSEBINDINFO
- 規則
- 設定値が形式に従ってない場合,この環境変数の指定は無効です。
- 環境変数CBLSQLDYNAMICにREUSEBINDINFOを指定すると,埋め込みSQL文で内部的に発行するODBC APIを次のとおりに変更し,1回目の埋め込みSQL文実行時に取得した情報で2回目以降も実行します。
- ・次の埋め込みSQL文を連続で実行した場合
- 2回目以降の実行では,1回目に取得した情報をバインド処理で再利用します。※1
- EXECUTE文
- 動的SQLをカーソルで実行する場合のOPEN文
- 動的SQLをカーソルで実行する場合のOPEN文に対する最初のFETCH文
- ・PREPARE文で準備した動的SQLが,INSERT文,DELETE文,またはUPDATE文の場合
- 埋め込みSQL文のEXECUTE文を連続で実行したときに,2回目以降の実行では1回目に取得したODBCハンドル情報を再利用します。※2
- 注※1
- 2回目以降の埋め込みSQL文の実行で,内部的にSQLDescribeParam,SQLDescribeCol,SQLNumResultColsを呼び出さない(パラメタ,列情報を取得しない)ようにすることで,1回目の埋め込みSQL文の実行で取得したパラメタ,列情報を再利用します。
- 注※2
- 埋め込みSQL文のEXECUTE文の実行で,内部的にSQLFreeStmtをSQL_CLOSEパラメタ指定で呼び出さない(ODBCハンドル情報をクローズしない)ようにすることで,1回目の埋め込みSQL文のEXECUTE文の実行で取得したODBCハンドル情報を再利用します。
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.