我想要遍历一个游标。当我直接在PL/SQL中执行命令(表示为sql-见下文)时,我会得到更多的行结果集。 但是,当我运行这个代码时,我只得到了一行:
using (OracleConnection conn = new OracleConnection(connstring))
{
conn.Open();
string sql = "select close, ts from dpr@price where qot_id=2029543939 and ts>='" + start + "' and ts<='" + end + "'";
using (OracleCommand comm = new OracleCommand(sql, conn))
{
using (OracleDataReader rdr = comm.ExecuteReader())
{
while (rdr.Read())
{
Console.WriteLine(rdr.GetOracleDecimal(0));
}
}
}
}
这段代码没有抛出异常(至少不是通常的方式,我的意思是它不会停止或写入堆栈跟踪)。然而,在调试时,我可以通过reader对象看到这些行(我并不认为这在这里很相关,但“以防万一”展示一下输出):
InitialLONGFetchSize = 'rdr.InitialLONGFetchSize' threw an exception of type 'System.NullReferenceException'
InitialLOBFetchSize = 'rdr.InitialLOBFetchSize' threw an exception of type 'System.NullReferenceException'
结果应只包含类型为
DateTime
和 Number (10,4)
的字段。表中无类型为 lob 或 long 的字段。以下是表格方案:
QOT_ID NUMBER
TS DATE
CLOSE NUMBER
OPEN NUMBER
HIGH NUMBER
LOW NUMBER
KASSE NUMBER
VOLUME NUMBER
CLOSE_BID NUMBER
SPL_BEREINIGT VARCHAR2
OPEN_INTEREST NUMBER
TRADES NUMBER
TURNOVER NUMBER
HIGH_BID NUMBER
LOW_ASK NUMBER
查询语句正确且记录存在,但返回的行似乎是随机的,既不是第一行也不是最后一行。我正在使用ODT和ODAC 11。我有VS2012并在Windows 7(32位)下工作。我连接到Oracle 10g。
有什么线索可以告诉我我做错了什么吗?