Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy xuất các biến đầu ra của SQL Server trong c #

Trước hết - nếu đó là tham số OUTPUT, bạn không thể sử dụng .AddWithValue trong C # - bạn cần sử dụng:

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

và trong mã T-SQL của bạn, bạn cần gán giá trị mới cho tham số đầu ra!

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

Cập nhật: nếu bạn chạy điều này trong SQL Server Mgmt Studio - nó có hiển thị gì không ??

DECLARE @insertedID UNIQUEIDENTIFIER

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

SELECT @insertedID

và trong C # của bạn - bạn phải đọc ra giá trị của tham số đầu ra sau khi gọi 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. Khi nào và cách sử dụng mệnh đề PARTITION BY trong SQL

  2. Vấn đề chèn hàng loạt chèn hàng loạt

  3. SQL Server 2008 - Trình kích hoạt có chạy với các quyền giống như đăng nhập / người dùng không?

  4. Cách sử dụng con trỏ để cập nhật bản ghi

  5. Làm thế nào để đặt kích thước tệp cơ sở dữ liệu ban đầu và tốc độ phát triển tệp trong một dự án cơ sở dữ liệu?