情况:
我正在使用 C# 创建一个应用程序,它使用 Oracle.DataAccess.Client (11g) 通过存储过程对 Oracle 数据库执行某些操作。我知道有一个包含 Oracle 数据类型的特定枚举 (OracleDbType),但我不确定对某些类型使用哪个枚举。
问题:
什么是等效的Oracle PL/SQL 数据 type 中的每个枚举类型 OracleDbType 枚举?
整数分为三种类型
OracleDbType 中的 (Int16, Int32, Int64) ...怎么知道 用哪个还是都用
想工作吗?
最佳答案
这是将 C# 类型转换为最常见的 OracleDbTypes 的方法
private static OracleDbType GetOracleDbType(object o)
{
if (o is string) return OracleDbType.Varchar2;
if (o is DateTime) return OracleDbType.Date;
if (o is Int64) return OracleDbType.Int64;
if (o is Int32) return OracleDbType.Int32;
if (o is Int16) return OracleDbType.Int16;
if (o is sbyte) return OracleDbType.Byte;
if (o is byte) return OracleDbType.Int16; -- <== unverified
if (o is decimal) return OracleDbType.Decimal;
if (o is float) return OracleDbType.Single;
if (o is double) return OracleDbType.Double;
if (o is byte[]) return OracleDbType.Blob;
return OracleDbType.Varchar2;
}
此外,对于非常大的字符数据值,您可能需要使用 OracleDbType.Clob
。
关于C#:Oracle 数据类型与 OracleDbType 等价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583150/