Rückgabe eines Select-Statements in einer Linie

Hallo zusammen,

wenn ich das auf meine DB (Oracle) loslasse:

select kst from tabkst where name = ‚Maier‘;

dann bekomme ich folgendes zurück:

kst


1222
1233
2002

Gibt es eine Möglichkeit (wenns geht nur ein Befehl) damit ich statt der „Tabelle“ ne Zeile zurückbekomme die etwa so aussieht:

1222; 1233; 2002;

Vielen Dank für die Antworten

Albert

moin,

mit reinem sql wuesste ich nicht wie man das anstellen sollte
aber du kannst dir ja 'ne store(d?) procedure basteln.
bei interbase geht sowas zumindest - oracle sollte das also
auf die reihe kriegen.

cu locke

Hi,
was locke sagt, stimmt - hier eine mögliche Lösung:

create or replace function WerteAlsListe (vText in varchar2) return varchar2 is
 ret varchar2(2000);
begin
 for i in(select kst from tabkst where name = vText) loop
 ret := ret || i.kst || ';';
 end loop;
 return ret;
exception
 when others then
 return 'WerteAlsListe: Fehler ' || sqlerrm;
end; 

Natürlich ist die Funktion verbesserungswürdig, aber im Prinzip geht es darum, in einer Cursor-For-Schleife die Daten zusammenzuführen.

Gruß

J.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

exception
when others then
return 'WerteAlsListe: Fehler ’ || sqlerrm;
end;

heja, anscheinend setzt sich das exception-haindling doch immer mehr durch … kann das auch irgendwer den leuten sagen, die diese tollen sql-scripts schreiben, die ständig mit db-fehlermeldungen daherkommen und man zuerst suchen muß, wo ungefähr in welchem script das ganze auftauchte? :wink:

grüße,
tomh