首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

存储过程返回值,错哪了,如何无法获取值

2012-03-01 
存储过程返回值,哪里错了,怎么无法获取值?代码如下,大家帮我看看,哪里错了,为什么i总是等于0,cmd.Paramete

存储过程返回值,哪里错了,怎么无法获取值?
代码如下,大家帮我看看,哪里错了,为什么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());



[解决办法]
我用的是输出参数的方式获取的

热点排行