共用方式為


繫結參數

SQL 陳述式中的每一個參數標記都必須與應用程式的變數相關聯或繫結,才能執行該陳述式。這要藉由呼叫 SQLBindParameter 函數來執行。SQLBindParameter 會對驅動程式描述程式變數 (位址、C 資料類型等)。它也會藉由指定序數值以辨識參數標記,然後描述它所代表的 SQL 物件的特性 (SQL 資料類型、有效位數等)。

參數標記可以在執行陳述式之前的任何時候繫結或重新繫結。在發生下列其中一個事件之前,參數繫結都會持續有效:

  • 如果呼叫含有 Option 參數是設為 SQL_RESET_PARAMS 的 SQLFreeStmt,將會釋放繫結到陳述式控制代碼的所有參數。

  • 如果呼叫含有 ParameterNumber 是設定為繫結參數標記之序數的 SQLBindParameter,則會自動釋放之前的繫結。

應用程式也可以將參數繫結到程式變數的陣列,以批次的方式處理 SQL 陳述式。陣列繫結有兩種類型:

  • 當每一個個別參數繫結到自己的變數陣列時,就會完成資料行取向繫結。

    藉由呼叫 Attribute 是設為 SQL_ATTR_PARAM_BIND_TYPE 以及 ValuePtr 是設為 SQL_PARAM_BIND_BY_COLUMN 的 SQLSetStmtAttr,就可以指定資料行取向繫結。

  • 當 SQL 陳述式的所有參數都是以單位的形式繫結到含有參數個別變數的結構陣列時,會形成資料列取向繫結。

    藉由呼叫 Attribute 是設定為 SQL_ATTR_PARAM_BIND_TYPE 以及 ValuePtr 是設定為含有程式變數之結構大小的 SQLSetStmtAttr,就可以指定資料列取向繫結。

當 SQL Server Native Client ODBC 驅動程式傳送字元或二位元字串參數至伺服器時,會將值填補至 SQLBindParameter ColumnSize 參數中指定的長度。如果 ODBC 2.x 應用程式為 ColumnSize 指定 0,則驅動程式會將參數值填補至資料類型的有效位數。當連接至 SQL Server 伺服器時,有效位數為 8000,連接至舊版 SQL Server 時則為 255。ColumnSize 的格式是變數資料行的位元組。

SQL Server 支援定義預存程序參數的名稱。ODBC 3.5 也導入了對呼叫 SQL Server 預存程序時所使用之具名參數的支援。這項支援可用來:

  • 呼叫預存程序,並提供為預存程序定義之參數子集的值。

  • 以不同的順序指定參數,也就是在應用程式中的順序,與在預存程序建立時所指定的順序不同。

使用 Transact-SQLEXECUTE 陳述式或 ODBC CALL 逸出序列執行預存程序時,才會支援具名參數。

如果針對預存程序參數設定 SQL_DESC_NAME,則查詢中的所有預存程序參數也都應該設定 SQL_DESC_NAME。如果在預存程序呼叫中使用常值,其中參數已設定 SQL_DESC_NAME,則常值應使用格式 'name=value',其中 name 是預存程序參數名稱 (例如 @p1)。如需詳細資訊,請參閱依名稱繫結參數 (具名參數) (英文)。

請參閱

概念