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 |
… |
-
Làm thế nào để chuyển Danh sách từ java sang Thủ tục Oracle?
-
Cách tìm THAM GIA LEFT OUTER hoặc RIGHT OUTER JOIN với ORACLE JOIN (+)
-
Cập nhật các cột có giá trị Null
-
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ì?
-
java.lang.ClassCastException:oracle.sql.TIMESTAMP không thể truyền sang java.sql.Timestamp