Plsql 在Oracle APEX中使用静态分配的应用程序项作为SQL

Plsql 在Oracle APEX中使用静态分配的应用程序项作为SQL,plsql,oracle-apex,Plsql,Oracle Apex,在我的Oracle Apex 19.3应用程序中,我有一个SQL语句,需要在多个页面上使用,并根据登录的用户进行轻微更改。因此,我不需要在每个页面上反复复制此代码,我将此语句生成为一个名为:QUERY\u-BASED\u-on\u-USER的应用程序项 然后,应用程序计算将其静态设置为SELECT j.*FROM table(pkg_jobstatus.report())j,其中j.id位于(:userid) (userid是一个单独的应用程序项) 我希望使用应用程序项QUERY\u-BASED

在我的Oracle Apex 19.3应用程序中,我有一个SQL语句,需要在多个页面上使用,并根据登录的用户进行轻微更改。因此,我不需要在每个页面上反复复制此代码,我将此语句生成为一个名为:
QUERY\u-BASED\u-on\u-USER
的应用程序项

然后,应用程序计算将其静态设置为
SELECT j.*FROM table(pkg_jobstatus.report())j,其中j.id位于(:userid)

(userid是一个单独的应用程序项)

我希望使用应用程序项
QUERY\u-BASED\u-ON\u-USER
作为表的sql语句。将数据源设置为PL/SQL并使用以下代码时

BEGIN
    return :QUERY_BASED_ON_USER;
END;
我得到这个错误:
PL/SQL函数体没有返回值。

我尝试通过将静态页面区域设置为:
&QUERY\u-BASED\u-ON\u-ON\u-USER.
来调试它,它正确地输出了查询

我的假设是,代码编辑器不计算应用程序计算,因此返回一个空字符串,然后拒绝验证或保存。但我不知道如何验证这一点,也不知道如何解决这一问题

如何将应用程序项用作sql语句?

您需要将“使用通用列名”设置为true,并指定查询将返回的列数:

然后,直到运行时项值可用时,才会解析查询