Sql 按结果分组到列表中

Sql 按结果分组到列表中,sql,oracle11g,Sql,Oracle11g,我正在尝试列出经理根据此架构管理的所有租赁物业: Create Table Rental_Property(property_number int Primary Key, managerId int, Foreign Key(managerId) References manage(managerId)); 以下是我的程序: Create Or Replace Procedure supervisor_properties As list_of_properties va

我正在尝试列出经理根据此架构管理的所有租赁物业:

Create Table Rental_Property(property_number int Primary Key, managerId  
int, Foreign Key(managerId) References manage(managerId));
以下是我的程序:

Create Or Replace Procedure supervisor_properties
As
        list_of_properties varchar (300) := ' ';
Begin
        Select 'Manager' || ': ' || managerId || ' ' || property_number
        Into list_of_properties
        From Rental_Property
        Group By managerId;
End;
我遇到的问题是上面的过程
groupby
将具有相同managerId的所有元组分组在一起。现在,我如何打印出结果,如下所示:

Manager m1: Rental_Prop1, Rental_Prop2, Rental_Prop3
Manager m2: Rental_Prop9, Rental_Prop6, Rental_Prop4
您可以使用
list\u agg()

唯一的问题是,中的
将值放入变量中。如果
group by
有多个管理器,这将生成一个错误

从以下查询开始:

Select managerId,
       list_agg(property_number, ' ') within group (order by property_number) as properties
From Rental_Property
Group By managerId;
编辑:

我明白了。如果要打印这些值:

Create Or Replace Procedure supervisor_properties
As
Begin
    for x in (Select managerId,
                     list_agg(property_number, ' ') within group (order by property_number) as properties
              From Rental_Property
              Group By managerId
             )
    loop
        dbms_output.put_line(x.managerId || ' ' || x.properties);
    end loop;
End;

您好,请您解释一下“唯一的问题是into将值放入变量中……如果group by有多个管理器,这将生成错误。”这是因为
group by
在每个组中只有一个managerId。@DF768。这就是
进入
所做的。从第二个查询开始。
Create Or Replace Procedure supervisor_properties
As
Begin
    for x in (Select managerId,
                     list_agg(property_number, ' ') within group (order by property_number) as properties
              From Rental_Property
              Group By managerId
             )
    loop
        dbms_output.put_line(x.managerId || ' ' || x.properties);
    end loop;
End;