Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 235 Big Data Appliance
- 1.9K Data Science
- 449.9K Databases
- 221.6K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 532 SQLcl
- 4K SQL Developer Data Modeler
- 186.9K SQL & PL/SQL
- 21.3K SQL Developer
- 295.5K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.1K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 154 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 158 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 402 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 230 Portuguese
Oracle Apex How to use Function returning sql in IG

Hi,
I had asked a question earlier in one of the threads.
The details are in thread here.
Requirement was to write query for interactive grid that would return previous quarter data if current quarter was unavailable.
To resolve i created function in database returning sql which implements same logic. But i am not sure how to use it in apex application.
My current IG query is:
SELECT DEPT_ID,DEPT_QUARTER_ID, ,KPI_1,KPI_2,KPI_3,KPI_4,KPI_5 from DEPT_DATA WHERE DEPT_QUARTER_ID=:DEPT_QUARTER_ID AND PROJECT = :P1_PROJECT
I need to modifiy this to use the function mentioned below retuning the sql .How can i do that?
As mentioned in thread, for project variable p_id, there is application item :PROJECT.
For year and quarter, i have app items A_YEAR AND A_QUARTER.
So function would be something like:
Q_VALUE(:A_YEAR,A_QUARTER, :PROJECT, :P1_DEPT --P1_DEPT is page item for departments
But how do i use this as source of IG?
create or replace FUNCTION Q_VALUE (P_YEAR IN NUMBER, P_QUARTER IN NUMBER,P_COLUMN IN VARCHAR2, P_ID IN NUMBER, P_DEPT IN VARCHAR2 ) RETURN VARCHAR2 IS V_YEAR NUMBER; V_QUARTER NUMBER; V_PK NUMBER; sql_stmt VARCHAR2(10000); V_VAL VARCHAR2(1000); BEGIN IF P_QUARTER =1 THEN V_YEAR :=P_YEAR-1; V_QUARTER :=4 BEGIN SELECT QUARTER_PK INTO V_PK FROM DEPT_QUARTER_DATA WHERE PROJECT = P_ID AND QUARTER = TO_CHAR(V_QUARTER) AND YEAR = V_YEAR; EXCEPTION WHEN OTHERS THEN V_PK := NULL; END; IF V_PK IS NOT NULL THEN sql_stmt := ' SELECT '||P_COL|| ' FROM DEPT_DATA WHERE DEPT_QUARTER_ID= '''||V_PK||''' AND DEPT_ID='''||P_DEPT||''' ; BEGIN EXECUTE IMMEDIATE sql_stmt INTO V_VAL ; EXCEPTION WHEN OTHERS THEN V_VAL := NULL; END; END IF; ELSE V_QUARTER :=P_QUARTER-1; //fetches from prev quarter BEGIN SELECT QUARTER_PK INTO V_PK FROM DEPT_QUARTER_DATA WHERE PROJECT = P_ID AND QUARTER = TO_CHAR(V_QUARTER) AND YEAR = V_YEAR; EXCEPTION WHEN OTHERS THEN V_PK := NULL; END; IF V_PK IS NOT NULL THEN sql_stmt := ' SELECT '||P_COL|| ' FROM DEPT_DATA WHERE DEPT_QUARTER_ID= '''||V_PK||''' AND DEPT_ID='''||P_DEPT||''' ; BEGIN EXECUTE IMMEDIATE sql_stmt INTO V_VAL ; EXCEPTION WHEN OTHERS THEN V_VAL := NULL; END; END IF; RETURN V_VAL; END;