日期:2014-05-18  浏览次数:20796 次

带返回值的存储过程
有一个SQL   server2000的数据库
表Students中有2个字段   StudentID       StudentSex
定义一个CheckID的存储过程
代码如下:

CREATE   PROCEDURE   CheckID
      @StudentID   char(9)
AS
BEGIN
      IF   ((SELECT   COUNT(*)
      FROM   Students
      WHERE   StudentID   =   @StudentID   )   >   1)
      return   1

ELSE
      return   0
END
GO


如何在C#中定义一个string   temp   让它等于这个存储过程的return的值

希望高手帮我解决下     谢谢了

------解决方案--------------------
用输出参数吧,像函数一样return我还没做过不知道可以不
------解决方案--------------------
将参数的Direction属性设置为ParameterDirection.ReturnValue即可
------解决方案--------------------
建立使用out参数传递
参考
SqlParameter p1 = new SqlParameter( "@StudentID ", SqlDbType.Char,9 );
p1.Value=具体的值;
cmd.Parameters.Add(p1);
SqlParameter p2 = new SqlParameter( "@returnVal ", SqlDbType.Int);
cmd.Parameters.Add(p2);
cmd.ExecuteNonQuery();
conn.Close();
Response.Write(p2.Value);
样就可以访问你out参数的值了

存储过程修改为
CREATE PROCEDURE CheckID
@StudentID char(9),@returnVal int
AS
BEGIN
IF ((SELECT COUNT(*)
FROM Students
WHERE StudentID = @StudentID ) > 1)
set @returnVal=1

ELSE
set @returnVal= 0
END
GO


cmd.ExecuteNonQuery();
conn.Close();
Response.Write(p2.Value);