apex pl/sql如果值1为是且值2不为空,则为真

apex pl/sql如果值1为是且值2不为空,则为真,sql,plsql,oracle-apex,Sql,Plsql,Oracle Apex,我正在尝试在页面中添加验证。我正在尝试的是,如果p2_restuser值为“y”,并且p2_usercomment不为null,则返回true,并且任何其他条件都会返回错误提示。然而,我得到以下错误 ORA-06550:第6行第16列:PLS-00103:遇到符号 “开始”应为以下情况之一:(+case mod new not) null continue avg count current exists最大最小优先sql STDEV 对所有合并时间时间戳间隔日期管道执行求和方差 如何修复此代码

我正在尝试在页面中添加验证。我正在尝试的是,如果p2_restuser值为“y”,并且p2_usercomment不为null,则返回true,并且任何其他条件都会返回错误提示。然而,我得到以下错误

ORA-06550:第6行第16列:PLS-00103:遇到符号 “开始”应为以下情况之一:(+case mod new not) null continue avg count current exists最大最小优先sql STDEV 对所有合并时间时间戳间隔日期管道执行求和方差 如何修复此代码以使其按所需方式工作


谢谢你

好吧,我理解你的方式——你把简单的事情复杂化了。 根据您提供的数据(不是问题的太多细节,而是结果的唯一想法),最简单的方法可能是创建两个验证

  • P2_RESTUSER作为字符串与“Y”比较的验证

  • 将P2_USERCOMMENT验证为空比较

    这种方法不需要PL/SQL。 正如其他人已经说过的,如果您坚持使用PL/SQL,那么可以提供更多信息


    • 我同意Jareeq的观点,采用声明式方法而不是PLSQL块。它更简单,性能更好

      我不确定这是否有帮助,但这里有一个屏幕截图,你将如何着手做这件事

      下面的链接很好地介绍了各种验证类型

      此外,有关统计数字的相关文章也涉及其中


      两个想法。首先,您的错误是BEGIN在第6行,它与您发布的代码不一致。它失败的错误很可能在前一行。其次,您对
      :P2\u RESTUSER
      的赋值肯定有错误。PL/SQL中的赋值运算符是
      :=
      。首先,如果您赋值使用
      :=
      而不是
      =
      以获取未来帮助,提供有关您使用的验证类型的信息:-PL/SQL表达式-PL/SQL错误-PL/SQL函数返回布尔值(我相信就是这个)-PL/SQL函数返回错误我试图将=更改为:=,但它仍然会给我相同的错误…如前所述,您还需要向我们提供完整的代码。您发布的代码的唯一开头是第1行。您的错误表明它在第6行。除非我疯了,否则这应该意味着您有更多未显示的代码。此外,请浏览ag艾恩,我注意到你有
      IF:P2\u USERCOMMENT
      串在一起。你应该在冒号前留一个空格。
      BEGIN
      :P2_RESTUSER ='Y'; 
      IF:P2_USERCOMMENT IS NOT NULL
      THEN
       Return True;
      ELSE
       Return False;
      
      end if;
      end;