首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个输出游标的With子句

多个输出游标的With子句
EN

Stack Overflow用户
提问于 2020-05-13 18:32:30
回答 1查看 24关注 0票数 0

我有一个由四个输出游标组成的存储过程。

所有四个游标都需要使用where的相同过滤条件。如下所示:

代码语言:javascript
复制
WHERE NOT u.userid IN (SELECT DISTINCT emailid 
                       FROM quote q 
                       WHERE TRUNC(q.dateofenquiry) >= TRUNC(sysdate - 30))

对于多个输出游标,有没有办法避免在同一存储过程中多次重复相同的代码?

继续编码.....

EN

回答 1

Stack Overflow用户

发布于 2020-05-13 18:41:27

也许您根本不需要游标,但这是另一回事。

我还建议您使用NOT EXISTS,将条件构造为:

代码语言:javascript
复制
WHERE NOT EXISTS (SELECT 1
                  FROM quote q
                  WHERE q.emailid = u.userid AND
                        TRUNC(q.dateofenquiry) >= TRUNC(sysdate - 30)
                 )

然后,您需要在quote(emailid, trunc(dateofenquiry))上建立索引--假设您的数据库具有基于函数的索引。这将优化性能。

如果你想“简化”代码,你可以创建一个临时表:

代码语言:javascript
复制
create table temp_quote as
    select distinct emailid
    from quote q
    where TRUNC(q.dateofenquiry) >= TRUNC(sysdate - 30);

并在表上定义索引:

代码语言:javascript
复制
create index idx_quote_emailid on temp_quote(emailid);

并以相同的方式访问它:

代码语言:javascript
复制
where not exists (select 1 from quote_temp q where q.emailid = u.userid)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61772323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档