Par*_*ial 20 c# oracle types plsql type-equivalence
我在C#中创建一个应用程序,它使用Oracle.DataAccess.Client(11g)在存储过程的Oracle数据库上执行某些操作.我知道有一个枚举(OracleDbType)包含Oracle数据类型,但我不确定哪一个用于某些类型.
OracleDbType枚举中每个枚举类型的等效Oracle PL/SQL数据类型是 什么?
OracleDbType中有三种类型的整数(Int16,Int32,Int64)...如何知道使用哪一个或者它们都
假设有效?
Cha*_*ana 24
这是一种将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;
}
Run Code Online (Sandbox Code Playgroud)
此外,对于非常大的字符数据值,您可能想要使用OracleDbType.Clob
.
APC*_*APC 15
OracleDbType枚举的值在文档中定义.阅读ODP for .NET Developer's Guide.
关于Int16,Int32和Int64之间的选择,他们都应该工作.选择与.Net变量的预期大小匹配的那个:Int16表示-32768和32767之间的值,Int32表示-2147483648和2147483647之间的值,Int64表示更大的值.似乎有一些与转换Ints和PL/SQL数据类型有关的funnies.查看Mark Williams撰写的这篇博文.
归档时间: |
|
查看次数: |
68803 次 |
最近记录: |