存储过程返回值,哪里错了,怎么无法获取值?
代码如下,大家帮我看看,哪里错了,为什么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());
------解决方案--------------------我用的是输出参数的方式获取的