【发布时间】:2021-07-20 14:08:38
【问题描述】:
我试图在 pl/sql 中创建一个函数,该函数将接受字符串并将字符串拆分为一个数组,然后将拆分字符串的数组与存储在数据库中的无效字符进行比较。
我还在试验,没有测试过 apex_string.split,因为我遇到了这些错误: 错误(7,1):PLS-00103:在预期以下情况之一时遇到符号“DECLARE”:开始函数杂注过程子类型类型当前游标删除之前存在符号“开始”替换“声明”以继续。
错误(38):PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:(begin case declare end exception exit for goto if loop mod null pragma raise return select update while with
我对 PL/SQL 有点陌生,我对任何 cmets 持开放态度
谢谢
create or replace FUNCTION invalid_checker(inword IN varchar2)
RETURN boolean
IS
hasInvalid boolean;
declare
CURSOR invalids IS select invalidChar from InvalidCharacter; --table that contains the invalid characters
Type wordsplit IS VARRAY(100) OF VARCHAR2(2);
splitcount INTEGER;
invalidscount INTEGER ;
ctr INTEGER := 0;
invalidctr INTEGER :=0;
wordarray wordsplit;
begin
open invalids;
wordarray := wordsplit(apex_string.split(inword, null));--split inserted word into array
--splitcount := wordsplit.count
--invalidsctr := invalids.count
FOR splitcount IN wordarray LOOP
ctr := ctr + 1;
FOR invalidscount IN invalids LOOP
invalidctr := invalidctr + 1;
IF (wordarray(ctr) = invalids(invalidctr)) THEN
hasInvalid := true;
END IF;
END LOOP;
END LOOP;
close invalids;
RETURN hasInvalid;
end;
/
【问题讨论】:
-
直接删除
declare,不需要。
标签: oracle plsql oracle-apex