Oracle
 sql >> Database >  >> RDS >> Oracle

Uso di booleano in PL/SQL

dbms_output.put_line non è sovraccaricato per accettare un argomento booleano. Puoi fare qualcosa come

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

per convertire il booleano in una stringa che puoi quindi passare a dbms_output .

L'errore ORA-01422 è un problema completamente separato. La funzione checkEmpNo include il SELECT INTO dichiarazione

SELECT emp_id 
  INTO emp_number
  FROM emp;

Un SELECT INTO genererà un errore se la query restituisce qualcosa di diverso da 1 riga. In questo caso, se sono presenti più righe in emp tabella, riceverai un errore. La mia ipotesi è che vorresti che la tua funzione facesse qualcosa del tipo

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;