ORACLE与.NET类型对应关系

想来这个是最重要的事情了,因为多数情况下,我们使用dbhelper来调用数据库的时候,是因为如下三个地方导致错误:
1、错误的sql语句:末尾多了分号,少了部分关键字
2、sql中的参数与parameter[]不对应。
3、parasmeter[]中的数据类型转为Oracle的数据类型中出错。
通常情况下,我们大设置paramenter[]时,只会给出变量名和对应的值(多数是.NET中的变量)去让ODP自动执行数据类型转换,而ODP一般都可以正确的转换,但是,有时候也会出现一些意外的情况,这时,就需要我们手动来明确的设置。

ODP.NET的数据类型以结构体或者类的形式来支持ORACLE的本地类型以及PL/SQL的数据类型。其中结构体是值类型,而类则是引用类型。
ORACLE的数据类型比.NET自己的数据类型具有更大的优势,比如OracleDecimal支持38位而.NET的Decimal只支持28位。

下面表中展示了ORACLE数据库的本地类型(包含PL/SQL的)、ODP.NET的数据类型以及.NET的数据类型的对应关系。
而我们要关心的是把.NET的数据类型转为正确的ODP.NET数据类型就ok了,剩下的操作ODP.NET会帮助我们转换,说白了,就是我们在
New OracleParamter(){ParameterName=":name",Value=var}的时候,确保我们的.NET类型var与数据库中的对应,或者在我们.NET数据类型无法满足使用的时候,使用ODP.NET的类型声明变量类型。

Oracle Native Data Type or PL/SQL Data Type
ODP.NET Type
.NET Framework Data Types
BFILE
OracleBFile class
System.Byte[]
BINARY_DOUBLE
OracleDecimal structure
System.Decimal
BINARY_FLOAT
OracleDecimal structure
System.Decimal
BINARY_INTEGER (PL/SQL only)
OracleDecimal structure
System.Decimal
BLOB
OracleBlob class
System.Byte[]
BOOLEAN (PL/SQL only)
OracleBoolean structure
System.Boolean
CHAR
OracleString structure
System.String
CLOB
OracleClob class
System.String
DATE
OracleDate structure
System.DateTime
INTERVAL DAY TO SECOND
OracleIntervalDS structure
System.TimeSpan
INTERVAL YEAR TO MONTH
OracleIntervalYM structure
System.Int64
LONG
OracleString structure
System.String
LONG RAW
OracleBinary structure
System.Byte[]
NCHAR
OracleString structure
System.String
NCLOB
OracleClob class
System.String
NUMBER
OracleDecimal structure
System.Decimal
NVARCHAR2
OracleString structure
System.String
PLS_INTEGER (PL/SQL only)
OracleDecimal Structure
System.Decimal
RAW
OracleBinary structure
System.Byte[]
REF
OracleRef class
System.String
REF CURSOR (PL/SQL only)
OracleRefCursor class
Not Applicable
ROWID
OracleString structure
System.String
TIMESTAMP
OracleTimeStamp structure
System.DateTime
TIMESTAMP WITH LOCAL TIMEZONE
OracleTimeStampLTZ structure
System.DateTime
TIMESTAMP WITH TIME ZONE
OracleTimeStampTZ structure
System.DateTime
UROWID
OracleString structure
System.String
VARCHAR2
OracleString structure
System.String
XMLType
OracleXmlType class
System.String

需要注意的是:

  • 所有数字类型都使用DECIMAL,除了INTERVAL YEAR TO MONTH对应INT64除外(这个类型我们基本不会使用到)。
  • ROWID,UROWID使用的是STRING而不是数字类型.
  • 时间相关的全部使用DateTime,除了INTERVAL DAY TO SECOND使用TimeSpan(这个类型我们基本不会使用到)。
  • RAW使用的是Byte[],所以,LONG RAW使用的也是Byte[].

ORACLE与.NET类型对应关系(转)的更多相关文章

  1. Oracle Data Provider for .NET的使用(三)-ORACLE与.NET类型对应关系

    想来这个是最重要的事情了,因为多数情况下,我们使用dbhelper来调用数据库的时候,是因为如下三个地方导致错误: 1.错误的sql语句:末尾多了分号,少了部分关键字 2.sql中的参数与parame ...

  2. ORACLE插入DATE类型字段

    1 怎样在ORACLE中输入DATE类型的字段 insert into table_name (date_column) values(to_date('2006-06-04','yyyy-mm-dd ...

  3. Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值

    感谢原作者:破剑冰-Oracle中Clob类型处理解析 上一篇分析:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 最近为Clob字段在插入数据时发现当字符的字节数(一个半角字符一 ...

  4. Oracle修改字段类型和长度

    Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle修改字段类型和长度 alter table 表名 modify 字段名 数据类型 ...

  5. Oracle改动字段类型和长度

    Oracle改动字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle改动字段类型和长度 alter table 表名 modify 字段名 数据类型 ...

  6. oracle中日期类型 to_date 和to_timestamp什么区别啊?

    1.to_date() 和to_timestamp()区别 由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒.如果要取到毫秒,oracle 9i以上版本,可以 ...

  7. 【转载】MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解

    [原文链接]:MyBatis JdbcType 与Oracle.MySql数据类型对应关系详解 1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 2. Mybatis ...

  8. oracle数据库数值类型

    ---恢复内容开始--- 内容摘自网络 Oracle的数值类型有int,number,float,decimal,numberic等. NUMBER类型   定义   定义格式NUMBER (prec ...

  9. 解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

    前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,my ...

随机推荐

  1. javascript 函数学习

    1.自以为好的部分,更多访问: http://www.runoob.com/js/js-tutorial.html 2.this 3.new 4.闭包 5.自执行

  2. 【BZOJ3529】【莫比乌斯反演 + 树状数组】[Sdoi2014]数表

    Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为 能同时整除i和j的所有自然数之和.给定a,计算数表中不大于 ...

  3. 九度OJ 1107 搬水果 -- 哈夫曼树 2011年吉林大学计算机研究生机试真题

    题目地址:http://ac.jobdu.com/problem.php?pid=1107 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果 ...

  4. IOS 学习笔记 2015-03-20 OC-数值类型

    一 定义 在Objective-C中,我们可以使用c中的数字数据类型,int.float.long等.它们都是基本数据类型,而不是对象.也就是说,不能够向它们发送消息.然后,有些时候需要将这些值作为对 ...

  5. ASP.NET数据绑定控件

    数据绑定控件简介 数据绑定分为:数据源 和 数据绑定控件 两部分,数据绑定控件通过数据源来获得数据,通过数据源来隔离数据提供者和数据使用者,数据源有:SqlDataSource,AccessDataS ...

  6. which命令

    which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果. 格式 which 可执行文件名称 参数 -V  显示版本信息 实例 用 which 去找出 which w ...

  7. wamp的mysql密码修改

    ==方法1== 通过WAMP打开mysql控制台,提示输入密码,因为现在是空,所以直接按回车. 输入“use mysql”,意思是使用mysql这个数据库教程,提示“Database changed” ...

  8. 在使用MOS管时要注意的问题

    1.当Vds电压增大,Ciss增大,栅极充放电电流也会增大 2.MOS管的功率损耗要控制在额定功耗以下 3.在Buck电路中,开关MOS管的Vds在MOS管关断时会非常大

  9. Makefile与shell脚本的区别

    引用博客:Makefile与shell脚本区别 在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的.本文试着归纳一下Makefile和shell脚本的不同. 1.s ...

  10. chrome浏览器默认样式覆盖input背景

    问题描述:input表单添加了背景图片,结果自动填充是,编程了一个淡黄色矩形方框. 解决方案:网上查询了很多的解决方式,基本都不管用,这里我简单说两个. 1.去除黄色背景 input:-webkit- ...