Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Użycie wartości logicznej w PL/SQL

dbms_output.put_line nie jest przeciążony, aby zaakceptować argument logiczny. Możesz zrobić coś takiego

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

aby przekonwertować wartość logiczną na ciąg, który można następnie przekazać do dbms_output .

Błąd ORA-01422 to zupełnie osobna sprawa. Funkcja checkEmpNo zawiera SELECT INTO oświadczenie

SELECT emp_id 
  INTO emp_number
  FROM emp;

SELECT INTO wygeneruje błąd, jeśli zapytanie zwróci cokolwiek innego niż 1 wiersz. W tym przypadku, jeśli w emp znajduje się wiele wierszy tabeli, pojawi się błąd. Domyślam się, że chcesz, aby twoja funkcja robiła coś takiego

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyrażenie regularne określonego formatu daty

  2. Oracle/SQL — Znajdowanie rekordów z jedną wartością z wyłączeniem wartości null

  3. Programista SQL 4.1.2

  4. ORACLE TRIGGER WŁÓŻ DO ... (WYBIERZ * ...)

  5. TRANSLATE() Funkcja w Oracle