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

存储过程返回值,哪里错了,怎么无法获取值?
代码如下,大家帮我看看,哪里错了,为什么i总是等于0,
cmd.Parameters[ "@countNum "].Value   总是“未定义的值”


存储过程:
CREATE   PROCEDURE   sp_checkusername   @username   varchar(50)
AS
begin
declare   @countNum   int
select   @countNum=count(*)   from   cms_admin   where   username=@username
return   @countNum
end
GO


.cs代码:
cmd=MDB.DBExecSP( "sp_checkusername ");
cmd.Parameters.Add( "@username ",SqlDbType.VarChar,50);
cmd.Parameters[ "@username "].Value=username;

cmd.Parameters.Add( "@countNum ",SqlDbType.Int,4);
cmd.Parameters[ "@countNum "].Direction=ParameterDirection.ReturnValue;

int   i=Convert.ToInt32(cmd.Parameters[ "@countNum "].Value);


------解决方案--------------------
在通常情况下,在 ADO.NET 中为 Command对象配置各个参数的顺序无关紧要。 各个参数的名称可用于将其与存储过程中的相应参数进行匹配。 然而,对于 ReturnValue参数而言,它必须 是该列表中的第一个参数。
------解决方案--------------------
http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/UsingStoredProCEduresinVisualBasic.NET.mspx?mfr=true
------解决方案--------------------
在通常情况下,在 ADO.NET 中为 Command对象配置各个参数的顺序无关紧要。 各个参数的名称可用于将其与存储过程中的相应参数进行匹配。 然而,对于 ReturnValue参数而言,它必须 是该列表中的第一个参数。
===================================
学习
------解决方案--------------------
修改如下:

cmd.Parameters[ "@countNum "].Value


存储过程:
CREATE PROCEDURE sp_checkusername @username varchar(50)
AS
begin

select count(*) as countNum
from cms_admin where username=@username

end
GO
------解决方案--------------------
output的参数呢?能否说说,我以前用过好像不能返回数据
------解决方案--------------------
declare @countNum int
select @countNum=count(*) from cms_admin where username=@username
return @countNum


---------->

@countNum int output
select @countNum=count(*) from cms_admin where username=@username


------解决方案--------------------
CREATE PROCEDURE sp_checkusername
(
@username varchar(50)
@countNum int output
)
AS
begin
select @countNum=count(*) from cms_admin where username=@username
end
------解决方案--------------------
CREATE PROCEDURE sp_checkusername
(
@username varchar(50),
@countNum BIGINT OUTPUT
)
AS
BEGIN
SET @countNum = ISNULL((SELECT count(*)
from cms_admin
where username=@username),0)
END
GO


-==========================

cmd.Parameters.Add( "@countNum ",SqlDbType.Int,4);
cmd.Parameters[ "@countNum "].Direction=ParameterDirection.Output;
cmd.ExecuteNonQuery();
int i=Convert.ToInt32(cmd.Parameters[ "@countNum "].Value.ToString());



------解决方案--------------------
我用的是输出参数的方式获取的