首頁 >資料庫 >mysql教程 >在 C# 中執行預存程序時需要 `cmd.CommandType = CommandType.StoredProcedure;` 嗎?

在 C# 中執行預存程序時需要 `cmd.CommandType = CommandType.StoredProcedure;` 嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-21 07:14:09429瀏覽

Is `cmd.CommandType = CommandType.StoredProcedure;` Necessary When Executing Stored Procedures in C#?

在SQL 指令上設定CommandType:StoredProcedure 與Text

在C# 中使用預存程序時,常常會遇到下列程式碼:

string sql = "GetClientDefaults";

SqlCommand cmd = new SqlCommand(sql);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@computerName", computerName);

但是,問題出現了: cmd.CommandType = CommandType.StoredProcedure; 這行是嗎?必要的,以及不使用它的潛在影響是什麼?

效能注意事項

根據效能測試,無論您使用 CommandType.Text 或 CommandType.StoredProcedure,SQL Server 都會執行參數化。但是,當使用 CommandType.StoredProcedure 時,SQL Server 可以更有效地完成參數化。這使得使用 CommandType.StoredProcedure 具有速度優勢。

參數宣告

使用 CommandType.Text 時,在 CommandText 本身中包含參數名稱至關重要。這是因為 SQL Server 使用 sp_executesql 包裝器來參數化語句,不會自動傳遞參數名稱。因此,您必須手動指定它們以確保正確執行。

例如,如果您建立這樣的過程:

create procedure dbo.Test
(
   @Text1 varchar(10) = 'Default1'
  ,@Text2 varchar(10) = 'Default2'
)
as
begin
   select @Text1 as Text1, @Text2 as Text2
end

然後使用 CommandType.Text 呼叫它,則必須包含CommandText中的參數名稱:

string callText = "dbo.Test @Text1, @Text2";

否則,您將遇到錯誤,指示指定的參數不是

結論

總結:

  • 為了獲得最佳效能,在執行預存程序時使用CommandType.StoredProcedure。
  • 使用 CommandType 時。文本,請注意 CommandText 中的參數聲明。

以上是在 C# 中執行預存程序時需要 `cmd.CommandType = CommandType.StoredProcedure;` 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn