日期:2014-05-19  浏览次数:20450 次

存储过程中的返回值问题
存储过程中的RETURN值在代码中如何接收?
exists的值怎么来的?
ALTER   PROCEDURE   HR_Personnel_Login
(
@UserID varchar(50),
@Password varchar(50)
)
  AS
if   exists
(
SELECT   USRID  
FROM   HR_PersonnelInfo  
  WHERE   USRID   =   @UserID  
AND   UsrPassword   =   @Password
)
RETURN   0  
if   exists
(
SELECT   USRID  
FROM   HR_PersonnelInfo  
  WHERE   USRID   =   @UserID  
)
RETURN   1
RETURN   2



------解决方案--------------------
parameter.Direction = ParameterDirection.ReturnValue;

exists得意思是如果
SELECT USRID
FROM HR_PersonnelInfo
WHERE USRID = @UserID
AND UsrPassword = @Password
有记录则返回 true

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
SqlConnection conn = new SqlConnection( "server=.;pwd=sa;uid=sa;database=northwind ");
SqlCommand cmd = new SqlCommand( "ww ",conn);
cmd.CommandType = CommandType.StoredProcedure;
int a = 0 ;

SqlParameter wwww = new SqlParameter();
wwww.Direction = ParameterDirection.InputOutput;
wwww.Value = a;
wwww.ParameterName = "@oo ";

cmd.Parameters.Add( wwww );

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

this.Label1.Text = wwww.Value.ToString();


存储过程
create proc ww
@oo int output
set @oo = 5


存储过程的参数要是output,外面接受的时候,要设置SQL的参数方向即:
ParameterDirection.InputOutput;
然后赋一个和存储过程里参数一样类型是值,然后通过存储过程就可以直接用代码里的参数的value来获得SQL里的值了
------解决方案--------------------
cmd.Parameters.Add( "@ReturnValue ", SqlDbType.Int);
cmd.Parameters[ "@ReturnValue "].Direction = ParameterDirection.ReturnValue;

执行完存储过程后就可以的到cmd.Parameters[ "@ReturnValue "].Value了


------解决方案--------------------
exists的值怎么来的? ======> exists(语句) 是该语句有查询到记录