我在下面的函数中遇到运行时错误。我不知道为什么当我传递整数时却抱怨字符串。
CREATE OR REPLACE FUNCTION FOO
(
col1 IN NUMBER,
col2 IN NUMBER
)
RETURN BOOLEAN
IS
BAR BOOLEAN;
BEGIN
DECLARE FOO NUMBER;
BEGIN
SELECT 1 INTO FOO FROM DUAL;
END;
RETURN BAR;
END FOO;
SELECT FOO(1, 1) FROM DUAL;
ORA-06552:PL / SQL:忽略语句ORA-06553:PLS-382:表达式为 错误的类型 06552. 00000 - " PL / SQL:%s" *原因:
*动作:行错误:1列:7
答案 0 :(得分:0)
Oracle实际上并没有BOOLEAN类型。你需要使用标志。由于您未使用col1
或col2
,甚至未尝试设置BAR
,因此您在代码中尝试执行的操作有点令人困惑。
如果适用,你可以这样做:
DECODE(flag, 1, 'TRUE', 2, 'FALSE')
OR
CREATE OR REPLACE FUNCTION FOO
(
col1 IN NUMBER,
col2 IN NUMBER
)
RETURN VARCHAR2
AS
vs_return VARCHAR2(10);
BEGIN
BEGIN
SELECT 1 INTO FOO FROM DUAL;
vs_return := 'TRUE';
EXCEPTION
WHEN OTHERS THEN
vs_return := 'FALSE';
END;
RETURN vs_return;
END FOO;