配置陳述式控制代碼
在應用程式可以執行陳述式之前,它必須配置陳述式控制代碼。 方法是,在 HandleType 參數設定為 SQL_HANDLE_STMT,而且包含指向連接控制代碼的 InputHandle 時,呼叫 SQLAllocHandle。
陳述式屬性是陳述式控制代碼的特性。 範例陳述式屬性可以包含使用書籤和搭配陳述式結果集使用的資料指標種類。 陳述式屬性是使用 SQLSetStmtAttr 設定的,而其目前設定則是使用 SQLGetStmtAttr 擷取的。 應用程式不需要設定任何陳述式屬性;所有陳述式屬性都有預設值,而且有些是驅動程式專屬的。
使用數個 ODBC 陳述式與連接選項時請小心。 在 fOption 設定為 SQL_ATTR_LOGIN_TIMEOUT 時呼叫 SQLSetConnectAttr 會控制應用程式在等候建立連接時等候連接嘗試逾時的時間 (0 表示無盡的等候)。 回應時間緩慢的網站可以將這個值設高一點,以確認連接有充足的時間可以完成。 不過,如果驅動程式無法連接,間隔應該一律夠低,才能在合理的時間內回應使用者。
在 fOption 設定為 SQL_ATTR_QUERY_TIMEOUT 時呼叫 SQLSetStmtAttr 會設定查詢逾時間隔,以協助防止伺服器和使用者長時間執行查詢。
在 fOption 設定為 SQL_ATTR_MAX_LENGTH 時呼叫 SQLSetStmtAttr 會限制個別陳述式可以擷取之 text 和 image 資料的數量。 如果這就是應用程式所需要的,在 fOption 設定為 SQL_ATTR_MAX_ROWS 時呼叫 SQLSetStmtAttr 也可以將資料列集限制為前 n 個資料列。 請注意,設定 SQL_ATTR_MAX_ROWS 會使驅動程式對伺服器發出 SET ROWCOUNT 陳述式。 這會影響所有 Microsoft SQL Server 陳述式,包括觸發程序和更新。
當您要設定這些選項時,請小心使用。 連接控制代碼上的所有陳述式控制代碼對於 SQL_ATTR_MAX_LENGTH 和 SQL_ATTR_MAX_ROWS 最好都有相同的設定。 如果驅動程式從陳述式控制代碼切換到包含這些選項不同值的其他控制代碼,驅動程式必須產生適當的 SET TEXTSIZE 和 SET ROWCOUNT 陳述式才能變更設定。 驅動程式無法將這些陳述式放在與使用者 SQL 陳述式相同的批次中,因為使用者 SQL 陳述式可能包含必須是批次中第一個陳述式的陳述式。 驅動程式必須以單獨的批次傳送 SET TEXTSIZE 和 SET ROWCOUNT 陳述式,這樣會對伺服器自動產生額外的往返。