Code Snippet

Just another Code Snippet site

[PL/SQL] SQL Query over function

Custom Types :

-- Single record type --
CREATE OR REPLACE TYPE FCT_RECORD IS OBJECT (
    CUR_DATE         DATE,
    ANY_NUMBER       VARCHAR2(50)
);

-- Table of record type -- 
CREATE OR REPLACE TYPE FCT_TABLE IS TABLE OF FCT_RECORD;

Function :

CREATE OR REPLACE FUNCTION f_table( p_arg_1 varchar2 ) RETURN FCT_TABLE IS

-- Data cursor -- 
CURSOR C_DATA IS
    SELECT FCT_RECORD(sysdate, '1') -- Create record -- 
    FROM dual
    UNION ALL
    SELECT FCT_RECORD(sysdate+1, '2')
    FROM dual;
        
    l_tab FCT_TABLE;

BEGIN

    -- Open / Fetch / Close cursor into table result -- 
    OPEN C_DATA;
    FETCH C_DATA BULK COLLECT INTO l_tab;
    CLOSE C_DATA;

    RETURN l_tab;

END f_table;

SQL Query :

SELECT 
    fct_tbl.*
FROM 
    TABLE(F_TABLE('any value')) fct_tbl
WHERE    
    fct_tbl.any_number = '1'

, ,


Comments are currently closed.