在C#代码中使用dapper将输出参数传递给存储过程

我有这种格式的存储过程

CREATE PROCEDURE SP_MYTESTpROC

@VAR1 VARCHAR(10),

@VAR2 VARCHAR(20),

@BASEID INT ,

@NEWID INT OUTPUT

As Begin

INSERT INTO TABLE_NAME(username, firstname)

select @VAR1, @VAR2

WHERE ID = @BASEID

SET @NEWID = SCOPE_IDENTITY() AS INT

END

我正在使用dapper从C#代码调用此存储过程。我的问题是:在使用dapper时,如何将输出参数传递给存储过程?

回答:

只是搜索Test.cs文件,您可以找到此示例

    public void TestProcSupport()

{

var p = new DynamicParameters();

p.Add("a", 11);

p.Add("b", dbType: DbType.Int32, direction: ParameterDirection.Output);

p.Add("c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

connection.Execute(@"create proc #TestProc

@a int,

@b int output

as

begin

set @b = 999

select 1111

return @a

end");

connection.Query<int>("#TestProc", p, commandType: CommandType.StoredProcedure).First().IsEqualTo(1111);

p.Get<int>("c").IsEqualTo(11);

p.Get<int>("b").IsEqualTo(999);

}

因此,我想您的C#代码可以写成

    public void InsertData()

{

var p = new DynamicParameters();

p.Add("VAR1", "John");

p.Add("VAR2", "McEnroe");

p.Add("BASEID", 1);

p.Add("NEWID", dbType: DbType.Int32, direction: ParameterDirection.Output);

connection.Query<int>("SP_MYTESTpROC", p, commandType: CommandType.StoredProcedure);

int newID = p.Get<int>("NEWID");

}

附带说明,请勿将SP用作存储过程的前缀。它是为系统定义的过程保留的,如果Microsoft决定使用相同的名称,则可能会遇到麻烦。尽管不太可能,但这是一种不良做法,为什么要冒险?

以上是 在C#代码中使用dapper将输出参数传递给存储过程 的全部内容, 来源链接: utcz.com/qa/412728.html

回到顶部