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;
/