我正在尝试参数化所有现有的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的正确数据类型.那是什么?
在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)
| 归档时间: |
|
| 查看次数: |
4735 次 |
| 最近记录: |