当前位置:编程学习 > C#/ASP.NET >>

关于存储过程返回值的问题

alter proc usp_log (@uname nvarchar(50),@pwd nvarchar(50),@res int output)
as
declare @pw nvarchar(50)
select @pw=pwd from UserInfo where uname=@uname
if(@pwd=@pw)
begin
select @res=partid from UserInfo where uname=@uname
return @res
end
else
begin
set @res=-1
return @res
end
go
在表UserInfo中根据姓名查询密码,查询成功则返回数据中的partid值
在C#中 直接获取返回值
 public static int login(string name,string pwd) 
      {
          SqlConnection conn = new SqlConnection("server=.;database=ProDB;uid=sa;pwd=sql2008");
          string sql = "usp_log";
          SqlCommand comm = new SqlCommand(sql, conn);
          comm.CommandType = CommandType.StoredProcedure;
          SqlParameter p_1 = new SqlParameter("@uname", SqlDbType.NVarChar, 50);
          p_1.Value = name;
          SqlParameter p_2 = new SqlParameter("@pwd", SqlDbType.NVarChar, 50);
          p_2.Value = pwd;
          SqlParameter retv = new SqlParameter("@res", SqlDbType.Int);
          retv.Direction = ParameterDirection.Output;
          comm.Parameters.Add(p_1);
          comm.Parameters.Add(p_2);
          comm.Parameters.Add(retv);
          conn.Open();
          comm.ExecuteNonQuery();
          conn.Close();
          return Convert.ToInt32(retv.Value) ;
      }
在别的窗口调用此方法则会出现“过程或函数 'usp_log' 需要参数 '@res',但未提供该参数”错误提示,我查网上其他调用都这么写的呀,我的错在哪里了?求教!!! 存储 output 返回值 --------------------编程问答-------------------- 好像没看到大的问题,new SqlParameter("@res", SqlDbType.Int); 能不能直接值得参数或是尝试赋值,你也可以在proc 把OUT去掉,使用RETURN的方式,这样就很简单·可以做一下调试 --------------------编程问答--------------------
引用 1 楼 yangyifan0 的回复:
好像没看到大的问题,new SqlParameter("@res", SqlDbType.Int); 能不能直接值得参数或是尝试赋值,你也可以在proc 把OUT去掉,使用RETURN的方式,这样就很简单·可以做一下调试

多谢,proc中out去掉了,在c#中的output改为了returnvalue 就成功了
我总觉得我的C#的login的参数有问题,就是不知道怎么弄 --------------------编程问答-------------------- 是不是这个? --------------------编程问答-------------------- retv.Direction = ParameterDirection.InputOutput;
这样试试看呢? --------------------编程问答--------------------
引用 4 楼 nice_fish 的回复:
retv.Direction = ParameterDirection.InputOutput;
这样试试看呢?

还是有需要@res参数的提示,是不是我log方法的参数少了?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,