Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mendapatkan Nilai Pengembalian di C# asp.net dari prosedur tersimpan (masalah sintaks)

Untuk menangkap RETURN VALUE (dikembalikan oleh SQL menggunakan sintaks RETURN({number})), gunakan:

cmdHeader.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;

Selain itu, Anda mungkin harus menggunakan SCOPE_IDENTITY() bukannya @@IDENTITY

Sunting:
Jadi sproc Anda akan melakukan sesuatu seperti:

DECLARE @NewId INTEGER
INSERT SomeTable(FieldA) VALUES ('Something')
SELECT @NewId = SCOPE_IDENTITY()
RETURN (@NewId)

Dan kode C# Anda untuk mengambil nilai itu adalah:

int newId = cmdHeader.Parameters[@ReturnValue].value;

Sunting 2
Oke, pertanyaan awal membingungkan masalah karena "nilai pengembalian" adalah hal yang berbeda dengan apa yang sebenarnya Anda lakukan yang mengembalikan satu kolom hasil.

Jadi, alih-alih JANGAN tambahkan parameter ReturnValue sama sekali. Cukup gunakan ExecuteScalar() menggunakan pengaturan SqlCommand asli Anda seperti di bawah ini:

int newId = Convert.ToInt32(cmdHeader.ExecuteScalar());


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyisipkan baris ke dalam tabel dengan satu kolom IDENTITAS saja

  2. Cara menampilkan bilah kemajuan saat menjalankan SQLCommand VB.Net besar

  3. Apakah ada alat gratis untuk menghasilkan skrip 'INSERT INTO' di MS SQL Server?

  4. Fitur Keamanan di SQL Server 2017

  5. pisahkan alfa dan numerik menggunakan sql