Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verwendung von booleschen Werten in PL/SQL

dbms_output.put_line ist nicht überladen, um ein boolesches Argument zu akzeptieren. Sie können so etwas tun wie

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

um den booleschen Wert in einen String umzuwandeln, den Sie dann an dbms_output übergeben können .

Der Fehler ORA-01422 ist ein völlig separates Problem. Die Funktion checkEmpNo enthält den SELECT INTO Erklärung

SELECT emp_id 
  INTO emp_number
  FROM emp;

A SELECT INTO generiert einen Fehler, wenn die Abfrage etwas anderes als 1 Zeile zurückgibt. In diesem Fall, wenn es mehrere Zeilen in emp gibt Tabelle erhalten Sie eine Fehlermeldung. Ich vermute, Sie möchten, dass Ihre Funktion so etwas wie

macht
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;