CREATE OR REPLACE Procedure p_insert_tb_vulgatecar
(
plateid in Nvarchar2,
platetype in Nvarchar2,
crossingname in Nvarchar2,
crossingtime in Nvarchar2,
wayname in Nvarchar2,
aspectname in Nvarchar2,
processstate in Nvarchar2,
platecolor in Nvarchar2,
speed in Nvarchar2,
illegaltype in Nvarchar2,
checktime in Nvarchar2,
punishpoint in Nvarchar2,
punishcash in Nvarchar2,
blackstate in Number,
filepath in Nvarchar2
)
as
BEGIN
insert into sysadmin.tb_vulgatecar values (VuIdentity.nextval,plateid,platetype,crossingname,to_date(crossingtime,'YYYY-MM-DD HH24:MI:SS'),wayname,aspectname,processstate,platecolor,speed,illegaltype,to_date(checktime,'YYYY-MM-DD HH24:MI:SS'),punishpoint,punishcash,blackstate,filepath);
commit;
End;
我在oracle创建了一个添加数据的存储过程,在VS里调用public static void RunProcedure(string ProName, OracleParameter[] op)
{
     OracleCommand cmd = new OracleCommand();
     cmd.Connection = Conn;
     cmd.CommandText = ProName;
     cmd.CommandType = CommandType.StoredProcedure;
     foreach (OracleParameter param in op)
     {
         cmd.Parameters.Add(param);
     }
     cmd.ExecuteNonQuery();
}
public static void AddProcedure(string plateid, string platetype, string crossingname, string crossingtime, string wayname, string aspectname, string processstate, string platecolor, string speed, string illegaltype, string checktime, string punishpoint, string punishcash, string blackstate, string filepath)
        {
            OracleParameter[] op = new OracleParameter[]{
                new OracleParameter("plateid",OracleType.NVarChar),
                new OracleParameter("platetype",OracleType.NVarChar),
                new OracleParameter("crossingname",OracleType.NVarChar),
                new OracleParameter("crossingtime",OracleType.NVarChar),
                new OracleParameter("wayname",OracleType.NVarChar),
                new OracleParameter("aspectname",OracleType.NVarChar),
                new OracleParameter("processstate",OracleType.NVarChar),
                new OracleParameter("platecolor",OracleType.NVarChar),
                new OracleParameter("speed",OracleType.NVarChar),
                new OracleParameter("illegaltype",OracleType.NVarChar),
                new OracleParameter("checktime",OracleType.NVarChar),
                new OracleParameter("punishpoint",OracleType.NVarChar),
                new OracleParameter("punishcash",OracleType.NVarChar),
                new OracleParameter("blackstate",OracleType.Number),
                new OracleParameter("filepath",OracleType.NVarChar)
            };
            op[0].Value = plateid;
            op[1].Value = platetype;
            op[2].Value = crossingname;
            op[3].Value = crossingtime;
            op[4].Value = wayname;
            op[5].Value = aspectname;
            op[6].Value = processstate;
            op[7].Value = platecolor;
            op[8].Value = speed;
            op[9].Value = illegaltype;
            op[10].Value = checktime;
            op[11].Value = punishpoint;
            op[12].Value = punishcash;
            op[13].Value = blackstate;
            op[14].Value = filepath;
            op[0].Direction = ParameterDirection.Input;
            op[1].Direction = ParameterDirection.Input;
            op[2].Direction = ParameterDirection.Input;
            op[3].Direction = ParameterDirection.Input;
            op[4].Direction = ParameterDirection.Input;
            op[5].Direction = ParameterDirection.Input;
            op[6].Direction = ParameterDirection.Input;
            op[7].Direction = ParameterDirection.Input;
            op[8].Direction = ParameterDirection.Input;
            op[9].Direction = ParameterDirection.Input;
            op[10].Direction = ParameterDirection.Input;
            op[11].Direction = ParameterDirection.Input;
            op[12].Direction = ParameterDirection.Input;
            op[13].Direction = ParameterDirection.Input;
            op[14].Direction = ParameterDirection.Input;
            DBHelper.RunProcedure("p_insert_tb_vulgatecar", op);
}
界面调用:
string plateid = TextBox1.Text;
        string platetype = TextBox2.Text;
        string crossingname = TextBox3.Text;
        string crossingtime = TextBox4.Text;
        string wayname = TextBox5.Text;
        string aspectname = TextBox6.Text;
        string processstate = TextBox7.Text;
        string platecolor = TextBox8.Text;
        string speed = TextBox9.Text;
        string illegaltype = TextBox10.Text;
        string checktime = TextBox11.Text;
        string punishpoint = TextBox12.Text;
        string punishcash = TextBox13.Text;
        string blackstate = TextBox14.Text;
        string filepath = TextBox15.Text;
        TestBLL.AddProcedure(plateid, platetype, crossingname, crossingtime, wayname, aspectname, processstate, platecolor, speed, illegaltype, checktime, punishpoint, punishcash, blackstate, filepath);运行的时候会报错,错误是“必须说明标识符 'P_INSERT_TB_VULGATECAR'”,请问应该如何修改呢?谢谢各位了

解决方案 »

  1.   

    在你的SqlCommand 对象建立的时候要指明存储过程名称!
    SqlCommand command = new SqlCommand(storedProcName, connection);
      

  2.   

    必须说明标识符 'P_INSERT_TB_VULGATECAR'
    存储过程有问题
    你这oracle存储过程,除了什么像oracle外,其他的我怎么看像sql server?
    在oracle上测试存储过程能通过吗?
      

  3.   

    改完还是报必须说明标识符 'P_INSERT_TB_VULGATECAR'这个问题
      

  4.   

    有人知道这是为什么吗?在oracle里调用这个存储过程的时候可以正常添加数据,拜托各位了!