sql >> Databáze >  >> RDS >> Oracle

Použití boolean v PL/SQL

dbms_output.put_line není přetížen, aby přijal booleovský argument. Můžete udělat něco jako

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

převést boolean na řetězec, který pak můžete předat dbms_output .

Chyba ORA-01422 je zcela samostatný problém. Funkce checkEmpNo obsahuje SELECT INTO prohlášení

SELECT emp_id 
  INTO emp_number
  FROM emp;

A SELECT INTO vygeneruje chybu, pokud dotaz vrátí něco jiného než 1 řádek. V tomto případě, pokud je v emp více řádků tabulky, dostanete chybu. Hádám, že byste chtěli, aby vaše funkce dělala něco jako

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. řetězcový ekvivalent Sum ke zřetězení

  2. Získejte záznamy s maximální hodnotou pro každou skupinu seskupených výsledků SQL

  3. Zjistěte nejoblíbenější slova v MySQL / PHP

  4. PHP skript pro naplnění tabulek MySQL