对于Clob类型来说,字符串字头太长
我的表包含clob列. 我想将HTML数据保存到(C#)中. 保存时,我会收到一个错误:字符串字面时间太长. 我存储的字符串长度是8048个字符 有人可以帮我吗? 提前致谢 表是: 创建表TBLHELP (( 网格长 ) private string getHTML(GridView gv) { StringBuilder sb = new StringBuilder(); StringWriter textwriter = new StringWriter(sb); HtmlTextWriter htmlwriter = new HtmlTextWriter(textwriter); gv.RenderControl(htmlwriter); htmlwriter.Flush(); textwriter.Flush(); htmlwriter.Dispose(); textwriter.Dispose();
18 2024-04-26
编程技术问答社区
Entity Framework ORA-00932:数据类型不一致。"'预期是CLOB,结果是CHAR"
oracle.managedDataAccess.EntityFramework 6.122.1.0库用于从MVC ASP.NET应用程序访问Oracle数据库.这是截至2017年11月14日的Nuget的最新图书馆版本 protected override Expression> getSelector() { return m => new { ID = m.ID, NAME = m.Name, LONGSTRING = "Blah-blah-blah-blah...some thousands characters..." + m.ID + "blah-blah...blah" }; } protected override ProblemMethod() { var result = db.My
20 2024-04-19
编程技术问答社区
我如何使用ODP(Oracle.DataAccess)的>>准备好的查询<<更新CLOB字段的数据?
我正在尝试执行已准备好的SQL查询,该查询在Oracle 10G数据库中更新CLOB字段(10.2.0.1). 如果我从内部执行以下查询并为占位符提供值,则没有问题.但是,如果我通过OracleCommand(oracle.dataaccess.dll,版本1.102.0.1(我认为),.NET Framework 3.5),. 我在下面收到错误消息.请注意,我们不使用默认客户端,因为我们需要批量插入.不幸的是,给定的ODP版本和.NET Framework版本是一个很难的要求,我们可能不会更改. 查询: UPDATE master_table SET description = :description, modification_notes = :modification_notes WHERE master_id = :master_id; 错误: ORA -00932:不一致的数据类型:预期 - 获得clob 进一步插入:
16 2024-04-19
编程技术问答社区
为什么我在这个CLOB字段的GetOrdinal函数中得到OutOfRange异常?
这是我的代码的示例. field function_script是我的表IS_FUNCTION中的clob字段(唯一的clob字段) public void ReadFunction(string FName, out string fContent) { OracleCommand command = _connection.CreateCommand(); OracleTransaction transaction = _connection.BeginTransaction(); command.Transaction = transaction; command.CommandText = "SELECT TO_CLOB(TO_NCLOB(FUNCTION_SCRIPT)) FROM IS_FUNCTION where FNAME=:fName "; command.Parameters.Add("FName", OracleType
26 2024-04-14
编程技术问答社区
用大的CLOB从C#调用存储过程的问题
我不是第一个遇到这些问题的人,并将在下面列出一些参考文章,但仍在寻找适当的解决方案. 我需要从C#Web服务调用存储过程(Oracle 10G数据库). Web服务器已安装了Oracle 9i客户端,我正在使用Microsofts System.Data.OracleClient. 该过程将XML作为clob.当 XML超过4000个字节(在正常用例中可能是)时,我偶然发现了以下错误: ORA -01460-未完成或不合理的转换 我找到了this, this post. 此外,我找到了一个有希望的解决方法,该解决方案不会直接从C#调用存储过程,而是定义了一块匿名PL/SQL代码.此代码作为OracleCommand运行. XML嵌入为字符串文字,该过程调用是从该代码中完成的: private const string LoadXml = "DECLARE " + " MyXML CLOB; " + " iStatus INT
12 2024-04-12
编程技术问答社区
使用C和嵌入式SQL在Oracle中选择CLOB
也许这里有人可以帮助我;我已经用完了. 我尝试在Oracle中包含Clob的表上实现选择语句.这是表的定义: PQUE ID NOT NULL NUMBER(13) PGA_ID NUMBER(13) WS_CODE NUMBER(5) OPERATION VARCHAR2(30) RF_NR NUMBER(13) STATUS NUMBER(5) SENDER NUMBER(5) EMPFAENGER NUMBER(5) START_ZEIT TIMESTAMP(6) DATEN CLOB 我的选择statement以这种方式看起来: void pap_pque
20 2024-04-09
编程技术问答社区
使用Apache Camel框架将数据持久化为Oracle数据库中的BLOB/CLOB数据类型
需要使用 Apache Camel 框架将数据(XML)存储到Oracle DB中 BLOB数据类型. 执行正常查询是可以的.但是,当我试图将数据持续到BLOB中时,Oracle DB想要一种兼容类型. 我尝试使用 utl_raw.cast_to_raw 尝试将原始数据转换为blob兼容类型. 这对于较小的数据工作正常,但是当数据像具有2048多个字符的大型请求xml一样时,错误 sql错误:ora-06502:pl/sql:数字:或值错误:原始变量长度太长. 有人可以帮助我知道如何使用Apache Camel将数据超过2048个字符存储在BLOB数据类型中? 任何帮助都非常感谢. 解决方案 这是一个使用HSQLDB测试时正常工作的典范(我没有方便的Oracle数据库,但应该可以使用相同): // This is just to have some relatively large ammount of data to insert in the BLOB
16 2024-04-01
编程技术问答社区
从plsql输出/返回的CLOB值(指定无效的LOB定位器:ORA-22275)。
我已经存储了PLSQL过程,可以从文件中获取大文本 create or replace procedure dbst_load_a_file( p_file_name in varchar2, l_clob out clob ) as l_bfile bfile; dst_offset number := 1 ; src_offset number := 1 ; lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX; warning number; begin l_bfile := bfilename( 'SCHEMES_OF_PS', p_file_name ); dbms_lob.fileopen( l_bfile ); dbms_lob.loadclobfromfile(
22 2024-04-01
编程技术问答社区
java.sql.Array/Blob/Clob类型是否需要被 "free() "ed?
我是否需要明确的阵列,clobs等来调用free()?还是会自动关闭结果集和/或语句会自动照顾这个? Javadoc什么都没说,所以我认为这不是必需的,但是我不愿做出错误的假设. ,如果您不需要,如果您要立即关闭结果设置,这是一个好主意吗?我可以看到如果您不这样做可能会有所帮助. 解决方案 它取决于您正在使用的供应商和JDBC版本.由于所有数据供应商都不支持数组(例如mysql) 这可能就是Javadoc什么都没说的原因. 我找到了这个教程 在Oracle网站的Javase教程上说,该教程说要明确发布资源. 这是另一个链接,说明了free()的方案. 和向后兼容性 如果不是必需的,如果您要关闭 立即设置结果? 我认为不应该有释放(),但是如果它是长期运行的转移,那么请致电free().​​ . 引用 P> 数组对象至少在 创建它们的交易.这可能会导致 在长时间运行中的应用程序中用尽了资源 交易.应用程序可以通过调用来发布数组资源 他们
20 2024-04-01
编程技术问答社区
Oracle 10g小型Blob或Clob没有被内联存储?
根据我阅读的文档,clob或blob的默认存储是内联的,这意味着,如果它的大小小于4K,则将其保存在表格中. 但是,当我在Oracle(10.2.0.1.0)中的虚拟表上进行测试时,来自Oracle Monitor的性能和响应(通过AllRound Automations)表明它在表不在表面之外. . 这是我的测试场景... create table clobtest ( x int primary key, y clob, z varchar(100) ) ; insert into clobtest select object_id, object_name, object_name from all_objects where rownum
16 2024-04-01
编程技术问答社区
BLOB和CLOB的解释
我正在寻找对BLOB和CLOB数据的真正很好的解释.我正在寻找简单英语的解释. 解决方案 blob的(二进制大对象)存储二进制文件:图片,文本,音频文件,Word Documents等.任何您无法用人眼阅读的内容.您无法通过SQL*Plus选择它们. clob的(字符大对象)存储字符数据.它们通常用于存储XML文档,JSON的或仅仅是格式化或未形式的文本. 其他解决方案 它非常简单.不同之处在于,您将大型数据对象存储在表中,作为基于字符的列(即clob)或基于二进制的列(即斑点),以相同的术语来思考它如何打开文件作为文本VS的文件当您以二进制数据打开时. 对于相对较短且在我看来, varchars等仍然是优选的.例如,当您想按照XML配置文件等线存储某些内容时,您需要考虑将其存储为clob.如果您要存储图像,那么斑点将是合理的选择.有讨论是否更好地将实际映像或配置文件存储在表与存储实际文件的路径中,但我将其留给另一个问题. 其他解决方案 a blob 是
22 2024-04-01
编程技术问答社区
从DB2和Oracle的角度看CLOB和BLOB的区别?
我几乎对这两种数据类型着迷.根据 Oracle Docs 如下: blob:可变长度二进制二进制大对象字符串,可长达2GB(2,147,483,647).主要旨在持有非传统数据,例如语音或混合媒体.斑点字符串与角色集无关,而与位数据字符串相关. clob:可变长度的大型对象字符串,可长达2GB(2,147,483,647). CLOB可以存储单字节字符串或基于字符的数据. clob被认为是字符串. 我不知道的是,从DB2和Oracle的角度来看,两者之间是否有任何区别?我的意思是,DB2 Clob和Oracle Clob(db2 Blob和Oracle Blob)之间有什么区别? DB2和Oracle中的最大尺寸是多少?只是2 GB吗? 解决方案 blob 用于二进制数据(视频,图像,文档,其他) ) clob 用于大型文本数据(文本) MySQL 2GB上的最大尺寸 Oracle 128TB上的最大尺寸 其他解决方案 BLOB主要旨
12 2024-04-01
编程技术问答社区
JDBC 4'的java.sql.Clob.free()方法和向后兼容性
我正在调查一个有趣的表演问题,其中没有打电话 java.sql.Clob.free() 在常用资源上.此方法Clob是在Java 6/jdbc 4中引入的,因此很可能这实际上是从JDBC 3升级到JDBC 4时引入的回归. 这是Oracle JDBC驱动程序中的已知问题吗?可以说,以前,Clobs某种程度上神奇地释放了自己,而对于JDBC 4,它们必须手动释放 ?还是可以使用驱动程序设置来与JDBC 3保持兼容? 注意,当然也适用于Blob. 解决方案 我们的应用程序必须确保在Oracle.sql.clob上(使用tojdbc()在Oracle 11G和'ojdbc6上拨打Java.sql.clob.free()以获取Java.sql.Clob). JAR'(subtest.mf中的'4.0''4.0'和实现'11 .2.0.3.0'.否则该应用程序会遭受大量内存泄漏. 其他解决方案 我查找了Oracle JDBC驱动程序(OJDBC6.JAR)的Oracle
8 2024-04-01
编程技术问答社区
如何在Oracle 11g中存储无限字符?
我们在带有Varchar2列的Oracle 11G中有一个表.我们使用专有编程语言,该列被定义为字符串.最大值我们可以在此列中存储2000个字符(4000个字节).现在的要求是,该列需要存储2000多个字符(实际上是无限的字符).出于维护原因,DBA不喜欢BLOB或长数据类型. 我能想到的解决方案是从原始表中删除此列,并为此列有一个单独的表,然后将每个字符存储在一行中,以获取无限的字符.此TBLE将与原始表格一起查询. 有更好的解决方案解决这个问题吗? 更新:专有编程语言允许定义字符串和斑点的变量,没有选项的clob.我理解给出的答复,但我无法接受DBA.我知道,与Blob或Long偏离斑点将是开发人员的噩梦,但仍然无济于事. 更新2:如果最大我需要的是8000个字符,我可以再添加3列,以便我有4列,每个列有2000个字符,以获得8000个字符.因此,当第一列已满时,值将溢出到下一个列,依此类推.这个设计会有任何副作用吗?请建议. 解决方案 如果您需要的是
16 2024-04-01
编程技术问答社区
错误- ORA-22835: 对于CLOB到CHAR或BLOB到RAW的转换,缓冲区太小了
我试图读取BLOB消息并将其显示为我的一个过程中的变量,但是在下面遇到错误: 错误 - ORA -22835:缓冲区太小,无法clob或blob到raw 转换(实际:9923,最大:2000) 我已经搜索过搜索并找到了一个建议,以修剪BLOB消息如下,但是我宁愿将完整的BLOB消息显示为字符串. UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(variable_name,2000,1)) 如何显示完整的消息?我可以更改的数据库或过程级别上是否有设置? 解决方案 我通过使用 中描述的选项来解决此问题 /p> 其他解决方案 您可以通过在块中阅读BLOB值来解决缓冲问题.为此,您可以定义一个用户定义的函数(UDF)如下所示, >.以下UDF一次读取BLOB字段一个块,将其转换为VARCHAR2并连续附加结果以返回结果为CLOB: CREATE OR REPLACE FUNCTION VC2CLOB_FROM_BLO
32 2024-04-01
编程技术问答社区
如何将BLOB转换为CLOB?
我正在使用Oracle 11G,我正在尝试找出文本的长度.我通常使用select length(myvar) from table,但我不能那样做. 我想查询的表具有保存字符或照片的BLOB列.我想知道我的BLOB列具有的字符数量. 我尝试使用UTL_RAW.CAST_TO_VARCHAR2(myblob) from table将我的BLOB转换为炭,但此功能无法正常工作或我犯了错误. 例如: 我的BLOB有Section词,当我在数据级中以十六进制形式看到它时,我会看到S.e.c.t.i.o.n..我不知道为什么每个字母之间都有这些要点. 然后我使用了此查询: select UTL_RAW.CAST_TO_VARCHAR2(myblob) from table 此查询的结果是'S',所以这不是我的BLOB的完整词,当我进行此查询时: select length(UTL_RAW.CAST_TO_VARCHAR2(myblob)) from table
10 2024-04-01
编程技术问答社区
过于复杂的oracle jdbc BLOB处理
当我使用JDBC薄驱动程序搜索Web以将BLOB插入Oracle数据库时,大多数网页都建议使用三步方法: 插入empty_blob()值. 选择for update. 的行 插入实际值. 这对我来说很好,这是一个例子: Connection oracleConnection = ... byte[] testArray = ... PreparedStatement ps = oracleConnection.prepareStatement( "insert into test (id, blobfield) values(?, empty_blob())"); ps.setInt(1, 100); ps.executeUpdate(); ps.close(); ps = oracleConnection.prepareStatement( "select blobfield from test where id = ? for update"
24 2024-04-01
编程技术问答社区
通过Worklight适配器从derby检索存储为CLOB的base64图片
我试图通过工作室SQL适配器检索Derby DB中的clob的图像.我想做类似于这里写的事情的事情: " image":" org.apache.derby.impl.jdbc.embedclob@2d236" 我也将mysql视为替代方案.感谢您的建议. JT 解决方案 org.apache.derby.impl.impl.jdbc.embedclob是java.sql.clob,因此,如果您在var中有clob,则应该能够使用: 获得数据 var dataAsString = theClob.getSubString(1, theClob.length()); // Assumes all CLOBS are
14 2024-03-27
编程技术问答社区
如何用sqoop将oracle clob数据导入到hdfs上的avro文件?
在将数据从Oracle DB到HDFS的数据中遇到了一个奇怪的错误. SQoop无法将clob数据导入Hadoop上的AVRO文件. 这是SQOOP导入错误: ERROR tool.ImportTool: Imported Failed: Cannot convert SQL type 2005 我们是否需要将任何额外的参数添加到SQOOP导入语句中的正确参数,以正确地将clob数据导入到avro文件中? 解决方案 更新:找到了解决方案,我们需要为clob列添加 - map-column-java. for eg:如果列名是clob,那么我们有通过 - map-column-java clob=string sqoop sqoop以导入clob列.
18 2024-03-21
编程技术问答社区