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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere ODBC API » SQL 文の実行

 

準備文の実行

準備文を使用すると、繰り返し使用する文のパフォーマンスが向上します。ODBC は、準備文を使用するための関数をすべて提供しています。

準備文の概要については、文の準備を参照してください。

♦  SQL 準備文を実行するには、次の手順に従います。
  1. SQLPrepare を使って文を準備します。

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

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

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

    • retcode   操作の成功または失敗をテストするリターン・コードが設定されます。

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

    • ?   疑問符は文のパラメータのためのプレースホルダです。

  2. SQLBindParameter を使用して文のパラメータ値を設定します。

    たとえば、次の関数呼び出しは DepartmentID 変数の値を設定します。

    SQLBindParameter( stmt,
                     1,
                     SQL_PARAM_INPUT,
                     SQL_C_SSHORT,
                     SQL_INTEGER,
                     0,
                     0,
                     &sDeptID,
                     0,
                     &cbDeptID);

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

    • stmt   はステートメント・ハンドルです。

    • 1   は、この呼び出しで最初のプレースホルダの値が設定されることを示します。

    • SQL_PARAM_INPUT   は、パラメータが入力文であることを示します。

    • SQL_C_SHORT   は、アプリケーションで C データ型が使用されていることを示します。

    • SQL_INTEGER   は、データベース内で SQL データ型が使用されていることを示します。

      次の 2 つのパラメータは、カラム精度と 10 進数の小数点以下の桁数を示します。ともに、0 は整数を表します。

    • &sDeptID   は、パラメータ値のバッファへのポインタです。

    • 0   はバッファの長さを示すバイト数です。

    • &cbDeptID   はパラメータ値の長さが設定されるバッファへのポインタです。

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

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

    retcode = SQLExecute( stmt);

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

  5. 文を削除します。

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

エラー・チェックを含む完全なサンプルについては、samples-dir\SQLAnywhere\ODBCPrepare\odbcprepare.cpp を参照してください。

SQLPrepare の詳細については、Microsoft の『ODBC Programmer's Reference』の「[external link] SQLPrepare」を参照してください。