Tôi đang cố gắng đọc BLOB từ cơ sở dữ liệu Oracle. Hàm GetFileContent lấy p_file_id làm paramater và trả về BLOB. BLOB là một tệp DOCX cần phải được viết trong một thư mục ở đâu đó. Nhưng tôi không thể tìm ra cách để đọc BLOB. Chắc chắn có điều gì đó được lưu trữ trong return_value-paramater sauĐang cố đọc một đốm màu
OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
Giá trị là {byte [9946]}. Nhưng tôi gặp lỗi khi thực hiện
long retrievedBytes = reader.GetBytes(1, startIndex, buffer, 0, ChunkSize);
Nó nói InvalidOperationException đã bị bắt: "Không có dữ liệu cho hàng hoặc cột".
Đây là mã:
cmd = new OracleCommand("GetFileContent", oraCon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("p_file_id", OracleType.Number).Direction = ParameterDirection.Input;
cmd.Parameters[0].Value = fileID;
cmd.Parameters.Add("return_value", OracleType.Blob).Direction = ParameterDirection.ReturnValue;
cmd.Connection.Open();
OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
reader.Read();
MemoryStream memory = new MemoryStream();
long startIndex = 0;
const int ChunkSize = 256;
while (true)
{
byte[] buffer = new byte[ChunkSize];
long retrievedBytes = reader.GetBytes(1, startIndex, buffer, 0, ChunkSize); //FAILS
memory.Write(buffer, 0, (int)retrievedBytes);
startIndex += retrievedBytes;
if (retrievedBytes != ChunkSize)
break;
}
cmd.Connection.Close();
byte[] data = memory.ToArray();
memory.Dispose();
Làm thế nào tôi có thể đọc các BLOB từ chức năng?
bất kỳ giải pháp cuối cùng nào có mẫu mã nguồn đầy đủ hoạt động về nó? – Kiquenet