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

出现此错误的原因很可能是存储过程的包体的参数定义与包头的定义不一样,很多时候修改了包体,却忘了修改包头。 另外,创建OracleParameter时,由于构造函数的版本众多,使用了某些版本时,可能会出现这个错误,建议创建OracleParameter时,一定要指定OracleType。 直接使用Sql 语句时,在Sql 语句中的 参数部分没有使用冒号作为前缀,或者错误使用了Sql Server 的"@"符号都会导致此错误。

总之此错误出现在Parameter指定的ParameterName,与实际参数名称不匹配时。要注意:在 new OracleParameter() 中,指定的ParameterName 只需要包含参数的字符部分,无需保含前缀,如:冒号。 简单点:@ 改成 :

  SqlClient参数表达式:@ParameterName   
  OracleClient参数表达式::ParameterName   
  OleDB.Net参数表达式:?  

 

通过使用OleDb操作Oracle数据库,成功实现图片上传到Blob类型的字段,但有时会发生ORA-01036错误的问题,经查询是错误提示为illegal variable name/number。


 SqlHelper.ExecuteNonQuery(SqlHelper.XYLQ_Connstr, @"INSERT INTO LBMS_QLR (QLR_BH,QLRLX,DWGR,FDDBRZYFZR,TXDZ,SFZBH,XIAN,XIANG,CUN) 
           VALUES(:QLR_BH,:QLRLX,:DWGR,:FDDBRZYFZR,:TXDZ,:SFZBH,:XIAN,:XIANG,:CUN)", new OracleParameter(":QLR_BH", pQlr.QLR_QLR_BH), new OracleParameter(":QLRLX", pQlr.QLR_QLRLX), new OracleParameter(":DWGR", pQlr.QLR_DWGR), new OracleParameter(":FDDBRZYFZR", pQlr.QLR_FDDBRZYFZR), new OracleParameter(":TXDZ", pQlr.QLR_TXDZ), new OracleParameter(":SFZBH", pQlr.QLR_SFZBH), new OracleParameter(":XIAN", pQlr.QLR_XIAN), new OracleParameter(":XIANG", pQlr.QLR_XIANG), new OracleParameter(":CUN", pQlr.QLR_CUN));


你可能感兴趣的:(oracle,sql,C#)