sql >> Databasteknik >  >> RDS >> Sqlserver

Hämta SQL Server-utdatavariabler i c#

Först och främst - om det är en OUTPUT-parameter kan du inte använda .AddWithValue i C# - du måste använda:

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

och även i din T-SQL-kod måste du tilldela det nya värdet till utdataparametern!

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

Uppdatering: om du kör detta i din SQL Server Mgmt Studio - visar det något??

DECLARE @insertedID UNIQUEIDENTIFIER

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

SELECT @insertedID

och i din C# - du måste läsa upp värdet på utdataparametern efter anrop av 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. Åtgärda "ERROR 1136 (21S01):Kolumnantal matchar inte värderäkning på rad 1" när du infogar data i MySQL

  2. SQL Server:Hur får man främmande nyckelreferens från information_schema?

  3. FEL! Servern avslutades utan att uppdatera PID-filen (/usr/local/mysql/data/Mac.local.pid)

  4. ALTER TABLE för att lägga till en sammansatt primärnyckel