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

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » ODBC サポート » 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 を使用します。

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

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

 参照