Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Uso de booleano em PL/SQL


dbms_output.put_line não está sobrecarregado para aceitar um argumento booleano. Você pode fazer algo como
dbms_output.put_line( case when exist = true 
                           then 'true'
                           else 'false'
                        end );

para converter o booleano em uma string que você pode passar para dbms_output .

O erro ORA-01422 é um problema completamente separado. A função checkEmpNo inclui o SELECT INTO declaração
SELECT emp_id 
  INTO emp_number
  FROM emp;

Um SELECT INTO irá gerar um erro se a consulta retornar algo diferente de 1 linha. Nesse caso, se houver várias linhas no emp tabela, você receberá um erro. Meu palpite é que você gostaria que sua função fizesse 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;