`
jeffelin
  • 浏览: 5655 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ORACLE报文字字符串过长错误

阅读更多
对LONG类型插入文本长度超过4000字节,报错:
ORA-01704: 文字字符串过长

SQL语句中直接插入超过4000字节的问题暂未能解决。
在JAVA中可如下处理:

****************************************
使用JDBC存取ORACLE中的LONG类型的数据
****************************************

插入LONG类型的数据

    BufferedReader bufReader = new BufferedReader(new FileReader(file));
    Integer id = Integer.valueOf(PubFun1.CreateMaxNo(TEST_LONG_ID, 1));
    PreparedStatement pstmt = con.prepareStatement(INSERT_LONG_SQL);
    pstmt.setObject(1, id);
    pstmt.setObject(2, fileName);
    pstmt.setCharacterStream(3, bufReader, (int) length);
    int retValue = pstmt.executeUpdate();
    if (retValue != 1) {
        logger.error("Error on insert value");
    }
    bufReader.close();
    pstmt.close();

INSERT_LONG_SQL的值为:
INSERT INTO T_LONGTEST(ID, FILENAME, CONTENT) VALUES (?, ?, ?)
注意需要使用setCharacterStream方法设置LONG类型的字段的值

读取LONG类型的数据

读取也需要使用Stream的方式来读取,下面的代码片断说明了读取LONG类型的字段的方法.
    PreparedStatement pstmt = con.prepareStatement(QUERY_LONG_COL_SQL);
    pstmt.setObject(1, id);
    ResultSet rs = pstmt.executeQuery();
    if (rs.next()) {
        Reader reader = rs.getCharacterStream(1);
        BufferedReader bufReader = new BufferedReader(reader);
        StringBuffer strBuf = new StringBuffer();
        String line;
        while ((line = bufReader.readLine()) != null) {
            strBuf.append(line);
            strBuf.append("/r/n");
        }
        bufReader.close();
        System.out.println("The content is:" + strBuf.toString());
    }
QUEYR_LONG_COL_SQL的取值为:SELECT CONTENT FROM T_LONGTEST WHERE ID=?
分享到:
评论

相关推荐

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-01704: 文字字符串过长”的错误。这个错误通常意味着你试图插入的字符串超过了Oracle数据库允许的最大长度,对于VARCHAR2类型...

    向Oracle数据库的CLOB属性插入数据报字符串过长错误

    当你尝试向CLOB字段插入数据时,如果遇到“字符串过长”的错误,通常是因为你的插入操作试图将超过Oracle允许的最大限制的数据放入CLOB字段。 Oracle CLOB字段可以存储最多4GB的数据,但在某些情况下,如使用SQL...

    oracle 如何判断一个字符串能否转换为数字?

    根据Oracle官方文档和提供的错误信息,我们可以得知该错误发生的根本原因是尝试将一个非数值型的字符串转换为数字时失败了。具体来说: - **错误原因**:当尝试将一个字符型字段转换为数字时,如果该字段包含的不是...

    ORACLE 超长字符串问题的解决办法

    这种方法成功地解决了字符串过长的问题。 总结一下,处理Oracle中的超长字符串问题,我们可以采取以下策略: 1. **使用CLOB类型**:当VARCHAR2类型无法满足需求时,CLOB是理想的解决方案,它能处理远超VARCHAR2的...

    bcp导库报错 错误字符串数据,右截位

    ### bcp导库报错:错误字符串数据,右截位 在进行数据库操作时,我们经常会遇到各种各样的错误提示,这些错误提示虽然有时让人感到困惑,但它们往往是解决问题的关键线索。本文将针对一个常见的问题——使用`bcp`...

    Oracle 错误集选

    ### ORA-01780: 要求文字字符串 当SQL语句期望得到字符串类型的输入,但接收到其他类型数据时,会抛出此错误。检查并确保数据类型匹配。 ### ORA-01781: UNRECOVERABLE不能指定没有AS SELECT 此错误涉及不可恢复...

    oracle汉字转拼音package包-支持UTF8

    pinyin := oracle汉字转拼音package.get_pinyin('汉字字符串'); DBMS_OUTPUT.PUT_LINE(pinyin); END; / ``` 需要注意的是,由于汉字转拼音可能存在多种读音和多音字的情况,因此这个Package可能还需要提供一些...

    oracle函数大全

    在文档中,由于扫描识别的技术原因,一些文字可能有错误或缺失,这需要我们在使用过程中结合官方Oracle文档或实际数据库环境进行验证和纠正。总之,Oracle提供了全面的函数集合来支持数据处理和查询操作,这使得...

    ADO.NET 连接数据库字符串小结(Oracle、SqlServer、Access、ODBC)

    为了使代码示例通顺,在解释连接字符串时,我们已经忽略了OCR扫描中可能存在的文字识别错误或遗漏。在实践中,开发者需要确保所使用的连接字符串准确无误,且要根据自己的数据库配置适当修改。最后,由于连接数据库...

    Oracle資料如何匯出成文字檔

    - **设置行宽度**:`set linesize 1000`用于设置每行的最大字符数为1000个字符,这对于包含较长字符串的字段尤其重要,以防止数据被截断。 - **开启输出文件**:`spool member.txt`表示开启了输出到名为`member....

    Oracle数据库乱码问题

    为了避免此类问题的发生,建议使用微软的OleDb连接字符串方式。具体配置如下: ```plaintext Provider=MSDAORA;PersistSecurityInfo=True; UserID=nlpacs;Password=nlpacs;DataSource=nlemr0301 ``` 这里使用的是`...

    oracle数据库原理与设计知识点

    字符类型中,CHAR用于定长字符串,而VARCHAR2用于变长字符串。数值类型是NUMBER,可用于表示所有数值数据。日期类型是DATE,用于保存日期数据。 SELECT语句是SQL语言中用于查询数据的核心语句,其基本语法包括...

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_04章_Oracle数据类型和函数.

    而字符或字符串类型数据则用来记录文字信息。 在Oracle数据库中,数据类型的选择对于表结构的设计至关重要。合理选择数据类型不仅可以节省存储空间,还能提高查询性能。Oracle提供了广泛的数据类型来满足各种应用...

    鸿鹄论坛_oracle四大宝典之1:Oracle Sql基础.

    9. **文字字符串**:在SQL中,通常使用单引号`' '`来定义文字字符串。 10. **相同的行**:为了避免查询结果中出现重复的行,可以使用`DISTINCT`关键字。 #### 三、约束和排序 ##### 2.2 用选择限定行 1. **限定...

    如何解决ORA-01843与NLS_DATE_FORMAT问题

    其次,`ORA-01861: 文字与格式字符串不匹配`错误通常是因为日期字符串与`TO_DATE`函数中指定的格式模式不匹配。在上述示例中,尝试使用'19-11月-08'和'mm-dd-yyyy'作为格式模式进行转换,导致了错误。正确的做法是...

    Oracle Sql基础 宝典系列1

    - **文字字符串**:可以直接在SELECT语句中使用单引号(' ')包含的文字字符串。 - **相同的行**:如果数据表中有重复的行,可以使用 `DISTINCT` 关键字来返回唯一的行。 ##### 1.5 iSQL*Plus简介 - **iSQL*Plus...

    oracle 基本语法1

    - Oracle支持多种数据类型,如`NUMBER(precision, scale)`用于存储数值,`VARCHAR2(length)`存储变长字符串,`DATE`存储日期和时间,`BINARY_FLOAT`和`BINARY_DOUBLE`用于浮点数,以及`TIMESTAMP`和`INTERVAL`等...

    Oracle8i_9i数据库基础

    §1.5.5 Change(替换字符串)命令 34 §1.5.6 Append(追加字符串)命令 34 §1.5.7 Save保存当前缓冲区命令到文件 35 §1.5.8 GET将命令文件读到缓冲区 35 §1.5.9 SPOOL将信息记录到文件中 36 §1.5.10 再运行当前...

    Oracle Sql基础 Oracle Sql基础 Oracle Sql基础

    - **1.4.9 文字字符串** - 字符串常量需要用单引号括起来,如'Hello'。 - **1.4.10 相同的行** - SQL默认会返回所有匹配的结果行,包括重复的行。如果需要去除重复的数据,可以使用DISTINCT关键字。 **1.5 iSQL\*...

Global site tag (gtag.js) - Google Analytics