首页 > 解决方案 > Oracle 12c:使用用户定义的函数结果和 In 子句

问题描述

我有一个函数(funct_A),它在引号中返回一个varchar Select funct_A from dual return 'A1234';

我想在 IN 子句中使用 funct_A 的结果

这将返回 100 --> select count(E.tickets) from event E where E.ticket_number in ('A1234')。

这将返回 0 --> select count(E.tickets) from event E where E.ticket_number in (funct_A)。

这是如何实现的?

这是如何实现的。

标签: oraclefunction

解决方案


你可能不会。如果您的函数始终返回单个值,则只需使用相等条件而不是IN. 但是,假设您的实际目标是让函数返回多个值,那么您可能需要一个流水线表函数

create or replace type ticket_tbl is table of varchar2(10);

create or replace function funcA
  return ticket_tbl
  pipelined
is
begin
  pipe row ('A1234');
  pipe row ('B5678' );
end;
/

select *
  from event e  
 where e.ticket_number in (select column_value
                             from table( funcA ) );

推荐阅读