Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на boolean в PL/SQL

dbms_output.put_line не е претоварен, за да приеме булев аргумент. Можете да направите нещо като

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

за да преобразувате булевото значение в низ, който след това можете да подадете към dbms_output .

Грешката ORA-01422 е напълно отделен проблем. Функцията checkEmpNo включва SELECT INTO изявление

SELECT emp_id 
  INTO emp_number
  FROM emp;

A SELECT INTO ще генерира грешка, ако заявката върне нещо различно от 1 ред. В този случай, ако има няколко реда в emp таблица, ще получите грешка. Предполагам, че бихте искали вашата функция да прави нещо като

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. Получавате местоположението на външната таблица и името на файла?

  2. Използване на RTRIM или REGEXP_REPLACE за замяна на запетая с интервал със запетая и единични кавички

  3. Искате да вземете разликата от две колони в Sql

  4. ограничение за целостта на оракул

  5. използвайки DBMS_APPLICATION_INFO с Jboss