次の方法で共有


SQLSetStmtOption のマッピング

アプリケーションが ODBC 3.x ドライバーを介して SQLSetStmtOption を呼び出すと、

SQLSetStmtOption(StatementHandle, fOption, vParam)  

結果は次のようになります。

  • fOption が文字列である ODBC で定義されたステートメント属性を示す場合、ドライバー マネージャーは を呼び出します。

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, SQL_NTS)  
    
  • fOption が 32 ビット整数値を返す ODBC 定義のステートメント属性を示す場合、Driver Manager は を呼び出します。

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, 0)  
    
  • fOption がドライバー定義のステートメント属性を示す場合、ドライバー マネージャーは を呼び出します

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, BufferLength)  
    

上記の 3 つのケースでは、 引数 StatementHandlehstmt の値に設定し、 Attribute 引数を fOption の値に設定し、 ValuePtr 引数を vParam として値に設定します。

ドライバー マネージャーは、ドライバー定義ステートメント属性に文字列または 32 ビットの整数値が必要かどうかを認識しないため、SQLSetStmtAttrStringLength 引数に有効な値を渡す必要があります。 ドライバーがドライバー定義ステートメント属性の特別なセマンティクスを定義していて、 SQLSetStmtOption を使用して呼び出す必要がある場合は、 SQLSetStmtOption をサポートする必要があります。

アプリケーションが SQLSetStmtOption を呼び出して ODBC 3.x ドライバーでドライバー固有のステートメント オプションを設定し、そのオプションが ODBC 2.x バージョンのドライバーで定義されている場合は、ODBC 3.x ドライバーの オプションに新しいマニフェスト定数を定義する必要があります。 SQLSetStmtOption の呼び出しで古いマニフェスト定数が使用されている場合、ドライバー マネージャーは StringLength 引数を 0 に設定して SQLSetStmtAttr を呼び出します。

アプリケーションが SQLSetStmtAttr を呼び出して ODBC 3.x ドライバーのSQL_UB_ONにSQL_ATTR_USE_BOOKMARKSを設定すると、SQL_ATTR_USE_BOOKMARKS ステートメント属性は SQL_UB_FIXED に設定されます。 SQL_UB_ONは、SQL_UB_FIXEDと同じ定数です。 ドライバー マネージャーは、SQL_UB_FIXEDをドライバーに渡します。 odbc 3.x ではSQL_UB_FIXEDは非推奨になりましたが、ODBC 3.x ドライバーでは、固定長ブックマークを使用する ODBC 2.x アプリケーションで動作するように実装する必要があります。

ODBC 3.x ドライバーの場合、ドライバー マネージャーは 、Option がSQL_STMT_OPT_MINとSQL_STMT_OPT_MAXの間にあるか、またはSQL_CONNECT_OPT_DRVR_STARTより大きいかどうかを確認しなくなりました。