我有一个由四个输出游标组成的存储过程。
所有四个游标都需要使用where的相同过滤条件。如下所示:
WHERE NOT u.userid IN (SELECT DISTINCT emailid
FROM quote q
WHERE TRUNC(q.dateofenquiry) >= TRUNC(sysdate - 30))对于多个输出游标,有没有办法避免在同一存储过程中多次重复相同的代码?
继续编码.....
发布于 2020-05-13 18:41:27
也许您根本不需要游标,但这是另一回事。
我还建议您使用NOT EXISTS,将条件构造为:
WHERE NOT EXISTS (SELECT 1
FROM quote q
WHERE q.emailid = u.userid AND
TRUNC(q.dateofenquiry) >= TRUNC(sysdate - 30)
)然后,您需要在quote(emailid, trunc(dateofenquiry))上建立索引--假设您的数据库具有基于函数的索引。这将优化性能。
如果你想“简化”代码,你可以创建一个临时表:
create table temp_quote as
select distinct emailid
from quote q
where TRUNC(q.dateofenquiry) >= TRUNC(sysdate - 30);并在表上定义索引:
create index idx_quote_emailid on temp_quote(emailid);并以相同的方式访问它:
where not exists (select 1 from quote_temp q where q.emailid = u.userid)https://stackoverflow.com/questions/61772323
复制相似问题