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
Similar Messages
-
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 -
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.
JimmyWhat 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. -
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 -
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 -
Calling a report from a Stored Procedure
Is it possible to call a Oracle Report from a Stored Procedure or a Packaged Stored Procedure. If Yes, please provide some details.
Thanks
ShaluShalu,
there's an API available to do this.The feature is called "event driven publishing" (because you can use this even from a trigger) and you can find the documentation here:
http://download-uk.oracle.com/docs/cd/B14099_17/bi.1012/b14048/pbr_evnt.htm#sthref1870
Regards
Rainer -
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 -
Creating Sap Crystal Report Through Oracle Stored Procedure Packages
Hi,
1.How we can create crystal report through oracle stored
procedure packages pls tell me the steps through adding command then
tell me the syntax what should i write in command to call the stored
procedure packages or if have some other option then also tell.
2.can
we link stored procedure column to other table column that used in
report.Hi Ganesh,
As this error comes when you are trying to insert non-numeric value into a numeric column in db it seems that your field might be numeric and you are trying to send it as a string in database.
Please check your Store Proc carefully..
Reference Thread: Oracle/PLSQL: ORA-01722
--Dhana -
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.
-
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 -
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 -
RAISING EXCEPTION AND SHOWING TO USERS IN FORM BASED ON STORED PROCEDURE
I have a form based on stored procedure.
I want to handle exceptions in the stored procedure and show it to users.
Here is what i want to do.
I have a sku# field in the form and i want to validate it(against the database
table) in the procedure before inserting into the database.
I want to give a message to users when the validation fails.
How is this possible with the forms based on stored procedure?
Can i use javascript to do the same?
Thanks in AdvanceI have a form based on stored procedure.
I want to handle exceptions in the stored procedure and show it to users.
Here is what i want to do.
I have a sku# field in the form and i want to validate it(against the database
table) in the procedure before inserting into the database.
I want to give a message to users when the validation fails.
How is this possible with the forms based on stored procedure?
Can i use javascript to do the same?
Thanks in Advance -
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 -
Forms9i, data block based on stored procedures, refresh on update ?
Hi,
I am using
Forms [32 Bit] Version 9.0.2.9.0 (Production)
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 - Production
Oracle Toolkit Version 9.0.4.0.23 (Production)
PL/SQL Version 9.0.1.3.1 (Production)
Oracle Procedure Builder V9.0.2.0.7 Build #1022 - Production
PL/SQL Editor (c) WinMain Software (www.winmain.com), v1.0 (Production)
Oracle Query Builder 9.0.2.0.0 - Production
Oracle Virtual Graphics System Version 9.0.1.5.0 (Production)
Oracle Tools GUI Utilities Version 9.0.4.0.9 (Production)
Oracle Multimedia Version 9.0.4.0.9 (Production)
Oracle Tools Integration Version 9.0.2.0.0 (Production)
Oracle Tools Common Area Version 9.0.1.0.0
Oracle CORE 9.0.1.2.0 ProductionI have a module based on stored procedures. I have defined query, lock and update procedure. All of them are working as they should, I mean that when looking at the input and output from these procedures I don't see anything blatantly wrong.
Now, when I update a table field in the form and call the update stored procedure, this procedure takes the updated values in considerations, updates some more fields, and remove some records.
It is working as it should, except for two details :
1- I don't see the values updated by the procedure in the Form;
2- even though some records were removed from the table by the procedure, I still see all my records.
Is there a way to display the returned table?
And, is there any documentation about data block based on stored procedures, what are the required signatures and limitations of those stored procedures, what a lock procedure is supposed to do (mine does 'null;' ...), how to map a collection type defined in Oracle to a Form data block ? Any link will be appreciated, I have found half a dozen page vaguely detailing this on Google, but nothing that can compare to a usual Oracle manual. Maybe I have missed something.
Thank you for your help.
adsmYes, 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 -
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.
Maybe you are looking for
-
To make a set of records in 1 table to affect another table(dashboards)
Dear All, I am using Web Application Designer and making a Dashboard.The situation is the following: I am using 2 tables(table A and table B) and One(1) navigation filter(characteristic for filter : customer).The tables display 2 different qu
-
C4280 software and driver install for Windows 7 error
Trying to download the latest version of the software and drivers for the HP C4280 Photosmart printer. The download appears to complete properly but I receive the following during the install process. Help! Process halts with 'Fatal Error During In
-
Is there a way for me to purchase something from the Canadian store if I am a US customer?
Has anyone found a way to make purchases from the Canadian iTunes store if a US customer? A show I watch is available from the Canadian store, but not the US store.
-
Error while trying to import from partners catalog
Hi there, I am receiving Error 407 when I am trying to import from partners catalog. Please help. Thanks & Regards, Jaffer A. Syed.
-
LDAP-based postfix rewrite rules applied in Lion server?
Hi, We've had a really strange problem with some users not receiving mails posted to a mailing list (configured in lion server). After a lot of debugging, we've traced this down to address rewriting occuring, but we simply cannot find out how. Backgr