Warm tip: This article is reproduced from serverfault.com, please click

plsql-在Oracle APEX中将静态分配的应用程序项用作SQL

(plsql - Using a statically assigned application item as SQL in Oracle APEX)

发布于 2020-12-03 10:23:38

在我的Oracle Apex 19.3应用程序中,我有一个SQL语句,该语句需要在多个页面上使用,并且会根据登录的用户进行一些更改。因此,我不需要在每个页面上一遍又一遍地重复此代码。语句作为名为的应用程序项QUERY_BASED_ON_USER

然后,应用程序计算会将其静态设置为 SELECT j.* FROM table(pkg_jobstatus.report()) j WHERE j.id IN (:USERIDS)

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

我希望将应用程序项QUERY_BASED_ON_USER用作表的sql语句。在将数据源设置为PL / SQL并使用以下代码时,

BEGIN
    return :QUERY_BASED_ON_USER;
END;

我收到此错误: PL/SQL function body did not return a value.

我尝试通过将静态页面区域设置为:来调试它,&QUERY_BASED_ON_USER.并正确输出查询。

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

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

Questioner
Michael Frey
Viewed
0
Tony Andrews 2020-12-03 18:44:05

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

在此处输入图片说明

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