首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Functional Where-In子句- Oracle PL/SQL

Functional Where-In子句- Oracle PL/SQL
EN

Stack Overflow用户
提问于 2012-02-03 07:32:48
回答 1查看 610关注 0票数 1

我有一个将帐户分组在一起的关联表。

我正在尝试选择表'target‘的一个子集

代码语言:javascript
复制
p_group_id := 7;

select *
target t
where  t.account_id in get_account_ids(p_group_id);

是否可以编写一个返回account_ids列表(作为某种形式的集合)的函数来简化上面的代码?

我已经研究了流水线函数,但是我想远离循环和游标。另外,自定义类型/表也会影响到类型转换,这是我想要避免的。

作为参考,假设函数'get_account_ids‘会做什么,这里有一些伪代码:

代码语言:javascript
复制
function get_account_ids(p_group_id) 
  insert into v_ret
  select aa.account_id
  from   assoc_account aa
  where  aa.groupid = p_group_id;

return v_ret;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-03 08:47:16

你只需要:

代码语言:javascript
复制
select *
from   target t
where  t.account_id in 
       ( select aa.account_id
         from   assoc_account aa
         where  aa.groupid = 7;
       )

假设assoc_account.account_id永远不是NULL,上面的方法将会起作用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9121648

复制
相关文章

相似问题

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