标签: clob

替换 Oracle 变量中的 CLOB 文本

我有一个 Oracle 过程,它接受参数 (v_MessageText) 来更新表上名为 message_text 的列。message_text 列是 CLOB。我希望能够替换输入中的文本,因此如果用户输入 testABC ,它会将 testXYZ 输出到 message_text 列中。起初,这看起来很简单。我尝试在我的程序中运行下面的代码,但出现错误:

    SELECT REPLACE (v_MessageText, 'ABC', 'XYZ') from dual;
Run Code Online (Sandbox Code Playgroud)

Oracle 给我的错误是:“PLS-00428:此 select 语句中需要一个 INTO 子句”。为什么?我在这里做错了什么?

oracle plsql replace clob

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

逐行读取clob变量

有一个值列表,我从shell获得输出.该列表每行包含一个"名称",如下所示.它有超过300行,预计会更长.

BeforeArchive_Field
BeforeArchive_Reservoir
BeforeArchive_Well
BeforeArchive_Wellbore
BeforeArchive_WellboreCompletion
BeforeArchive_WellboreContactInterval
ba_organization_part0
ba_organization_part2
Run Code Online (Sandbox Code Playgroud)

我需要将此列表传递给pl/sql过程,以便它可以解析它并操作每个单独的"名称".由于列表的长度,我想到创建一个存储过程,它将此列表作为CLOB参数.

这两个问题是:

这是处理列表的最佳方式(格式)吗?

如果是这样,有没有一种直接解析这个clob的地狱的方法?

我通过pl\sql 回答逐行阅读这个 阅读clob,但是在某些情况下,事情可能会更简单.

我不熟悉这种LOB格式,并希望得到任何帮助.

sql oracle plsql clob

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

从 Oracle CLOB 中提取值返回 null

我是 XML 和 Clob 的新手。我已经阅读了大量有关该主题的帖子。我正在尝试从此 clob 中提取 studentID 值。我正在使用 Oracle 11.2

<OcXml xmlns="http://oc.csr.com/xml">
  <OcSharedXml>
    <Templates>
      <Template ns:TemplateId="130" ns:TemplateName="Student Graduation Fees" ns:TemplateFilename="Student_Graduation_Fees_1.doc" ns:TemplateSequence="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://oc.rsi.com/xml">
        <Sections>
          <Section ns:SectionId="146" ns:SectionName="Main" ns:SectionSequence="1" ns:MaxRepeat="1">
            <Elements>
              <Element ns:ElementId="134" ns:ElementName="CurrentDt" ns:FieldName="DateOfNotice" ns:DefaultValue="" ns:Editable="false" ns:ElementSequence="1" ns:ElementType="ElmProc" ns:Mandatory="false" ns:Shared="true" ns:DataType="String" ns:Format="NoFmt" ns:RecipientId="" ns:Multiline="false" ns:RecipientAddressFlag="false">
                <ElementValue>2/19/2015</ElementValue>
              </Element>
              <Element ns:ElementId="24" ns:ElementName="InvoiceNo" ns:FieldName="InvoiceNo" ns:DefaultValue="" ns:Editable="true" ns:ElementSequence="2" ns:ElementType="ElmProc" ns:Mandatory="false" ns:Shared="true" ns:DataType="String" ns:Format="NoFmt" ns:RecipientId="" ns:Multiline="false" ns:RecipientAddressFlag="false">
                <ElementValue>352</ElementValue>
              </Element>
              <Element ns:ElementId="16" ns:ElementName="StudentID" ns:FieldName="StudentID" ns:DefaultValue="" ns:Editable="true" ns:ElementSequence="3" ns:ElementType="ElmProc" ns:Mandatory="false" ns:Shared="true" ns:DataType="String" ns:Format="NoFmt" ns:RecipientId="" ns:Multiline="false" ns:RecipientAddressFlag="false"> …
Run Code Online (Sandbox Code Playgroud)

xml oracle extract clob

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

使用SqlRowSet获取Clob Java Spring

我正在尝试从Java Spring项目中的Oracle数据库中检索Clob字段,但我遇到了问题.

首先,我使用名为SqlRowSet的Spring对象进行了查询:

String query = sqlQueries.getProperty("THE_QUERY");
        SqlRowSet rs = select.queryForRowSet(query, new HashMap<String, Object>());
Run Code Online (Sandbox Code Playgroud)

之后,我遍历对象并开始从字段中获取信息:

        while (rs.next()) {
            String name = rs.getString("name");
        }
Run Code Online (Sandbox Code Playgroud)

当我得到查询结果时,我会得到这样的结果:

name=javax.sql.rowset.serial.SerialClob@435dc43
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事,但是我无法从字段中获取信息,最后是字符串(不确定为什么数据库创建者使用clob作为数据类型).

有人知道如何获取这些信息吗?

java spring clob

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

查询XML CLOB列以获取列中的子XML

我的表中有一个包含XML的CLOB列.我想在特定标签之后获取xml到其结束标签即

CLOB列中的完整XML

<ParentTag>
 <Location>ABC XYZ ....</Location>
 <Person>
  <Name>Mohsin</Name>
  <Age>23</Age>
 </Person>
</ParentTag>
Run Code Online (Sandbox Code Playgroud)

我想要获取的是这样的:

<Person>
  <Name>Mohsin</Name>
  <Age>23</Age>
</Person>
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用dbms_lob.substrdbms_lob.getlength,但这并没有帮助,因为子XML可能包含<Person>在不同场景中以不同字节开始的标记.

任何帮助将不胜感激.谢谢

xml sql oracle clob

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

将 CLOB 转换为 String 会删除所有换行符

我有一个启用了 AES 加密的 H2 数据库。它有一个 CLOB 类型的列。该列包含带有换行符的长文本(有时)。当我在 H2 控制台中检查表格时,我得到所有插入新行的输出,但是当我查询表格时,没有新行字符。我正在使用此代码将 CLOB 对象转换为 String 对象:

public String clobToString(Clob data) {
    StringBuilder sb = new StringBuilder();
    try {
        Reader reader = data.getCharacterStream();
        BufferedReader br = new BufferedReader(reader);

        String line;
        while(null != (line = br.readLine())) {
            sb.append(line);
        }
        br.close();
    } catch (SQLException | IOException e) {
        e.printStackTrace();
    }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

我觉得这里有事。有没有其他有效的方法来进行这种 CLOB 到字符串的转换。

java string clob h2 java-11

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

读CLOB列很慢

希望有人能够对我目前使用Oracle数据库的问题有所了解 - 我确信这很简单!

我已经设法在一个示例中重新创建了这个,所以这里是数据库结构:

CREATE TABLE MyTable(
    ixMyTable NUMBER,
    clobData CLOB
)
/

CREATE OR REPLACE PACKAGE PKGTEST
AS
    PROCEDURE DoSomething(
        cur_OUT OUT SYS_REFCURSOR
        );
END PKGTEST;
/

CREATE OR REPLACE PACKAGE BODY PKGTEST
AS

PROCEDURE DoSomething(
    cur_OUT OUT SYS_REFCURSOR
)
AS
BEGIN
    OPEN cur_OUT FOR 
        SELECT ixMyTable, clobData
        FROM MyTable;
END;

END PKGTEST;
/

GRANT EXECUTE ON PKGTEST TO TEST_ROLE
/

BEGIN
    FOR i IN 1 .. 7000 LOOP
        insert into mytable values (i, TO_CLOB('123456'));
    END LOOP;
END;
/ …
Run Code Online (Sandbox Code Playgroud)

database oracle clob

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

将Java字符串转换为CLOB

我有下表: 在此处输入图片说明

问题是,当我尝试使用JDBC在此字段中插入字符串时,总是会收到以下错误:

java.sql.SQLException: Data size bigger than max size for this type: 6019
Run Code Online (Sandbox Code Playgroud)

我现在应该怎么做?

生成INSERT的Java代码如下:

Connection conn2 = null;
   if(connection==null||connection.isClosed())
   {
    System.out.println("Connection is null");
    conn2 = connectDB();
   }
   //REPLACE is non-standard SQL from MySQL, it's counter part of INSERT IGNORE
   String sql = ""; 
   sql = "INSERT INTO TEST."+tablename+" ("+fields+") VALUES ("+fields.replaceAll("[^,]+", "?")+")";

   System.out.println("SQL: "+sql);
   PreparedStatement pstmt =  conn2.prepareStatement(sql);

   // start parsing
   int event = r.getEventType();
   while (true) {
    // for each wanted element 
    if (event == XMLStreamConstants.START_ELEMENT
      && r.getName().toString().equalsIgnoreCase("row")) …
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc clob

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

使用作为clob一部分的substr进行分组

我需要你的帮助以下sql:

SELECT 
  substr(nd.nne_def,4,3) as bzn
FROM 
    core_def.nne_def nd
group by substr(nd.nne_def,4,4);
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

ORA-00932: 00932. 00000 -  "inconsistent datatypes: expected - got CLOB"
Run Code Online (Sandbox Code Playgroud)

我需要sql只是为了分析而不是生产代码.

如何通过属于CLOB的子字符串进行分组?

谢谢你的帮助.

斯特凡

sql oracle group-by clob

0
推荐指数
1
解决办法
557
查看次数

oracle.sql.CLOB 与 java.sql.Clob

我目前正在使用oracle.sql.CLOB绑定到 Oracle Clob。

使用有什么好处吗

java.sql.Clob clob = con.createClob(); 
Run Code Online (Sandbox Code Playgroud)

而不是使用创建临时 Clob

oracle.oracle.sql.CLOB.createTemporary(oracleConn, false, oracle.sql.CLOB.DURATION_SESSION);
Run Code Online (Sandbox Code Playgroud)

我们正在使用 Java 6。

java oracle jdbc clob java-6

0
推荐指数
1
解决办法
1757
查看次数

使用 CLOB 会出现 ORA-06502: PL/SQL: 数字或值错误

下面的代码抛出一个错误:“ORA-06502: PL/SQL: 数字或值错误 ORA-06512: 在第 24 行”。

DECLARE 
v_clob CLOB;
CURSOR cur_a
IS
SELECT
device_num,
Account_number,
CustomerName,
Prem_address ,
      contact_phone ,
      W_status ,
      A_status ,
      "12-1 AM" Twelve21,
      "1-2 AM" One22,
      "2-3 AM" Two23,
      "3-4 AM" Three24,
      CIn4Hrs
    FROM account a
    WHERE 1 =1 ;
BEGIN
  DBMS_LOB.CreateTemporary( v_clob, true );
  FOR rec IN cur_a
  LOOP
    v_clob := v_clob ||rec.device_num|| ',' ||rec.Account_number|| ',' ||rec.contact_phone || ',' ||rec.W_status|| ',' ||rec.A_status|| ',' ||rec.Twelve21|| ',' ||rec.One22|| ',' ||rec.Two23|| ',' ||rec.Three24|| ',' ||rec.CIn4Hrs|| ',' ||SUBSTR(rec.CustomerName,1,15)|| …
Run Code Online (Sandbox Code Playgroud)

oracle plsql clob

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

标签 统计

clob ×11

oracle ×9

java ×4

plsql ×3

sql ×3

jdbc ×2

xml ×2

database ×1

extract ×1

group-by ×1

h2 ×1

java-11 ×1

java-6 ×1

replace ×1

spring ×1

string ×1