最近遇到一个非常烦人的问题,用传参的方式执行sql语句结果老是报 Oracle ORA-01722: 无效数字 一直无法找到原因。

表结构大致如下:

table test_station

tblRcdId varchar2(50) sys_guid(),--标识列

strLon number(10,6), --经度

strLat number(10,6) --纬度

更新代码如下:

string sql = "update test_station set strlon=:strlon,strlat=:strlat where tblrcdId=:tblrcdId";

List<OracleParameter> param_list = new List<OracleParameter>();
param_list.Add(new OracleParameter("tblrcdId", OracleDbType.Varchar2, ParameterDirection.Input));
param_list[0].Value = "10DDEB47EC0AC6E0E0531F2C220AB47E";
param_list.Add(new OracleParameter("strlon02", OracleDbType.Double, ParameterDirection.Input));
param_list[1].Value = 121.123456d;
param_list.Add(new OracleParameter("strlat02", OracleDbType.Double, ParameterDirection.Input));
param_list[2].Value = 31.123456d;

// 执行sql语句代码

int flag = DBContext.ExecSql(sql,param_list.ToArray());

结果一直报错 Oracle ORA-01722: 无效数字

查找原因许久一直没有结果,很是让人郁闷。不知大家是否发现问题所在???

后来把添加参数的顺序改为按sql语句中参数的顺序添加,如下:

List<OracleParameter> param_list = new List<OracleParameter>();
param_list.Add(new OracleParameter("strlon02", OracleDbType.Double, ParameterDirection.Input));
param_list[0].Value = 121.123456d;
param_list.Add(new OracleParameter("strlat02", OracleDbType.Double, ParameterDirection.Input));
param_list[1].Value = 31.123456d;
param_list.Add(new OracleParameter("tblrcdId", OracleDbType.Varchar2, ParameterDirection.Input));
param_list[2].Value = "10DDEB47EC0AC6E0E0531F2C220AB47E";

然后再次执行,竟然成功了。

很是纳闷,既然有参数名,为何参数列表的顺序还必须和sql中参数的顺序保持一致?难道不是自动去对应的么?

特在此发文记录,以作提醒!

终于从网上发现解决方法:

设置属性: OracleCommand.BindByName = true; // 默认是false,是按参数顺序匹配值的。

请参考:http://www.cnblogs.com/gucsnet/archive/2007/07/16/820399.html

最新文章

  1. js设置css样式.
  2. 这些年学过的FPGA
  3. Hibernate之全面认识
  4. dev中控件属性设置
  5. Js控制iFrame切换加载网址
  6. shell 脚本注意事项
  7. 从RTSP协议SDP数据中获得二进制的SPS、PPS
  8. IOS6学习笔记(一)
  9. swift函数和初始化控件(// MARK:分割线)
  10. ZRender源码分析6:Shape对象详解之路径
  11. umdh工具使用
  12. OpenGL绘制简单场景,实现旋转缩放平移和灯光效果
  13. mlpack:可伸缩C++机器学习库(转)
  14. the selected server is enabled,but is not configured properly.Deployment to it will not be permitted
  15. HttpWebRequest 抓取页面异常处理办法
  16. KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)
  17. 鼠标相关操作(Cursor类及相关API)
  18. linux镜像下载
  19. List Leave
  20. LOJ-10096(强连通+bfs)

热门文章

  1. 如何生成git的公钥和私钥
  2. 分布式之ZookeeperMac安装
  3. plsql查找不到带中文的纪录
  4. Blender 脚本之 Operator 初探
  5. .Net中Remoting通信机制简单实例
  6. Error staring Tomcat Cannot connect to VM错误解决办法
  7. CPU状态信息us,sy,ni,id,wa,hi,si,st含义
  8. SQL谜题(加减符号替代)
  9. Maven的pom.xml 配置详解
  10. Java多线程之构造与发布