Select游标查询

Select cursor query

我期待此查询的结果

select cursor (select *
                 from Dba_Source
                where Owner = 'ORD'
                  and Upper(Text) Like ob)
  from (select '''%' || object_name || '%''' ob
          from dba_objects
         where owner = 'ORD'
           and object_name = 'ORD_USERS');

由于 ORD 架构中的一个存储过程使用了 table ORD_USERS

谁能告诉我怎么了?

当我 运行 这些单独查询时,它们返回的结果类似于

select '''%' || object_name || '%''' ob
  from dba_objects
 where owner = 'ORD' and object_name = 'ORD_USERS';

'%ORD_USERS%'

select *
  from Dba_Source
 where Owner = 'ORD'
   and Upper(Text) like '%ORD_USERS%';

Owner Name     Type          Line  Text
----- -------- ------------- ----- ---------------
ORD   ORD_PKG  PACKAGE_BODY  126   FROM ORD_USERS,

希望以下示例能够为您演示问题和解决方案:

with sample_data as (select 'fredbobgeorge' str from dual union all
                     select '''fredbobgeorge''' str from dual)
select 'with quoted like' search_type,
       str
from   sample_data
where  str like (select '''%bob%''' from dual)
union all
select 'without quoted like' search_type,
       str
from   sample_data
where  str like (select '%bob%' from dual);

SEARCH_TYPE         STR            
------------------- ---------------
with quoted like    'fredbobgeorge'
without quoted like fredbobgeorge  
without quoted like 'fredbobgeorge'