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