标签: clob

SQL - 如何比较CLOB

在DB2触发器中,我需要比较CLOB字段的值.就像是:

IF OLD_ROW.CLOB_FIELD != UPDATED_ROW.CLOB_FIELD 
Run Code Online (Sandbox Code Playgroud)

但"!="不适用于比较CLOB.

比较它的方法是什么?

编辑添加:

如果在更新期间更改了Clob字段,则我的触发器需要执行某些操作.这就是我需要比较触发器代码中的2个CLOB的原因. 我正在寻找有关如何做到这一点的一些详细信息

sql db2 triggers compare clob

8
推荐指数
4
解决办法
2万
查看次数

使用postgreSQL的CLOB字符串

我正在尝试从postgreSQL DB中读取一个clob,更改它并将其写回.

我能够使用以下代码成功读取clob:

PreparedStatement statement = connection.prepareStatement("SELECT clob_column from data where id = 1");
ResultSet executeQuery = statement.executeQuery();
executeQuery.next()
Clob fetchedClob = executeQuery.getClob("clob_column");
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下新数据创建新clob时:

Clob newClob = connection.createClob();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyConnection.createClob()Ljava/sql/Clob;  
Run Code Online (Sandbox Code Playgroud)

此外,如果我尝试只是编辑获取的clob,使用:

fetchedClob.setString(0, "new string");
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Method org.postgresql.jdbc4.Jdbc4Clob.setString(long,str) is not yet implemented.
Run Code Online (Sandbox Code Playgroud)

任何的想法?

更新:这是表定义

CREATE TABLE数据(id bigint NOT NULL,clob_column text,);

谢谢

sql postgresql clob

8
推荐指数
1
解决办法
8548
查看次数

java.lang.AbstractMethodError:oracle.jdbc.driver.T4CPreparedStatement.setCharacterStream(ILjava/io/Reader; J)V

尝试将CKEditor(用于CMS - 内容管理系统)的内容插入Oracle数据库 - Oracle 10g时,我遇到以下异常.

Oracle表中的字段是clob类型.

java.lang.AbstractMethodError:oracle.jdbc.driver.T4CPreparedStatement.setCharacterStream(ILjava/io/Reader; J)V

另一方面是当我尝试使用JSON通过AJAX将相同的内容插入数据库时​​,不会导致此异常.

我正在使用

  • 春季3.2.0
  • Hibernate 4.2.0.CR1
  • Oracle JDBC驱动程序版本 - 10.2.0.5.0
  • JDK - 1.7
  • Oracle 10g

由于我将Hibernate从3.2.5更改为4.2.0.CR1,因此导致异常

这个链接说

setCharacterStream()方法有3个版本,其中两个是作为JDBC 4.0(Java 1.6)的一部分添加的.您的JDBC驱动程序可能不支持它们:

这个答案建议升级JDBC驱动程序,但这个问题是关于我还没有使用的Oracle 11g.

我不太确定.JDBC 11.x驱动程序是否与Oracle 10g兼容?曾几何时,我曾试过一个,但它没有正常工作.

如何解决这个异常?


编辑:

我刚刚下载了 ojdbc6.jar(之前是ojdbc14.jar上面指定的驱动程序),其中包含Oracle JDBC Driver version - "11.1.0.7.0-Production".

异常异常消失了.请告诉我,如果此驱动程序版本与Oracle 10g完全兼容.

spring hibernate clob oracle10g

8
推荐指数
1
解决办法
9233
查看次数

在OCCI中创建CLOB以插入数据库

我有一些大型数据对象已使用Boost序列化为字符串/ ostringstream.我想通过一个过程将这些序列化对象与数据类型CLOB一起存储在数据库中.为了做到这一点,我正在创建一个CLOB对象,但我不知道如何"将我的数据放入CLOB(myClob)".

我看过一些例子,但他们都使用了char-pointers,我宁愿不去那条小巷......

下面是我的c ++代码到目前为止.如果您有任何示例或好的提示/链接,我将非常感谢任何帮助.

Thx提前

string qOracleDb::testRunStoredProc(const string& xId, const qTime date, const string& xUsage, int type, const std::ostringstream& data)
{   
    try
    {
        Clob myClob;
        myClob.setEmpty();

        myClob ?????

        myStmt=myConn->createStatement("BEGIN DATA.SAVE_DATA_TEMP( :1, :2, :3, :4, :5); END;");

        Date asofDate(myEnv, date.year(), date.month(), date.day(),0,0,0);
        myStmt->setDate(1, asofDate);
        myStmt->setString(2,xId);
        myStmt->setString(3,xUsage);
        myStmt->setInt(4, type);
        myStmt->setClob(5, myClob);

        myStmt->execute();      
    }

    catch(SQLException ex)
    {
        // close nicely
        myConn->terminateStatement (myStmt);
        return "Exception thrown : "+ ex.getMessage()+", " + qStringUtils::toString(ex.getErrorCode());
    }
    // close nicely
    myConn->terminateStatement (myStmt);
    return "succes";
}
Run Code Online (Sandbox Code Playgroud)

更新:由于我找到了解决我问题的代码示例,我想分享解决方案,因为其他人可能有一天也会遇到这个"挑战".我的数据变量已从流变为字符串,我的代码如下:

/* …
Run Code Online (Sandbox Code Playgroud)

c++ clob oracle10g occi

8
推荐指数
0
解决办法
1953
查看次数

Oracle CLOB无法插入超过4000个字符?

如何在CLOB类型列中插入超过4000个字符?

--create test table s
create table s
(
      a clob
);
insert into s values('>4000 char')
Run Code Online (Sandbox Code Playgroud)

导致错误:

ORA-01704:字符串太长了.

当我想一次插入> 4000的字符串时,该怎么办?有可能吗?

当我阅读Oracle参考时,CLOB可以节省最多4GB(技嘉)?

oracle insert clob

8
推荐指数
2
解决办法
2万
查看次数

在Java中将String转换为Clob

我有一种情况需要从String中创建Clob对象.问题是我不能在该方法中使用ConnectionManager.

我需要一些实用工具

 public Clob getClob(String data){

 }
Run Code Online (Sandbox Code Playgroud)

谁能告诉我怎样才能做到这一点.

我也有oralce.sql.CLOB.但是它需要Connection来创建对象.

java sql string clob

7
推荐指数
3
解决办法
6万
查看次数

从CLOB到VARCHAR2中选择尽可能多的数据,在数据中使用多字节字符

多字节字符给我带来了很多痛苦.

对此问题的任何建议?

我有一个可能包含一些多字节字符的CLOB字段,我需要在SQL中选择并将此字段转换为下游进程的字符串,目前我正在使用:

SELECT DBMS_LOB.SUBSTR( description, 4000, 1 ) FROM table
Run Code Online (Sandbox Code Playgroud)

但上面的4000命令是字符长度,而不是字节.所以我不得不改为3000来处理任何可能已经悄悄进入数据的多字节字符,否则将发生缓冲区大小错误.

问题是对于不包含多字节字符的记录,可能会不必要地截断超出需要的数据.(4000是字符串限制,我们可以/不得不忍受.)

有没有办法做相当于以下的事情:

SELECT DBMS_LOB.SUBSTR( description, 4000bytes, 1 ) FROM table
Run Code Online (Sandbox Code Playgroud)

这样我就可以获得尽可能多的数据.

注意:我不允许创建临时表/视图,不使用PL/SQL,只允许SQL SELECT ...

sql oracle clob substr multibyte

7
推荐指数
2
解决办法
4万
查看次数

在Oracle中定义CLOB的大小

我正在制作一个存储XML的表.要存储XML,我使用的是CLOB数据类型.我的XML的最大大小为5kb.我应该在创建表时定义CLOB列的大小?

sql clob oracle11g

7
推荐指数
1
解决办法
3万
查看次数

实体框架ORA-00932:不一致的数据类型:"'预期CLOB得到CHAR"

Oracle.ManagedDataAccess.EntityFramework 6.122.1.0库用于从MVC ASP.Net应用程序访问Oracle数据库.这是截至2017年11月14日NuGet的最新图书馆版本

protected override Expression<Func<MyEntity, object>> 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.MyEntity.Select(getSelector()).ToList();
}
Run Code Online (Sandbox Code Playgroud)

有问题.发生这种情况,因为非常长的字符串(几千个字符)被连接进去 LONGSTRING,执行Select抛出下一个异常.

ORA-00932:不一致的数据类型:"'预期CLOB得到了CHAR"

我的班级需要获得ExpressionGetSelector()压倒一切的.如何克服错误或绕过它?一种绕过的方法是强制EF Select在客户端上执行.怎么做?

PS:俄语同样的问题.

UPDATE

我应该提出MyEntity

 CREATE TABLE MyEntity (ID NUMBER(10), Name VARCHAR2(100));
Run Code Online (Sandbox Code Playgroud)

c# oracle entity-framework clob oracle-manageddataaccess

7
推荐指数
1
解决办法
1213
查看次数

在 Oracle 19c 中将大 json 返回到 clob 时出现 ORA-40478

在 Oracle 19c 中,我创建了表:

create table SAMPLE_TABLE (
id NUMBER not null,
display_name  NVARCHAR2(4000), )
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时:

declare    
   i integer;   
   p_tmp_clob clob;
 begin   
   select JSON_ARRAYAGG(JSON_OBJECT(t.* )) into p_tmp_clob from SAMPLE_TABLE t;
end; 
Run Code Online (Sandbox Code Playgroud)

我收到以下 ORA-40478 异常。ORA-40478: 输出值太大(最大值:4000)

oracle json clob

7
推荐指数
1
解决办法
4332
查看次数