sql >> Base de Datos >  >> RDS >> Oracle

Uso de booleanos en PL/SQL

dbms_output.put_line no está sobrecargado para aceptar un argumento booleano. Puedes hacer algo como

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

para convertir el booleano en una cadena que luego puede pasar a dbms_output .

El error ORA-01422 es un problema completamente diferente. La función checkEmpNo incluye el SELECT INTO declaración

SELECT emp_id 
  INTO emp_number
  FROM emp;

A SELECT INTO generará un error si la consulta devuelve algo que no sea 1 fila. En este caso, si hay varias filas en el emp tabla, obtendrá un error. Supongo que le gustaría que su función hiciera algo como

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;