Berjaya mendapatkan semula nilai parameter output, terutamanya kunci utama menggunakan SCOPE_IDENTITY()
, daripada prosedur tersimpan SQL Server dalam C# boleh menjadi rumit. Artikel ini menangani kesukaran biasa dan menyediakan penyelesaian praktikal.
Prosedur tersimpan usp_InsertContract
menunjukkan prosesnya. Ia memasukkan rekod ke dalam jadual Contracts
dan mengembalikan kunci utama yang baru dijana (lajur Id
) melalui parameter output @NewId
. Prosedur yang dikemas kini menggunakan SCOPE_IDENTITY()
untuk mendapatkan semula kunci utama yang tepat:
<code class="language-sql">CREATE PROCEDURE usp_InsertContract @ContractNumber varchar(7), @NewId int OUTPUT AS BEGIN INSERT INTO [dbo].[Contracts] (ContractNumber) VALUES (@ContractNumber); SELECT @NewId = SCOPE_IDENTITY(); END;</code>
Coretan kod C# di bawah menunjukkan cara mengendalikan parameter output:
<code class="language-csharp">SqlParameter pvNewId = new SqlParameter(); pvNewId.ParameterName = "@NewId"; pvNewId.DbType = DbType.Int32; pvNewId.Direction = ParameterDirection.Output; // ... (Add pvNewId to the SqlCommand object 'cmd') ... // Execute the stored procedure cmd.ExecuteNonQuery(); // Retrieve the output value int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);</code>
Jika anda menghadapi masalah, sahkan perkara berikut:
Contracts
anda termasuk lajur identiti (kunci utama auto-naik).SCOPE_IDENTITY()
yang betul dalam prosedur tersimpan untuk mendapatkan nilai identiti yang terakhir dimasukkan.SqlParameter
(pvNewId
) ditambah dengan betul pada objek SqlCommand
(cmd
) dan sifatnya (ParameterName
, DbType
, Direction
) ditetapkan dengan tepat.Dengan menangani perkara ini, anda boleh mendapatkan semula parameter output dengan berkesan, termasuk yang dijana oleh SCOPE_IDENTITY()
, daripada prosedur tersimpan SQL Server anda dalam aplikasi C# anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Parameter Output, Termasuk SCOPE_IDENTITY(), daripada Prosedur Tersimpan Pelayan SQL dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!