Rumah > pangkalan data > tutorial mysql > Mengapa kod C# saya mengembalikan nilai nol apabila mendapatkan nilai pulangan daripada prosedur yang disimpan?

Mengapa kod C# saya mengembalikan nilai nol apabila mendapatkan nilai pulangan daripada prosedur yang disimpan?

Patricia Arquette
Lepaskan: 2025-01-05 21:20:43
asal
345 orang telah melayarinya

Why is my C# code returning a null value when retrieving a return value from a stored procedure?

Menyelesaikan Masalah Perolehan Nilai Pulangan daripada Prosedur Tersimpan dalam C#

Apabila cuba mendapatkan nilai pulangan daripada prosedur tersimpan dalam C#, anda boleh menghadapi masalah di mana nilai yang dikembalikan adalah batal. Berikut ialah penjelasan terperinci tentang masalah dan penyelesaian:

Penerangan Masalah:

Anda telah menentukan prosedur tersimpan Transact-SQL yang mengambil dua parameter: @a sebagai input dan @b sebagai output. Prosedur tersimpan menetapkan @b kepada hasil pertanyaan, dan anda mengharapkan untuk mendapatkan semula nilai @b dalam kod C# anda. Walau bagaimanapun, apabila anda melaksanakan prosedur tersimpan dan cuba membaca nilai pulangan, anda akan mendapat batal.

Coretan Kod:

SqlConnection SqlConn = ...;
SqlCommand sqlcomm = new SqlCommand("Validate", SqlConn);
sqlcomm.CommandType = CommandType.StoredProcedure;
sqlcomm.Parameters.Add("...", SqlDbType.VarChar, ParameterDirection.Input);
SqlParameter retval = sqlcomm.Parameters.Add("...", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["..."].Value;
Salin selepas log masuk

Ralat Logik:

Sekeping kod yang hilang dalam rutin C# anda ialah ExecuteNonQuery panggil. Melaksanakan prosedur tersimpan memulakan pertanyaan pangkalan data dan mengemas kini parameter output @b. Tanpa panggilan ini, prosedur tersimpan tidak akan berjalan dan nilai pulangan kekal tidak berubah.

Penyelesaian:

Sertakan kaedah ExecuteNonQuery sebelum mendapatkan semula nilai pulangan:

sqlcomm.ExecuteNonQuery();
string retunvalue = (string)sqlcomm.Parameters["..."].Value;
Salin selepas log masuk

Selepas membuat perubahan ini, kod anda akan mendapatkan semula nilai pulangan yang diberikan dengan betul kepada @b dalam prosedur tersimpan.

Atas ialah kandungan terperinci Mengapa kod C# saya mengembalikan nilai nol apabila mendapatkan nilai pulangan daripada prosedur yang disimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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