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