Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ プログラミング » ODBC サポート » SQL 文の実行方法

 

準備文の実行

準備文を実行すると、繰り返し使用する文のパフォーマンスが向上します。

前提条件

サンプルを正常に実行するために、次のシステム権限が必要になります。

  • Departments テーブルでの INSERT

 ♦ タスク
  1. SQLPrepare を使って文を準備します。

    たとえば、次のコードフラグメントは、INSERT 文の準備方法を示します。

    rc = SQLPrepare( stmt,
        "INSERT INTO Departments( DepartmentID, DepartmentName, DepartmentHeadID ) "
        "VALUES (?, ?, ?)",
        SQL_NTS );

    この例では次のようになっています。

    • rc   操作の成功または失敗をテストするリターンコードを受け取ります。

    • stmt   文にハンドルを割り付け、後で参照できるようにします。

    • ?   疑問符は文のパラメータのためのプレースホルダです。プレースホルダは文の中に置いて、どこでホスト変数にアクセスするかを指定します。プレースホルダは、疑問符 (?) かホスト変数参照です (ホスト変数名の前にはコロンを付けます)。ホスト変数参照の場合も、実際の文テキスト内のホスト変数名は、対応するパラメータがそれにバインドされることを示すプレースホルダの役割しかありません。実際のパラメータ名に一致する必要はありません。

  2. 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   はパラメータ値の長さが設定されるバッファへのポインタです。

  3. 他の 2 つのパラメータをバインドし、sDeptId に値を割り当てます。

  4. 次の文を実行します。

    rc = SQLExecute( stmt );

    手順 2 ~ 4 は、複数回実行できます。

  5. 文を削除します。

    文を削除すると、文自体に関連付けられているリソースが解放されます。文の削除には、SQLFreeHandle を使用します。

結果

ビルドして実行されると、アプリケーションは準備文を実行します。

次の手順

前述のコードフラグメントには、エラーチェックは含まれていません。エラーチェックを含む完全なサンプルについては、%SQLANYSAMP16%\SQLAnywhere\ODBCPrepare\odbcprepare.cpp を参照してください。

SQLPrepare の詳細については、[external link] http://msdn.microsoft.com/ja-jp/library/ms710926.aspxにある Microsoft の『ODBC API Reference』の「SQLPrepare」を参照してください。

 参照