错误的类型表达

时间:2014-12-09 17:33:23

标签: oracle oracle11g

我在下面的函数中遇到运行时错误。我不知道为什么当我传递整数时却抱怨字符串。

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

1 个答案:

答案 0 :(得分:0)

Oracle实际上并没有BOOLEAN类型。你需要使用标志。由于您未使用col1col2,甚至未尝试设置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;