【发布时间】:2018-05-23 16:38:30
【问题描述】:
我有以下疑问:
SELECT DISTINCT purchase_authorizer_api.get_userid('30', pagl.authorize_id)
FROM purch_authorize_group_line pagl join purchase_authorizer pa
ON pagl.authorize_id = pa.authorize_id
WHERE pagl.authorize_group_id = '30-QA-NUC'
AND pa.notify_user = 'TRUE';
这为我提供了该授权组中 PO 授权人的用户 ID。我可以有几个 PO 授权人。我需要能够给他们所有人发电子邮件。
我正在尝试在我们的 ERP 系统中创建一个事件操作,该操作将在发布 PO 时运行以下内容:
BEGIN
command_sys.mail(from_user_name_ => 'IFSAPP',
to_user_name_ => 'youremail@yourdomain.com',
subject_ => 'Test subject',
text_ => 'Test message body');
COMMIT;
END;
我可以在 to_user_name 部分中输入多个用户 ID,但我很难弄清楚如何在 to_user_name 部分中获取此查询的结果?
编辑:我仍在尝试这个,但我无法让它工作:
CREATE PROCEDURE a_proc
AS
cursor get_emails is
SELECT DISTINCT purchase_authorizer_api.get_userid('30', pagl.authorize_id) AS "EMAIL"
FROM purch_authorize_group_line pagl join purchase_authorizer pa
ON pagl.authorize_id = pa.authorize_id
WHERE pagl.authorize_group_id = '30-PM-COM'
AND pa.notify_user = 'TRUE';
result_ VARCHAR2(500);
BEGIN
OPEN get_emails;
FETCH get_emails BULK COLLECT INTO vi_emails;
CLOSE get_emails;
FOR indx IN 1..vi_emails.COUNT LOOP
command_sys.mail(from_user_name_ => 'IFSAPP',
to_user_name_ => result_,
subject_ => 'Test subject',
text_ => 'Test message body');
END LOOP;
END a_proc;
编辑2:
我已经更新到这个:
CREATE OR REPLACE PROCEDURE a_proc
is vi_get_emails varchar2(500);
cursor get_emails is
SELECT DISTINCT purchase_authorizer_api.get_userid('30', pagl.authorize_id) AS "EMAIL"
FROM purch_authorize_group_line pagl join purchase_authorizer pa
ON pagl.authorize_id = pa.authorize_id
WHERE pagl.authorize_group_id = '30-PM-COM'
AND pa.notify_user = 'TRUE';
BEGIN
OPEN get_emails;
FETCH get_emails INTO vi_get_emails;
CLOSE get_emails;
FOR rec_ IN get_emails LOOP
command_sys.mail(from_user_name_ => 'IFSAPP',
to_user_name_ => vi_get_emails,
subject_ => 'Test subject',
text_ => 'Test message body');
END LOOP;
END a_proc;
编译时没有错误。但是,不会向用户发送电子邮件。
【问题讨论】:
-
这很相似,但我不想做同样的事情。我不明白这是怎么重复的。
-
我认为您需要做的是将多行或电子邮件写入一个变量,以便您可以将变量分配给 to_user_name 部分。
-
我试过:光标 get_emails 是 SELECT purchase_authorizer_api.get_userid('30', pagl.authorize_id) AS "EMAIL" FROM purch_authorize_group_line pagl join purchase_authorizer pa ON pagl.authorize_id = pa.authorize_id WHERE pagl.authorize_group_id = '30-PM-COM' 和 pa.notify_user = 'TRUE';结果_VARCHAR2(500);开始结果_:=空; FOR rec_ IN get_emails LOOP command_sys.mail(from_user_name_ => 'IFSAPP', to_user_name_ => result_, subject_ => '测试主题', text_ => '测试邮件正文');返回结果_;
-
所以,这个问题仍然没有解决,但由于它被标记为重复,我不会得到答案。什么都不感谢,怀亚特。
标签: sql plsql plsqldeveloper erp