Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 映射数据类型Oracle和C时出错_C#_Oracle - Fatal编程技术网

C# 映射数据类型Oracle和C时出错

C# 映射数据类型Oracle和C时出错,c#,oracle,C#,Oracle,我有一个ID为18的表,还有一个属性为public Int64 ID{get;set;}的类,它将ID表单C映射到Oracle 我的表格定义 但是当我得到max ID时,我有一个错误,如下所示: SELECT ID FROM( SELECT ID FROM MYTABLE ORDER BY ID DESC ) WHERE ROWNUM =1 运行查询 SELECT MAX(ID) ID FROM MYTABLE 系统将抛出一个错误: “

我有一个ID为18的表,还有一个属性为public Int64 ID{get;set;}的类,它将ID表单C映射到Oracle

我的表格定义

但是当我得到max ID时,我有一个错误,如下所示:

SELECT ID FROM( SELECT ID FROM MYTABLE ORDER BY ID DESC ) WHERE ROWNUM =1 运行查询

SELECT MAX(ID) ID FROM MYTABLE 系统将抛出一个错误:

“System.Decimal”类型的对象无法转换为“System.Int64”类型

但当我像这样运行查询时:

SELECT ID FROM( SELECT ID FROM MYTABLE ORDER BY ID DESC ) WHERE ROWNUM =1 没关系

我不知道为什么1抛出错误,为什么2抛出错误

数据类型1和2之间有什么区别?

可能的场景1:

我猜表中有空值,所以这两个查询不相等:

SELECT MAX(ID) ID FROM T_00_RQMM  -- aggregate func ignore NULLS
但是:

无论如何,您应该尝试映射:

using System.Numerics;
...
public BigInteger ID { get; set; }
编辑:

可能的情景2:

数据类型可能有问题,然后使用显式转换:

完整演示:

CREATE TABLE T_00_RQMM (ID NUMBER(18,0));
INSERT INTO T_00_RQMM VALUES(NULL);
INSERT INTO T_00_RQMM VALUES(100);

CREATE TABLE t1 AS SELECT MAX(ID) ID FROM T_00_RQMM;

CREATE TABLE t2 AS SELECT ID FROM(SELECT ID FROM T_00_RQMM ORDER BY ID DESC) 
                                  WHERE ROWNUM = 1;

CREATE TABLE t3 AS SELECT CAST(MAX(ID) AS NUMBER(18,0)) ID FROM T_00_RQMM;


SELECT TABLE_NAME, COLUMN_NAME, DATA_PRECISION, DATA_SCALE
FROM all_tab_cols
where table_name in ('T1', 'T2', 'T3')
ORDER BY Table_name;
输出:

+------------+-------------+----------------+------------+
| TABLE_NAME | COLUMN_NAME | DATA_PRECISION | DATA_SCALE |
+------------+-------------+----------------+------------+
| T1         | ID          | null           | null       |
| T2         | ID          | 18             | 0          |
| T3         | ID          | 18             | 0          |
+------------+-------------+----------------+------------+

@lad2025:查询1和查询2返回相同的值,为什么1出错,2完成?请发布您的表定义。看起来列metadataNo有问题,我已经仔细检查过了,它不是空的。查询1和查询2返回相同的值。但我不知道我为什么要扔error@HongVanVit好的,当使用MAX datatype是NUMBER而不是NUMBER18时,看起来像是元数据问题
+------------+-------------+----------------+------------+
| TABLE_NAME | COLUMN_NAME | DATA_PRECISION | DATA_SCALE |
+------------+-------------+----------------+------------+
| T1         | ID          | null           | null       |
| T2         | ID          | 18             | 0          |
| T3         | ID          | 18             | 0          |
+------------+-------------+----------------+------------+