это наверно легко, но я не знаю как...

LolaS
Дата: 05.11.2008 07:37:59
написала запрос. а вот как уловие вставить - не знаю. подскажите пжл, я в оракле впервые. мне нужно такое уловие

если rec.jurfl=0, то str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, '
в противном случае str:=str||rec1.name||' '||rec1.opform_name||' '||rec1.rate||'%, '

синтаксис if ... then ...else не катит, а другого не знаю

declare str varchar2(1000);
begin
openconnection(user);
delete from temp;
for rec in
(
select
r.code,
h.dep_id,
h.id,
h.NAME,
h.BIRDATE,
h.OPFORM,
h.DOLGNOST,
substr(h.ADDRJUR,1,instr(h.ADDRJUR,',')-1) as ADDRJUR1,
substr(h.ADDRESS,1,instr(h.ADDRESS,',')-1) as ADDRESS1,
substr(bs_dom.DLongName('G_CLIHST_OPFORM', h.OPFORM), 1, 250) as OPFORM_NAME,
h.PSTIDX,
h.ADDRESS,
h.jurfl
from g_clihst h,g_cli c,t_reg r
where h.dep_id=c.dep_id and h.id=c.id
and h.reg_id=r.id(+)
and P_Operday between h.FROMDATE and h.TODATE
and substr(c.ROLEMASK, G_PkgMask.fConst('AFF'), 1) = '1'
and nvl(c.SECRET, 0) <= G_PkgAff.fShowLevel
)loop
str:='';
for rec1 in
(
select a.rate,
h.dep_id,
h.id,
h.NAME,
h.BIRDATE,
h.OPFORM,
h.DOLGNOST,
substr(h.ADDRJUR,1,instr(h.ADDRJUR,',')-1) as ADDRJUR1,
substr(h.ADDRESS,1,instr(h.ADDRESS,',')-1) as ADDRESS1,
substr(bs_dom.DLongName('G_CLIHST_OPFORM', h.OPFORM), 1, 250) as OPFORM_NAME,
h.PSTIDX,
h.ADDRESS
from g_aff a,g_clihst h
where a.objdep_id=rec.dep_id and a.obj_id=rec.id
and P_Operday between h.FROMDATE and h.TODATE
and a.sbjdep_id=h.dep_id and a.sbj_id=h.id
)loop

str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, ';

end loop;



insert into temp
(name,opform,birdate,dolgnost,addrjur,address,pstidx, name_sub, opform_name)
values (rec.name,rec.opform,rec.birdate,rec.dolgnost,rec.addrjur1,rec.address1,rec.pstidx,str,rec.opform_name);
end loop;
end;
Добрый Э - Эх
Дата: 05.11.2008 07:45:06
LolaS
синтаксис if ... then ...else не катит, а другого не знаю
Зато очень даже катит синтаксис CASE ... WHEH ... THEN ... ELSE... END ;)
Добрый Э - Эх
Дата: 05.11.2008 07:46:27
Кстати, я не понял, чем IF ... THEN ... ELSE ... END IF у тебя не прокатил???
Добрый Э - Эх
Дата: 05.11.2008 07:47:39
Вобщем, покажи, как делала.
semenar
Дата: 05.11.2008 07:48:35
автор
синтаксис if ... then ...else не катит, а другого не знаю

Oracle® Database SQL Reference.10g Release 2 (10.2).CASE Expressions .
LolaS
Дата: 05.11.2008 07:58:36
semenar
автор
синтаксис if ... then ...else не катит, а другого не знаю

Oracle® Database SQL Reference.10g Release 2 (10.2).CASE Expressions .



делала так

if rec.jurfl = 0 then
str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, '
else
str:=str||rec1.name||' '||rec1.opform_name||' '||rec1.rate||'%, ';
LolaS
Дата: 05.11.2008 08:00:48
Добрый Э - Эх
Вобщем, покажи, как делала.



делала так

if rec.jurfl = 0 then
str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, '
else
str:=str||rec1.name||' '||rec1.opform_name||' '||rec1.rate||'%, ';
LolaS
Дата: 05.11.2008 08:01:21
LolaS
semenar
автор
синтаксис if ... then ...else не катит, а другого не знаю

Oracle® Database SQL Reference.10g Release 2 (10.2).CASE Expressions .



делала так

if rec.jurfl = 0 then
str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, '
else
str:=str||rec1.name||' '||rec1.opform_name||' '||rec1.rate||'%, ';



ошиблась адресом...
semenar
Дата: 05.11.2008 08:02:12
автор
делала так
if rec.jurfl = 0 then 
str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, '
else
str:=str||rec1.name||' '||rec1.opform_name||' '||rec1.rate||'%, ';

Пользуйтесь тэгом SRC. Ну, так по ссылке ходили? Все ведь просто.
Добрый Э - Эх
Дата: 05.11.2008 08:05:39
LolaS
Добрый Э - Эх
Вобщем, покажи, как делала.



делала так
if rec.jurfl = 0 then 
 str:=str||rec1.name||' '||rec1.birdate||' '||rec1.rate||'%, ';
else
str:=str||rec1.name||' '||rec1.opform_name||' '||rec1.rate||'%, ';
 end if;

Ну, как минимум две ошибки:
1) Отсутствие точки с запятой
2) Отсутствие конца условного оператора IF.