sql >> Databasteknik >  >> RDS >> Oracle

Användning av boolean i PL/SQL

dbms_output.put_line är inte överbelastad för att acceptera ett booleskt argument. Du kan göra något liknande

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

för att konvertera boolean till en sträng som du sedan kan skicka till dbms_output .

ORA-01422-felet är ett helt separat problem. Funktionen checkEmpNo inkluderar SELECT INTO uttalande

SELECT emp_id 
  INTO emp_number
  FROM emp;

En SELECT INTO kommer att generera ett fel om frågan returnerar något annat än 1 rad. I det här fallet, om det finns flera rader i emp tabell får du ett felmeddelande. Min gissning är att du skulle vilja att din funktion skulle göra något liknande

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;


  1. Finns det en Oracle som motsvarar SQL Servers OUTPUT INSERTED.*?

  2. PostgreSQL strömmande replikering vs logisk replikering

  3. Oracle RAC N+1 Redundans

  4. PHP/MYSQL tillåter endast en röst per medlem?