为了账号安全,请及时绑定邮箱和手机立即绑定

C#从存储过程中读取输出值

C#从存储过程中读取输出值

PHP
阿波罗的战车 2022-12-04 10:32:12
一段时间以来,我一直在尝试RETURN从我的存储过程中读取值,但没有成功,在我之前的帖子中有人指出我应该使用OUTPUT并且有人提供了一些代码来说明我将如何做到这一点,因为我以前没有使用OUTPUT过。我现在正在尝试将OUTPUT值添加到我的 C# 代码中。如果投票不存在则返回 0如果投票存在则返回 1该代码当前抛出错误:System.Data.SqlClient.SqlException:过程或函数“Votes”需要参数“@votecount”,但未提供我在这里和谷歌上查看了很多帖子,但没有找到我的答案,所以希望这里的人可以帮助我解决我要去的地方我的C#command = new SqlCommand($@"EXECUTE dbo.Votes @VotedMember = @@VotedMember,                                              @VotedBy = @@VotedBy",                           StaticObjects._connection);if (Context.Guild.Users.Where(x => x.Username.ToLower() == member.ToLower() ||                                    x.Nickname?.ToLower() == member.ToLower()).Count() > 0){    SqlParameter GOTWParam = new SqlParameter    {         ParameterName = "@@VotedMember",         Value = //code here    }    command.Parameters.Add(GOTWParam);    SqlParameter VotedByParam = new SqlParameter    {        ParameterName = "@@VotedBy",        Value = //code here    };    command.Parameters.Add(VotedByParam);    command.Parameters.Add("@votecount", SqlDbType.Int).Direction = ParameterDirection.Output;    command.ExecuteNonQuery();    int response = Convert.ToInt32(command.Parameters["@votecount"].Value);    switch (response)    {        case 0:           // do something        case 1:           // do something    }}
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

您缺少输出参数。


TSQL 看起来像:


command = new SqlCommand($@"EXECUTE dbo.Votes @VotedMember = @p_VotedMember,

                                              @VotedBy = @p_VotedBy,

                                              @p_votecount = @votecount output",  

                         StaticObjects._connection);

在 C# 中


var pVotecount = command.Parameters.Add("@p_votecount", SqlDbType.Int);

pVotecount.Direction = ParameterDirection.Output;

其中 @p_是区别于存储过程参数名称的参数名称。


如果使用存储过程返回值(不是最佳实践),调用将如下所示:


command = new SqlCommand($@"EXECUTE @p_votecount = dbo.Votes @VotedMember = @p_VotedMember,

                                              @VotedBy = @p_VotedBy",  

                         StaticObjects._connection);

在这两种情况下都不@p_votecount应该。ReturnValue 仅与 CommandType.StoredProcedure 一起使用。ParameterDirection.OutputParameterDirection.ReturnValue


查看完整回答
反对 回复 2022-12-04
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信