繁体   English   中英

Oracle APEX现场验证

[英]Oracle APEX Field Validation

我有一个关于在Oracle Apex上进行字段验证的简单问题。 我正在尝试在'Work Package Name ”文本字段中输入验证,使其为'WP'后跟两位数字,或者为'AM'后跟两位数, eg WP00 & AM01将接受eg WP00 & AM01将不接受WP000 & AN01

我不确定要选择哪个验证选项,因此我决定使用PL / SQL返回布尔值。 我的代码似乎不正确(请参阅下文)。

如果我是在TOAD中创建的,那么我会声明字段名称,但是我想通过使用:P7_WP_NAME可以做到这一点。

IF :P7_WP_NAME = WP(2,0) 
ELSE IF :P7_WP_NAME = AM(2,0)
THEN RETURN TRUE;
ELSE 
  RETURN FALSE;
END IF;

我目前收到的错误如下。 我尝试重新编写代码,但不断收到不同的错误:

 ORA-06550: line 2, column 1: PLS-00103: Encountered the symbol "ELSE" when expecting one of the following: . ( * % & - + / at mod remainder rem then <an exponent (**)> and or || multiset ORA-06550: line 7, column 18: PLS-00103: Encountered the symbol ";" when expecting one of the following: if The symbol "if" was substituted for ";" to continue. ORA-06550: line 7, column 54: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: begin case declare end exception 

如果您能告诉我这是否是最好的验证选项以及我要去哪里了,我将不胜感激。

我对正则表达式不太满意,但是可以尝试一下:

begin
   if regexp_like(:P7_WP_NAME,'^WP\d{2}$')
   or regexp_like(:P7_WP_NAME,'^AM\d{2}$')
   then
      return true;
   else
     return false;
   end if;
end;

regexp可能简化为:

regexp_like(l_string,'^(WP|AM)\d{2}$'

在一个表达式中同时匹配WP和AM。

关于错误

'ORA-06550:第2行,第1栏:PLS-00103:在预期以下情况之一时遇到了符号“ ELSE” :。 (*%&-+ / at mod余数rem然后和或||多集ORA-06550:第7行,第18列:PLS-00103:在预期以下情况之一时遇到了符号“;”:if符号“ if”被替换为“;”以继续。ORA-06550:第7行,第54列:PLS-00103:在预期以下情况之一时遇到了符号“文件结束”:

您应该使用ELSIF而不是ELSE IF。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM