C# ROWNUM的OracleType是什么
我正在尝试参数化所有现有sql,但以下代码给了我一个问题: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
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的