Plsql 动态检查值是否在sql查询中
我有一个动态生成的plsql区域,在其中,我有一堆动态生成的项,一些是从查询中弹出的,那些有一个存储在底层表中的查询。但它们也允许您只需在中键入返回值。所以现在我需要检查你输入的值是否在LOV中 所以我在我的验证中添加了一些代码(有些代码还有额外的条件,所以我会检查这些条件)。我制作了一个返回相关LOV的函数,但修改成如下: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 (
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动态区域,。。。