Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm Pipelined của Oracle

Bạn nhận được điều này bởi vì mã của bạn chỉ định một đại lượng vô hướng cho loại đầu ra. Bạn cần ép kiểu biến để phù hợp với mục tiêu gán. Vì vậy:

   SELECT type_struct(counter)
    INTO rec
    FROM dual;

Bạn không nhất thiết phải cần một hàm pipelined. Chúng ta có thể sử dụng table() với bất kỳ hàm nào trả về một bộ sưu tập.

Đây là cách triển khai đơn giản hơn nhiều, chỉ yêu cầu một 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi SQL:ORA-12899:giá trị quá lớn cho cột

  2. Sự cố về trình kích hoạt PL / SQL

  3. Cách thêm chỉ báo AD / BC vào ngày trong Oracle

  4. Chạy nhiều câu lệnh sql chỉ sử dụng thực thi trong TOAD

  5. Tại sao việc truy vấn cơ sở dữ liệu tuân thủ JDBC từ Oracle không dễ dàng như chiếc bánh?