add
remove
language
chart
show hidden
hide
db<>fiddle
Db2
DocumentDB
DuckDB
Firebird
MariaDB
MySQL
Oracle
Postgres
SQL Server
SQLite
TimescaleDB
YugabyteDB
11.1
11.5
12.1
0.114 (MongoDB 7.0)
0.116 (MongoDB 7.0)
1.4 LTS
3.0
4.0
5.0
10.2
10.3
10.4
10.5
10.6
10.7
10.8
10.9
10.11
11.4
11.8
12.3
5.5
5.6
5.7
8.0
8.4
9.7
11g Release 2
18c
21c
23c
23ai
26ai
8.4
9.3
9.4
9.5
9.6
10
11
12
13
14
15
16
17
18
19 beta 4
2012
2014
2016
2017 (Linux)
2017
2019 (Linux)
2019
2022
2025
3.8
3.16
3.27
3.39
3.45
3.53
2.11
2.14
2.28
2.6
2.8
2.18
2024.2 LTS
2025.2 LTS
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
Sakila
no sample DB
Sakila
no sample DB
Sakila
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
HR
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
db<>fiddle Statistics
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
AdventureWorks
no sample DB
AdventureWorks
no sample DB
AdventureWorks
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
run
abort
markdown
clear
donate
feedback
about
By using db<>fiddle, you agree to license everything you submit by
Creative Commons CC0
.
CREATE OR REPLACE package MYPKG as TYPE REC IS RECORD ( A NUMBER(18), B DATE, C NUMBER(18) DEFAULT 1 ); TYPE TCURSOR IS REF CURSOR; type CUR_TAB is table of REC; procedure CUR_PROC(CUR OUT TCURSOR, SEL_TYPE IN NUMBER); --some procedure with undefined columns FUNCTION CUR_TAB_PIPLINED(P_SEL_TYPE IN NUMBER) RETURN MYPKG.CUR_TAB PIPELINED; END MYPKG; /
CREATE OR REPLACE package body MYPKG as function CUR_TAB_PIPLINED(P_SEL_TYPE IN NUMBER) return MYPKG.CUR_TAB PIPELINED as v_a NUMBER(18); v_b DATE; v_c NUMBER(18); TEMP_CUR TCURSOR; begin MYPKG.CUR_PROC(TEMP_CUR, P_SEL_TYPE); IF p_sel_type = 2 THEN LOOP FETCH temp_cur INTO v_a, v_b, v_c; EXIT WHEN temp_cur%NOTFOUND; PIPE ROW (REC(v_a, v_b, v_c)); END LOOP; ELSE LOOP FETCH temp_cur INTO v_a, v_b; EXIT WHEN temp_cur%NOTFOUND; PIPE ROW (REC(v_a, v_b, 1)); END LOOP; END IF; CLOSE TEMP_CUR; EXCEPTION WHEN NO_DATA_NEEDED THEN CLOSE TEMP_CUR; end; PROCEDURE CUR_PROC (CUR OUT TCURSOR, SEL_TYPE IN NUMBER) as BEGIN IF SEL_TYPE = 1 THEN OPEN CUR FOR SELECT 1 AS A, SYSDATE AS B FROM dual; ELSE OPEN CUR FOR SELECT 1 AS A, SYSDATE AS B, 5 AS C FROM dual; END IF; end; END MYPKG; /
SELECT * FROM TABLE(MYPKG.CUR_TAB_PIPLINED(1));
A
B
C
1
03-JUN-24
1
SELECT * FROM TABLE(MYPKG.CUR_TAB_PIPLINED(2));
A
B
C
1
03-JUN-24
5