sql >> Databasteknik >  >> RDS >> Oracle

Oracle Pipelined funktion

Du får detta eftersom din kod tilldelar en skalär till utdatatypen. Du måste casta variabeln för att matcha tilldelningsmålet. Så:

   SELECT type_struct(counter)
    INTO rec
    FROM dual;

Du behöver inte nödvändigtvis en pipelined funktion. Vi kan använda table() med valfri funktion som returnerar en samling.

Här är en mycket enklare implementering, som bara kräver en 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. RODBC sqlSave problem med att skapa tabeller

  2. Kan inte infoga kinesiska tecken i MySQL

  3. Oracle Connection Pool Class

  4. Oracle-fråga för att gruppera datumskillnaden per timme