Help: Creating a report based on STORED PROCEDURE in Oracle DB

Hi,
We are creating an application with FORMS and REPORTS. A set of stored procedures were created for the FORMS and the ref cursor from the select statement are the same for the REPORTS.
Is there a way that directly use relevant stored procedure to create REPORTS and how?
Thanks in advance.
Jimmy

What I am really interested in is calling STORED PEOCEDURE in DB, not the one that attached with report. What good about this is that the procedures can be shared by FORMS and REPORTS. REPORTS call the procedure with select statement.
Thanks.

Similar Messages

  • Report based on stored procedure

    I want to create a report based on stored procedure(not ref cursor!!!!!)
    For example - Invoice report with data with complicated rules:
    1.line - product_name and price
    2.line - annual fee name and price
    3.line - some special fee name and price
    4..............
    5..............
    [b][b][b]Is it possible or not?
    We can solve the problem using functions, i.e. select line_1_1(param),line_1_data2(param6) from dual union all and select line_2_1(param1,param2),line_2_2(sysdate) from dual and so on, but I am looking for better solution.
    We also can use stored procedure to populate data into temporary table, run report and clear the data in the table after that, but database is read-only for users and we don't want to change the security roles.
    Thanks in advance.
    Iassen Houbenov

    See:
    "Using a Collection Instead of a Temporary Table in Complex Reports"
    http://www.revealnet.com/pipelines/plsql/tips03.htm#NOVEMBER
    Regards,
    Zlatko Sirotic

  • Support a singly report on SQL Stored Procedure and Oracle Stored Procedure

    Hi,
    I have a requirement in which I need to create a report that will run both on oracle and sql server.
    Report is designed as follows.
    Main report contain 2 sub-reports.Sub-reports are  based on stored procedure that takes three input parameters(beginDate,endDate and hostname which is a comma-separated string).
    Main report also have three parameters (beginDate,endDate and hostnameList) that I am linking with both sub-reports.
    Since the crystal picks the same name of the parameter as we define in procedure it showing '@' symbol in all the parameters when I change the datasoure from oracle to sql server and that's why sub reports defined in main report loose all the linking and same happens when I switch from sql to oracle since in case of oracle it does not have '@' symbol in variable name.
    How can I have one report that work with both DBs without loosing the links.
    Any help will be appreciated.
    Thanks,
    Amrita

    There is no way of doing this in CR. At least not that I've ever heard of anyway.
    If you REALLY need to make this work and it REALLY has to be just 1 report... Here is what I'd do...
    In the SQL Server database, add a new table that contains the same columns that are being returned by the sp's. If you can't add new tables to the database, use a different database or server...
    Create a Linked Server linking the Oracle db to SQL Server. (If you take the 3rd server rout, do the same with the SQL Server)
    Write a new sp that will accept the {?WhichServer} parameter and populate the new table with the result set.
    Then just query that table for your report.
    I know this probably isn't the rout you were wanting to take but it should work...
    Jason

  • How to edit a report based on Stored procedure in Deski

    hi all,
    We have a report based on a stored procedure in Deski format.I can see the sp name it is using under View Data >definition but cannot figure out which database or server it is pointing to .
    Also ,please let me know how to edit/change the sp it is pointing to.
    Thanks

    Hi
    When you click on View Data, at bottom click on Edit button
    It will prompt a connection details tab wherein you can view and modify the connections
    Nik

  • JCE Based Java Stored Procedure in Oracle 8i

    I have a Java class which is created based on JCE 1.2.1. I need to call this Java class from PL/SQL. Therefore, I want to create a Java stored procedure based on this Java class. I just read some topics in this forum and it seems that many people are unable to have JCE correctly setup on Oracle8 JVM.
    My question is how to configure the JVM of Oracle8i to use the JCE?
    I am using Oracle 8.1.6 on unix.
    Thanks,

    unfortunately, for JCE to work, you need a fix to OracleJVM that we will be providing in the next major release
    Thanks for your reply.
    The JCE optional package could be installed on SUN's JDK 1.2.x or higher. Since Oracle 8.1.6's JServer support SUN's JDK 1.2.1. Therefore, in theory, JCE could be installed for Oracle 8.1.6 or higher.
    However, the cofiguration of JCE on the JVM requires the modification of Java security policy file. I followed the JCE's installation guide but it did not work on Oracle's JServer.
    My question is: How to install JCE 1.2.1 on Oracle 8.1.6? Is it possible to configure the JVM of Oracle 8.1.x to use JCE? If yes, how?
    Thanks,
    JCE is an optional package even in J2SE 1.3 - it is required in J2SE 1.4
    OracleJVM will be J2SE 1.4 compliant in the nest major release and we plan to support JCE
    I have a Java class which is created based on JCE 1.2.1. I need to call this Java class from PL/SQL. Therefore, I want to create a Java stored procedure based on this Java class. I just read some topics in this forum and it seems that many people are unable to have JCE correctly setup on Oracle8 JVM.
    My question is how to configure the JVM of Oracle8i to use the JCE?
    I am using Oracle 8.1.6 on unix.
    Thanks,

  • Would like to create a file upload facility in a form based on stored procedure

    Hello,
    I would like to create a 'File Upload' in a 'form based on stored procedure'. The version of portal that I am running is 3.0.7.6.2. In this version, only 'form based on table' has the ability to upload files. Or is it that I am missing something?
    Please let me know if this is possible in higher versions of portal.
    Thank you for your help.
    Jayasree

    I have kin od fdone this by using the additem fucntion, if you look at the HTML of the add file page, you can see the parameter that are required for the form.

  • Help: FORMS based on stored procedures

    I am working on a FORM based on stored procedures. This particular FORM performs a query and generates say,
    customer_name, item1_sale, item2_sale and sum of the item1_sale and item2_sale.
    I'd like to know if there are ways that the query procedure returns to reference cursors that one with multiple records and one with the sums? The FORM will then be able to show rows of sales and the bottom row with show the sale totals.
    Thank you in advance.
    Jimmy

    Francois,
    I just tried another way of getting the totals. I manually created a data block and add two items tot_1 and tot_2. I the item properties: I set calculation:
    calculation Mode: Summary
    Summary Function: Sum
    Sumary Block: BLOCK_A
    Summary Item: item1_sale etc.,
    I got a compile error:
    FRM-30377: Summary item must reside in single-record block or in same block as summarized item.
    Where do I catch this error?
    Thanks.
    Jimmy

  • Help: FRM-40505 for a FORM based on stored procedures

    Hi,
    I am working on a FORM based on stored procedures. When it performs a query, it actually returns record, but still comes with the message FRM-40505: ORACLE error: unable to perform query. Any recommendations on the possible coding area to check?
    Thank you in advance.
    Jimmy

    Jimmy,
    To base a block on a stored procedure is not a simple task because it depends on the .....
    .... stored procedure !
    If you do not provide much information (like the famous stored procedure), we could not do anything for you.
    As much information you provide, as much chance we have to understand the problem.
    Francois

  • Block based on Stored Procedures & Locking_Mode

    Hello,
    I'm creating a block in Forms 6.0.8 based on Stored Procedures. I'm using the example given in Metalink doc 52778.1. Updates to data work fine if locking_mode = 'Immediate'. If I set locking_mode to 'Delayed' and run the form, when I try to update and commit something, then the IF condition in lock-procedure (grp_lock) always returns TRUE and I run into the exception trapped there. It appears that Forms is passing NEW values in p_grp_data if locking_mode is Delayed and this is causing the problem. Is there any thing I could do in the form or procedure (preferably in the procedure) to solve this problem ? I'm trying to write procedures that will work with both Immediate and Delayed locking_modes
    thanks in advance..
    -- Table and package source:
    -- GRP
    create sequence grp_s
    create table grp
    id number constraint grp_pk primary key,
    name varchar2(10) not null constraint grp_uk unique,
    description varchar2(30) not null,
    active varchar2(1) default 'Y'
    create or replace trigger grp_bri before insert on grp for each row
    begin
    select grp_s.nextval
    into :new.id
    from dual ;
    end ;
    CREATE OR REPLACE PACKAGE grp_pkg AS
    TYPE grpidrec IS RECORD( id grp.id%TYPE ) ;
    TYPE grprec IS RECORD ( id grp.id%type, name grp.name%type, description grp.description%type, active grp.active%type ) ;
    TYPE grp_cursor IS REF CURSOR RETURN grp%rowtype ;
    TYPE grp_tab IS TABLE OF grp%rowtype INDEX BY BINARY_INTEGER ;
    TYPE grp_id_tab IS TABLE OF grpidrec INDEX BY BINARY_INTEGER ;
    PROCEDURE grp_refcur( p_grp_data IN OUT grp_cursor,
    p_group_name IN grp.name%type ) ; -- use if a ref cursor is required
    PROCEDURE grp_query( p_grp_data IN OUT grp_tab, p_group_name IN grp.name%TYPE ) ;
    PROCEDURE grp_insert( p_grp_data IN grp_tab ) ;
    PROCEDURE grp_update( p_grp_data IN grp_tab ) ;
    PROCEDURE grp_delete( p_grp_data IN grp_id_tab ) ;
    PROCEDURE grp_lock( p_grp_data IN grp_tab ) ;
    END grp_pkg ;
    sho err
    create or replace package body grp_pkg as
    -- ================================================================================
    PROCEDURE grp_refcur( p_grp_data IN OUT grp_cursor, p_group_name IN grp.name%type ) AS
    begin
    open p_grp_data FOR select id, name, description, active
    from grp
    where name = nvl( p_group_name, name ) ;
    end ;
    -- ================================================================================
    PROCEDURE grp_query( p_grp_data IN OUT grp_tab, p_group_name IN grp.name%TYPE ) AS
    i number ;
    CURSOR grp_select IS
    SELECT id, name, description, active
    FROM grp
    WHERE name = nvl( p_group_name, name ) ;
    begin
    OPEN grp_select ;
    i := 1 ;
    LOOP
    FETCH grp_select INTO p_grp_data(i).id, p_grp_data(i).name, p_grp_data(i).description, p_grp_data(i).active ;
    EXIT WHEN grp_select%NOTFOUND ;
    i := i + 1 ;
    END LOOP ;
    end ;
    -- ================================================================================
    PROCEDURE grp_insert( p_grp_data IN grp_tab ) AS
    i NUMBER ;
    begin
    FOR i in p_grp_data.FIRST .. p_grp_data.LAST
    LOOP
    INSERT INTO grp( name, description, active )
    VALUES ( p_grp_data(i).name, p_grp_data(i).description, p_grp_data(i).active ) ;
    END LOOP ;
    end ;
    -- ================================================================================
    PROCEDURE grp_update( p_grp_data in grp_tab ) AS
    i binary_integer ;
    rec_modified exception ;
    BEGIN
    FOR i in p_grp_data.first .. p_grp_data.last LOOP
    UPDATE grp
    SET name = p_grp_data(i).name,
    description = p_grp_data(i).description,
    active = p_grp_data(i).active
    WHERE id = p_grp_data(i).id ;
    if sql%rowcount = 0 then
    raise rec_modified ;
    else
    -- success
    null ;
    end if ;
    END LOOP ;
    exception
    when rec_modified then
    raise_application_error(-20006, 'Record already modified' ) ;
    when others then
    raise_application_error(-20007, 'Other error : ' || sqlerrm ) ;
    END ;
    -- ================================================================================
    PROCEDURE grp_delete( p_grp_data IN grp_id_tab ) AS
    i BINARY_INTEGER ;
    begin
    FOR i IN p_grp_data.FIRST .. p_grp_data.LAST LOOP
    DELETE FROM grp
    WHERE name = p_grp_data(i).id ;
    END LOOP ;
    end grp_delete ;
    -- ================================================================================
    PROCEDURE grp_lock( p_grp_data IN grp_tab ) AS
    i BINARY_INTEGER ;
    grec grprec ;
    err varchar2(255) ;
    errcd number ;
    rec_modified exception ;
    begin
    FOR i in p_grp_data.FIRST .. p_grp_data.LAST LOOP
    begin
    SELECT id, name, description, active
    INTO grec
    FROM grp
    WHERE id = p_grp_data(i).id
    FOR UPDATE OF description NOWAIT ;
    -- this part returns true
    -- if locking_mode = 'Delayed'
    -- Forms is passing NEW values in p_grp_data if mode is Delayed
    -- and OLD values if mode is Immediate
    if ( grec.name != p_grp_data(i).name
    OR grec.description != p_grp_data(i).description
    OR grec.active != p_grp_data(i).active ) THEN
    raise rec_modified ;
    end if ;
    exception
    when no_data_found then
    raise_application_error( -20007, 'Record deleted by another user' ) ;
    when rec_modified then
    raise_application_error(-20006, 'Record modified by another user' ) ;
    when others then
    raise_application_error(-20009, 'Others' ) ;
    end ;
    END LOOP ;
    end ;
    -- ================================================================================
    end grp_pkg ;
    show error package body grp_pkg

    Yes, I was hoping to use these procedures to map the collection type returned to the database to the block data. I guess I was wrong. Except for the initial query and reading some other information from the database, I don't have to use these procedures as I do not write anything to it.
    Thank you for your help, I will go on from there.
    So, it means that I will have to iterate through my collection inside Forms and manipulate my data row by row. Or, is there a way to pass an Oracle collection type between the database and the Forms client and have it displayed without having to iterate through the rows and mapping each field?
    adsm

  • Forms [32 Bit] Version 6.0.5.0.2 :: BLock based on stored procedure

    Trying to develop a form having a block based
    on stored procedure. My form works fine if
    the stored procedure having REF CURSOR as one
    of the argument but if I am using dynamic SQL
    in my procedure I can not use Strong REF CURSOR, so I had to use Pl/Sql Table as one of the parameter in the proceudre.
    In that case when I run my form and Execute the query it just comes out of the form without displaying anything and also it doesn't throw any error.
    Don't know what I am doing wrong.
    Pl. Help...
    null

    I drilled down the proble further and identified that i can
    recreatr the problem in any 7.3.4 database ....
    But in 8.0.5 it's working fine .....
    Is developer 6.0 is going to support Oracle 7.3.4
    it'll be highly appreciated if any one from Oracle development
    team can give me a response
    Thanks in advance...
    Lebon Mathew (guest) wrote:
    : Problem : If a block value is refered in
    : a LOv - record group query
    : the form cannot adjust the out put .. and
    : is not generating.....
    : Record group query which works :
    : select security_role, sec_role_desc, database_role
    : from security_role
    : where wnd_appln = 'XXXXXXXXX'
    : order by security_role, database_role
    : Record group query which is not working :
    : select security_role, sec_role_desc, database_role
    : from security_role
    : where wnd_appln = :APP_ROLES_BK.wnd_appln
    : order by security_role, database_role
    : Error Generated :
    : FRM-30064: Unable to parse statement icrgg/icrggc: hicrg.
    : Record Group SECURITY_ROLE_LOV
    : Form: EMPLOYEE
    : FRM-30085: Unable to adjust form for output.
    : Table structure :
    : CREATE TABLE security_role
    : security_role VARCHAR2(15) NOT NULL,
    : sec_role_desc VARCHAR2(20) NOT NULL,
    : open_nsr VARCHAR2(1),
    : open_pkt VARCHAR2(1),
    : chg_wk_grp VARCHAR2(10),
    : asgn_anlst VARCHAR2(10),
    : updt_oth_wkgp_pkt VARCHAR2(1),
    : admin_tasks VARCHAR2(1),
    : create_po VARCHAR2(1),
    : billing_changes VARCHAR2(1),
    : invoice_changes VARCHAR2(1),
    : change_owner VARCHAR2(1),
    : wnd_appln VARCHAR2(15),
    : database_role VARCHAR2(20)
    : PCTFREE 10
    : PCTUSED 40
    : INITRANS 1
    : MAXTRANS 255
    : TABLESPACE wa0dat0t01
    : STORAGE (
    : INITIAL 32768
    : NEXT 8192
    : PCTINCREASE 0
    : MINEXTENTS 1
    : MAXEXTENTS 121
    : w@w Lebon Mathew
    : WellsFargo - Telecom Applications
    : (415)-477 6445
    null

  • Prompts in Universe based on Stored Procedure

    Hello All,
    I have a universe based on stored procedure. There are two prompts "Date from" and "Dateto" which I set up as "prompt me a for a new value" in the universe.
    When I run the webi report it prompts me to enter the date range. I enter and run the report, but when I refresh the report the dates that were selected before shows up in the prompt window(last values selected). How do I make it in a way that when I refresh the report the values are blank i.e it doesnt have the last values selected?
    I have saved the report as refresh on open but how do I avoid the prompt values?
    Thanks,
    Nisha

    Hi Nisha,
    Can you please share the code where you have mentioned the prompts?
    You may try to use @prompt function in stored procedure. Below post can help you:
    http://scn.sap.com/thread/1698709
    @Prompt('Enter prompt text','A/N/D',<lov>,mono,free,non-persistent)
    Use non-persistent parameter value as it is like unchecking "Keep last selected values" in prompt properties.
    Hope it will help.
    Regards,
    Yuvraj

  • Data block based on stored procedure with  input arguments

    Hi,
    I am able to create a data block based on stored procedure.
    but I want that procedure to take input arguments as well and I am facing the issue while setting the value for that input arguments from another block item.
    Please somebody help, How to set the value for input argument from another control block- item?.(Note :Data block is based on the stored procedure)
    Thanks in Advance,
    Anandan Muthukannan

    I did exactly the same way you mentioned.
    But while building the form, The call to the procedure in 'QUERY-PROCEDURE' trigger has been modified like this way
    procedure_name(qp_data,':BLOCK.ITEM');
    so in procedure i am getting the value as ':BLOCK.ITEM' not the expected value.

  • How to create a report  based on selected item from Select list?

    Hi,
    I have created a tables_LOV based on:
    select table_name d, table_name r from user_tab_cols
    where column_name like '%_type%'
    Then I created a page item ListOfTables,  Display as select list and pointing to tables_LOV.
    I run the page, and i can select the table i want from the drop down list.
    How to create a report  based on the selected item? (ex: select * from selected_table)
    many thanks in advance
    Salah

    Hi Salah,
    Allright, have a look at this page: http://apex.oracle.com/pls/apex/f?p=vincentdeelen:collection_report
    I think that simulates what you're trying to accomplish. I've set up the simplest method I could think of.
    The report is based on an apex collection. If you are not familiar with that, you should study the documentation: APEX_COLLECTION
    To recreate my example you should:
    1) create an (interactive) report on your collection
    SELECT *
       FROM APEX_collections
    WHERE collection_name = 'MY_COLLECTION'
    2) create a page_item select list for the tables you want to display (in my case this is called "P38_TABLES" )
    3) create a dynamic action that triggers on change of your select list page_item. The dynamic action must be a PL/SQL procedure perfoming the following code:
    declare
      l_query varchar2(4000);
    begin
      l_query := 'select * from '||:P38_TABLES;
      if apex_collection.collection_exists
            ( p_collection_name => 'MY_COLLECTION' )
      then
        apex_collection.delete_collection
          ( p_collection_name => 'MY_COLLECTION' );
      end if;
      apex_collection.create_collection_from_query
        ( p_collection_name => 'MY_COLLECTION'
        , p_query           => l_query
    end;
    Make sure you add your page_item to the "Page Items to Submit" section.
    4) Add an extra true action that does a refresh of the report region.
    Here are two pictures describing the da:
    http://www.vincentdeelen.com/images/otn/OTN_COLLECTION_REPORT_DA1.png
    http://www.vincentdeelen.com/images/otn/OTN_COLLECTION_REPORT_DA2.png
    Good luck and regards,
    Vincent
    http://vincentdeelen.blogspot.com

  • Create a report based on sample data!

    Hello all,
    I would like to get some helps for creating a report based on the following table data in the database:
    Class     |        Name                   |         Student
    =======================================
    1            |        Algebra               |             60
    1            |        Extra Algebra      |             20
    2            |        Calculus              |             80
    2            |        Extra Calculus     |             10
    3            |        Geometry            |             90
    What I expect to have the layout of report should be look like as below:
                               School Register Report
    ClassGroup     |         Name          |    Ontime register   |    Late register   
    =========================================================
    1                      |        Algebra        |             60              |           20            
    2                      |       Calculus        |             80              |           10           
    3                      |       Geometry      |             90              |                           
    Please tell it is possible to do it in Crystal Report? Please help with solution. Thanks in advance.

    Assumimg second type always starts with Extra then, create formula
    @Name
    If like 'Extra*' then mid(, 7,20) else
    Group on this formula
    @LateReg
    If like 'Extra*' then else 0
    @OnTimeReg
    If not( like 'Extra*') then else 0
    Add Maximum smmaries of these formula to @Name Group footer, suppress details and group header
    Ian

  • Creating a Report based on different schema objects

    Hi,
    I have a situation in creating Reports for my database performance.
    Let me explain my requirment.
    There are 2 schemas in my database called X, Y
    X owns all the performance related data. But Y has read access on X objects.
    Now in APEX I have a developer DEV1 is mapped to database schema Y through WS1.
    I cannot map DEV1 to database schema X for security reasons.
    When I am trying to create a report as DEV1, it is allowing me to create based on the objects owned by schema Y.
    However it is not allowing me to create a report based on objects owned by X though Y has SELECT privileges on X's objects.
    Can any one help in this?
    Regards
    Balaji

    This is the query which I am using to build a report
    SELECT
    rollup_timestamp "Date",
    max(decode(target_guid,'199F0B201A3D71A63040BADFAA4F9E90',average,0)) host1,
    max(decode(target_guid,'3FB1329F59339C07E11304B69DC4E594',average,0)) host2
    FROM "sysman.MGMT$METRIC_DAILY"
    WHERE
    (target_guid='199F0B201A3D71A63040BADFAA4F9E90'
    or
    target_guid='3FB1329F59339C07E11304B69DC4E594')
    AND
    metric_name='Load'
    AND
    metric_column='memUsedPct'
    AND
    rollup_timestamp >= to_date('01-10-2009','dd-mm-yyyy') and rollup_timestamp <= sysdate
    GROUP BY rollup_timestamp
    ORDER BY "Date"
    And for your previous question I couldn't even create a page.
    Regards
    Balaji
    Edited by: user7290747 on 6/01/2010 16:17

Maybe you are looking for