ORA-00902:数据类型 00902 无效。00000 - "invalid datatype" *原因: *操作: 行错误: 1 列: 8



我有一个从表中检查年龄的SQL函数。当我运行函数时,我不断得到无效的数据类型错误。数据类型是相同的,错误出现在CHECK_30开始的列。我的功能也能正常运行。ORA-00902:无效的数据类型00902. 00000 -无效的数据类型;*原因:
*行动:Line: 1 Column: 8

CREATE OR REPLACE FUNCTION CHECK_30(LASTNAME staff03.lname%type)
RETURN BOOLEAN
IS
dofb staff03.dob%type;
cursor c1 is
SELECT dob
FROM staff03
WHERE lname = LASTNAME; 

BEGIN
open c1;
fetch c1 into dofb;
close c1;
IF dofb < '1992-11-15' THEN
DBMS_OUTPUT.PUT_LINE('Older than 30');
RETURN TRUE;
ELSE
DBMS_OUTPUT.PUT_LINE('Young in');
RETURN FALSE; 
END IF;
END;
SELECT CHECK_30('NELSON') from dual;

Oracle SQL目前没有布尔数据类型(从21c版本开始),因此您不能调用从SQL查询返回布尔值的函数。只能在PL/SQL代码中使用。

所以你不能这样做,因为SQL不能处理结果:

select check_30('NELSON') from dual;

,但是你可以在PL/SQL过程/函数/包/类型中这样做:

if check_30('NELSON') then
dbms_output.put_line('Check passed');
end if;

相关内容

最新更新