• Oracle数据类型与.NET中的对应关系


    Oracle连接添加的引用不同,会存在数据类型不同以及其他一些差别,就工作中遇到的问题暂时总结下。

    两种不同的添加引用语句:

    (1)System.Data.OracleClient;

    (2)Oracle.DataAccess.Client;

    Oracle.DataAccess.Type;

    采用第二种引用,创建的OracleCommand实例有ArrayBindCount属性,可用于传入数组型参数,执行多次储存过程函数。

    对于不同引用创建OracleParameter实例,类型也存在着差异:

    第一种引用:System.Data.OracleClient.OracleParameter  para=new System.Data.OracleClient.OracleParameter("APPLICATIONNAME_",OracleType.NVarChar,200);

    第二种引用:Oracle.DataAccess.Client.OracleParameter para=new Oracle.DataAccess.Client.OracleParameter("APPLICATIONNAME_",OracleDbType.Varchar2,200);

    下面结合.NET开发需要,对数据类型比较整合下:

    备注:

    1).NET类型:OracleDataReader.GetValue返回的.NET Framework数据类型;

    2)OracleType类型:OracleDataReader.GetOracleValue返回的OracleClient数据类型。

    3)DbType:要绑定为参数的System.Data.DbType枚举

    4)OracleType:要绑定为参数的OracleType枚举

     

    序号

    Oracle数据类型

    .NET类型

    GetOracleValue类型

    DbType

    OracleType

    1

    BFILE

    byte[]

    OracleBFile

     

    BFile

    2

    BLOB

    byte[]

    OracleLob

     

    Blob

    3

    CHAR

    string

    OracleString

    AnsiStringFixedLength

    Char

    4

    CLOB

    string

    OracleLob 

     

     Clob 

    5

    DATE

    DateTime

    OracleDateTime

    DateTime

    DateTime

    6

    FLOAT

    Decimal

    OracleNumber

    Single、Double、Decimal

    Float、Double、Number

    7

    INTEGER

    Decimal

    OracleNumber

    SByte、Int16、Int32、Int64、Decimal

    SByte、Int16、Int32、Number

    8

    INTERVAL YEAR TO  MONTH

    Int32

    OracleMonthSpan

    Int32 

    IntervalYearToMonth

    9

    INTERVAL DAY TO  SECOND

    TimeSpan

    OracleTimeSpan

    Object

    IntervalDayToSecond 

    10

    LONG

    string

    OracleString

    AnsiString

    LongVarChar

    11

    LONG RAW

    byte[]

    OracleBinary

    Binary

    LongRaw

    12

    NCHAR

    string

    OracleString

    StringFixedLength

    NChar

    13

    NCLOB

    string

    OracleLob

     

    NClob

    14

    NUMBER

    Decimal

    OracleNumber

    VarNumeric

    Number

    15

    NVARCHAR2

    string

    OracleString

    String

    NVarChar

    16

    RAW

    byte[]

    OracleBinary

    Binary

    RAW

    17

    ROWID

    string

    OracleString

    AnsiString

    Rowid

    18

    TIMESTAMP

    DateTime

    OracleDateTime

    DateTime

    Timestamp

    19

    VARCHAR2

    string

    OracleString

    AnsiString

    VarChar

    20

    RefCursor

         

    Cursor

    (1) Oracle 只允许将 BFILE 绑定为 BFILE 参数。如果您尝试绑定非 BFILE 值,例如 byte[] 或 OracleBinaryOracle .NET 数据提供程序不会自动为您构造一个参数。

    (2) Oracle 只允许将 BLOB 绑定为 BLOB 参数。如果您尝试绑定非 BLOB 值,例如 byte[] 或 OracleBinaryOracle .NET 数据提供程序不会自动为您构造一个参数。

    4)Oracle 只允许将 CLOB 绑定为 CLOB 参数。如果您尝试绑定非 CLOB 值,例如 System.String 或 OracleStringOracle .NET 数据提供程序不会自动为您构造一个参数。

    6、7)Size 确定System.Data.DBType 和OracleType

    8、9、18)OracleType 仅在同时使用 Oracle 9i 客户端和服务器软件时才适用。

    13)Oracle 只允许将 NCLOB 绑定为 NCLOB 参数。如果您尝试绑定非 NCLOB 值,例如 System.String 或 OracleString,Oracle .NET 数据提供程序不会自动为您构造一个参数。

  • 相关阅读:
    编辑器、编译器、文件、IDE等常见概念辨析
    二叉排序树的实现
    模板
    Codeforces Round #690 (Div. 3)
    Educational Codeforces Round 100 (Rated for Div. 2)
    Codeforces 414-B. Mashmokh and ACM(数位dp)
    Codeforces 339D-Xenia and Bit Operations(线段树)
    Educational Codeforces Round 96 (Rated for Div. 2) 题解
    2019-2020 ICPC Northwestern European Regional Programming Contest (NWERC 2019)
    2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018)
  • 原文地址:https://www.cnblogs.com/kliine/p/10018580.html
Copyright © 2020-2023  润新知