调试时出错
错误提示:ORA-06550: 第 1 行, 第 7 列: 
PLS-00306: 调用 'ADDNEWSMS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored调用存储过程往表里面填加数据,程序中的参数类型和个数和储存过程中的都是一样
有谁知道这是什么原因吗?谢谢!CREATE OR REPLACE PROCEDURE AddNewSMS

in_YWDM in SMS.YWDM%TYPE,
in_MSGID in SMS.MSGID%TYPE,
in_DESTNUM in SMS.DESTNUM%TYPE,
in_MSGBODY in SMS.MSGBODY%TYPE,
in_ZT in SMS.ZT%TYPE,
in_BZ in SMS.BZ%TYPE,
in_PLANTIME in VARCHAR2
)C#程序:public void SpExeFor(string m_YWDM,int m_MSGID,string m_DESTNUM,
             string m_MSGBODY, int m_ZT,string m_BZ, string m_PLANTTIME)
         {
                //存储过程的参数声明
              OracleParameter[] parameters={    
                                new OracleParameter("in_YWDM",OracleType.VarChar,20),
                                new OracleParameter("in_MSGID",OracleType.Int32),
                                new OracleParameter("in_DESTNUM",OracleType.Char,11),
                                new OracleParameter("in_MSGBODY",OracleType.VarChar,140),
                                new OracleParameter("in_ZT",OracleType.Int32),               
                                new OracleParameter("in_BZ",OracleType.VarChar,200),
                                new OracleParameter("in_PLANTTIME",OracleType.VarChar,30)
              };
              parameters[0].Value=m_YWDM;
              parameters[1].Value=m_MSGID;
              parameters[2].Value=m_DESTNUM;
              parameters[3].Value=m_MSGBODY;
              parameters[4].Value = m_ZT;
              parameters[5].Value=m_BZ;
              parameters[6].Value=m_PLANTTIME;              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;
              try
              {
                  RunProcedure("AddNewSMS", parameters);
                 // return parameters[1].Value.ToString();
              }
              catch(Exception e)
              {
                  throw e;
              }
         }
调用过程:   string ywdm="JWT";
              int msgId=11;
              string destnum="13787209648";
              string msgbody="你好";
              int zt=0;
              string bz="一般";
              string planTime ="2007-11-20 9:06:23";
              SpExeFor(ywdm, msgId, destnum, msgbody, zt, bz, planTime);

解决方案 »

  1.   

    new   OracleParameter( "in_YWDM ",OracleType.VarChar,20), 
                                                                    new   OracleParameter( "in_MSGID ",OracleType.Int32), 
                                                                    new   OracleParameter( "in_DESTNUM ",OracleType.Char,11), 
                                                                    new   OracleParameter( "in_MSGBODY ",OracleType.VarChar,140), 
                                                                    new   OracleParameter( "in_ZT ",OracleType.Int32),                               
                                                                    new   OracleParameter( "in_BZ ",OracleType.VarChar,200), 
                                                                    new   OracleParameter( "in_PLANTTIME ",OracleType.VarChar,30) 应该是这段的类型有错误,试着把Int32改为Int64看看!