引用存储过程中的输出参数出错,请帮忙看看,谢谢
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
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
中的 200 设置小了???
这个应该是没问题的
关键是出错提示是
用户代码未处理 System.IndexOutOfRangeException
Message="此 SqlParameterCollection 中未包含带有 ParameterName“F_LEM”的 SqlParameter。"
aCommand.Parameters.Add(new SqlParameter("@LP_INFO", SqlDbType.VarChar, 200));
中的 200 设置小了???
--------------------------
怎么也不可能超过这个值得
而且我单独跑过存储过程
没有一点问题
就是调用后怎么得到输出参数的问题
string f_lem = aCommand.Parameters["F_LEM"].Value.ToString();
string lp_info = aCommand.Parameters["LP_INFO"].Value.ToString();
-------------------
第一句没有问题
第二句就出错了
不知道是什么原因
存储过程中的参数也是对应的
是9位的
@F_LEM NUMERIC(1,0) =0 OUTPUT,這里是numeric是返回的1位好象不對吧﹗
ommand.Parameters.Add(new SqlParameter("@F_LEM", SqlDbType.Decimal));這里是Decimal的
是9位的
@F_LEM NUMERIC(1,0) =0 OUTPUT,這里是numeric是返回的1位好象不對吧﹗
--------------------------
这个是没关系的
不会有问题
=========================================================================
F_LEM 创建未成功....
这里的@F_LEM名字必须和存储过程里的一样,你那里的是@F_LEMNUMERIC
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 创建未成功....
------------------------
这个是什么意思?
换成string f_lem = aCommand.Parameters["@F_LEM"].Value.ToString();试试
string f_lem = aCommand.Parameters["F_LEM"].Value.ToString();
换成string f_lem = aCommand.Parameters["@F_LEM"].Value.ToString();试试
-------------------------
晕死
原来我犯了这么低级的错误
谢谢这位仁兄