关于ado.net调用存储过程得到返回值问题

netajax1 2011-03-20 09:29:23
第一个:

ALTER proc [dbo].[p_insert]
@name varchar(20),
@sex varchar(20),
@tel varchar(11),
@address varchar(100),
@result int-- output
as
begin
insert into test([name],sex,tel,[address])
values(@name,@sex,@tel,@address);
set @result = @@ERROR
return @result
end


调用:
SqlParameter [] parms=new SqlParameter[]
{
new SqlParameter("@name", txtName.Text),
new SqlParameter("@sex",txtSex.Text),
new SqlParameter("@tel",txtTel.Text),
new SqlParameter("@address",txtAddress.Text) ,
new SqlParameter("@result", ParameterDirection.ReturnValue)
}
;
foreach (var p in parms)
{
cmd.Parameters.Add(p);
}
cmd.ExecuteNonQuery();
int result = Convert.ToInt32(ParameterDirection.ReturnValue);

为什么返回值result是6 ? 我在数据库执行返回的是0

第二个:

@result int output
as
begin
insert into test([name],sex,tel,[address])
values(@name,@sex,@tel,@address);
set @result = @@ERROR
--return @result
end


调用:
SqlParameter [] parms=new SqlParameter[]
{
new SqlParameter("@name", txtName.Text),
new SqlParameter("@sex",txtSex.Text),
new SqlParameter("@tel",txtTel.Text),
new SqlParameter("@address",txtAddress.Text) ,
new SqlParameter("@result", ParameterDirection.Output)
}
;
foreach (var p in parms)
{
cmd.Parameters.Add(p);
}
cmd.ExecuteNonQuery();
int result = Convert.ToInt32(cmd.Parameters["@result"].Value);

为什么返回值是2 ? 数据库执行同样是0
请教各位 谢谢
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
netajax1 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiabiao113 的回复:]

@@ERROR调用一次就会清零
也就是发生错误后
select @@ERROR 第一次是错误号,第二次就是0
[/Quote]我sql语句没错误啊
csproj 2011-03-20
  • 打赏
  • 举报
回复
@@ERROR调用一次就会清零
也就是发生错误后
select @@ERROR 第一次是错误号,第二次就是0

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧