puma777
Дата: 17.09.2015 13:48:32
Здравствуйте! Помогите,повалуйста,мне нужно,чтобы один внутренний lob (pc_text1) присоединилась в конец другого внутреннего lob (pc_text2).Моя программа выдает только lob (pc_text1),но нужно ,чтобы в конце добавлялось еще и lob (pc_text2). Есть такая процедура DBMS_LOB.APPEND (pc_text1,pc_text2),но я не знаю куда ставить и как вызвать ее?Может кто поможет? Спасибо!
create or replace package body PACKAGE is
pc_text1 clob;
-- pc_text2 clob;
procedure rep(av_source varchar2, av_target varchar2) is
begin
pc_text1 := replace(pc_text1, av_source, av_target);
end;
procedure load(av_rep varchar2) is
begin
select data dat into pc_text1 from rep_blob where rep = av_rep;
exception
when no_data_found then
dbms_lob. trim(pc_text1, 0);
end;
procedure cur_body(an_Cont P_Type.T_Contract, av_rep varchar2) is
lc_temp clob;
begin
for r in ((select
(select cst.customer from u_customer cst where cst.customer=pl.customer)cust, to_char(s.ENTRYDATE, 'dd.mm.yyyy') entdate
from TABLE1 s, TABLE2 l,TABLE pl
where l.CONTRACT = s.CONTRACT
and pl.contract=l.CONTRACT
and l.CONTRACT =an_cont
and s.refnum =
(select max(refnum)
from TABLE4
where s.contract = contract
and s.ACCOUNT = account))
) loop
load(av_rep);
rep('&cust&', r.cust);
rep('&entdate&', r. entdate);
end loop;
p_lob.setclob(pc_text1, 2);
end;
end PACKAGE;
ArtNick
Дата: 17.09.2015 13:55:32
puma777
Дата: 17.09.2015 14:03:38
ArtNick,
а куда ставить?Я вместо p_lob.setclob(pc_text1, 2) ставил DBMS_LOB.APPEND (pc_text1,pc_text2),но ничего не вышло,то есть я получил только один lob (pc_text1):
........
end loop;
--p_lob.setclob(pc_text1, 2);
DBMS_LOB.APPEND (pc_text1,pc_text2)
end;
+
Дата: 17.09.2015 14:14:12
puma777,
а где в процедуре присваивание значения pc_text2?
puma777
Дата: 17.09.2015 14:36:52
+,
Так у меня и после присваивания ничего не выходит
create or replace package body PACKAGE is
pc_text1 clob;
pc_text2 clob;
procedure rep(av_source varchar2, av_target varchar2) is
begin
pc_text1 := replace(pc_text1, av_source, av_target);
pc_text2 := replace(pc_text2, av_source, av_target);
end;
procedure load(av_rep1 varchar2) is
begin
select data dat into pc_text1 from rep_blob where rep = av_rep1;
exception
when no_data_found then
dbms_lob. trim(pc_text1, 0);
end;
procedure load(av_rep2 varchar2) is
begin
select data dat into pc_text2 from rep_blob where rep = av_rep2;
exception
when no_data_found then
dbms_lob. trim(pc_text2, 0);
end;
procedure cur_body(an_Cont P_Type.T_Contract, av_rep1 varchar2) is
lc_temp clob;
begin
for r in ((select
(select cst.customer from u_customer cst where cst.customer=pl.customer)cust, to_char(s.ENTRYDATE, 'dd.mm.yyyy') entdate
from TABLE1 s, TABLE2 l,TABLE pl
where l.CONTRACT = s.CONTRACT
and pl.contract=l.CONTRACT
and l.CONTRACT =an_cont
and s.refnum =
(select max(refnum)
from TABLE4
where s.contract = contract
and s.ACCOUNT = account))
) loop
load(av_rep,);
rep('&cust&', r.cust);
rep('&entdate&', r. entdate);
end loop;
p_lob.setclob(pc_text1, 2);
end;
PACKAGE1.cur_body(l.contract, av_rep2);
end PACKAGE;
+
Дата: 17.09.2015 14:45:17
puma777,
ты троллишь что ли?
JDS
Дата: 17.09.2015 14:54:11
+ |
SQL> declare
2 c1 clob := 'clob1';
3 c2 clob := 'clob2';
4 begin
5 dbms_output.enable;
6 dbms_lob.append(c1, c2);
7 dbms_output.put_line(c1);
8 end;
9 /
clob1clob2
PL/SQL procedure successfully completed
SQL>
|