Plsql PL/SQL引用游标中的另一个游标?

Plsql PL/SQL引用游标中的另一个游标?,plsql,cursor,Plsql,Cursor,我想创建一个过程,选择分配给任何特定用户的所有记录,然后向每个分配的用户发送一封个性化电子邮件,其中包含分配给他们的记录列表 因此,如果myTable如下所示: ID Assigned 1 Joe 2 Joe 3 Shelly Joe的电子邮件将显示一个以行分隔的列表,其中包含记录1和2,Shelly的电子邮件将显示记录3 起初我开始用游标构建过程,但1)不确定是否可以在另一个游标中引用游标,2)不知道游标是否是实现这一点的最佳方法 我的想法是游标1将获得所有唯一

我想创建一个过程,选择分配给任何特定用户的所有记录,然后向每个分配的用户发送一封个性化电子邮件,其中包含分配给他们的记录列表

因此,如果myTable如下所示:

ID    Assigned
1     Joe
2     Joe
3     Shelly
Joe的电子邮件将显示一个以行分隔的列表,其中包含记录1和2,Shelly的电子邮件将显示记录3

起初我开始用游标构建过程,但1)不确定是否可以在另一个游标中引用游标,2)不知道游标是否是实现这一点的最佳方法

我的想法是游标1将获得所有唯一的赋值(Joe,Shelly),游标2将在游标1循环内执行,并获得分配给当前游标1值的所有记录


如能在适当的方向上进行任何观察或轻推,将不胜感激。

可以在第一个光标中引用另一个光标:

declare
  cursor c1 is
    select distinct Assigned from table_name;

  cursor c2(p_Assigned in varchar2) is
    select id, Assigned from table_name where Assigned = p_Assigned;
begin

  for r1 in c1 loop
    dbms_output.put_line('------- start mail --------');
    for r2 in c2(r1.Assigned) loop
      dbms_output.put_line(r2.id || ' ' || r2.Assigned);
    end loop;
    dbms_output.put_line('------- end mail -------');
  end loop;
end; 
但你可以做得更好,依赖于你的版本。
您可以聚合这些记录,这样在一个查询中,您将为每个用户获得一条记录,其中的一列包含与
换行符连接的记录:
有一些方法可以解决这个问题。
您还可以使用xmlagg:

SELECT Assigned, rtrim(XMLAGG(xmlelement(e, id || ' ' || Assigned || chr(13)|| chr(10) )).extract('//text()'))
FROM table_name
GROUP BY Assigned