sql >> Database >  >> RDS >> Oracle

Oracle Pipelined-functie

U krijgt dit omdat uw code een scalair toewijst aan het uitvoertype. U moet de variabele casten zodat deze overeenkomt met het toewijzingsdoel. Dus:

   SELECT type_struct(counter)
    INTO rec
    FROM dual;

U hebt niet per se een pijplijnfunctie nodig. We kunnen table() . gebruiken met elke functie die een verzameling retourneert.

Hier is een veel eenvoudigere implementatie, waarvoor slechts één UDT nodig is.

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. Is het mogelijk om een ​​sum() in MySQL te versnellen?

  2. Meer dan eens aan dezelfde tafel deelnemen

  3. Hoe gegevens te schrijven op een nieuw blad van EXCEL

  4. Opgeslagen procedure/functiedefinitie bekijken in MySQL