準備文を実行すると、繰り返し使用する文のパフォーマンスが向上します。
前提条件
サンプルを正常に実行するために、次のシステム権限が必要になります。
Departments テーブルでの INSERT
SQLPrepare を使って文を準備します。
たとえば、次のコードフラグメントは、INSERT 文の準備方法を示します。
rc = SQLPrepare( stmt, "INSERT INTO Departments( DepartmentID, DepartmentName, DepartmentHeadID ) " "VALUES (?, ?, ?)", SQL_NTS ); |
この例では次のようになっています。
rc 操作の成功または失敗をテストするリターンコードを受け取ります。
stmt 文にハンドルを割り付け、後で参照できるようにします。
? 疑問符は文のパラメータのためのプレースホルダです。プレースホルダは文の中に置いて、どこでホスト変数にアクセスするかを指定します。プレースホルダは、疑問符 (?) かホスト変数参照です (ホスト変数名の前にはコロンを付けます)。ホスト変数参照の場合も、実際の文テキスト内のホスト変数名は、対応するパラメータがそれにバインドされることを示すプレースホルダの役割しかありません。実際のパラメータ名に一致する必要はありません。
SQLBindParameter を使用して文のパラメータ値をバインドします。
たとえば、次の関数呼び出しは DepartmentID 変数の値をバインドします。
rc = SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &sDeptID, 0, &cbDeptID ); |
この例では次のようになっています。
rc 操作の成功または失敗をテストするリターンコードが設定されます。
stmt はステートメントハンドルです。
1 は、この呼び出しで最初のプレースホルダの値が設定されることを示します。
SQL_PARAM_INPUT は、パラメータが入力文であることを示します。
SQL_C_SHORT は、アプリケーションで C データ型が使用されていることを示します。
SQL_INTEGER は、データベース内で SQL データ型が使用されていることを示します。
次の 2 つのパラメータは、カラム精度と 10 進数の小数点以下の桁数を示します。ともに、0 は整数を表します。
&sDeptID は、パラメータ値のバッファへのポインタです。
0 はバッファの長さを示すバイト数です。
&cbDeptID はパラメータ値の長さが設定されるバッファへのポインタです。
他の 2 つのパラメータをバインドし、sDeptId に値を割り当てます。
次の文を実行します。
rc = SQLExecute( stmt ); |
手順 2 ~ 4 は、複数回実行できます。
文を削除します。
文を削除すると、文自体に関連付けられているリソースが解放されます。文の削除には、SQLFreeHandle を使用します。
SQLPrepare の詳細については、 http://msdn.microsoft.com/ja-jp/library/ms710926.aspxにある Microsoft の『ODBC API Reference』の「SQLPrepare」を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |