c# - ROWNUM 的 OracleType 是什么

标签 c# .net oracle

我正在尝试参数化我们所有现有的 sql,但以下代码给我带来了问题:

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

报错是“ORA-01036: illegal variable name/number”。

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

最佳答案

在 SQLPlus 中,我们可以创建一个包含 rownum 的 View ,以准确查看 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 来说,这个伪列是一个数字。哪个基于此链接 ( 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)

关于c# - ROWNUM 的 OracleType 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013819/

相关文章:

c# - SMO 编写整个数据库的脚本,就像 Studio Management 使用 Generate Scripts 所做的那样

C# 结构和类变量值

c# - LCPI.IBProvider 未在本地计算机上注册

asp.net - 禁止对 IIS 7.5 或 .NET 中的某些文件使用查询参数

php - Libresolv 对 Alpine linux 的依赖

sql - Oracle SQL - 我可以返回列值的 "before"状态吗

c# - SPList.GetItems(view) 在尝试获取项目标题时返回异常

.net - 遍历集合并确保每个项目的顺序正确的 Linq 语句?

c# - .net 从哪里开始

oracle - 如何更改现有表以在 Oracle 中创建范围分区