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

Mengambil variabel keluaran SQL Server di c#

Pertama-tama - jika ini adalah parameter OUTPUT, Anda tidak dapat menggunakan .AddWithValue di C# - Anda perlu menggunakan:

SqlParameter outParam = cmd.Parameters.Add("@guidid", SqlDbType.Uniqueidentifier);
outParam.Direction = ParameterDirection.Output;

dan juga, dalam kode T-SQL Anda, Anda perlu menetapkan nilai baru ke parameter output!

ALTER PROCEDURE [dbo].[pr_Tbl_Test_Insert]
  @guidid uniqueidentifier output,
  @sname nvarchar(50)
AS

DECLARE @NewID UNIQUEIDENTIFIER
SET @NewID = newid();

-- INSERT a new row in the table.
INSERT [dbo].[Tbl_Test]([id], [name]) VALUES(@NewID, @sname);

SET @guidid = @NewID

Pembaruan: jika Anda menjalankan ini di SQL Server Mgmt Studio - apakah itu menunjukkan sesuatu??

DECLARE @insertedID UNIQUEIDENTIFIER

EXEC dbo.pr_Tbl_Test_Insert @guidid = @insertedID OUTPUT,
                            @sname = N'TestUser' -- nvarchar(50)

SELECT @insertedID

dan di C# Anda - Anda harus membaca nilai parameter keluaran setelah memanggil ExecuteNonQuery !

SqlParameter outparam = cmd.Parameters.Add("@guidid",SqlDbType.UniqueIdentifier);
outparam.Direction = ParameterDirection.Output;

cmd.Parameters.AddWithValue("@sname", "mehdi");

cmd.ExecuteNonQuery();

Guid newlyInsertedID = new Guid(cmd.Parameters["@guidid"].Value);
MessageBox.Show(newlyInsertedID.ToString());


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa karakter maksimum untuk NVARCHAR(MAX)?

  2. Paket berbasis set berjalan lebih lambat daripada fungsi bernilai skalar dengan banyak kondisi

  3. Pemberitahuan Kueri SQL Server di JAVA

  4. Rata-rata inkonsistensi float

  5. Bergabung dengan tabel berdasarkan nilai yang dipisahkan koma