★★★Oracle sql 传参特别注意★★★
最近遇到一个非常烦人的问题,用传参的方式执行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
★★★Oracle sql 传参特别注意★★★的更多相关文章
- Quick BI的SQL传参建模可以用在什么场景
Quick B的SQL传参建模功能提供基于SQL的数据加工处理能力,减轻了IT支撑人员的工作量.在即席查询SQL中,我们用物理字段显示别名来表示参数的占位符,配置完占位符后,就可以在查询控件中进行参数 ...
- shell动态向sql传参
一直在想有什么好方法可以实现,用shell动态给sql传参,自己写了一个简单,有什么好方法,欢迎留言补充,下面代码纯手打,可能有疏忽之处,请大佬批评指正指正. 实现方法如下: 1.新建一个文件02.t ...
- Mybatis中使用 #{} 和 ${} 向sql传参时的区别
今天在工作时,使用MyBatis中向sql传递两个参数时,一直显示SQL语法错误,仔细检查,才发现传入的参数被加上了引号,导致传入的参数(要传入的参数是表名)附近出现语法错误. 错误写法: } a } ...
- Sql传参含有单引号
程序 exec heduling_date_select ' Name like @%a%@ or phone like @%a%@ or Cus_code like @%a%@ or objjc l ...
- c# 执行调用Oracle Procedure传参及回传值
////定義參數 //IDataParameter[] parameters = // { ...
- Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)
在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示 ...
- Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合
Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合 string sqlstr="select * from tblname where name like ...
- 【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参
转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...
- sqlmap动态sql优化,避免传参失误批量修改和删除操作!
分析以下的sqlmap存在问题: <delete id="deletePartspic" parameterClass="TblSpPartspic"&g ...
随机推荐
- [知识笔记]Java 基本数据类型的大小、取值范围、默认值
数据类型 大小(字节) 范围 默认值 boolean 1/8(1bit) true/false false byte 1 -128~127 (-2^7~2^7-1) 0 short 2 -32768~ ...
- js == 与 === 的区别
1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进 ...
- ECMAScript 5
2009年12月,ECMAScript 5.02011年6月,ECMAscript 5.1版发布2015年6月,ECMAScript 6正式通过,成为国际标准ES6第一个版本 ES2015,发布于20 ...
- 实时控制软件设计作业_01——汽车ABS系统分析
制动防抱死系统(antilock brake system)简称ABS.作用就是在汽车制动时,自动控制制动器制动力的大小,使车轮不被抱死,处于边滚边滑(滑移率在20%左右)的状态,以保证车轮与地面的附 ...
- SpringMVC(一) SpringMVC概述
SpringMVC为展现层提供的基于MVC设计理念的优秀的WEB框架,是目前主流的MVC框架之一.Spring 3.0之后,超越Struts2成为最优秀的MVC框架. SpringMVC通过一套MVC ...
- 消息中间件MetaQ高性能原因分析-转自阿里中间件
简介 MetaQ是一款高性能的消息中间件,经过几年的发展,已经非常成熟稳定,历经多年双11的零点峰值压测,表现堪称完美. MetaQ当前最新最稳定的稳本是3.x系统,MetaQ 3.x重新设计和实现, ...
- Fiddler问题 - creation of the root certificate was not successful
打开cmd执行命令. d: cd D:\soft\Fiddler2 makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_ ...
- 返水bug-中澳
NOOK(Y) CSBFB(30000) off(N) QQ(2652880032) G(1) off1(Y) QQ1(3479301404) G1(1) off2(N) QQ2(309235846) ...
- servlet jsp jdbc bootstrarp mvc分层模式实现的第一个项目
登录注册界面 这是一个注册和登录的界面 用到了前端页面中自带的一点H5的标签和属性---巩固下 邮箱格式 :type="email" 不能为空: required=" ...
- SPOJ DQUERY D-query(主席树)
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...