首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >select *返回CLOB

select *返回CLOB
EN

Stack Overflow用户
提问于 2009-04-06 16:01:45
回答 7查看 11.6K关注 0票数 2

我以前没有使用过oracle,我打算修改clob数据,因为它有我的家庭电话号码。但是当我这样做时,select * from表显示CLOB,并且我看不到数据。如何查看数据以及如何更新数据?

我需要查询。

EN

回答 7

Stack Overflow用户

发布于 2009-04-06 16:11:49

PL/SQL Developer中,选择ROWID和表列:

代码语言:javascript
复制
SELECT  t.*, t.rowid
FROM    mytable t

这将允许您编辑表的数据。

然后,只需选中CLOB字段旁边的...按钮并对其进行编辑。

您可以从文件中加载它,也可以直接在编辑字段中键入。

票数 3
EN

Stack Overflow用户

发布于 2009-04-06 19:37:35

您使用什么工具来执行查询?sqlplus会将clob列中的select截断为参数long的值。如果您使用的是sqlplus,那么将long设置为一个足够大的值来容纳clob,然后执行一个简单的select操作应该会返回数据。Clobs只是文本,因此可以像查询表中任何其他列一样查询它。如果您使用的是sqlplus,并且它返回的是partial而不是nothing,那么请确保表中的列已填充。

票数 3
EN

Stack Overflow用户

发布于 2009-04-06 16:27:34

用代码?

Java (更新作为字段保存在名为dbo的对象中的CLOB字段):

代码语言:javascript
复制
String sql = "SELECT clobby_wobby FROM table WHERE uuid = ? FOR UPDATE";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setLong(1, dbo.getUID());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
    oracle.sql.CLOB clob = (oracle.sql.CLOB) ((OracleResultSet) rs).getClob(1);
    failed = writeClob(clob, dbo.getClobbyWobby());
}
rs.close();
ps.close();

其中writeClob()是:

代码语言:javascript
复制
protected boolean writeClob(oracle.sql.CLOB clob, String data) throws SQLException {

    if (data == null) { return false; }
    return writeClob(clob, data.toCharArray());
}

protected boolean writeClob(oracle.sql.CLOB clob, char[] data) throws SQLException {

    if (data == null || clob == null) { return false; }
    char[] buffer = new char[clob.getBufferSize()];
    Writer os = clob.getCharacterOutputStream();
    int len = -1;
    CharArrayReader car = new CharArrayReader(data);
    try {
        while ((len = car.read(buffer)) != -1) {
            os.write(buffer, 0, len);
            os.flush();
        }
    } catch (IOException ioe) {
        logger.error("IOException copying clob data into DB", ioe);
        return false;
    } finally {
        try {
            car.close();
            os.close();
        } catch (IOException ioe) {}
    }
    return true;
}

有时我想知道为什么该死的Oracle驱动程序本身不能检测到字段是CLOB,而只是透明地处理ps.setString(“超长值”)本身……这就是有人回答说“为什么不使用Oracle LOB Java实用程序方法?!”我从来不知道的..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/722113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档