请问我定义了一个多个输出参数的存储过程,这样让他们输出为什么不正确?

yongmei123 2006-06-21 08:42:05
CREATE PROCEDURE sysLogin
@YHBH varchar(5),
@YHKL varchar(30),
@YHNM int output,
@BM int output,
@ZC int output,
@reason varchar(50) output

AS
select LSYHZD_YHNM from LSYHZD where LSYHZD_YHBH = @YHBH
if (@@RowCount<1)
begin ----1
set @reason ='noEmp'
set @YHNM=0
end------1
else
begin ----2


SELECT @YHNM=LSYHZD_YHNM,@BM=LSYHZD_BMNM,@ZC=LSYHZD_ZWNM
FROM LSYHZD
WHERE (LSYHZD_YHBH = @YHBH) AND (LSYHZD_YHKL = @YHKL)
if (@@RowCount<1)
begin ---------3
set @reason ='pError'
set @YHNM=0
end------------3
else
begin -----4
set @reason ='access'
end ----------4

end------2
RETURN
GO
String[] strLoginflag =AloginUsr.Login (strLoginID,strPassword);
Session["YHNM"]=strLoginflag[0];

Session["BM"]=strLoginflag[1];

Session["zc"]=strLoginflag[2];
提示Session["zc"]=strLoginflag[2]处
System.IndexOutOfRangeException: 索引超出了数组界限。
...全文
128 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlkingdom 2006-06-21
  • 打赏
  • 举报
回复
你return 后面没有跟你一个你需要返回的值啊...
liujiwe79 2006-06-21
  • 打赏
  • 举报
回复
帮你顶
zhgroup 2006-06-21
  • 打赏
  • 举报
回复
AloginUsr.Login (strLoginID,strPassword)返回数组的长度不正确。
读取存储过程返回值的方法:
SqlParameter para = new SqlParameter( 返回值参数名,...,ParameterDirection.Output );
将para添加到命令对象的参数集合中后,执行命令,执行完成后,读取返回参数:
para = (SqlParameter)SqlCommand.Parameters[返回参数名];
object obj = para.Value;
if( obj != null )
{
obj就是返回的值
}

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧