什么是ROWNUM的OracleType

Col*_*lin 7 .net c# oracle

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

command.CommandText = String.Format("SELECT * FROM({0}) 
       WHERE ROWNUM <= :maxRecords", command.CommandText);
command.Parameters
       .Add("maxRecords", OracleType.Int32).Value = maxRecords;
Run Code Online (Sandbox Code Playgroud)

报告的错误是"ORA-01036:非法变量名称/编号".

我认为这是因为OracleType.Int32不是ROWNUM的正确数据类型.那是什么?

Dou*_*ter 6

在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)
Run Code Online (Sandbox Code Playgroud)

所以对于Oracle来说,这个伪列是一个数字.基于此链接(http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#i16209)可以容纳:

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)
Run Code Online (Sandbox Code Playgroud)