預存程式 - 在 SQL Server Native Client 中執行

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client OLE DB 提供者 (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 進行新的開發。 請切換至新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 以繼續使用。

執行陳述式時,在資料來源上呼叫預存程序 (而非直接在用戶端應用程式中執行或準備陳述式) 可以提供:

  • 較高的效能。

  • 降低的網路負擔。

  • 更好的一致性。

  • 更好的精確度。

  • 增加的功能。

SQL Server Native Client OLE DB 提供者支援 SQL Server 預存程式用來傳回資料的三種機制:

  • 程序中的每個 SELECT 陳述式都會產生一個結果集。

  • 程序可以透過輸出參數傳回資料。

  • 程序可以有一個整數的傳回碼。

應用程式必須能夠處理預存程序中的所有這些輸出。

不同的 OLE DB 提供者在結果處理期間,會在不同時間傳回輸出參數和傳回值。 如果是 SQL Server Native Client OLE DB 提供者,在取用者擷取或取消預存程式傳回的結果集之後,才會提供輸出參數和傳回碼。 傳回碼和輸出參數會由來自伺服器的最後一個 TDS 封包傳回。

當它傳回輸出參數和傳回碼時,提供者會使用 DBPROP_OUTPUTPARAMETERAVAILABILITY 屬性來報告。 這個屬性位於 DBPROPSET_DATASOURCEINFO 屬性集中。

SQL Server Native Client OLE DB 提供者會將 DBPROP_OUTPUTPARAMETERAVAILABILITY 屬性設定為 DBPROPVAL_OA_ATROWRELEASE,表示在處理或釋放結果集之前,不會傳回傳回碼和輸出參數。

另請參閱

預存程序