Korrekte SQL? Aus PL/SQL reine SQL?

patricia179

Grünschnabel
Hi, habe folgendes Problem. Ich habe ein PL/SQL-Skript kann es von einem Java-Programm aus nicht ausführen, das geht leider nur im SQL*Worksheet von Oracle.
Meine Datenbank läuft auf ORacle 9i. Ich habe probiert das PL/SQL-Skript in ein reines SQL-Skript umzuwandeln, aber jetzt weiss ich nicht mehr weiter.
Kann mir jemand helfen?

Select a.ow owner,
min(a.seg),
decode(count(*),1,'(none)',2,' ','+') segment,
to_char(sum(a.segb)/decode(count(*),1,1,count(*)-1),'999,999,999')"SEG BYTES",
to_char(sum(a.owb),'999,999,999') " OWNER BYTES",
to_char(sum(a.segb)/decode(count(*),1,1,count(*)-1)/decode(sum(a.owb),0,1, sum(a.owb))*100, '990.99')"PCT"
from (
select owner ow,
segment_name seg,
sum(bytes) segb,
000000000000 owb
from dba_segments d
where owner not in ('SYS', 'SYSTEM', 'SCOTT')
and segment_name not like 'GUBBHLP%'
group by owner,
segment_name
having sum(bytes) = (select max(sum(bytes))
from dba_segments c
where c.owner = d.owner
and segment_name not like 'GUBBHLP%'
group by c.segment_name)
union all
select owner,
'~',
0,
sum(bytes)
from dba_segments
where owner not in ('SYS', 'SYSTEM', 'SCOTT')
group by owner) a
group by a.ow;
 
Hi, also meiner Meinung nach, wird das nicht klappen, dass Script frei von DBMS spezifischen Funktionen etc. zu machen, außer du löschst sie aus dem Query. In reinem SQL-gibt es einige / viele Funktionen nicht, die DBMS zur verfügung stellen. daher wird es kaum möglich sein, was du vorhast.

Aber, was mich wundert: wieso kannst du denn dein Query nicht mit deinem Programm ausführen? Kommt irgend eine Fehlermeldung oder woran hast du gemerkt, dass es nicht funktioniert? Dass das Problem an Java liegt, kann ich mir nicht vorstellen. Oracle ist ja Java basierend.

mfg
 
HI wenn ich eine Fehlermeldung ausgeben lasse, krieg ich nur SQL Exception - Null Pointer exception.
Ich habe den DB-Zugriff mit Netbeans gemacht und ein Frame erstellt der mir das Ergebnis ausgeben soll. Er liefert mir den 1. wert zurück sagt aber vorher schon Cursor ist an einer falschen Position. Habe dann anstatt. rs.first() -> rs.last() genommen dann bekomme ich: Ora-00911: Ungültiges Zeichen.

Also liegt der Fehler irgendwo in der SQL, warum bekomme ich dann keine Fehler wenn ich die SQL mit SQL*Plus worksheet ausführe?

Ich glaube ich lasse es einfach.
 
Zurück