1 Sql und 1 Pl/Sql zusammenbringen Brauche hilfe :)

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
 

Anhänge

  • plsql-sql.zip
    1,4 KB · Aufrufe: 12
Ich bin immernoch am herumexperimentieren, aber irgendwie klappt dass einfach nicht. Ich versuche jetzt, eine neue Tabelle zu erstellen und dort einen grossen Teil der Daten hineinzubekommen, dass die abfrage einfacher wird. Für Lösungen bin ich euch sehr dankbar.

Mfg Psico
 
Ich meinte die beiden Dateien ineinander zu bekommen, so dass es alles im plsql ausführt. Ich habs jetzt hinbekommen, ich hab einfach das sql ins plsql eingebaut und unten dann eine weitere select Abfrage gemacht, welche dann aus der generierten Tabelle die daten ausliest. :)

Danke trotzdem
 

Neue Beiträge

Zurück