我试图循环游标。当我在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 Object看到这些行(我不认为它在这里是相关的,但显示输出&#34;以防万一&#34;):
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。
任何线索我做错了什么?
答案 0 :(得分:2)
请参阅:Oracle Data Provider for .Net和here以及here to
似乎很可能通过指定以下任一项来解决问题:(未能指定其中任何一个导致InitialLONGFetchSize和InitialLOBFetchSize都出现问题)
主键
ROWID
唯一列 - (定义为已定义唯一约束或已创建唯一索引的一组列,其中集合中至少有一列具有在其上定义的NOT NULL约束)
未能指定InitialLONGFetchSize和InitialLOBFetchSize的值。