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

调用这个存储过程的时候,有一返回值为空,百思不得其解
这是存储过程:
create proc check_username
@usercode char(16)
as
declare @retcode int , @retdesc char(80)
select @retcode=-999,@retdesc='用户名已存在'

if exists(select 1 from tbl_user where userid=@usercode)
begin
select @retcode=1,@retdesc='用户名已存在'
end
else
begin
select @retcode=0,@retdesc='用户名可以使用'
end

select @retcode as retcode,@retdesc as retdesc



调用之后我用rs.getInt("retcode"),提示我retcode为无效的列名,求解.

------解决方案--------------------
SQL code

go
create proc check_username
@usercode char(16)
as
declare @retcode int , @retdesc char(80)
select @retcode=-999,@retdesc='用户名已存在'

if exists(select 1 from tracy where [AZWZ]=@usercode)
begin
select @retcode=1,@retdesc='用户名已存在'
end
else
begin
select @retcode=0,@retdesc='用户名可以使用'
end
select @retcode as retcode,@retdesc as retdesc

exec check_username '22153回风巷'
/*
retcode    retdesc
1    用户名已存在                                                                    
*/

--用我本机上的一个数据表tracy做了一下测试,没有任何问题

应该是你在乘虚端调用的时候出错,从报错信息来看,应该是参数没传对,比如说格式
多加或者少加引号

------解决方案--------------------
探讨
这是存储过程:
create proc check_username
@usercode char(16)
as
declare @retcode int , @retdesc char(80)
select @retcode=-999,@retdesc='用户名已存在'

if exists(select 1 from tbl_user where userid=@usercode……

------解决方案--------------------
探讨

引用:
这是存储过程:
create proc check_username
@usercode char(16)
as
declare @retcode int , @retdesc char(80)
select @retcode=-999,@retdesc='用户名已存在'

if exists(select 1 from tbl_user wher……

------解决方案--------------------
存储过程是没问题
可能是你获取存储过程返回的结果集中的某一列值有问题
试试下面这种调用
C#
C# code
Convert.ToInt32(ds.Tables[0].Rows[0]["retcode"].ToString());