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 HoubenovSee:
"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,
AmritaThere 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.
ThanksHi
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.
JayasreeI 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.
JimmyFrancois,
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.
JimmyJimmy,
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_pkgYes, 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 -
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...
nullI 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,
NishaHi 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 MuthukannanI 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
SalahHi 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
BalajiThis 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
-
Hi! I have a new MacBook Pro, but I haven't been able to put iTunes on it even though I have used it for years on my iPhone, iPad, and two Windows desktops and two Windows laptops. I keep getting the message that "I am exceeding my iTunes account lim
-
No sound through HDMI(x1 carbon 20A7)
Hi, I have a problem with my X1 carbon 20A7.(windows 8.1 64bit) When I connect the computer by HDMI cable has a picture but no sound The screen does not appear audio device. Anyone have this problem Thank, Solved! Go to Solution.
-
Supervisor password reset on protege r705 p40
Hi, I wanted to enter to the bios in order to change the boot priority but the laptop jus rebooted. I tried to enter the boot priority via the HWsetup but it is asking for a supervisor password... I don't even recall ever putting a supervisor passwor
-
i have followed the suggested methods of restoring my iphone by placing it into recovory mode, however itunes keeps asking for a response from my iphone except it is disabled and thus the restoration willnot continue
-
Hi, I am using below query select * from SELECT FLAG,S_DATE,ROW_NUMBER() OVER (PARTITION BY flag order by S_DATE,FLAG ) as d FROM table_name ORDER BY S_DATE which gives below output Flag | S_DATE | D Y | 2/27/2012 5:33 | 1 Y