Oracle
 sql >> Base de données >  >> RDS >> Oracle

Utilisation de booléen en PL/SQL

dbms_output.put_line n'est pas surchargé pour accepter un argument booléen. Vous pouvez faire quelque chose comme

dbms_output.put_line( case when exist = true 
                           then 'true'
                           else 'false'
                        end );

pour convertir le booléen en une chaîne que vous pouvez ensuite passer à dbms_output .

L'erreur ORA-01422 est un problème complètement distinct. La fonction checkEmpNo inclut le SELECT INTO déclaration

SELECT emp_id 
  INTO emp_number
  FROM emp;

Un SELECT INTO générera une erreur si la requête renvoie autre chose qu'une ligne. Dans ce cas, s'il y a plusieurs lignes dans le emp table, vous obtiendrez une erreur. Je suppose que vous voudriez que votre fonction fasse quelque chose comme

CREATE OR REPLACE FUNCTION checkEmpNo(p_eno number)
  RETURN boolean 
IS
  l_count number;
BEGIN
  SELECT count(*)
    INTO l_count
    FROM emp
   WHERE emp_id = p_eno;

  IF( l_count = 0 )
  THEN
    RETURN false;
  ELSE
    RETURN true;
  END IF;
END checkEmpNo;