public struct UpdataStruct
    {
        public string arg_Lsh;//流水号
        public string  SFZHM;//身份证
        public string KSCX;//考试车型
        public DateTime arg_Ksrq;//考试日期
        public int arg_Kscj;// 考试成绩
        public int arg_Kscs;// 考试次数
        public string arg_Ksy1;// 考试员
        public string arg_Ksy2;// 考试员
        public string Zt;//考试状态
        public string arg_Sn;// 序列号,与原接口序列号一致
        public int arg_Res;// 返回结果
        public string arg_Err;// 错误描述
     
    }OracleParameter[] parameters ={ new OracleParameter("lsh",OracleType.VarChar,11),
                         new OracleParameter("sfzmhm",OracleType.VarChar,18),
                         new OracleParameter("kscx",OracleType.VarChar,2),
                         new OracleParameter("ksrq",OracleType.DateTime,8),
                         new OracleParameter("kscj",OracleType.Int16,3),
                         new OracleParameter("kscs",OracleType.Int16,2),
                         new OracleParameter("ksy1",OracleType.VarChar,30),
                         new OracleParameter("ksy2",OracleType.VarChar,30),
                         new OracleParameter("jbr",OracleType.VarChar,30),
                         new OracleParameter("zt",OracleType.VarChar,1),
                         new OracleParameter("sn",OracleType.VarChar,32),
                         new OracleParameter("res",OracleType.Int16,1),
                         new OracleParameter("err",OracleType.VarChar,50)};
                parameters[0].Value = UpdataS.arg_Lsh;
                parameters[1].Value = UpdataS.SFZHM;
                parameters[2].Value = UpdataS.KSCX;
                parameters[3].Value = UpdataS.arg_Ksrq;
                parameters[4].Value = UpdataS.arg_Kscj;
                parameters[5].Value = UpdataS.arg_Kscs;
                parameters[6].Value = UpdataS.arg_Ksy1;
                parameters[7].Value = UpdataS.arg_Ksy2;
                parameters[8].Value = "王青博";
                parameters[9].Value = UpdataS.Zt;
                parameters[10].Value = UpdataS.arg_Sn;                parameters[0].Direction = ParameterDirection.Input;
                parameters[1].Direction = ParameterDirection.Input;
                parameters[2].Direction = ParameterDirection.Input;
                parameters[3].Direction = ParameterDirection.Input;
                parameters[4].Direction = ParameterDirection.Input;
                parameters[5].Direction = ParameterDirection.Input;
                parameters[6].Direction = ParameterDirection.Input;
                parameters[7].Direction = ParameterDirection.Input;
                parameters[8].Direction = ParameterDirection.Input;
                parameters[9].Direction = ParameterDirection.Input;
                parameters[10].Direction = ParameterDirection.Input;
                parameters[11].Direction = ParameterDirection.Output;
                parameters[12].Direction = ParameterDirection.Output;
                string slq = "DRV_ADMIN.DRV_INTERFACE.WRITE_KM2";
                Oracle_DataBC.CreateQueryCommand(slq, parameters);  public void CreateQueryCommand(string procName,  OracleParameter[] prams)
        {
            OracleCommand cmd;
            Open();
            try
            {
                cmd = new OracleCommand(procName, orl_con);
                cmd.CommandType = CommandType.StoredProcedure;                foreach (OracleParameter parameter in prams)
                {
                    cmd.Parameters.Add(parameter);
                }
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw (e);
            }
            finally
            {
                this.Close();
            }        }
错误信息
09051576086*370303199003043517*C1*2009-8-15 10:44:40*80*1*唐丽霞*武斌*1
System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'WRITE_KM2'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored   at DataDao.DataBaseClass.CreateQueryCommand(String procName, OracleParameter[]& prams)
   at DataDao.UpdateData.UpOracleData(UpdataStruct UpdataS, String& errorTxt)

解决方案 »

  1.   

    DRV_ADMIN.DRV_INTERFACE.WRITE_KM2
    看看这个存储过程都需要些什么名称和类型的参数。
      

  2.   

    参数数据类型没匹配的上?int 的 可能弄成string 的了等等OracleParameter[] parameters ={ new OracleParameter("lsh",OracleType.VarChar,11), 
    。这一块,,,再跟数据库的表的字段对比一下
      

  3.   

    存储过程拿出来看看,才知道的
    09051576086 * 370303199003043517 * C1 * 09年8月15日10时44分40秒* 80 * 1 *唐丽霞*武斌* 1  System.Data.OracleClient.OracleException:欧劳- 06550:第1行,第7列: 偏最小二乘- 00306:错号码或在调用的参数类型'WRITE_KM2' Ora- 06550:第1行,第7列:  PL / SQL程序:语句被忽略
      

  4.   

    从错误提示上看,是提示你参数个数或类型出错了,你看看你的参数列表和存储过程的参数列表是否一致,另外构造整型类型的参数,没有必要指定长度啊。(new OracleParameter("kscs",OracleType.Int16,2), 
    )
      

  5.   

    这是一个公安部提供的借口  drv_interface.write_km2(string lsh,string sfzmhm,string kscx,datetime ksrq,integer kscj,integer kscs,string ksy1,string ksy2,string jbr,string zt,string sn,integer res,string err)
    lsh 流水号\ sfzmhm 身份证\kscx 考试车型\ksrq 考试日期\kscj 考试成绩\kscs考试次数\ksy1监考员1\ksy2 监考员2\jbr 经办人\zt 考试结果 \sn 考试认证码 \res 返回值 \err错误描述
      

  6.   

    可能是传入参数值类型与数据库字段类型不匹配造成,另构造函数中有12个变量,而存储过程中却有13个变量【多出JBR 是什么?】
      

  7.   

    drv_interface.write_km2(string lsh,string sfzmhm,string kscx,datetime ksrq,integer kscj,integer kscs,string ksy1,string ksy2,string jbr,string zt,string sn,integer res,string err) 
    lsh 流水号\ sfzmhm 身份证\kscx 考试车型\ksrq 考试日期\kscj 考试成绩\kscs考试次数\ksy1监考员1\ksy2 监考员2\jbr 经办人\zt 考试结果 \sn 考试认证码 \res 返回值 \err错误描述 
      

  8.   

    关键是哪里错了? drv_interface.write_km2(string lsh,string sfzmhm,string kscx,datetime ksrq,integer kscj,integer kscs,string ksy1,string ksy2,string jbr,string zt,string sn,integer res,string err)