共用方式為


使用陳述式參數 - 繫結參數

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

SQL 語句中的每個參數標記都必須關聯或系結至應用程式中的變數,才能執行語句。 這是藉由呼叫 SQLBindParameter 函式來完成。 SQLBindParameter 會描述驅動程式的程式變數(address、C 數據類型等等)。 它也會藉由指出其序數值來識別參數標記,然後描述它所代表的 SQL 物件特性(SQL 數據類型、有效位數等等)。

參數標記可以在執行語句之前隨時系結或反彈。 參數係結會維持有效狀態,直到發生下列其中一項:

  • 呼叫 SQLFreeStmt 並將 Option 參數設定為 SQL_RESET_PARAMS釋放係結至語句句柄的所有參數。

  • 將 ParameterNumber 設定為係結參數標記序數的 SQLBindParameter 呼叫會自動釋放先前的系結。

應用程式也可以將參數係結至程式變數陣列,以批次處理SQL語句。 陣列系結有兩種類型:

  • 當每個個別參數係結至它自己的變數陣列時,就會執行數據行式系結。

    藉由呼叫 SQLSetStmtAttr,並將 Attribute 設定為 SQL_ATTR_PARAM_BIND_TYPE 且 ValuePtr 設定為 SQL_PARAM_BIND_BY_COLUMN 來指定數據行式系結。

  • 當 SQL 語句中的所有參數都系結為單位系結至包含參數個別變數的結構陣列時,就會執行數據列式系結。

    藉由呼叫 SQLSetStmtAttr,並將 Attribute 設定為 SQL_ATTR_PARAM_BIND_TYPE,而 ValuePtr 會設定為持有程式變數的結構大小來指定數據列系結。

當 SQL Server Native Client ODBC 驅動程式將字元或二進位字串參數傳送至伺服器時,它會將值填補到 SQLBindParameter ColumnSize 參數中指定的長度。 如果 ODBC 2.x 應用程式針對 ColumnSize 指定 0,驅動程式會將參數值填補為數據類型的有效位數。 連線到 SQL Server 伺服器時精確度為 8000,連線到舊版 SQL Server 時為 255。 ColumnSize 是 Variant 數據行的位元組。

SQL Server 支援定義預存程式參數的名稱。 ODBC 3.5 也引進了呼叫 SQL Server 預存程式時所使用的具名參數支援。 此支援可用來:

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

  • 在應用程式中以不同於建立預存程式時所指定的順序來指定參數。

只有在使用 Transact-SQL EXECUTE 語句或 ODBC CALL 逸出序列來執行預存程式時,才支援具名參數。

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

另請參閱

Using 語句參數