Plsql 动态检查值是否在sql查询中

Plsql 动态检查值是否在sql查询中,plsql,oracle-apex,Plsql,Oracle Apex,我有一个动态生成的plsql区域,在其中,我有一堆动态生成的项,一些是从查询中弹出的,那些有一个存储在底层表中的查询。但它们也允许您只需在中键入返回值。所以现在我需要检查你输入的值是否在LOV中 所以我在我的验证中添加了一些代码(有些代码还有额外的条件,所以我会检查这些条件)。我制作了一个返回相关LOV的函数,但修改成如下: SELECT id --this is always the name of the column containing return value FROM (

我有一个动态生成的plsql区域,在其中,我有一堆动态生成的项,一些是从查询中弹出的,那些有一个存储在底层表中的查询。但它们也允许您只需在中键入返回值。所以现在我需要检查你输入的值是否在LOV中

所以我在我的验证中添加了一些代码(有些代码还有额外的条件,所以我会检查这些条件)。我制作了一个返回相关LOV的函数,但修改成如下:

SELECT id  --this is always the name of the column containing return value
    FROM ( select something id, --this is the return value
       something_else name --display value
from table
WHERE conditions) 
   WHERE id= :param;
这将从lov中选择返回列,其中的值等于我们输入的值,因此如果输入的值在lov中,则返回该值;如果输入的值无效,则不返回任何值

IF checking_lov THEN
      a_lov := function_that_returns_an_sql_query;
      DECLARE
        x VARCHAR2(100);
      BEGIN
        EXECUTE IMMEDIATE
          a_lov
        INTO x
         USING apex_application.g_f02(i); --value of parameter
      EXCEPTION
        WHEN no_data_found THEN
          x := NULL;
      END;
      IF x IS NULL THEN
        display_error;  --I do stuff here to display error, not important to you
      END IF;
  END IF;    
但我似乎没法让它发挥作用。APEX没有发现代码有任何错误,它编译时没有错误。但当我尝试时,它抛出一个“无效字符”错误,验证通过。我可能已经尝试过创建整个a_lov查询,添加一个“INTO x”并将“:param”更改为“apex_application.g_f02(I)”。但它就是不起作用


如果您有任何想法,我们将不胜感激。

只想发布更新,实际上已经找到了解决方案。这是有史以来最愚蠢的事情

动态执行的位,我用分号结束,不应该这样做。这就是全部


那一个分号把我搞糊涂了,现在它起作用了。因此,如果有人偶然发现这个问题,请检查分号。

我假设问题出在
函数返回的查询上,该函数返回一个sql查询。您能否包括完整的错误消息,包括行号和有关该函数的一些信息?以及传递给该函数的值(apex_application.g_f02(i)),还可以帮助您查看帮助部分和。@JonHeller这是错误,第94行是以EXECUTE IMMEDIATE开头的。函数返回VARCHAR2,形式如上所述,从(LOV QUERY)中选择firstcol,其中firstcol=:参数@确保传递的值是项目的值,它适用于验证过程中的所有其他内容。我可以尝试将这个值分配给另一个变量,并使用该变量(尝试了,没有成功),还尝试了静态分配变量,仍然是相同的错误。就最小的可复制示例而言,这将需要一篇长达数页的文章来为您提供项目描述集、plsql动态区域,。。。