引用存储过程中的输出参数出错,请帮忙看看,谢谢

nikita007 2007-05-10 11:26:58
引用存储过程中的输出参数出错,请帮忙看看,谢谢


C#中的代码

SqlCommand aCommand = new SqlCommand("LEM_USER_AUTHENTICATION", conn);
aCommand.CommandType = CommandType.StoredProcedure;
aCommand.Parameters.Add(new SqlParameter("@USER_ID", SqlDbType.VarChar, 20));
aCommand.Parameters["@USER_ID"].Value = user_id;

aCommand.Parameters.Add(new SqlParameter("@USER_PWD", SqlDbType.VarChar, 20));
aCommand.Parameters["@USER_PWD"].Value = user_pwd;

aCommand.Parameters.Add(new SqlParameter("@TYPE", SqlDbType.Decimal));
aCommand.Parameters["@TYPE"].Direction = ParameterDirection.Output;

aCommand.Parameters.Add(new SqlParameter("@F_LEM", SqlDbType.Decimal));
aCommand.Parameters["@F_LEM"].Direction = ParameterDirection.Output;

aCommand.Parameters.Add(new SqlParameter("@LP_INFO", SqlDbType.VarChar, 200));
aCommand.Parameters["@LP_INFO"].Direction = ParameterDirection.Output;

aCommand.UpdatedRowSource = UpdateRowSource.None;

aCommand.ExecuteNonQuery();
aCommand.Dispose();
conn.Close();


int user_type = Convert.ToInt32(aCommand.Parameters["@TYPE"].Value.ToString());
string f_lem = aCommand.Parameters["F_LEM"].Value.ToString();
string lp_info = aCommand.Parameters["LP_INFO"].Value.ToString();

存储过程中的参数设置
@USER_ID VARCHAR(20) ,
@USER_PWD VARCHAR(20) ,
@TYPE NUMERIC(2,0)=0 OUTPUT,
@F_LEM NUMERIC(1,0) =0 OUTPUT,
@LP_INFO VARCHAR(200)='' OUTPUT
...全文
205 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyhao 2007-05-10
  • 打赏
  • 举报
回复
string f_lem = aCommand.Parameters["F_LEM"].Value.ToString();
换成string f_lem = aCommand.Parameters["@F_LEM"].Value.ToString();试试
nikita007 2007-05-10
  • 打赏
  • 举报
回复
wyhao() ( ) 信誉:100 Blog 加为好友 2007-05-10 12:16:53 得分: 0


aCommand.Parameters.Add(new SqlParameter("@F_LEM", SqlDbType.Decimal));
这里的@F_LEM名字必须和存储过程里的一样,你那里的是@F_LEMNUMERIC


-----------------
NUMERIC 是数值类型不是参数名,CSDN可能出现问题,空格给略了



zhangliu_521(浪客) ( ) 信誉:100 Blog 加为好友 2007-05-10 12:05:34 得分: 0


此 SqlParameterCollection 中未包含带有 ParameterName“F_LEM”的 SqlParameter
=========================================================================
F_LEM 创建未成功....


------------------------
这个是什么意思?
wyhao 2007-05-10
  • 打赏
  • 举报
回复
aCommand.Parameters.Add(new SqlParameter("@F_LEM", SqlDbType.Decimal));
这里的@F_LEM名字必须和存储过程里的一样,你那里的是@F_LEMNUMERIC
zhangliu_521 2007-05-10
  • 打赏
  • 举报
回复
此 SqlParameterCollection 中未包含带有 ParameterName“F_LEM”的 SqlParameter
=========================================================================
F_LEM 创建未成功....
fancytosky 2007-05-10
  • 打赏
  • 举报
回复
trainli(雨后琴声) ( ) 信誉:100 Blog 加为好友 2007-05-10 11:49:08 得分: 0


ommand.Parameters.Add(new SqlParameter("@F_LEM", SqlDbType.Decimal));這里是Decimal的
是9位的
@F_LEM NUMERIC(1,0) =0 OUTPUT,這里是numeric是返回的1位

好象不對吧﹗
--------------------------
这个是没关系的
不会有问题


trainli 2007-05-10
  • 打赏
  • 举报
回复
ommand.Parameters.Add(new SqlParameter("@F_LEM", SqlDbType.Decimal));這里是Decimal的
是9位的
@F_LEM NUMERIC(1,0) =0 OUTPUT,這里是numeric是返回的1位

好象不對吧﹗
nikita007 2007-05-10
  • 打赏
  • 举报
回复
int user_type = Convert.ToInt32(aCommand.Parameters["@TYPE"].Value.ToString());
string f_lem = aCommand.Parameters["F_LEM"].Value.ToString();
string lp_info = aCommand.Parameters["LP_INFO"].Value.ToString();
-------------------
第一句没有问题
第二句就出错了
不知道是什么原因
存储过程中的参数也是对应的
nikita007 2007-05-10
  • 打赏
  • 举报
回复
zhangliu_521(浪客) ( ) 信誉:100 Blog 加为好友 2007-05-10 11:32:46 得分: 0


aCommand.Parameters.Add(new SqlParameter("@LP_INFO", SqlDbType.VarChar, 200));
中的 200 设置小了???


--------------------------
怎么也不可能超过这个值得
而且我单独跑过存储过程
没有一点问题
就是调用后怎么得到输出参数的问题
nikita007 2007-05-10
  • 打赏
  • 举报
回复
就是有三个output啊
这个应该是没问题的
关键是出错提示是
用户代码未处理 System.IndexOutOfRangeException
Message="此 SqlParameterCollection 中未包含带有 ParameterName“F_LEM”的 SqlParameter。"
zhangliu_521 2007-05-10
  • 打赏
  • 举报
回复
aCommand.Parameters.Add(new SqlParameter("@LP_INFO", SqlDbType.VarChar, 200));
中的 200 设置小了???
asdfsadfasdfafa 2007-05-10
  • 打赏
  • 举报
回复
看起来很正常啊

=LS答案
RexZheng 2007-05-10
  • 打赏
  • 举报
回复
怎么有三个output?
nikita007 2007-05-10
  • 打赏
  • 举报
回复
wyhao() ( ) 信誉:100 Blog 加为好友 2007-05-10 12:33:06 得分: 0


string f_lem = aCommand.Parameters["F_LEM"].Value.ToString();
换成string f_lem = aCommand.Parameters["@F_LEM"].Value.ToString();试试



-------------------------
晕死
原来我犯了这么低级的错误
谢谢这位仁兄

110,533

社区成员

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

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

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