Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan Kunci Utama daripada Parameter Output Prosedur Tersimpan dalam C#?

Bagaimana untuk Mendapatkan Kunci Utama daripada Parameter Output Prosedur Tersimpan dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-10 08:45:42568semak imbas

How to Retrieve a Primary Key from a Stored Procedure's Output Parameter in C#?

Menggunakan parameter output prosedur tersimpan dalam C#

Apabila mendapatkan semula data daripada prosedur yang disimpan, anda selalunya perlu mengakses parameter output untuk mendapatkan maklumat tambahan. Dalam contoh ini, program C# menghadapi masalah semasa cuba mendapatkan kunci utama yang dikembalikan oleh prosedur tersimpan usp_InsertContract.

Prosedur yang disimpan diubah suai sedikit untuk menggunakan SCOPE_IDENTITY(), seperti ditunjukkan di bawah:

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

Kod C# juga telah dilaraskan untuk mendapatkan semula nilai output dengan betul:

<code class="language-csharp">// 打开连接并执行存储过程
conn.Open();
cmd.ExecuteNonQuery();

// 从@NewId读取输出值
int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);
conn.Close();</code>

Pengubahsuaian ini harus menyelesaikan masalah dengan memastikan kunci utama dikembalikan dengan betul sebagai parameter output dan boleh diakses dalam program C#.

Nota: Pastikan anda mengesahkan bahawa jadual Kontrak mempunyai lajur dengan atribut IDENTITY dikonfigurasikan dengan betul. Lajur IDENTITY yang tiada juga mungkin menyukarkan untuk mendapatkan nilai kunci utama.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kunci Utama daripada Parameter Output Prosedur Tersimpan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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