Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Dapatkan Parameter Output, Termasuk SCOPE_IDENTITY(), daripada Prosedur Tersimpan Pelayan SQL dalam C#?

Bagaimanakah Saya Boleh Dapatkan Parameter Output, Termasuk SCOPE_IDENTITY(), daripada Prosedur Tersimpan Pelayan SQL dalam C#?

Patricia Arquette
Lepaskan: 2025-01-10 09:11:41
asal
544 orang telah melayarinya

How Can I Retrieve Output Parameters, Including SCOPE_IDENTITY(), from SQL Server Stored Procedures in C#?

Mengakses Parameter Output daripada Prosedur Tersimpan Pelayan SQL dalam Aplikasi C#

Cabarannya

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.

Contoh Prosedur Tersimpan

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>
Salin selepas log masuk

Pelaksanaan C#

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>
Salin selepas log masuk

Kesalahan dan Penyelesaian Biasa

Jika anda menghadapi masalah, sahkan perkara berikut:

  • Lajur Identiti: Sahkan bahawa jadual Contracts anda termasuk lajur identiti (kunci utama auto-naik).
  • SKOP_IDENTITI() Penggunaan: Pastikan penggunaan SCOPE_IDENTITY() yang betul dalam prosedur tersimpan untuk mendapatkan nilai identiti yang terakhir dimasukkan.
  • Konfigurasi Parameter: Periksa semula sama ada objek 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!

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