我一直在寻找一些如何获得这样的功能的答案。说实话,我发现的信息具有最低限度的理解,这显然超出了我的理解范围,我希望有人可以帮助我理解。
我有一个返回多个连接行的查询:
select
V_FEEDBACK_FORM.TEAM_ID, MANAGER_USER, listagg(REF_NUMBER, '</ br>') within group (order by REF_NUMBER) as "REF_NUMBER"
from
V_FEEDBACK_FORM
left join
(select distinct TEAM_ID, MANAGER_USER from V_AUTH_INFO) "V_AUTH_INFO" on V_FEEDBACK_FORM.TEAM_ID = V_AUTH_INFO.TEAM_ID
where
trunc(UPDATED_ON) < trunc(SYSDATE) - 7
group by
V_FEEDBACK_FORM.TEAM_ID, MANAGER_USER;
我尝试编写一个搜索这些结果的循环,选择&#34; TEAM_ID&#34;的结果。并通过电子邮件向相关经理发送串联字符串。
如果有人可以帮我指点我需要直接查看,我确实相信它是一个光标循环,但我不知道如何构建该查询,我一直在阅读一切都在网上好几个小时了。
干杯。
答案 0 :(得分:3)
我通常更喜欢隐式游标循环,除非需要使用显式游标 - 它们效率高且语法简单。
begin
for r in
(select
V_FEEDBACK_FORM.TEAM_ID, MANAGER_USER,
listagg(REF_NUMBER, '</ br>') within group (order by REF_NUMBER) as "REF_NUMBER"
from V_FEEDBACK_FORM
left join
(select distinct TEAM_ID, MANAGER_USER from V_AUTH_INFO) "V_AUTH_INFO" on V_FEEDBACK_FORM.TEAM_ID = V_AUTH_INFO.TEAM_ID
where trunc(UPDATED_ON) < trunc(SYSDATE) - 7
group by V_FEEDBACK_FORM.TEAM_ID, MANAGER_USER)
)
loop
-- put your code here to send an email for each row
dbms_output.put_line(r.manager_user);
dbms_output.put_line(r.team_id || ' ' || r."REF_NUMBER");
end loop;
end;
/
哦,如果您以前没有发过电子邮件,我认为人们通常会先从UTL_SMTP开始编写自己的简单&#34; send_email&#34;程序。如果您需要帮助,请告诉我们。