我有一個我開始玩的測驗腳本。我被一些看似簡單的事情困住了。我想遍歷行以從結果集的最后一行獲取資料以僅使用它。
procedure e_test_send
is
cursor get_rec is
select
id,
email_from,
email_to,
email_cc,
email_subject,
email_message
from test_email_tab;
begin
for rec_ in get_rec loop
ifsapp.send_email_api.send_html_email(rec_.email_to,rec_.email_from, rec_.email_subject, rec_.email_message);
end loop;
end e_test_send;
我要做的就是發送一封帶有訊息的電子郵件,并且只發送給最后一行的人。這是一個將在記錄中增長的示例表。在我有 2 行資料的那一刻,如果我執行此程序,它將發送 2 封電子郵件,這不是所需的操作。我希望這是有道理的。
謝謝
uj5u.com熱心網友回復:
你知道最后一行是哪一行嗎?那個MAX(ID)
有價值的?如果是這樣,那么您可以將游標基于一個簡單的
SELECT id,
email_from,
email_to,
email_cc,
email_subject,
email_message
FROM test_email_tab
WHERE id = (SELECT MAX (id) FROM test_email_tab)
當它掃描同一個表兩次時,它的性能會隨著行數越來越多而下降。在這種情況下,考慮
WITH
temp
AS
(SELECT id,
email_from,
email_to,
email_cc,
email_subject,
email_message,
ROW_NUMBER () OVER (ORDER BY id DESC) rn
FROM test_email_tab)
SELECT t.id,
t.email_from,
t.email_to,
t.email_cc,
t.email_subject,
t.email_message
FROM temp t
WHERE t.rn = 1
它只做一次;按降序對行進行ID
排序并回傳排名為“最高”的行(即最后一個)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428125.html
標籤:甲骨文 电子邮件 plsql oracle12c 程序
上一篇:電子郵件表格布局-重疊文本
下一篇:無法向抄送收件人發送電子郵件