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

Ví dụ về hàm Pipelined của Oracle

Hướng dẫn này của Oracle chỉ ra cách tạo hàm Pipelined. Làm theo các bước sau:

1. Tạo một đối tượng kiểu

Đối với hàm pipelined của Oracle, chúng ta phải có một đối tượng kiểu mà chúng ta có thể gửi các hàng qua đó. Tạo một như sau:

CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000);
/

2. Tạo một hàm được lưu trữ dưới dạng PIPELINED

Hàm sau sử dụng kiểu trên để trả về các giá trị. Và các hàng tạo ra từng hàng một thông qua một con trỏ dựa trên truy vấn SQL:

CREATE OR REPLACE FUNCTION get_values RETURN t_list
     PIPELINED
IS   l_list t_list;
     w_row_count   NUMBER := 0;
BEGIN
          for cur in
          ( SELECT 'LINE' || level as value
          FROM dual CONNECT BY
               level <= 20
               ) loop
              PIPE ROW ( cur.value );
                        w_row_count := w_row_count + 1;
          end loop;
     dbms_output.put_line('Total ' || w_row_count || ' rows selected');
END get_values;
/

3. Gọi hàm bằng truy vấn SQL

Bây giờ cuối cùng, chúng ta có thể gọi hàm trên và có thể nhận được các hàng như mong muốn:

select * from TABLE(get_values());

Đầu ra:

COLUMN_VALUE
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
LINE8
LINE9
LINE10
10 hàng 20
  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àm thế nào để chuyển Danh sách từ java sang Thủ tục Oracle?

  2. Cách tìm THAM GIA LEFT OUTER hoặc RIGHT OUTER JOIN với ORACLE JOIN (+)

  3. Cập nhật các cột có giá trị Null

  4. Số lượt chọn (1) từ tên_bảng trên bất kỳ bảng cơ sở dữ liệu nào có nghĩa là gì?

  5. java.lang.ClassCastException:oracle.sql.TIMESTAMP không thể truyền sang java.sql.Timestamp