gpt4 book ai didi

oracle - .NETCore Oracle ManagedDataAccess 客户端 : cannot read BLOBs (TTC error)

转载 作者:行者123 更新时间:2023-12-04 13:59:57 30 4
gpt4 key购买 nike

我有 .NET Core 应用程序,我们正在尝试使用 Oracle Managed Data Access Client(目前只有测试版)。

但是,当我从数据库读取 BLOB 时,它会收到“TTC 错误”。有没有人有任何想法如何继续?

using (OracleConnection conn = new OracleConnection("Data Source=db;User ID=userid;Password=pass;Pooling=False;"))
{
conn.Open();
var sql = "SELECT id, blobdata FROM templ";
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;
OracleDataReader reader = cmd.ExecuteReader();
using (reader)
{
while (reader.Read()) //TTC Error
{
}
}

“TTC 错误”是主要的异常消息。

最佳答案

这并不理想,但我今天遇到了这个问题,最终使用 DBMS_LOB.SUBSTR 函数以 2000 的卡盘读取它(2000 是 RAW 所能达到的最大值)。

下面是一个查询,它返回一行,其中每行是特定偏移量处的文件的 2K 卡盘。

WITH
INFO
AS
(
SELECT
dbms_lob.getlength(A.FILE_CONTENT) AS FILE_CONTENT_LENGTH,
MOD(dbms_lob.getlength(A.FILE_CONTENT),2000) AS MOD,
CASE
WHEN MOD(dbms_lob.getlength(A.FILE_CONTENT),2000) > 0 THEN TRUNC((dbms_lob.getlength(A.FILE_CONTENT)/2000) + 1)
ELSE TRUNC(dbms_lob.getlength(A.FILE_CONTENT)/2000)
END INTERATION_COUNT,
A.FILE_CONTENT,
A.FILE_ID
FROM TABLE_OF_FILES A WHERE A.FILE_ID = 345321561
)
,OFFSETS AS
(
SELECT
(2000 * (ROWNUM-1)) + 1 AS OFFSET,
I.MOD,
I.FILE_CONTENT_LENGTH,
I.FILE_CONTENT,
I.FILE_ID,
I.INTERATION_COUNT
FROM INFO I
CONNECT BY LEVEL <= I.INTERATION_COUNT
)
,RESULT AS
(
SELECT
DBMS_LOB.SUBSTR(O.FILE_CONTENT, 2000, O.OFFSET) AS CONTENT,
O.OFFSET,
O.MOD,
O.FILE_CONTENT_LENGTH,
O.FILE_ID,
O.INTERATION_COUNT
FROM OFFSETS O
)
SELECT * FROM RESULT R ORDER BY R.OFFSET ASC;

关于oracle - .NETCore Oracle ManagedDataAccess 客户端 : cannot read BLOBs (TTC error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51300241/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com