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

Brug af boolean i PL/SQL

dbms_output.put_line er ikke overbelastet til at acceptere et boolsk argument. Du kan gøre sådan noget som

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

at konvertere boolean til en streng, som du derefter kan sende til dbms_output .

ORA-01422-fejlen er et helt separat problem. Funktionen checkEmpNo inkluderer SELECT INTO erklæring

SELECT emp_id 
  INTO emp_number
  FROM emp;

En SELECT INTO vil generere en fejl, hvis forespørgslen returnerer noget andet end 1 række. I dette tilfælde, hvis der er flere rækker i emp tabel, får du en fejl. Mit gæt er, at du gerne vil have din funktion til at gøre noget lignende

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. MySQL 8.0.11 fejl tilslutning til caching_sha2_password det angivne modul kunne ikke findes

  2. Hvordan indstiller du skemanavnet for sekvenser på tidspunktet for implementering, når du bruger JPA?

  3. SQL Sådan opdateres SUM for kolonne over gruppe i samme tabel

  4. Perl DBI uden adgang til databasen