sql >> Database teknologi >  >> RDS >> Oracle

Oracle Pipelined funktion

Du får dette, fordi din kode tildeler en skalar til outputtypen. Du skal caste variablen for at matche tildelingsmålet. Så:

   SELECT type_struct(counter)
    INTO rec
    FROM dual;

Du behøver ikke nødvendigvis en pipelinet funktion. Vi kan bruge table() med enhver funktion, der returnerer en samling.

Her er en meget enklere implementering, som kun kræver én 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 INNER JOIN af 3 borde med antal og totaler

  2. Brug af `rand()` med `having`

  3. MySQL - generer en liste over mest 'populære' poster

  4. Sådan får du de seneste to rækker med en bestemt værdi efter dato i SQL