DB2 10.5 for Linux, UNIX, and Windows

SQLCreatePkg

SQLCreatePkg() 関数は、バインド・ユーティリティーを呼び出します。このユーティリティーにより、バインド・ファイルに保管される SQL ステートメントが準備され、データベースに保管されるパッケージが作成されます。

仕様:

  • CLI 9.5
Unicode 環境での同等機能: これに対応する Unicode 関数は、SQLCreatePkgW() 関数です。ANSI 関数から Unicode 関数へのマッピングの詳細は、関連概念のセクションの『Unicode 関数 (CLI)』トピックを参照してください。

構文

SQLRETURN   SQLCreatePkg(
               SQLHDBC           hDbc, 
               SQLCHAR           *szBindFileNameIn, 
               SQLINTEGER        cbBindFileNameIn, 
               SQLCHAR           *szBindOpts, 
               SQLINTEGER        cbBindOpts)

関数引数

表 1. SQLCreatePkg() 引数
データ・タイプ 引数 使用法 説明
SQLHDBC hDbc 入力 接続ハンドル。
SQLCHAR* szBindFileNameIn 入力 バインドするバインド・ファイルの名前、またはバインド・ファイル名のリストを含むファイルの名前。
SQLINTEGER cbBindFileNameln 入力 szBindFileNameIn を格納するために必要な SQLCHAR エレメントの数、または SQL_NTS エレメントの数 (szBindFileNameIn がヌル終了の場合)。
SQLCHAR* szBindOpts 入力 セミコロンで区切ったバインド・オプションのリスト。
SQLINTEGER cbBindOpts 入力 szBindOpts を格納するために必要な SQLCHAR エレメントの数、または SQL_NTS エレメントの数 (szBindOpts がヌル終了の場合)。

使用法

引数 szBindFileNameIn は、バインド・ファイルの名前を含むストリング、またはバインド・ファイル名のリストを含むファイルの名前です。バインド・ファイル名には拡張子 .bnd が付いている必要があります。 これらのファイルに対してパスを指定できます。 バインド・リスト・ファイルの名前の先頭にアットマーク (@) を付けます。 次の例は完全に修飾されたバインド・リストのファイル名です。
/u/user1/sqllib/bnd/@all.lst
バインド・リスト・ファイルには 1 つ以上のバインド・ファイル名を含めることが可能で、拡張子は .lst でなければなりません。最初のバインド・ファイル名以外のすべてのバインド・ファイル名の前に正符号 (+) を付けてください。 バインド・ファイル名が 1 つ以上の行にわたることも可能です。 例えば、バインド・リスト・ファイル all.lst には次に示す行を含めることができます。
mybind1.bnd+mybind2.bnd+
mybind3.bnd+
mybind4.bnd

リスト・ファイル内のバインド・ファイル名に対してパス指定を使用できます。 パスが指定されていない場合、データベース・マネージャーはバインド・リスト・ファイルからパス情報を取得します。

以下の BIND コマンド・パラメーターを SQLCreatePkg() とともに指定できます。
  • BLOCKING={ALL | NO | UNAMBIG}
  • COLLECTION={schema name}
  • ENCODING={ASCII | EBCDIC | UNICODE | CCSID | integer} (DB2® for z/OS® のみ)
  • GENERIC={OPTION1 VALUE1 OPTION2 VALUE2 ...}
  • GRANT={ PUBLIC | authid }
  • GRANT_ROLE={ role }
  • ISOLATION={CS | NC | RR | RS | UR}
  • KEEPDYNAMIC={YES | NO}
  • MSGFILE={MSG_FILE_NAME}
  • RELEASE={COMMIT | DEALLOCATE} (DB2 for z/OS のみ)
  • REOPT={NONE | ONCE | ALWAYS}

バージョン 10.5 フィックスパック 2 以降では、SQLCreatePkg 関数に、バインド・オプション RELEASEGENERIC、および MSGFILE を指定できます。MSGFILE バインド・オプションは、バインド操作のメッセージの出力先のパスおよびファイル名を指定します。ファイル・パスを指定せずにファイル名のみを指定した場合、出力ファイルは現行作業ディレクトリー内に作成されます。 DB2 for z/OS バージョン 11 以降のサーバーへ接続している場合は、GENERIC バインド・オプションを使用して、アプリケーション互換性に関する特殊レジスター設定 (APPLCOMPAT) を指定できます。

BIND コマンド・パラメーターは、セミコロンで区切った、名前と値の対のストリングの形で渡すことができます。例えば、以下のようにします。
KEEPDYNAMIC=YES; ISOLATION=CS; BLOCKING=NO; RELEASE=COMMIT; GENERIC=APPLCOMPAT V11R1 IMMEDWRITE NO
オプションにも値にも、大/小文字の区別はありません。

例 1: REOPT=ONCE および ENCODING=CCSID を指定してファイルをバインドする。

strcpy (bindFileName, "insertEmp.bnd");
cliRC = SQLCreatePkg(hdbc,
                     bindFileName,
                     -3, // SQL_NTS
                     "REOPT=ONCE; ENCODING=CCSID",
                     -3, // SQL_NTS);

例 2: KEEPDYNAMIC=YESBLOCKING=NO、および ISOLATION=RS を指定してリストのファイルをすべてバインドする。

strcpy (bindFileName, "/usr/ibm/dsdriver/bnd/@db2cli.lst");
cliRC = SQLCreatePkg(hdbc,
                     bindFileName,
                     strlen(bindFileName),
                     "KEEPDYNAMIC=YES; BLOCKING=NO; ISOLATION=RS",
                     -3, // SQL_NTS);

例 3: COLLECTION=SCHEMA NAME を指定してファイルをバインドする。

strcpy (bindFileName, "insertEmp.bnd");
cliRC = SQLCreatePkg(hdbc,
                     bindFileName,
                     -3, // SQL_NTS
                     "REOPT=ONCE; ENCODING=CCSID; COLLECTION=NEWTON",
                     -3, // SQL_NTS);

例 4: COLLECTION=XYZRELEASE=COMMITGENERIC オプション (APPLCOMPAT=V11R1 および IMMEDWRITE=NO を指定) を指定してリストのファイルをバインドする。

strcpy (bindFileName, "C:¥Program Files¥IBM¥IBM DATA SERVER DRIVER¥bnd¥@db2cli.lst");
cliRC = SQLCreatePkg(hdbc,
                     bindFileName,
                     strlen(bindFileName),
                     "COLLECTION=XYZ;RELEASE=COMMIT;GENERIC= APPLCOMPAT V11R1  IMMEDWRITE NO",
                     -3, // SQL_NTS);

例 5: MSGFILE=/TMP/bindOutput.txt および REOPT=ONCE を指定してリストのファイルをバインドする。

strcpy (bindFileName, "/usr/ibm/dsdriver/bnd/@db2cli.lst");
cliRC = SQLCreatePkg(hdbc,
                     bindFileName,
                     strlen(bindFileName),
                     "MSGFILE=/TMP/bindOutput.txt;REOPT=ONCE;", 
                     -3, // SQL_NTS);

例 6: ファイルおよび特権の付与のリストをユーザー ZURBIE にバインディングします。 EXECUTE 特権と BIND 特権がユーザー ZURBIE に付与されます。

strcpy (bindFileName, "/usr/ibm/dsdriver/bnd/@db2cli.lst");
cliRC = SQLCreatePkg(hdbc,
									bindFileName,
									strlen(bindFileName),
									"ACTION=REPLACE;GRANT='zurbie';MSGFILE=bindmsg.txt;
									RELEASE=DEALLOCATE;COLLECTION=XYZ;GENERIC=ENCODING 
									UNICODE keepdynamic yes;ISOLATION=SQL_TXN_READ_UNCOMMITTED;
									BLOCKING=NO;REOPT=NONE",
									-3, // SQL_NTS);