C# ROWNUM的OracleType是什么

C# ROWNUM的OracleType是什么,c#,.net,oracle,C#,.net,Oracle,我正在尝试参数化所有现有sql,但以下代码给了我一个问题: command.CommandText = String.Format("SELECT * FROM({0}) WHERE ROWNUM <= :maxRecords", command.CommandText); command.Parameters .Add("maxRecords", OracleType.Int32).Value = maxRecords; command.CommandTe

我正在尝试参数化所有现有sql,但以下代码给了我一个问题:

command.CommandText = String.Format("SELECT * FROM({0}) 
       WHERE ROWNUM <= :maxRecords", command.CommandText);
command.Parameters
       .Add("maxRecords", OracleType.Int32).Value = maxRecords;
command.CommandText=String.Format(“从({0})中选择*)

其中ROWNUM我相信如果数据类型是问题的话,
OracleType.Number
会起作用。

问得好。您是否尝试过:OracleType.UInt32?我会尝试OracleType.Number作为最后手段。

在SQLPlus中,我们可以创建一个包含
ROWNUM
的视图,以查看Oracle使用的数据类型:

TEST>create view v_test as select rownum rn, dummy from dual;

View created.

TEST>desc v_test
 Name     Null?    Type
 -------- -------- -------------
 RN                NUMBER
 DUMMY             VARCHAR2(1)
所以对于Oracle来说,这个伪列是一个数字。基于此链接()可以容纳:

The following numbers can be stored in a NUMBER column:

-Positive numbers in the range 1 x 10^-130 to 9.99...9 x 10^125 with up to 38 significant digits
-Negative numbers from -1 x 10^-130 to 9.99...99 x 10^125 with up to 38 significant digits
-Zero
-Positive and negative infinity (generated only by importing from an Oracle Database, Version 5)

对不起,各位,问题不在于数据类型。这是因为在方法代码中多次使用command对象来运行不同的sql,使用不同的参数。正在调用command.parameters.Clear()我的电话解决了问题。非常感谢您深入了解如何查找数据类型。这将有助于进一步参考。

您需要使用OracleType.RowID来处理Oracle rowIDs。它们不是数字

该条规定:

的base64字符串表示形式 Oracle ROWID数据类型。请使用.NET 框架字符串或OracleClient 值中的OracleString数据类型

这篇文章是关于rownum而不是rowid的