Function returning boolean fails on "expression is of wrong type"

Я использую oracle 11g и просто не могу понять, в чем моя проблема. Я сделал гораздо более сложные вещи, но я не смог сделать эту простую вещь за последние 5 часов:

Это тело функции

FUNCTION legal_user(
     level_existance  number
    ,types_with_impel number)
RETURN BOOLEAN
 IS
 v_ret_val BOOLEAN;
 BEGIN
   v_ret_val := FALSE;
   IF (level_existance*types_with_impel>0) then 
     v_ret_val := TRUE;
     DBMS_OUTPUT.PUT_LINE('true');
   else 
     DBMS_OUTPUT.PUT_LINE('false');
   END IF;       
  return v_ret_val;
END legal_user;

Это спецификация:

FUNCTION legal_user(
       level_existance number
       ,types_with_impel number)
   RETURN BOOLEAN;

которая делает логическое AND эквивалентным

         A*B>0?true:false;   

Сообщение об ошибке, которое я получаю:

ORA-06552: PL/SQL: Statement ignored ORA-06553: PLS-382: выражение имеет неправильный тип 06552. 00000 - "PL/SQL: %s" *Причина:
*Действие: Ошибка в строке: 1 столбец: 7


Вот как я запускаю это в своей IDE

 SELECT compt_tree_profile_q.legal_user(1,1)
 FROM dual 
14
задан OMG Ponies 18 February 2012 в 02:27
поделиться