在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";
否則,您將遇到錯誤,指示指定的參數不是
總結:
以上是在 C# 中執行預存程序時需要 `cmd.CommandType = CommandType.StoredProcedure;` 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!