Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Извличане на изходни променливи на SQL Server в c#

Първо - ако това е параметър OUTPUT, не можете да използвате .AddWithValue в C# - трябва да използвате:

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

и също така във вашия T-SQL код трябва да присвоите новата стойност на изходния параметър!

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

Актуализация: ако стартирате това във вашето SQL Server Mgmt Studio - показва ли нещо??

DECLARE @insertedID UNIQUEIDENTIFIER

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

SELECT @insertedID

и във вашия C# - трябва да прочетете стойността на изходния параметър след извикване на 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. SQL Server 2016:Архивиране на база данни

  2. Как да върна SQL типовете данни от моята заявка?

  3. Изследване на SQL Server 2014 SELECT INTO Parallelism

  4. Алтернатива на използването на WHERE ... IN (...) за бавни SQL заявки

  5. Как автоматично да добавите 1 година дата към съществуваща дата в SQL Server