Psicopatico
Grünschnabel
Ich habe eine Datei als Sql und eine als PL/Sql und ich bekomme die beiden einfach nicht zusammen 
PL/SQL:
DECLARE
l_fallnr varchar2(10);
l_patnr varchar2(10);
l_name varchar2(30);
l_vorname varchar2(30);
l_gebdatum date;
l_falleindatum date;
l_fallausdatum date;
l_gebdt varchar2(10);
l_eindatum varchar2(10);
l_ausdatum varchar2(10);
l_fach_recid number(11);
l_chop1 varchar2(10);
l_chop2 varchar2(10);
l_chop3 varchar2(10);
l_chop4 varchar2(10);
l_chop5 varchar2(10);
l_chop6 varchar2(10);
l_chop7 varchar2(10);
l_chop8 varchar2(10);
l_chop9 varchar2(10);
l_chop10 varchar2(10);
l_bfsausentscheid varchar2(2);
nc number(11);
CURSOR c_tab IS
select p.fallnr, p.patnr, p.name, p.vorname, p.gebdatum, p.falleindatum, p.fallausdatum,
to_char(p.gebdatum,'dd.mm.yyyy') gebdt,
to_char(p.falleindatum,'dd.mm.yyyy') eindatum,
to_char(p.fallausdatum,'dd.mm.yyyy') ausdatum, f.chop
from fallazleistung f, patfall p
where f.ismfallnr = p.ismfallnr
and p.falleindatum >= to_date('01.03.2004','dd.mm.yyyy')
and p.fallausdatum <= to_date('11.03.2004','dd.mm.yyyy')
and p.kategorie = 10
and p.status = 31
and f.typ = 6
order by p.fallnr, f.recid;
v_tab c_tab%rowtype;
BEGIN
dbms_output.enable(1000000);
open c_tab;
fetch c_tab into v_tab;
l_fallnr := v_tab.fallnr;
while c_tab%found loop
while l_fallnr = v_tab.fallnr loop
nc := nc + 1;
if nc = 1 then l_chop1 := v_tab.chop;
end if;
if nc = 2 then l_chop2 := v_tab.chop;
end if;
if nc = 3 then l_chop3 := v_tab.chop;
end if;
if nc = 4 then l_chop4 := v_tab.chop;
end if;
if nc = 5 then l_chop5 := v_tab.chop;
end if;
if nc = 6 then l_chop6 := v_tab.chop;
end if;
if nc = 7 then l_chop7 := v_tab.chop;
end if;
if nc = 8 then l_chop8 := v_tab.chop;
end if;
if nc = 9 then l_chop9 := v_tab.chop;
end if;
if nc = 10 then l_chop10 := v_tab.chop;
end if;
fetch c_tab into v_tab;
exit when c_tab%notfound;
end loop;
dbms_output.put_line (l_chop1||' '||l_chop2||' '||l_chop3||' '||l_chop4||' '||l_chop5||' '||l_chop6||' '||l_chop7||' '||l_chop8||' '||l_chop9||' '||l_chop10);
nc := 0;
l_chop1 := '';
l_chop2 := '';
l_chop3 := '';
l_chop4 := '';
l_chop5 := '';
l_chop6 := '';
l_chop7 := '';
l_chop8 := '';
l_chop9 := '';
l_chop10 := '';
l_fallnr := v_tab.fallnr;
end loop;
close c_tab;
end;
/
SQL:
SELECT rpad(a.fallnr,30) ||''||
rpad(a.name,30) ||''|| rpad(a.vorname,30) ||''||
rpad(to_char(a.falleindatum,'dd.mm.yyyy'),10) ||''||
rpad(to_char(a.fallausdatum,'dd.mm.yyyy'),10) ||''||
lpad(to_number(to_char(fallausdatum,'DD')) -
to_number(to_char(falleindatum,'DD')) +
(to_number(to_char(fallausdatum,'MM')) -
to_number(to_char(falleindatum,'MM'))) * 30 +
(to_number(to_char(fallausdatum,'YYYY')) -
to_number(to_char(falleindatum,'YYYY'))) * 365 + 1,4) ||''||
rpad(to_char(a.gebdatum,'dd.mm.yyyy'),10) ||''||
lpad(round((to_number(to_char(sysdate,'DD')) -
to_number(to_char(a.gebdatum,'DD')) +
(to_number(to_char(sysdate,'MM')) -
to_number(to_char(a.gebdatum,'MM'))) * 30 +
(to_number(to_char(sysdate,'YYYY')) -
to_number(to_char(a.gebdatum,'YYYY'))) * 365 + 1) / 365 - 0.5,0),3,'000')||''||
lpad('000',3,'000') ||''||
lpad(decode(a.geschlecht,'M',1,'W',2,'I',3,'U',0),1) ||''||
lpad(' ',2,' ') ||''||
lpad('0000',4,'0000') ||''||
lpad(' ',1,' ') ||''||
lpad(b.bfsherkunft,1) ||''||
lpad(b.bfseinart,1) ||''||
lpad(b.bfseinweiser,1) ||''||
lpad('A',1,'A') ||''||
lpad(b.icd1,5) ||''||
lpad(b.icd2,5) ||''||
lpad(b.icd3,5) ||''||
lpad(b.icd4,5) ||''||
lpad(b.icd5,5) ||''||
lpad(b.icd6,5) ||''||
lpad(b.icd7,5) ||''||
lpad(b.icd8,5) ||''||
lpad(b.icd9,5) ||''||
lpad(b.icd10,5) ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') "Pat-Name"
FROM dual, patfall a, fallfach b
WHERE a.falleindatum >= to_date('31.01.2004','dd.mm.yyyy') AND
a.fallausdatum <= to_date('31.03.2004','dd.mm.yyyy') AND
a.kategorie = 10 AND
a.status = 31 AND
a.ismfallnr = b.ismfallnr AND
b.recid =
(select max(recid)
from fallfach
where ismfallnr = a.ismfallnr)
/
Die beiden Dateien findet Ihr als Attachement, da ist es etwas übersichtlicher.
Bin für eure Hilfe dankbar

PL/SQL:
DECLARE
l_fallnr varchar2(10);
l_patnr varchar2(10);
l_name varchar2(30);
l_vorname varchar2(30);
l_gebdatum date;
l_falleindatum date;
l_fallausdatum date;
l_gebdt varchar2(10);
l_eindatum varchar2(10);
l_ausdatum varchar2(10);
l_fach_recid number(11);
l_chop1 varchar2(10);
l_chop2 varchar2(10);
l_chop3 varchar2(10);
l_chop4 varchar2(10);
l_chop5 varchar2(10);
l_chop6 varchar2(10);
l_chop7 varchar2(10);
l_chop8 varchar2(10);
l_chop9 varchar2(10);
l_chop10 varchar2(10);
l_bfsausentscheid varchar2(2);
nc number(11);
CURSOR c_tab IS
select p.fallnr, p.patnr, p.name, p.vorname, p.gebdatum, p.falleindatum, p.fallausdatum,
to_char(p.gebdatum,'dd.mm.yyyy') gebdt,
to_char(p.falleindatum,'dd.mm.yyyy') eindatum,
to_char(p.fallausdatum,'dd.mm.yyyy') ausdatum, f.chop
from fallazleistung f, patfall p
where f.ismfallnr = p.ismfallnr
and p.falleindatum >= to_date('01.03.2004','dd.mm.yyyy')
and p.fallausdatum <= to_date('11.03.2004','dd.mm.yyyy')
and p.kategorie = 10
and p.status = 31
and f.typ = 6
order by p.fallnr, f.recid;
v_tab c_tab%rowtype;
BEGIN
dbms_output.enable(1000000);
open c_tab;
fetch c_tab into v_tab;
l_fallnr := v_tab.fallnr;
while c_tab%found loop
while l_fallnr = v_tab.fallnr loop
nc := nc + 1;
if nc = 1 then l_chop1 := v_tab.chop;
end if;
if nc = 2 then l_chop2 := v_tab.chop;
end if;
if nc = 3 then l_chop3 := v_tab.chop;
end if;
if nc = 4 then l_chop4 := v_tab.chop;
end if;
if nc = 5 then l_chop5 := v_tab.chop;
end if;
if nc = 6 then l_chop6 := v_tab.chop;
end if;
if nc = 7 then l_chop7 := v_tab.chop;
end if;
if nc = 8 then l_chop8 := v_tab.chop;
end if;
if nc = 9 then l_chop9 := v_tab.chop;
end if;
if nc = 10 then l_chop10 := v_tab.chop;
end if;
fetch c_tab into v_tab;
exit when c_tab%notfound;
end loop;
dbms_output.put_line (l_chop1||' '||l_chop2||' '||l_chop3||' '||l_chop4||' '||l_chop5||' '||l_chop6||' '||l_chop7||' '||l_chop8||' '||l_chop9||' '||l_chop10);
nc := 0;
l_chop1 := '';
l_chop2 := '';
l_chop3 := '';
l_chop4 := '';
l_chop5 := '';
l_chop6 := '';
l_chop7 := '';
l_chop8 := '';
l_chop9 := '';
l_chop10 := '';
l_fallnr := v_tab.fallnr;
end loop;
close c_tab;
end;
/
SQL:
SELECT rpad(a.fallnr,30) ||''||
rpad(a.name,30) ||''|| rpad(a.vorname,30) ||''||
rpad(to_char(a.falleindatum,'dd.mm.yyyy'),10) ||''||
rpad(to_char(a.fallausdatum,'dd.mm.yyyy'),10) ||''||
lpad(to_number(to_char(fallausdatum,'DD')) -
to_number(to_char(falleindatum,'DD')) +
(to_number(to_char(fallausdatum,'MM')) -
to_number(to_char(falleindatum,'MM'))) * 30 +
(to_number(to_char(fallausdatum,'YYYY')) -
to_number(to_char(falleindatum,'YYYY'))) * 365 + 1,4) ||''||
rpad(to_char(a.gebdatum,'dd.mm.yyyy'),10) ||''||
lpad(round((to_number(to_char(sysdate,'DD')) -
to_number(to_char(a.gebdatum,'DD')) +
(to_number(to_char(sysdate,'MM')) -
to_number(to_char(a.gebdatum,'MM'))) * 30 +
(to_number(to_char(sysdate,'YYYY')) -
to_number(to_char(a.gebdatum,'YYYY'))) * 365 + 1) / 365 - 0.5,0),3,'000')||''||
lpad('000',3,'000') ||''||
lpad(decode(a.geschlecht,'M',1,'W',2,'I',3,'U',0),1) ||''||
lpad(' ',2,' ') ||''||
lpad('0000',4,'0000') ||''||
lpad(' ',1,' ') ||''||
lpad(b.bfsherkunft,1) ||''||
lpad(b.bfseinart,1) ||''||
lpad(b.bfseinweiser,1) ||''||
lpad('A',1,'A') ||''||
lpad(b.icd1,5) ||''||
lpad(b.icd2,5) ||''||
lpad(b.icd3,5) ||''||
lpad(b.icd4,5) ||''||
lpad(b.icd5,5) ||''||
lpad(b.icd6,5) ||''||
lpad(b.icd7,5) ||''||
lpad(b.icd8,5) ||''||
lpad(b.icd9,5) ||''||
lpad(b.icd10,5) ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',5,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') ||''||
lpad(' ',4,' ') "Pat-Name"
FROM dual, patfall a, fallfach b
WHERE a.falleindatum >= to_date('31.01.2004','dd.mm.yyyy') AND
a.fallausdatum <= to_date('31.03.2004','dd.mm.yyyy') AND
a.kategorie = 10 AND
a.status = 31 AND
a.ismfallnr = b.ismfallnr AND
b.recid =
(select max(recid)
from fallfach
where ismfallnr = a.ismfallnr)
/
Die beiden Dateien findet Ihr als Attachement, da ist es etwas übersichtlicher.
Bin für eure Hilfe dankbar