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

Oracle Pipelined funkce

Získáte to, protože váš kód přiřadí skalární typ výstupu. Musíte přetypovat proměnnou tak, aby odpovídala cíli přiřazení. Takže:

   SELECT type_struct(counter)
    INTO rec
    FROM dual;

Nepotřebujete nutně zřetězenou funkci. Můžeme použít table() s jakoukoli funkcí, která vrací kolekci.

Zde je mnohem jednodušší implementace, která vyžaduje pouze jeden UDT.

CREATE TYPE tp_numbers AS TABLE OF number;
/
CREATE OR REPLACE FUNCTION gen_nums (na NUMBER, nb NUMBER)
RETURN tp_numbers 
IS
    return_value tp_numbers ;
BEGIN
    SELECT (na + level) - 1 
    bulk collect    INTO return_value  
    FROM dual
    connect by level <= nb;

    RETURN return_value ;
END gen_nums;
/


  1. MySQL – Počkejte několik sekund pomocí SELECT SLEEP()

  2. Jak se používají hodnotící algoritmy Reddit a Hacker News?

  3. Ruby On Rails je pomalý...?

  4. Vložit řádky pouze v případě, že existuje id z jiné tabulky