Report based on function returning query

Hi all,
I created a function FCT_1 in a package PKG, here is an exemple :
function FCT_1(te in number) return varchar2
is
q varchar2(4000);
begin
if te = '1' then
q := 'Select * from Clientele';
else
q := 'Select * from Compagnie';
end if;
return q;
end;
And I call this function the region source of my report like this :
Declare
q varchar2(4000);
Begin
q:=PKG.FCT_1(:P2_Nb); -- P2_Nb = 1 or 2
return q ;
end;
But I got this error :
report error:
ORA-01403: no data found
I need your help.
Benn

I got it,
I just use the Use Generic Column Names (parse query at runtime only) option.
I don't know why do I have to do it.
Thanks
Benn

Similar Messages

  • Custom report based on function returning cursor

    Hi,
    I'm trying to create a generic function that will be the basis of a custom report in Grid Control.
    The idea is to pass in a database link name, then the function builds a cursor to select using that name, and returns the result to Grid control to render.
    At the moment all I get is an empty table.
    My function is defined as follows:
    create or replace function list_databases(p_dblink varchar2) return sys_refcursor
    is
    db_name varchar2(40);
    c_cursor sys_refcursor;
    v_query varchar2(100);
    begin
    v_query := 'select name from rc_database@'||p_dblink;
    open c_cursor for v_query;
    return c_cursor;
    end;
    The custom report contains a 'Table from SQL' type, with the following sql statement:
    select sysman.list_databases('rmancat_test') from dual
    I've tried playing around with the ??EMIP_BIND_RESULTS_CURSOR?? bind variable but it only seems to work if I write the pl/sql block in the custom report, rather than going for a generic function.
    Any ideas are most welcome.
    Chris

    Why not use a simple procedure to achieve the same thing?

  • Function returning query takes more time to run in Apex4.0

    Hi All,
    I created a report using function returning query. The function returns query based the parameters which returns dynamic columns. When I run the query in sql developer the query generates and returns the result in 3mins. But in apex it takes maximum of 35mins to return.
    The query will return around 10000 rows.
    Is it a performance issue in the query or in Apex?can anyone please help
    Regards
    Raj

    RajEndiran wrote:
    Hi Roel,
    Thanks much for your suggestion. I run in TOAD and got the result as
    Row 1 of 500 fetched so far in 3.31 minutes which means it queried for 500 records alone ? is that not the actual time taken to run the fulll query?That reflects the time to return the first 500 records...
    Please suggest.With all the best will in the world, if I was your user and I had to wait 3 minutes for the page to refresh, I'd steadily lose the will to live!
    As this is primarily an SQL tuning question, have a look at this message in the FAQ thread in the {forum:id=75} forum:
    {message:id=9360003}
    That should give you some pointers on the right approach.

  • Report- Pl/sql function returning sql query parsing page items as text?

    Hi Team,
    I am facing a strange issue .
    I have four page items namely
    1)JOB_CODE
    2)MIN_EXP
    3) MAX_EXP
    4) SOURCES1
    I have a report of the type "Pl/sql function returning sql query"
    declare
    v_sql varchar2(4000);
    begin
    if (:JOB_CODE IS NOT NULL and :MIN_EXP IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql:= 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    elsif (:JOB_CODE IS NULL and :MIN_EXP IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    elsif (:MIN_EXP IS NULL and :JOB_CODE IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where v_experience_years <= :MAX_EXP and V_REQUIREMENT = :JOB_CODE and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    elsif (:MAX_EXP is null and :JOB_CODE IS NOT NULL and :MIN_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
    v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
    end if;
    insert into query_list values (v_sql);
    insert into debug values (:JOB_CODE , :MIN_EXP , :MAX_EXP , :SOURCES1);
    return v_sql;
    end;
    Please not that I am insertin the query into a table called Query_list and the page item values into the table called Debug thru the pl/sql function which returns teh query.
    Now I select the data from the debug tables.
    select unique(query) from query_list;
    select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like '%:SOURCES1%'
    select * from debug;
    JOBCODE     MINEX     MAXEX     SOURCE
    21     1     10     donkeyHire
    And if I run the query in sql I get some records returned
    select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = 21 and v_experience_years >= 1 and v_experience_years <= and source like 'donkeyHire'
    V_CANDIDATE_ID     V_FNAME     V_CURRENT_EMPLOYER     V_EXPERIENCE_YEARS
    2     Vengu     Andale Tech     4
    But the record does not show up in the report!
    does this type of report parse page items as text?
    Why is it so?
    Waiting for an early reply.
    Thanks,
    venkat

    Venkat - You don't want to put ':SOURCES1' in quotes like that.
    Scott

  • On Submit process not firing -report (PL/SQL function returning SQL query)

    Can anyone suggest possible causes / solutions for the following problem?
    I have a report region that uses a PL/SQL function returning SQL query. The report allows the user to update multiple fields / rows and then click a button to submit the page which should run the On-Submit process to update the database. However the process does not run and I get a 'HTTP404 page cannot be found' error; and when I navigate back using the Back button I cannot then navigate to any other page in my application without getting the same error. The button was created by a wizard selecting the options to submit the page and redirect to a (same) page. The button does not actually have a redirect in its definition but the wizard created a branch to the same page which should work and the button has the text 'submit as SUBMIT' next to it so it appears to be set up correctly.
    I have recreated this page several times in my application and I cannot get the On-Submit process to run. However I have created a cut down version of the same page in the sample application on apex.oracle.com at http://apex.oracle.com/pls/otn/f?p=4550:1:179951678764332 and this works perfectly so I am at a loss to understand why it does not work in my application. I cannot post any part of the application itself but if anybody would like to check out page 30 of the sample application (Customer Update Test tab) updating the surnames only, using credentials ja, demo, demo this is pretty much what I have got in my application.
    Any ideas would be much appreciated?

    Thanks for the suggestions guys. I have now identified that the problem goes away when I remove the second table from my report query. The original report query retrieved data from two tables and the process was updating only one of the tables. I thought I had approached the task logically i.e. first get the report to display the records from the two tables, then get the process to update the first table and finally to modify the process further to update the second table.
    Can anyone point me to an example of multiple row updates on multiple tables using a PL/SQL function returning an SQL query?

  • Bug in Classic Report based on Function?

    As a simple example, suppose I want a classic report in which I can change the sort field by selecting from the item P1_SORTFIELD. In Apex 4.2 I was able to implement the report using the PL/SQL function
    return 'select ENAME, SAL from EMP order by ' || :P1_SORTFIELD;
    I cannot do this in Apex 5 on my apex.oracle.com workspace. I either get an "SQL command not property ended" runtime error if I use generic column names, or "not all variables bound" parse error if I don't.
    My real application uses generic column names, so I am most interested in a solution to that.  For example, I tried creating a report having the source
    return 'select ENAME from EMP order by ENAME';
    If I run it using generic column names I still get the "SQL Command not properly ended" runtime error.
    Is this a bug??
    Ed Sciore

    Ed Sciore wrote:
    As a simple example, suppose I want a classic report in which I can change the sort field by selecting from the item P1_SORTFIELD. In Apex 4.2 I was able to implement the report using the PL/SQL function
    return 'select ENAME, SAL from EMP order by ' || :P1_SORTFIELD;
    I cannot do this in Apex 5 on my apex.oracle.com workspace. I either get an "SQL command not property ended" runtime error if I use generic column names, or "not all variables bound" parse error if I don't.
    My real application uses generic column names, so I am most interested in a solution to that.  For example, I tried creating a report having the source
    return 'select ENAME from EMP order by ENAME';
    If I run it using generic column names I still get the "SQL Command not properly ended" runtime error.
    I cannot reproduce the same error messages in my workspace on apex.oracle.com.
    The basic problem here is that the function body will not return a syntactically correct SQL query if the session state value of P1_SORTFIELD is not a valid sort expression for the query. This will always be the case when the region source is validated in the App Builder, and also if P1_SORTFIELD is null at runtime. The solution is to ensure that the function body always returns a valid query irrespective of the value of P1_SORTFIELD:
    return 'select ENAME, SAL from EMP' || nullif(' order by ' || :p1_sortfield, ' order by ');
    Here is another weird thing. I looked at my Apex 4.2 application that got transferred over to Apex 5. The region that does the dynamic sorting still works. But now I just created a new region on that page that has the same source, and as far as I can tell, exactly the same properties. And this region gives me the runtime error. The URL is apex.oracle.com/pls/apex/f?p=80034:33 if that helps.
    Given that I can't reproduce your results based on the information provided, I think we'd need access to the app in your workspace in debug mode to investigate this fully.

  • PL/SQL Function Returning Query Error / ORA-01858: a non-numeric char.....

    I'm trying to write a PL/SQL function to dynamically return a query with varying # of columns. I've done this type of thing before wiith much success, however this is the first time I'm using a cursor for loop within a function to accomplish my task.
    here is the error I get:
    ORA-01858: a non-numeric character was found where a numeric was expected
    Error ERR-1101 Unable to process function body returning query.
    Mind you I have tested the PL/SQL from a SQL editor and it works fine. I'm confused.
    Code is below.
    Thanks in advance!
    DECLARE
    my_query varchar2(4000);
    string1 varchar2(50) := 'select city, ';
    string2 varchar2(4000) := '' ;
    string3 varchar2(4000):= 'from
    ( select a.title, a.city, a.start_date, sum(a.total_stu) cnt
    from sj_class_summary3 a
    group by a.title, a.city, a.start_date
    having a.title = :P4_COURSE )
    group by title, city';
    TYPE date_tab_type IS TABLE OF date INDEX BY PLS_INTEGER;
    date_tbl date_tab_type;
    i number;
    BEGIN
    i:=1;
    for myrec in (select distinct start_date from sj_class_summary3
    where start_date between :P4_START_DATE and :P4_END_DATE order by 1) loop
    date_tbl(i) := myrec.start_date;
    string2 := string2 || ' max( decode( start_date, ''' || date_tbl(i) || ''', cnt,0) ) "' || date_tbl(i) || '", ';
    i := i+ 1;
    end loop;
    string2 := SUBSTR(string2,1,LENGTH(string2)-2);
    string2 := string2 || ' ';
    my_query := string1 || string2 || string3;
    return my_query;
    END;

    Hi Bob,
    you also have another date to character to date conversion in:
    decode( start_date, ''' || date_tbl(i) || ''', cnt,0)
    does this need to be:
    decode( start_date, to_date(''' || to_char(date_tbl(i), 'dd/mm/yyyy') || ''', ''dd/mm/yyyy''), cnt,0)
    Regards
    Michael

  • Plugin with PL SQL function returning query

    Hi all,
    I have created plugin using SQL query many times. But can we create a plugin from scratch using PL SQL function returning SQL query? Any ideas or sample.
    Thanks
    Sunil Bhatia

    Hi Scott,
    By this i mean, i have created a region type plugin for integrating jqx Grid into oracle apex. This takes input parameter as SQL statement, and creates jqx grid for me on page. Now my question is, can i do this using PL SQL function returning SQL, because when i try to give return statement, plugin gives error "SQL statement mandatory'. I hope i am clear enough now.
    Thanks
    Sunil Bhatia

  • Conditional Display of Interactive Report Based On Different SQL Query

    Hello,
    I have two drop down list on top of my page and below that I have a interactive report.
    Based on user selection of values from drop down, interactive report should change based on different SQL queries.
    Is it possible to have different SQL queries based on values from drop down and generate interactive report based on that?
    Thanks

    I am passing my drop down value to apex_collection like the following:
    APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY( p_collection_name => 'IR_LIST',
    p_query => REQUEST_VIEW(:P12_VIEW));However when I change the values from the drop down, :P12_VIEW is not getting the value from drop down even though I could see value being changed in URL. I have created page process for apex_collection
    Process Point - OnLoad - Before Header
    Run Process - Once Per Session or When ResetCould someone suggest as why I cannot get the values in function when drop down is changed?
    Regards

  • Issues with Infoview data refresh on Crystal Reports based on BW BeX query

    Hi all,
    We applied the Business Objects XI3.1 fix pack 3.1 with Integration toolkit fix pack 3.1 in our environment.
    After that we started having trouble with Crystal Reports based on BeX queries that use manual input variables.
    The data refresh would not work in Infoview.
    The data refresh would work using the Crystal Reports designer gui on local machine.
    regards,
    Abhishek

    Hi all,
    This thread is for the benefit of all the BW/BO people who faced issues with BO reports not working after certain fix pack installations.
    After lot of time spent in debugging this and researching and some help from SAP, we found that BASIS had missed a step in the BO patching. This step was relating to applying some BW transports in the BW system related to the new Integration toolkit.
    Please use below notes for the BW transport task of patching BOE Integration toolkit.
    Refer to Note#1472104 which explains about loading the
    transports when we install BO Service Packs or Fix Packs. Also please refer to the Note#1271751 for the advice on transports for BW systems.
    Please go through page 206 (Configuring transports) in the SAP Integration Kit installation guide. You can download this document at below link.
    https://websmp106.sap-ag.de/~sapidb/011000358700000559912010E/xi31_sp3_bip_sap_inst_en.pdf
    Refer to Note#1345919 which explains about the process of loading transports for SAP IK.
    regards,
    Abhishek

  • Report based on PLSQL returning SQL query

    I created function which builds the SQL and returns it as VARCHAR2. For testing purposes I harcoded the primary ID for the query to be based on. I run the function as standalone call to get the generated SQL and to test it. It works fine. The moment I try to use the ID parameter as an argument passed to the function it doesn't work and I get the "No data found" error. Again if I try this function outside of Apex it produces correct SQL syntax and it runs.
    The function signature is really simple:
    FUNCTION abc(i_id NUMBER) RETURN VARCHAR2
    IS
    l_id NUMBER;
    BEGIN
    -- this works:
    -- l_id := 300;
    -- this doesn't work:
    l_id := i_id;
    ... more code follows. It uses the l_id while building the query.
    I also tried to make it an anonymous block and place it directly in Apex region. Again I face the same problem. I modified this function slightly to reference the page attribute instead of accepting parameter:
    DECLARE
    l_id NUMBER;
    BEGIN
    -- this works:
    -- l_id := 300;
    -- this doesn't work:
    l_id := :P65_ID;

    Have you verified that i_id and P65_ID have a value when the procedure runs? Perhaps have something along the lines of "if i_id is null then return 'select <dummy data> from dual' else [build real query here]"...?
    -D.

  • How to e-mail/not e-mail a scheduled report based on records returned

    Hi Everyone,
    Is there a way that there can be logic performed on a report that has been scheduled and ran before it gets sent via e-mail to the end users?  We have scheduled reports that often end up with 0 records returned but users still get the e-mail with the report that contains 0 records.  I would like to e-mail the reports only if the records returned is greater than 0.
    We are on v3.1 so if there is a solution for 3.1 that would be great.  If this capability exists in 4.0, that information would be very helpful as well.
    Thank you for your time.
    David Hellinger

    Apply an event on your report.
    First go to Cmc, create an event based for example on a file that should be created in certain route if the query won't return 0 rows.
    Then apply this event in your report Schedule option Event.

  • Webi reports based on the BW query that sits on top of BW Infoset

    Hi everyone,
    I do can create the BW OLAP connection on BW Infosets, but when I use the Bex Query and try to create the report, when I launch the report in Webi, it doesn't return any values, but when I launch the Bex Query itself, it does have data!
    Any ideas why this happens?
    I don't have any filters, it's a simple test query and test report.
    Thanks!

    Hi,
    What's happens when testing the query in RSRT? 
    How about trace log analysis in ST05 and RSRT ?
    What happens in the SOFA /  MDA .log ? Any error there?
    Regards,
    H

  • Query Report Error ( Call function inside Query report )

    Hello every body,
    I'v database Oracle 11g R2 and i have Apex 4.1 , when i run my report with a simple query :
    select gydb_wf_id,
    gydb_workflow_name,
    gydb_work_flow_owner,
    FUNC_GET_NBR_LAST_STEPS ( gydb_workflow_id) NBR
    from gybd_workflow ;
    I got the following message error :
    Query cannot be parsed within the Builder. If you believe your query is syntactically correct,
    check the ''generic columns'' checkbox below the region source to proceed without parsing.
    ORA-00904: "FUNC_GET_NBR_LAST_STEPS": invalid identifie
    Note that i have all privilages on my function (FUNC_GET_NBR_LAST_STEPS) ,
    Any issues
    Tnahkyou

    Hi Yosof      ,
    concatenate schema name with your function
    for example
    select gydb_wf_id,
    gydb_workflow_name,
    gydb_work_flow_owner,
    ABC.FUNC_GET_NBR_LAST_STEPS ( gydb_workflow_id) NBR  // here i have written ABC as schema name
    from gybd_workflow ;try and see it is working or not.
    hope it works,
    Thanks,
    Jitendra

  • Pl/sql function returning query - syntax question

    Hi,
    I'm trying to figure out the syntax for the following query:
    BEGIN
    RETURN 'select name from table1 where name like '%' || :p1_name';
    END;
    It doesn't work because of the single-quotes around the % sign, plus the quotes for the query itself. How can I handle the % sign quotes? Any suggestions would be appreciated!
    Thanks,
    Nora

    Nora,
    If you want to use quotes within a quoted string, you have to duplicate the quotes.
    BEGIN
    RETURN 'select name from table1 where name like ''%'' || :p1_name';
    END;
    Fred.

Maybe you are looking for

  • Error Message: "Disk could not be read from or written to".

    New 5th Gen. was downloading CD's I loaded into iTunes just fine; when uploading tunes into iPod yesterday this error message appeared: "Attempting to copy to the disk (iPod name) failed. Disk could not be read from or written to". Restored iPod with

  • DirectNIC's customers outside of the U.S. are unable to connect to their email accounts using their blackberries

    I work for directNIC.com and our customers who are located in foreign countries are unable to send/receive email on their blackberry devices.  The problem started at the beginning of this month and we can not figure out what the problem is.  Our U.S.

  • WHT on vendor interest

    Hi I am facing a peculiar problem. We have created Fixed deposits as vendor and we have attached interest indicators to these vendors. Also since interest is subject to WHT in India (TDS), WHT types and codes are attached to the vendor. For interest

  • Creating layout in PDF Based Form to print table content.

    Hi ,     I am facing problem in creating the layout of PDF Based Form . I do not need any interactive text but only active table in my context whose data i need to print . What i did was drag the table from data view into  the body page and activate

  • Apple Home Page not loading correctly?

    Only when I visit www.apple.com, the images do not load. This is extremely stressful as it also disorganizes everything on the site. Is it some preference on my MBP (or Safari) that is wrong, or what?? Is anyone else experiencing this on the apple ho