引用存储过程中的输出参数出错,请帮忙看看,谢谢
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

解决方案 »

  1.   

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

  2.   

    就是有三个output啊
    这个应该是没问题的
    关键是出错提示是
    用户代码未处理 System.IndexOutOfRangeException
      Message="此 SqlParameterCollection 中未包含带有 ParameterName“F_LEM”的 SqlParameter。"
      

  3.   

    zhangliu_521(浪客) ( ) 信誉:100    Blog   加为好友  2007-05-10 11:32:46  得分: 0  
     
     
       aCommand.Parameters.Add(new SqlParameter("@LP_INFO", SqlDbType.VarChar, 200));
    中的 200  设置小了???
      
     
    --------------------------
    怎么也不可能超过这个值得
    而且我单独跑过存储过程
    没有一点问题
    就是调用后怎么得到输出参数的问题
      

  4.   

    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();
    -------------------
    第一句没有问题
    第二句就出错了
    不知道是什么原因
    存储过程中的参数也是对应的
      

  5.   

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

  6.   

    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位好象不對吧﹗
    --------------------------
    这个是没关系的
    不会有问题 
      

  7.   

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

  8.   

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

  9.   

    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  创建未成功....
      
     
    ------------------------
    这个是什么意思?
      

  10.   

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

  11.   

    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();试试  
     
    -------------------------
    晕死
    原来我犯了这么低级的错误
    谢谢这位仁兄