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
281 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!

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