我有一张表具有id和clob内容,如:
Create Table v_example_l (
nip number,
xmlcontent clob
);
我们插入数据:
Insert into V_EXAMPLE_L (NIP,XMLCONTENT)
Values (17852,'<section><block><name>delta</name><content>548484646846484</content></block></section>');
Insert into V_EXAMPLE_L (NIP,XMLCONTENT)
Values (17852,'<section><block><name>omega</name><content>545648468484</content></block></section>');
Insert into V_EXAMPLE_L (NIP,XMLCONTENT)
Values (17852,'<section><block><name>gamma</name><content>54564846qsdqsdqsdqsd8484</content></block></section>');
我正在尝试连接clob的行,这些行是select的结果,我的意思是不必给出关于表名称的多个参数等等,我应该只给这里列包含clobs,它应该处理其余的。
CREATE OR REPLACE function assemble_clob(q varchar2)
return clob
is
v_clob clob;
tmp_lob clob;
hold VARCHAR2(4000);
--cursor c2 is select xmlcontent from V_EXAMPLE_L where id=17852
cur sys_refcursor;
begin
OPEN cur FOR q;
LOOP
FETCH cur INTO tmp_lob;
EXIT WHEN cur%NOTFOUND;
--v_clob := v_clob || XMLTYPE.getClobVal(tmp_lob.xmlcontent);
v_clob := v_clob || tmp_lob;
END LOOP;
return (v_clob);
--return (dbms_xmlquery.getXml( dbms_xmlquery.set_context("Select 1 from dual")) )
end assemble_clob;
这个功能坏了......(如果有人能给我一个帮助,非常感谢,而且我是sob中的noob所以......)。谢谢!
答案 0 :(得分:3)
你并没有真正说出为什么它被打破了,但是DBMS_LOB包有一个APPEND功能可能就是你想要的。
答案 1 :(得分:1)
你必须解释发生的事情并非你所期望的。你的例子适合我。在SQLPlus中,请注意需要将SET LONG设置为足够大的值来获取整个CLOB内容。
dev> set long 2000
dev> select assemble_clob('select xmlcontent from v_example_l') from dual;
ASSEMBLE_CLOB('SELECTXMLCONTENTFROMV_EXAMPLE_L')
--------------------------------------------------------------------------------
<section><block><name>delta</name><content>548484646846484</content></block></se
ction><section><block><name>omega</name><content>545648468484</content></block><
/section><section><block><name>gamma</name><content>54564846qsdqsdqsdqsd8484</co
ntent></block></section>
答案 2 :(得分:1)
尝试使用
DBMS_LOB.append (v_clob,tmp_lob);