.NET Core 查询Oracle BLOB字段报错:TTC Error

2023-12-08 21:20

本文主要是介绍.NET Core 查询Oracle BLOB字段报错:TTC Error,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

.NET Core NuGet程序包:Oracle.ManagedDataAccess.Core 查询Oracle BLOB字段报错:TTC Error解决方案

报错截图如下:

报错语句如下,其中PHOTO为BLOB字段:

select PHOTO from employee_photo

此类语句在.NET FrameWork下并无异常,但用.NET Core NuGet程序包:Oracle.ManagedDataAccess.Core访问Oracle数据库时爆发:TTC Error 异常 

后查找资料,官方并无解决方案,最后在:https://cloud.tencent.com/developer/ask/202816 找到相关答案

修改后SQL语句如下

WITH
INFO
AS
(SELECTdbms_lob.getlength(A.PHOTO) AS FILE_CONTENT_LENGTH, MOD(dbms_lob.getlength(A.PHOTO),2000) AS MOD,CASEWHEN MOD(dbms_lob.getlength(A.PHOTO),2000) > 0 THEN TRUNC((dbms_lob.getlength(A.PHOTO)/2000) + 1)ELSE TRUNC(dbms_lob.getlength(A.PHOTO)/2000)END INTERATION_COUNT,a.PHOTO as FILE_CONTENTFROM employee_photo A WHERE A.employee_no = '123456'
)
,OFFSETS AS
(SELECT(2000 * (ROWNUM-1)) + 1 AS OFFSET,I.MOD,I.FILE_CONTENT_LENGTH,I.INTERATION_COUNT,i.FILE_CONTENTFROM INFO ICONNECT BY LEVEL <= I.INTERATION_COUNT
)
,RESULT AS
(SELECTDBMS_LOB.SUBSTR(O.FILE_CONTENT, 2000, O.OFFSET) AS CONTENT,O.OFFSET,O.MOD,O.FILE_CONTENT_LENGTH,O.INTERATION_COUNTFROM OFFSETS O
)
SELECT * FROM RESULT R ORDER BY R.OFFSET ASC

查询结果会把BLOB字段拆分为多行,每行2000个字节,程序按字段 OFFSET 顺序拼接起来即可

 

这篇关于.NET Core 查询Oracle BLOB字段报错:TTC Error的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/471355

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路