我创建了一个类,在其中使用 java.sql.clob 字段,并从 Oracle DB 获取其值。当我尝试在 Spring Restful 服务中的响应实体中发送此类对象时。我收到下面提到的错误。
HTTP 状态 500 - 无法写入内容:直接自引用导致循环(通过引用链:ClassName["FieldName"]->oracle.sql.CLOB["dbaccess"]->oracle.jdbc.driver.T4CConnection["包装纸”]); 嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:直接自引用导致循环(通过引用链:ClassName["FieldName"]->oracle.sql.CLOB["dbaccess"]->oracle.jdbc.driver .T4CConnection["包装器"])
我该如何解决这个问题
使用MySQL,我能够在TEXT列中存储大块文本,像任何其他列类型一样,没有任何问题.
似乎当我尝试在Oracle上使用CLOB执行相同操作时,我会收到错误.
这是我拉的地方:
<?php
$comments = 'SELECT q2_other, q4_comments, q9_describe, q10, q11_comments, q12_describe, additional_comments FROM exit_responses
WHERE sdate BETWEEN \'' . $start . '\'
AND \'' . $end . '\'';
$comments_results = oci_parse($conn, $comments);
oci_execute($comments_results);
while($row = oci_fetch_assoc($comments_results)){
if($row['Q2_OTHER'] != null){
echo '<div class="response">';
echo '<div class="info-bar">';
echo '<h5 class="date">' , date('F j, Y',strtotime($row['SDATE'])) , '</h5>';
echo ($_GET['names'] == 1) ? '<h5 class="name">' . $row['f_name'] . ' ' . $row['l_name'] . ' - ' . $row['title'] . ' - ' …Run Code Online (Sandbox Code Playgroud) 似乎SQLPLUS以一种我没想到的方式显示了CLOB的空值和空字符串.
在SQLPLUS中尝试以下内容(我使用的是Oracle 10g服务器).创建一个包含CLOB的表,并插入null,空clob,以及我认为的空字符串:
create table tableA (field1 number, field2 clob);
insert into tableA values (1, null);
insert into tableA values (2, empty_clob());
insert into tableA values (3, '');
Run Code Online (Sandbox Code Playgroud)
好吧,让我们做一些查询,但首先我们需要告诉SQLPLUS为我们清楚地显示空值:
set null {NULL}
Run Code Online (Sandbox Code Playgroud)
对于以下查询,我原本只期望返回第1行,但它返回2:
select * from tableA where field2 is null;
field1 field 2
-----------------------
1 {NULL}
3 {NULL}
Run Code Online (Sandbox Code Playgroud)
嗯,所以''在CLOB中存储为null?
好的,基于该结果,我现在希望以下查询返回所有3行,但仅显示{NULL}在行1和3中.但是我得到了这个结果:
select * from tableA;
field1 field 2
-----------------------
1 {NULL}
2 {NULL}
3 {NULL}
Run Code Online (Sandbox Code Playgroud)
这令人困惑.我以为只有2个空值,即使我最初预期为1.那么这里发生了什么?是否set null为CLOB的不行,如果是的话我应该怎么用呢?
我实际上试图用空的CLOB值来解决一个不同的问题,但是这种令人困惑的行为让我运行了一段时间的响铃,所以我想在继续之前理解这一点.
提前致谢
博兹
说你有桌子:
Column_name | data_type
Title | Varchar2
Text | CLOB
Run Code Online (Sandbox Code Playgroud)
有些行:
SomeUnkownMovie | A long time ago in a galaxy far, far away....(long text ahead)
FredMercuryBio | Awesomeness and stuff....(more long text)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以查询,所以输出文件就像
SomeUnkownMovie.txt
FredMercuryBio.txt
Run Code Online (Sandbox Code Playgroud)
(和ofc,里面有各自的文字)
我认为这应该是一个简单的sqlplus脚本..虽然我只是不是那个:(
谢谢!
似乎Hibernate.createClob(Reader reader, int length)在版本3.6.x中已弃用.它建议使用Use LobHelper.createClob(Reader, long)代替.
但是LobHelper接口不是一个类.
有替代品 static method Hibernate.createClob(Reader reader, int length)吗?
比方说,如果我使用Riak数据库存储电影等,我如何将块中的二进制文件流式传输到任何客户端(可能是下载然后播放或直接播放?)Riak建议用于存储大型二进制文件吗?此外,我已经读过某个地方,最大文件是50 MB,否则会导致问题,但这似乎是旧的文档.谁能提供更多信息?
我的问题是:ORA-01704: string literal too long在使用CLOBs 插入(或在查询中执行任何操作)时,如何解决错误?
我想要这样的查询:
INSERT ALL
INTO mytable VALUES ('clob1')
INTO mytable VALUES ('clob2') --some of these clobs are more than 4000 characters...
INTO mytable VALUES ('clob3')
SELECT * FROM dual;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用实际值时,虽然我ORA-01704: string literal too long回来了.这很明显,但是如何插入clobs(或者使用clob执行任何语句)?
我试过看过这个问题,但我认为它没有我想要的东西.我拥有的clob在a中List<String>,我遍历它们来做出声明.我的代码如下:
private void insertQueries(String tempTableName) throws FileNotFoundException, DataException, SQLException, IOException {
String preQuery = " into " + tempTableName + " values ('";
String postQuery = "')" + StringHelper.newline;
StringBuilder inserts …Run Code Online (Sandbox Code Playgroud) 如果你不确定我的意思,请不要给出反馈.
我在Oracle数据库中有一个表,其中包含数据类型为CLOB的字段.字段名称是XMLString.我正在存储每个记录长度为10,000个字符的XML字符串.我在这张表中有超过10万条记录.
现在我有一种情况,我需要更新特定位置的每条记录上的XML字符串段.例如,我需要使用"我的新文本"等字符串更新第14个位置的每个记录.此替换文本长度为11个字符.所以这只是意味着它将取代从第14个角色开始的11个追逐者.
我尝试过使用CLOB,但这并不是我想要的.
有没有像这样简单的命令
Replace(XMLString, 14, ‘My New text’)
Run Code Online (Sandbox Code Playgroud)
这样我可以做下面的事情?
UPDATE MYTABLE
SET MyClobField = Replace(MyClobField, 14, 'My New text')
WHERE MyTableID>5000
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我试图从存档数据库中获取行以填充测试环境DB.我需要行,其中名为"AUDIT_LOG"的特定字段(CLOB)不能为空null.
我尝试过以下简单的select语句但是我得到了
ORA-00932:不一致的数据类型:预期 - 获得CLOB
我试过的陈述:
SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE AUDIT_LOG = ''
SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE AUDIT_LOG != NULL
SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE AUDIT_LOG = 0
Run Code Online (Sandbox Code Playgroud)
CLOB中的NULL是否等于空字符串.我有一种感觉,也许长度可以用于列.
谢谢
Oracle XE 11.一个非常简单的连接查询给了我以下错误:
ORA-00932: inconsistent datatypes: expected - got CLOB
Run Code Online (Sandbox Code Playgroud)
表:
Product
----------------------------------
id, name, description, categoryId
Catetory
------------------
id, name
Run Code Online (Sandbox Code Playgroud)
产品描述是CLOB.
SQL> desc产品;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(19)
NAME NOT NULL VARCHAR2(30 CHAR)
CATEGORYID NUMBER(19)
DESCRIPTION CLOB
Run Code Online (Sandbox Code Playgroud)
SQL> desc类别;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(19)
NAME NOT NULL VARCHAR2(30 CHAR)
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT DISTINCT t1.ID, t1.DESCRIPTION, t1.NAME, t0.name FROM Product t1
LEFT OUTER JOIN Category t0 ON (t0.ID = t1.categoryId);
Run Code Online (Sandbox Code Playgroud)
第1行的错误:ORA-00932:不一致的数据类型:预期 …