ORA-01036:使用SP的非法变量名称/编号错误

时间:2016-09-24 07:30:15

标签: mysql asp.net oracle stored-procedures

我正在使用SP将数据插入到我的表格中。

以下是我的SP

CREATE OR REPLACE PROCEDURE XXCUS.pn_insert_grid_agreeement (
        mkey             NUMBER,
        stattype         VARCHAR2,
        ref_no           NUMBER,
        ref_date         DATE,
        STAT_712         varchar2,  
        trantype         VARCHAR2,
        createdby        NUMBER,
        creationdate     DATE,
        lastupdatedate   DATE,
        lastupdatedby    NUMBER,
        deleteflag       CHAR
    )
    IS
    BEGIN
   INSERT INTO xxcus.xxacl_pn_agrmt_grd
           (mkey, stat_type, ref_no, ref_date, stat_7_12, tran_type,
            created_by, creation_date, last_update_date,
            last_updated_by, delete_flag
           )
    VALUES (mkey, stattype, ref_no, ref_date, STAT_712, trantype, createdby,
            creationdate, lastupdatedate, lastupdatedby,
            deleteflag
           );
    END;

我想将数据插入到我的xxcus.xxacl_pn_agrmt_grd表中。所以在我的代码背后,我写了这样的

OracleConnection ObjPriCon = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
    ObjPriCon.Open();
    string strQuery = "XXCUS.pn_insert_grid_agreeement";
    OracleCommand cmd = new OracleCommand(strQuery, ObjPriCon);

    string mkey = "1";

    cmd.Parameters.Add("mkey", OracleType.Number).Value = Convert.ToInt32(mkey);
    cmd.Parameters.Add("stattype", OracleType.VarChar).Value = e.Record["STAT_TYPE"];
    cmd.Parameters.Add("ref_no", OracleType.Number).Value = Convert.ToInt32(e.Record["ref_no"]);
    cmd.Parameters.Add("ref_date", OracleType.DateTime).Value = Convert.ToDateTime(e.Record["ref_date"]);
    cmd.Parameters.Add("STAT_712", OracleType.VarChar).Value = e.Record["stat_7_12"];
    cmd.Parameters.Add("trantype", OracleType.VarChar).Value = "AD";
    cmd.Parameters.Add("createdby", OracleType.Number).Value = Convert.ToInt32(Request.QueryString["userid"]);
    cmd.Parameters.Add("creationdate", OracleType.DateTime).Value = DateTime.Now.ToString();
    cmd.Parameters.Add("lastupdatedate", OracleType.DateTime).Value = DateTime.Now.ToString();
    cmd.Parameters.Add("lastupdatedby", OracleType.Number).Value = Convert.ToInt32(Request.QueryString["userid"]);
    cmd.Parameters.Add("deleteflag", OracleType.Char).Value = "N";
    cmd.ExecuteNonQuery(); // here is error
    ObjPriCon.Close();

但在保存时我得到错误

  

ORA-01036:非法变量名称/编号

我已根据需要使用数据类型正确指定了所有列。

另见我的表结构。

CREATE TABLE XXCUS.XXACL_PN_AGRMT_GRD
        (
      MKEY              NUMBER(10)                  NOT NULL,
      USER_ID           NUMBER(10),
      STAT_TYPE         VARCHAR2(50 BYTE),
      REF_NO            NUMBER(10),
      REF_DATE          DATE,
      STAT_7_12         VARCHAR2(100 BYTE),
      TRAN_TYPE         VARCHAR2(3 BYTE)            NOT NULL,
      CREATED_BY        NUMBER(10),
      CREATION_DATE     DATE,
      LAST_UPDATE_DATE  DATE,
      LAST_UPDATED_BY   NUMBER(10),
      DELETE_FLAG       CHAR(1 BYTE),
      ATTRIBUTE1        VARCHAR2(255 BYTE),
      ATTRIBUTE2        VARCHAR2(255 BYTE),
      ATTRIBUTE3        VARCHAR2(255 BYTE),
      ATTRIBUTE4        VARCHAR2(255 BYTE),
      ATTRIBUTE5        VARCHAR2(255 BYTE),
      ATTRIBUTE6        VARCHAR2(255 BYTE),
      ATTRIBUTE7        VARCHAR2(255 BYTE),
      ATTRIBUTE8        VARCHAR2(255 BYTE),
      ATTRIBUTE9        VARCHAR2(255 BYTE),
      ATTRIBUTE10       VARCHAR2(255 BYTE),
      ATTRIBUTE11       VARCHAR2(255 BYTE),
      ATTRIBUTE12       VARCHAR2(255 BYTE),
      ATTRIBUTE13       VARCHAR2(255 BYTE),
      ATTRIBUTE14       VARCHAR2(255 BYTE),
      ATTRIBUTE15       VARCHAR2(255 BYTE)
    )

请让我知道错误是什么。

0 个答案:

没有答案