我正在尝试搜索大写字母数组,以查看数组中是否有字母。但我收到错误:Error(7,27): PLS-00330: invalid use of type name or subtype name
但我似乎无法修复它。
create or replace FUNCTION fun_ISUPPER(parCharAt IN VARCHAR2)
RETURN number IS
varCharAt VARCHAR2(1) := parCharAt;
TYPE upperCharArr IS VARRAY(4) OF VARCHAR2(1);
ARRAY upperCharArr := upperCharArr('A', 'B', 'C', 'D');
BEGIN
IF varCharAt MEMBER OF upperCharArr THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;
答案 0 :(得分:2)
您已声明类型。要使用它,您需要声明该类型的变量。
"我现在得到错误错误(7,6):PLS-00306:错误的数字或类型 致电'成员""
的论据
那是因为您正在使用VARRAY。 documentation advises us"没有比较varrays的机制。"所以你应该使用嵌套表。使用VARRAY的唯一原因是我们需要保留集合中元素的顺序;我不认为这适用于此。这是一个工作版本:
create or replace FUNCTION fun_ISUPPER(parCharAt IN VARCHAR2)
RETURN number IS
varCharAt VARCHAR2(1) := parCharAt;
TYPE upperCharArr IS TABLE OF VARCHAR2(1);
l_array upperCharArr := upperCharArr('A', 'B', 'C', 'D');
BEGIN
IF varCharAt MEMBER OF l_array THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;