Rumah > pangkalan data > tutorial mysql > Adakah `cmd.CommandType = CommandType.StoredProcedure;` Diperlukan Apabila Melaksanakan Prosedur Tersimpan dalam C#?

Adakah `cmd.CommandType = CommandType.StoredProcedure;` Diperlukan Apabila Melaksanakan Prosedur Tersimpan dalam C#?

Barbara Streisand
Lepaskan: 2024-12-21 07:14:09
asal
461 orang telah melayarinya

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

Menetapkan CommandType pada Perintah SQL: StoredProcedure vs. Text

Apabila menggunakan prosedur tersimpan dalam C#, adalah perkara biasa untuk menemui kod seperti berikut:

string sql = "GetClientDefaults";

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

Namun, persoalan timbul: Adakah baris cmd.CommandType = CommandType.StoredProcedure; perlu, dan apakah implikasi yang berpotensi untuk tidak menggunakannya?

Pertimbangan Prestasi

Menurut ujian prestasi, SQL Server melakukan parameterisasi tidak kira sama ada anda menggunakan CommandType.Text atau CommandType.StoredProcedure. Walau bagaimanapun, apabila menggunakan CommandType.StoredProcedure, parameterisasi dilakukan dengan lebih cekap oleh SQL Server. Ini menghasilkan kelebihan kelajuan untuk menggunakan CommandType.StoredProcedure.

Pengisytiharan Parameter

Apabila menggunakan CommandType.Text, adalah penting untuk memasukkan nama parameter dalam CommandText itu sendiri. Ini kerana pembungkus sp_executesql, yang digunakan oleh SQL Server untuk meparameterkan pernyataan, tidak secara automatik melepasi nama parameter. Oleh itu, anda mesti menentukannya secara manual untuk memastikan pelaksanaan yang betul.

Sebagai contoh, jika anda mencipta prosedur seperti ini:

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

Dan kemudian memanggilnya menggunakan CommandType.Text, anda mesti memasukkan nama parameter dalam CommandText:

string callText = "dbo.Test @Text1, @Text2";
Salin selepas log masuk

Jika tidak, anda akan menghadapi ralat yang menunjukkan bahawa parameter yang ditentukan ialah tidak dibekalkan.

Kesimpulan

Ringkasnya:

  • Untuk prestasi optimum, gunakan CommandType.StoredProcedure apabila melaksanakan prosedur tersimpan.
  • Apabila menggunakan CommandType .Teks, berhati-hati dengan pengisytiharan parameter dalam Teks Perintah.

Atas ialah kandungan terperinci Adakah `cmd.CommandType = CommandType.StoredProcedure;` Diperlukan Apabila Melaksanakan Prosedur Tersimpan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan