zoukankan      html  css  js  c++  java
  • ORACLE与.NET类型对应关系(转)

    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[].
  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5280822.html
Copyright © 2011-2022 走看看