package with variable
CREATE OR REPLACE PACKAGE poly_pkg AS
FUNCTION describe ( p_tbl IN OUT DBMS_TF.TABLE_T,
p_var NUMBER )
RETURN DBMS_TF.DESCRIBE_T;
END;
Package created.
package body with variable
CREATE OR REPLACE PACKAGE BODY poly_pkg AS
FUNCTION describe ( p_tbl IN OUT DBMS_TF.TABLE_T,
p_var NUMBER )
RETURN DBMS_TF.DESCRIBE_T AS
BEGIN
-- simply display the value passed in
DBMS_OUTPUT.PUT_LINE('VAR = ' || p_var);
RETURN NULL;
END;
END;
Package Body created.
function with parameter
CREATE OR REPLACE FUNCTION poly_func(p_tbl IN TABLE,
p_var NUMBER )
RETURN TABLE PIPELINED
ROW POLYMORPHIC USING poly_pkg;
Function created.
demo table
CREATE TABLE table1
( col1 NUMBER,
col2 NUMBER )
Table created.
demo data
INSERT INTO table1
VALUES(19,99)
1 row(s) inserted.
demo query
SELECT col1
FROM poly_func(table1,1)
COL1 | 19 |
---|
package with Pseudo-Operator
CREATE OR REPLACE PACKAGE poly_pkg AS
FUNCTION describe ( p_tbl IN OUT DBMS_TF.TABLE_T,
p_cols DBMS_TF.COLUMNS_T )
RETURN DBMS_TF.DESCRIBE_T;
END;
Package created.
package body with Pseudo-Operator
CREATE OR REPLACE PACKAGE BODY poly_pkg AS
FUNCTION describe ( p_tbl IN OUT DBMS_TF.TABLE_T,
p_cols DBMS_TF.COLUMNS_T )
RETURN DBMS_TF.DESCRIBE_T IS
BEGIN
FOR counter IN 1..p_tbl.column.count LOOP
DBMS_OUTPUT.PUT_LINE('Object Column ' ||
p_tbl.column(counter).description.name);
END LOOP;
FOR counter IN 1..p_cols.count LOOP
DBMS_OUTPUT.PUT_LINE('Passed Column ' ||
p_cols(counter));
END LOOP;
RETURN NULL;
END;
END;
Package Body created.
function with columns Pseudo-Operator
CREATE OR REPLACE FUNCTION poly_func(p_tbl IN TABLE,
p_cols DBMS_TF.COLUMNS_T )
RETURN TABLE PIPELINED
ROW POLYMORPHIC USING poly_pkg;
Function created.
demo query with columns Pseudo-Operator
SELECT *
FROM poly_func(table1,columns(col2))
COL1 | COL2 | 19 | 99 |
---|