Oracle APEX 字段验证
Oracle APEX Field Validation
我有一个关于 Oracle Apex 字段验证的简单问题。我正在尝试对 'Work Package Name
' 文本字段进行验证,以接受 'WP'
后跟两位数或 'AM'
后跟两位数 e.g 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_like(l_string,'^(WP|AM)\d{2}$'
在一个表达式中同时匹配 WP 和 AM。
关于错误
'ORA-06550: line 2, column 1: PLS-00103: Encountered the symbol "ELSE" when expecting one of the following: . ( * % & - + / at mod remainder rem then 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'
你应该使用 ELSIF 而不是 ELSE IF。
我有一个关于 Oracle Apex 字段验证的简单问题。我正在尝试对 'Work Package Name
' 文本字段进行验证,以接受 'WP'
后跟两位数或 'AM'
后跟两位数 e.g 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_like(l_string,'^(WP|AM)\d{2}$'
在一个表达式中同时匹配 WP 和 AM。
关于错误
'ORA-06550: line 2, column 1: PLS-00103: Encountered the symbol "ELSE" when expecting one of the following: . ( * % & - + / at mod remainder rem then 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'
你应该使用 ELSIF 而不是 ELSE IF。