SQLSetStmtOption 對應

當應用程式透過 ODBC 3.x 驅動程式呼叫 SQLSetStmtOption 時,呼叫

SQLSetStmtOption(StatementHandle, fOption, vParam)  

將會產生下列結果:

  • 如果 fOption 指出 ODBC 定義的語句屬性是字串,驅動程式管理員會呼叫

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, SQL_NTS)  
    
  • 如果 fOption 指出傳回 32 位整數值的 ODBC 定義語句屬性,驅動程式管理員會呼叫

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, 0)  
    
  • 如果 fOption 指出驅動程式定義的語句屬性,驅動程式管理員會呼叫

    SQLSetStmtAttr(StatementHandle, fOption, ValuePtr, BufferLength)  
    

在上述三種情況下, StatementHandle 引數會設定為 hstmt 中的 值、 Attribute 引數設定為 fOption 中的 值,而 ValuePtr 引數會設定為 vParam 的值。

因為驅動程式管理員不知道驅動程式定義語句屬性是否需要字串或 32 位整數值,所以它必須傳入 SQLSetStmtAttr StringLength 引數的有效值。 如果驅動程式已定義驅動程式定義語句屬性的特殊語意,而且需要使用 SQLSetStmtOption 呼叫 ,則必須支援 SQLSetStmtOption

如果應用程式呼叫 SQLSetStmtOption ,在 ODBC 3.x 驅動程式中設定驅動程式特定語句選項,而且選項是在 ODBC 2.x 版本的驅動程式中定義,則應該為 ODBC 3.x 驅動程式中的選項定義新的資訊清單常數。 如果在 SQLSetStmtOption 呼叫 中使用舊的資訊清單常數,Driver Manager 會呼叫 SQLSetStmtAttr ,並將 StringLength 引數設定為 0。

當應用程式呼叫 SQLSetStmtAttr 將SQL_ATTR_USE_BOOKMARKS設定為 ODBC 3.x 驅動程式中的SQL_UB_ON時,SQL_ATTR_USE_BOOKMARKS語句屬性會設定為 SQL_UB_FIXED。 SQL_UB_ON與SQL_UB_FIXED相同。 驅動程式管理員會將SQL_UB_FIXED傳遞至驅動程式。 SQL_UB_FIXED已在 ODBC 3.x 中已被取代,但 ODBC 3.x 驅動程式必須實作它,才能使用使用固定長度書簽的 ODBC 2.x 應用程式。

對於 ODBC 3.x 驅動程式,驅動程式管理員不會再檢查 Option 是否 位於 SQL_STMT_OPT_MIN 與 SQL_STMT_OPT_MAX 之間,或大於SQL_CONNECT_OPT_DRVR_START。