Tôi đang cố gắng lặp qua một con trỏ. Khi tôi thực hiện lệnh (ký hiệu là sql - xem bên dưới) trực tiếp trong pl/sql, tôi nhận được kết quả được thiết lập với nhiều hàng hơn. Nhưng khi tôi chạy mã này, tôi nhận được chỉ có một hàng:OracleDataReader chỉ trả lại một hàng
using (OracleConnection conn = new OracleConnection(connstring))
{
conn.Open();
string sql = "select close, ts from [email protected] 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));
}
}
}
}
Các mã không ném bất kỳ ngoại lệ (ít nhất là không theo một cách thông thường, tôi có nghĩa là nó không chỉ dừng lại hoặc viết chồng dấu vết). Tuy nhiên tôi có thể nhìn thấy những dòng này bởi người đọc Object trong khi gỡ lỗi (tôi không thực sự nghĩ rằng đó là liên quan ở đây, nhưng cho thấy đầu ra "chỉ trong trường hợp"):
InitialLONGFetchSize = 'rdr.InitialLONGFetchSize' threw an exception of type 'System.NullReferenceException'
InitialLOBFetchSize = 'rdr.InitialLOBFetchSize' threw an exception of type 'System.NullReferenceException'
Kết quả nên chỉ có loại DateTime
và Number (10,4)
. Và bảng không có các trường có loại lob hoặc dài.
Đây là chương trình bảng:
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
Truy vấn là chính xác và các mục tồn tại. Hàng trả lại có vẻ là một hàng ngẫu nhiên ... Nó không phải là hàng đầu tiên hoặc cuối cùng. Tôi đang sử dụng ODT với ODAC 11. Tôi có VS2012 và làm việc dưới cửa sổ 7 (32-bit). Tôi đang kết nối với Oracle 10g.
Bất kỳ đầu mối nào tôi đang làm sai?
bạn đã xác minh truy vấn bằng cách chạy nó trong sql * plus hay gì đó? – jeroenh
Có, nó hoạt động và trả về nhiều hàng hơn. – MaMu