PL/SQL-cursor: Wie SUM() selektieren?

Hallo,
habe folgendes PL/SQL-Konstrukt:

procedure countbytes is
cursor curSchema is
select owner, sum(bytes) "groesse
from sys.dba_extents
group by owner
order by owner;
[…]
begin
for i in curSchema loop
dbms_output.put_line(i.owner || to_char(i.groesse));
end loop;
end;

…und an der Stelle, wo ich auf i.groesse zugreife, kracht’s beim compilieren: PLS 00302: component „groesse“ must be declared.

Welche Möglichkeit habe ich, in einer Schleife wie oben beschrieben auf eine Aggregatsfunktion wie SUM zuzugreifen? In der output-Zeile entsprechend i.groesse durch i.sum oder i.sum(bytes) zu ersetzen klappt ebenfalls nicht.

Gruss,
Ralf

Hallo Ralf!

select owner, sum(bytes) „groesse“

Nimm’ mal die Anführungszeichen rund um groesse weg, dann müsste es gehen. Bin jetzt aber zu faul um nachzulesen, ob das ein Bug ist, oder ob man die " nur im „normalen“ SQL verwenden darf.

Gruß,
Martin

Nimm’ mal die Anführungszeichen rund um groesse weg, dann
müsste es gehen.

Ja, werde ich mal versuchen. Danke für den Tipp.
Habe mir inzwischen so beholfen:

open curSchema;
loop
fetch curSchema into cOwner, nGroesse;
exit when curSchema%NOTFOUND;
[…weiterverarbeiten der selektierten row…]
end loop;
close curSchema;

Ist zwar nicht so elegant, funktioniert aber.

Gruss,
Ralf