是否可以评估作为文本给出的 SQL? (甲骨文顶点 21.1)

Is it possible to evaluate SQL given as text? (Oracle APEX 21.1)

我创建了一个经典报告区域(区域:REPORT_FILTER_SHOP_TYPE)。 在这下面有一个SQL。

SELECT 
  ID, SHOP_NAME, SHOP_TYPE, OPEN_YEAR, CITY
FROM SHOP_LIST; 

我想对此应用过滤器 table。筛选条件将从列表项中选择。这个页面有一些列表。 例如,如果没有过滤器,SQL 就在一个过滤器的正上方。但是如果选择"SHOP_TYPE""OPEN_YEAR",执行下面的SQL。

SELECT * FROM (
  SELECT 
    ID, SHOP_NAME, SHOP_TYPE, OPEN_YEAR, CITY
  FROM SHOP_LIST
  ) S
WHERE S.SHOP_TYPE = 'BOOKSTORE' AND S.OPEN_YEAR <2010;

我现在可以从选定的列表项创建撰写 SQL 文本。

我需要设置什么才能在 REPORT_FILTER_SHOP_TYPE 中显示此结果?

嗯,很可能不是那样;如果您将某些值硬编码到报告的查询中,为什么还要在页面上使用 parameters?使用参数!

像这样:

SELECT id,
       shop_name,
       shop_type,
       open_year
  FROM shop_list
 WHERE     (   shop_type = :P1_SHOP_TYPE
            OR :P1_SHOP_TYPE IS NULL)
       AND (   open_year < :P1_OPEN_YEAR
            OR :P1_OPEN_YEAR IS NULL);