分享方式:


陳述式控制代碼

說到陳述式,通常會聯想到 SQL 陳述式,例如 SELECT * FROM Employee。 不過,陳述式不僅是 SQL 陳述式,其中包含與該 SQL 陳述式相關聯的資訊,例如陳述式建立的任何資料集和執行陳述式中使用的參數。 陳述式甚至不需要有應用程式定義的 SQL 陳述式。 例如,當陳述式上會執行目錄函式 (例如 SQLTables),其會執行資料表名稱清單的預先定義 SQL 陳述式。

每個陳述式會由陳述式控制代碼所識別。 陳述式會與單一連線相關聯,而且該連線上可有多個陳述式。 某些驅動程式會限制支援的作用中陳述式數目;SQLGetInfo 中的 SQL_MAX_CONCURRENT_ACTIVITIES 選項會指定驅動程式在單一連線上支援的作用中陳述式數目。 如果陳述式有擱置的結果,則陳述式會定義為作用中,其結果為受 INSERTUPDATEDELETE 陳述式影響的資料列計數或結果集,或其資料正透過 SQLPutData 的多個呼叫進行傳送。

在實作 ODBC 的程式碼片段 (驅動程式管理員或驅動程式) 中,陳述式控制代碼會識別包含陳述式資訊的結構,例如:

  • 陳述式狀態

  • 目前陳述式層級診斷

  • 繫結至陳述式參數和結果集資料行的應用程式變數位址

  • 每個陳述式屬性的目前設定

陳述式控制代碼會在大部分 ODBC 函式中使用。 請務必注意,這些陳述式控制代碼會在函式中使用,用於繫結參數和結果集資料行 (SQLBindParameterSQLBindCol)、準備和執行陳述式 (SQLPrepareSQLExecuteSQLExecDirect)、擷取中繼資料 (SQLColAttributeSQLDescribeCol)、擷取結果 (SQLFetch),以及擷取診斷 (SQLGetDiagFieldSQLGetDiagRec)。 同時也會在目錄函式 (SQLColumns, SQLTables 等) 和多個其他函式中使用。

陳述式控制代碼會以 SQLAllocHandle 配置,並使用 SQLFreeHandle 釋放。