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。