Report-Dynamic Query
Hi,
I have a report based on 'PL/SQL function returning SQL query'. The attribute 'Sort' is selected for all column headings. This report has links to branch to other pages. Is it possible to clear the Last Sorted column session information and get the report sorted by the default column when returned to the report from another page? ie If I sort the report by third column and then click on a link to go to another page. If I click on 'Submit' of the second page and come back to the report, is it possible to get the report sorted by default column? I tried clearing the cache of the report page, when 'Submit' in the second page is clicked. Still I get the report sorted by the last sorted column.
Thanks for any help.
Rekha
Hi Rekha,
You sort information are stored in your user's preferences. You need to reset those preferences to get back to your default sorting. To reset you could e.g. use a process type called "reset preferences (remove all preferences for current user)".
Hope this helps,
Marc
Similar Messages
-
Jasper Reports Dynamic Query String
Hi guys. Could you help me out? I'm trying to create a program with jasper reports where the query string should be dynamic. Meaning the sql queries are to change depending on certain conditions. For example, Condition A executes sqlqueryA while condition B executes sqlqueryB. All on the same report. Although of course not at the same time. Is it possible? Could you give me a sample code? I have no idea at all. Thanks.
Hi guys. Could you help me out? I'm trying to create a program with jasper reports where the query string should be dynamic. Meaning the sql queries are to change depending on certain conditions. For example, Condition A executes sqlqueryA while condition B executes sqlqueryB. All on the same report. Although of course not at the same time. Is it possible? Could you give me a sample code? I have no idea at all. Thanks.
-
Dynamic Query in Report Builder
HI
I have a doubt:
I need to receive a parameter in my report and I need this parameter in the query, that means, I need to create a dynamic query depending on the value that I receive in one of the parameters that has my report.
I tried to use the resource of Searching by Reference Cursor tool, it is a blue circle in the Data Model View of Report Builder.
When I click this tool, I have an initial code, It is:
function QR_1RefCurDS return <RefCurType> is
begin
end;
In PL/SQL I tried to create to test and to play, this code:
Note: If you want to try only to test, it is simple and works:
create or replace package TEST_REFCURTYPE as
type refcurtype is ref cursor;
function TEST_REFCURTYPE (P_DATE_TO nvarchar2) return refcurtype;
end;
create or replace package body TEST_REFCURTYPE as
function TEST_REFCURTYPE (P_DATE_TO nvarchar2)
return refcurtype is
refcur refcurtype;
mysql varchar(1000);
begin
If P_DATE_TO is not null then
mysql := 'select '''|| P_DATE_TO ||''' from dual';
else
mysql := 'select sysdate from dual';
end if;
open refcur for mysql;
return refcur;
end;
end;
The problem is to pass this example of code to the function QR_1RefCurDS, I do not have a place to make reference to the type:
type refcurtype is ref cursor;
I tested the Unit Program in the Report Builder but it did not work, because all the code I try to write and create, for example in the Event BEFORE REPORT, it opens Funcion( ) …., and I can not make reference to the type refcurtype inside a Function( ).
Would you help me please?
Or there is another way to make a dynamic query in the Report Builder?
Sorry for my English, I am a Brazilian living in Spain.Hi,
you can use lexical parameters in your queries. Instead of a ":" use in the query before the parameter a "&". Then the parameter stands for a part of the query and not for a value (Bind parameter). In the before report trigger you can set this parameters. They can contain parts of SQL like order or where. Make sure that the default value for this lexical parameters are set to get a valid query.
SELECT ENAME, &p_column as COL2 FROM EMP &p_order
and in the trigger something like
IF :p_which_column = 1 THEN
:p_column := 'SAL'
ELSE
Saludos
Rainer -
Generating Dynamic Query for Ad-Hoc Reports
Hello,
What is the best way to create a dynamic query to generate ad-hoc reports? I have a couple of ideas but not sure which would work best and be most flexible.
I would like our users to be able to check checkboxes for what data they would like returned in their report. The data would be pulled from a number of tables, 10+, depending on what pieces of data they checked.
Should I write one dynamic query, with a bunch of IF statements in it?
Should I write many individual queries and then join them together in a temp query?
Should I create a temp table on our SQL server which contains the data from all of the tables; then query that? (I am worried about data being out-of-date with this option.)
Which one of these solutions should I go with or is there a better solution that I am not considering?
Thanks for the help.
JoshDo you mean a Stored Procedure? Would the Stored Procedure then have one query on it with a bunch if IF statements? Maybe a bad example, but something like this?
Yep.
I haven't written a proc for a coupla years (I have DB people to do that for me now, bless 'em), but every DB is different, so the approach will vary depending on what DB you have. It's perhaps time to buy a book or do a google or something.
Adam -
Dynamic query to produce crosstab/pivot report
Hello,
I've not been able to find any examples similar to my situation but perhaps I'm using the wrong search phrases...
I'm basically trying to create a cross-tab type report based on a dynamic query (since I do not know how many accounts a person has):
select ' SELECT x.name, x.type, ' from dual
union
select ' max(decode(x.account,'''||m.account||''',x.amount,null)) as "'||substr(s.proj||' '||m.account,1,30)||'",'
from db1.manager m, db1.person p, pi.charges c, db1.status s
where m.manager_id = p.id
and M.ACCOUNT_ID = C.ACCT_ID
and M.ACCOUNT_STRING = S.project
and C.JNL = (select max(id) from db1.journ j where j.TYPE ='M')
and p.username = :username
and nvl(M.END_DATE, sysdate +1) >= sysdate
group by m.account, s.proj
union
select 'sum(x.amount) grand_total from (select m.account, c.name, c.type, c.amount '
||'from db1.manager m, db1.person p, pi.charges c '
||'where m.manager_id = p.id '
||'and p.username = :P68_PRINC '
||'and c.acct_id = m.account_id '
||'and c.jnl = (select max(id) '
||'from db1.journ j where j.TYPE =''M'')) x '
||' group by type, name' from dualThe output from this query for the particular manager I selected is:
SELECT x.name, x.type,
max(decode(x.account,'12012',x.amount,null)) as "Internal 12012",
max(decode(x.account,'17929',x.amount,null)) as "Staged 17929",
max(decode(x.account,'18054',x.amount,null)) as "Help Software 18054",
max(decode(x.account,'3428',x.amount,null)) as "Mow 3428",
max(decode(x.account,'3428',x.amount,null)) as "Mow 3428_1",
max(decode(x.account,'3508',x.amount,null)) as "Stampede 3508",
max(decode(x.account,'9102',x.amount,null)) as "Open Collaborative 9102",
sum(x.amount) grand_total
from (select m.account, c.name, c.type, c.amount
from db1.manager m, db1.person p, pi.charges c
where m.manager_id = p.id
and p.username = :P68_PRINC
and c.acct_id = m.account_id
and c.jnl = (select max(id)
from db1.journ j where j.TYPE ='M')) x
group by type, nameThis query generates another query that ultimately produces the report below (please pardon the alignment) that I want to see on a report page.
NAME TYPE Internal 12012 Staged 17929 Help Software 18054 Mow 3428 Mow 3428_1 Stampede 3508 Open Collaborative 9102 GRAND_TOTAL
#EXAM1221 M 22 22
#EXAM1222 M 14.83 14.77 12.56 2.22 44.38
#EXAM1223 M 6.73 6.7 5.7 1 20.13
THOEORY M 106.5 106.5Should I be using the report type that is based on a 'PL/SQL function body returning SQL query' for this type of report??? If so, how does that get set up?
Thanks in advance!
~JakeThis solution works in that it generates the proper query. I can copy the query (from debug mode) and paste it in TOAD and it works perfectly. However, in the report page it tells me: "report error:ORA-01403: no data found".
I found this thread: report error: ORA-01403: no data found when SUM columns
I did have a couple other regions on the page (previous attempts) that were hidden so I deleted them completely. Still no luck.
I am also summing up several columns...if that has anything to do with it.
Does anyone have any suggestions?
Thanks again!!!
~Jake
Edited by: jhammer on Jul 27, 2010 11:02 AM -
Create dynamic report or query for piece count
Hi abaper's
This is a very straight forward requirement. so please give me code
First you have to get the corresponding plant from table T320 for the given warehouse numbers in the selection screen.
1. Get the sum of order qty of sales orders from the sales order tables for the given warehouse(Plant), distribution channel and the give date range.
2. Get the confirmed transfer orders qty from the TO master table where TO confirmation date is in the given date range and WH number.
3. Get the total PGIed qty from the delivery master table where PGI'ed date in the given date range, shipping point is in the corresponding plant of the WH and for the given distribution channel.
As you are going to use the major tables please try to write the select commands effectively to avoid further performance issues.How to improve the performance fo this code.....this very urgent.
& Issue Number : 22199 &
& Programmer : Anjaneyulu.Pabba &
& Transport Number : D01K962471 &
& Date of Creation : 19/03/2008 &
& Description : Dynamic report or query for piece count &
& Requested By : Parvati.Polisetty &
REPORT ZR_SD_PIECE_COUNT_ALV no standard page heading
line-size 255
line-count 65.
TABLES DECLARATION
*TABLES: T320, "Assignment IM Storage Location to WM Warehouse Number
VBAK, "Sales Document: Header Data
VBAP, "Sales Document: Item Data
TVKOV, "Org. Unit: Distribution Channels per Sales Organization
LTAK, "WM transfer order header
LTAP, "Transfer order item
LIKP, "SD Document: Delivery Header Data
LIPS. "SD document: Delivery: Item data
TYPE-POOLS DECLARATION
TYPE-POOLS: SLIS .
Internal Table Declaration
DATA : BEGIN OF TY_T320,
WERKS TYPE WERKS_D,
LGNUM TYPE LGNUM,
END OF TY_T320.
DATA : BEGIN OF TY_VBAK,
VBELN TYPE VBELN_VA,
VTWEG TYPE VTWEG,
WERKS TYPE WERKS_D,
KWMENG TYPE KWMENG,
VSTEL TYPE VSTEL,
END OF TY_VBAK.
DATA : BEGIN OF TY_LTAK,
LGNUM TYPE LGNUM,
TANUM TYPE TANUM,
VISTA TYPE LTAP_VISTA,
END OF TY_LTAK.
DATA : BEGIN OF TY_LIKP,
VBELN TYPE VBELN_VL,
WERKS TYPE WERKS_D,
LFIMG TYPE LFIMG,
END OF TY_LIKP.
DATA : BEGIN OF TY_ITAB ,
LGNUM TYPE LGNUM, "Warehouse Number / Warehouse Complex
WERKS TYPE WERKS_D, "Plant
VBELN TYPE VBELN_VA, "Sales Document
VTWEG TYPE VTWEG, "Distribution Channel
KWMENG TYPE KWMENG, "Cumulative order quantity in sales units
TANUM TYPE TANUM , "Transfer Order Number
VISTA TYPE LTAP_VISTA, "Source actual quantity in alternative
unit of measure
LFIMG TYPE LFIMG, "Actual quantity delivered (in sales units)
END OF TY_ITAB .
DATA: T_T320 LIKE STANDARD TABLE OF TY_T320 INITIAL SIZE 0 WITH HEADER
LINE,
T_VBAK LIKE STANDARD TABLE OF TY_VBAK INITIAL SIZE 0 .
DATA: T_LTAK LIKE STANDARD TABLE OF TY_LTAK INITIAL SIZE 0 WITH HEADER
LINE.
DATA :T_LIKP LIKE STANDARD TABLE OF TY_LIKP INITIAL SIZE 0 WITH HEADER
LINE.
DATA:T_ITAB LIKE STANDARD TABLE OF TY_ITAB INITIAL SIZE 0 WITH HEADER
LINE .
*& Fieldcatalog Declaration
DATA : T_FCAT TYPE SLIS_T_FIELDCAT_ALV,
W_FCAT TYPE SLIS_FIELDCAT_ALV.
DATA : W_LAYOUT TYPE SLIS_LAYOUT_ALV.
********Global Data Declaration***
DATA :G_REPID LIKE SY-REPID,
G_EXIT(1) TYPE C,
GX_VARIANT LIKE DISVARIANT,
X_SAVE, "for Parameter I_SAVE
GS_VARIANT TYPE DISVARIANT. "for parameter IS_VARIANT
data: g_lgnum type t320-lgnum,
g_vtweg type vbak-vtweg,
g_erdat type vbak-erdat.
*& Selection-Screen
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_LGNUM FOR g_lgnum, "Warehouse Number
S_VTWEG FOR g_vtweg, "Distribution Channel
S_ERDAT FOR g_erdat ."Date on which the record was
**********"created
SELECTION-SCREEN END OF BLOCK B1 .
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
PARAMETER: P_VARI LIKE DISVARIANT-VARIANT. "Layout
SELECTION-SCREEN END OF BLOCK B2.
*& INITIALIZATION EVENT
INITIALIZATION.
CLEAR GS_VARIANT.
'gs_variant' must at least contain the report-id to allow
saving a variant.
G_REPID = SY-REPID.
§ 2.At least field REPORT of this structure has to be filled!
GS_VARIANT-REPORT = G_REPID.
§ 3.Determine saving options.
X_SAVE = 'A'. "The user may save all types of variants
*******Validating selection-screen values**********************
getting F4 value for display variant field
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
****validation of F4 value of display variant
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
*& Start-Of-Selection
START-OF-SELECTION.
*****Subroutine to select Plant from T320
PERFORM FIND_PLANT .
*****Subroutine to select Order Quantity from VBAP
PERFORM ORDER_QUANTITY .
*****Subroutine to select Transfer Order Quantity from LTAK and LTAP
PERFORM TRANSFER_ORDER_QUANTITY.
*****Subroutine to select TDelivery Quantity from LIKP and LIPS
PERFORM DELIVERY_QUANTITY.
*& End-Of-Selection
END-OF-SELECTION.
*****Subroutine for Fieldcatalog
PERFORM FIELDCATALOG .
*****Subroutine for Final Output
PERFORM DISPLAY_OUTPUT .
*& Subroutine Implementaion
*& Form FIND_PLANT
text
--> p1 text
<-- p2 text
FORM FIND_PLANT .
SELECT WERKS
LGNUM
FROM T320
INTO TABLE T_T320
WHERE LGNUM IN S_LGNUM.
ENDFORM. " FIND_PLANT
*& Form order_quantity
text
--> p1 text
<-- p2 text
FORM ORDER_QUANTITY .
SELECT VK~VBELN
VK~VTWEG
VP~WERKS
VP~KWMENG
VP~VSTEL
INTO TABLE T_VBAK FROM VBAK AS VK
INNER JOIN VBAP AS VP
ON VKVBELN = VPVBELN
FOR ALL ENTRIES IN T_T320
WHERE VK~VTWEG IN S_VTWEG
AND VK~ERDAT IN S_ERDAT
AND VP~WERKS = T_T320-WERKS.
ENDFORM. " order_quantity
*& Form Transfer_order_quantity
text
--> p1 text
<-- p2 text
FORM TRANSFER_ORDER_QUANTITY .
SELECT LK~LGNUM
LK~TANUM
LP~VISTA
INTO TABLE T_LTAK FROM LTAK AS LK
INNER JOIN LTAP AS LP
ON LKLGNUM = LPLGNUM
WHERE LK~KQUIT = 'X'
AND LK~BDATU IN S_ERDAT
AND LK~LGNUM IN S_LGNUM.
ENDFORM. " Transfer_order_quantity
*& Form Delivery_QUANTITY
text
--> p1 text
<-- p2 text
FORM DELIVERY_QUANTITY .
SELECT VBELN WERKS LFIMG FROM LIPS
INTO TABLE T_LIKP
FOR ALL ENTRIES IN T_T320
WHERE WERKS = T_T320-WERKS
AND ERDAT IN S_ERDAT
AND VTWEG IN S_VTWEG.
ENDFORM. " Delivery_QUANTITY
*& Form fieldcatalog
text
--> p1 text
<-- p2 text
FORM FIELDCATALOG .
W_FCAT-COL_POS = '1' .
W_FCAT-FIELDNAME = 'LGNUM' .
W_FCAT-REF_TABNAME = 'T320'.
W_FCAT-REF_FIELDNAME = 'LGNUM' .
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '2' .
W_FCAT-FIELDNAME = 'VTWEG' .
W_FCAT-REF_TABNAME = 'VBAK'.
W_FCAT-REF_FIELDNAME = 'VTWEG' .
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '3' .
W_FCAT-FIELDNAME = 'KWMENG' .
W_FCAT-REF_TABNAME = 'VBAP'.
W_FCAT-REF_FIELDNAME = 'KWMENG' .
*w_fcat-seltext_m = '# of Orders'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '4' .
W_FCAT-FIELDNAME = 'VISTA' .
W_FCAT-REF_TABNAME = 'LTAP'.
W_FCAT-REF_FIELDNAME = 'VISTA' .
*w_fcat-seltext_m = '# of Pcs Picked'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '5' .
W_FCAT-FIELDNAME = 'LFIMG' .
W_FCAT-REF_TABNAME = 'LIPS'.
W_FCAT-REF_FIELDNAME = 'LFIMG' .
*w_fcat-seltext_m = '# of Pcs Shipped'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '6' .
W_FCAT-FIELDNAME = 'TANUM' .
W_FCAT-REF_TABNAME = 'LTAK'.
W_FCAT-REF_FIELDNAME = 'TANUM' .
**w_fcat-seltext_m = '# of Pcs Shipped'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
W_FCAT-COL_POS = '7' .
W_FCAT-FIELDNAME = 'WERKS' .
W_FCAT-REF_TABNAME = 'T320'.
W_FCAT-REF_FIELDNAME = 'WERKS' .
**w_fcat-seltext_m = '# of Pcs Shipped'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
ENDFORM. " fieldcatalog
*& Form display_output
text
--> p1 text
<-- p2 text
FORM DISPLAY_OUTPUT .
LOOP AT T_T320 INTO TY_T320.
TY_ITAB-WERKS = TY_T320-WERKS.
TY_ITAB-LGNUM = TY_T320-LGNUM.
READ TABLE T_VBAK INTO TY_VBAK WITH KEY WERKS = TY_T320-WERKS.
IF SY-SUBRC = 0.
TY_ITAB-VBELN = TY_VBAK-VBELN.
TY_ITAB-VTWEG = TY_VBAK-VTWEG.
TY_ITAB-KWMENG = TY_VBAK-KWMENG + ty_itab-kwmeng.
ENDIF.
READ TABLE T_LTAK INTO TY_LTAK WITH KEY LGNUM = TY_T320-LGNUM.
IF SY-SUBRC = 0.
TY_ITAB-TANUM = TY_LTAK-TANUM.
TY_ITAB-VISTA = TY_LTAK-VISTA + ty_itab-vista.
ENDIF.
READ TABLE T_LIKP INTO TY_LIKP WITH KEY WERKS = TY_T320-WERKS.
IF SY-SUBRC = 0.
TY_ITAB-LFIMG = TY_LIKP-LFIMG + ty_itab-lfimg.
ENDIF.
APPEND TY_ITAB TO T_ITAB.
ENDLOOP.
Function Module for Displaying Final Output ********
W_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = W_LAYOUT
IT_FIELDCAT = T_FCAT[]
TABLES
T_OUTTAB = T_ITAB.
ENDFORM. " display_output
*& Form f4_for_variant
text
--> p1 text
<-- p2 text
FORM F4_FOR_VARIANT .
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = GS_VARIANT
I_SAVE = X_SAVE
IMPORTING
E_EXIT = G_EXIT
ES_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " f4_for_variant
*& Form pai_of_selection_screen
text
--> p1 text
<-- p2 text
FORM PAI_OF_SELECTION_SCREEN .
IF NOT P_VARI IS INITIAL.
MOVE GS_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = X_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
GS_VARIANT = GX_VARIANT.
ELSE.
PERFORM VARIANT_INIT.
ENDIF.
ENDFORM. " pai_of_selection_screen
*& Form variant_init
text
--> p1 text
<-- p2 text
FORM VARIANT_INIT .
CLEAR GS_VARIANT.
GS_VARIANT-REPORT = G_REPID.
ENDFORM. " variant_init -
Interactive report based on dynamic query
Hello
I am using Apex 4.1 and have a requirement to create an interactive report based on a dynamic query. This option is available in Classic report but in Interactive this feature is not there. Tried using collections or just a view (thought of changing the view definition during "On load", but structure of the report is already defined based on the definition of the view at design time).
Is there any way of achieving this?
Appreciate any help!
Thanks
aksTry looking at this: http://rakeshjsr.blogspot.com/2010/10/oracle-apex-interactive-report-based-on.html
Thank you,
Tony Miller
Dallas, TX -
Dynamic query table for report based on LOV selected
Hi,
Need some suggestion and guidance how to dynamically query table via lov for report .
Scenario:
Table, TABLE_LIST, has tablename (table in DB) and filter (for where clause) column. The TABLENAME_LOVE is derived from table TABLE_LIST.
SELECT TABLENAME D, TABLENAME R FROM TABLE_LIST
In Page 2,a page select list item,P2_TABLENAME to use TABLENAME_LOV
All data in tables in the table_list have identical structure (columns, triggers, primary key, and so on).
I want to have the report region query from the table based on selected LOV.
Example,
Tablename Filter
TB1
CD2 ACTIVE='Y'
When select TB1, the report regin will query based on TB1.
When select CD2, the report regin will query based on CD2 WHERE ACTIVE='Y'
Question:
How can I query based on &P2_TABLENAME. WHERE &P2_FILTER.
Like
select col1, col2 from &P2_TABLENAME WHERE &P2FILTER
Greatly appreciate any suggestion and some guidance.
TigerwapaHi,
You should always post your Apex version, DB version and other information as suggested in the FAQ.
And the moment you talk report you should state whether it is IR or Classic.
As for your query, have you explored the Report type "SQL Query (PL/SQL function body returning SQL query)" ?
That might be a good fit for what you are trying to achieve.
Regards, -
Parameter in form for dynamic query in report
Hello,
I want to send parameters to report for replacing a dynamic query. I don't know how to make it...
1.I want my select statement like
select * from emp
&p_where_clause
2.I want to transfer parameters to report to replace the &p_where_clause.
3.I know I should create a parameter list first, and then use add_parameter built-in to add the parameter, but what I don't know is the correct format of the add_parameter statement.
4.I know the common format is add_parameter(paramlist,'TEXT_PARAMETER',value) , is it the same format if I want to transfer a select statement to report such as "where deptno in ('25','28','30')" for replacing &p_where_clause in report?
Thanks in advance
JosephI appreciate your reply, but I am still a little confused...
Actually, I want to pass the where clause to report by different condition. Such as when the user choose the deptment 1, then I can transfer the "where dept_no = '1' and empno > 500", or user choose the deptment 2, I can transfer "where dept_no = '2' and company = '0001'". What I want is to pass different where clause to report according to different condition.
So is it right the statement should be like
DECLARE
vWhere1 varchar2 := 'where dept_no = "1" and empno > 500';
vWhere2 varchar2 := 'where dept_no = "2" and company = "0001"';
BEGIN
IF choose = 1 THEN
ADD_PARAMETER(&P_WHERE_CLAUSE, TEXT_PARAMETER, vWhere1);
ELSIF choose = 2 THEN
ADD_PARAMETER(&P_WHERE_CLAUSE, TEXT_PARAMETER, vWhere2);
END IF;
END;
THANKS AGAIN!!
Joseph -
Dynamic query in updatable report
I have generated a updatable report with the folowing select:
select
"INSTALLATIEID",
"INSTALLATIEID" INSTALLATIEID_DISPLAY,
"CO_DRUK" druk,
"CO_H2O" h2o,
"CO_O2" o2,
"CO_O2_11" o2_11,
"CO_TEMP" temp
from "#OWNER#"."CORRECTIE"
The table correctie has above the 50 columns (the same columns for different components) so I want to change the query in:
select
"INSTALLATIEID",
"INSTALLATIEID" INSTALLATIEID_DISPLAY,
"&P50_COMP._DRUK" druk,
"&P50_COMP._H2O" h2o,
"&P50_COMP._O2" o2,
"&P50_COMP._O2_11" o2_11,
"&P50_COMP._TEMP" temp
from "#OWNER#"."CORRECTIE"
The item P50_COMP will be filled with a default value and is a select list with submit.
The problem is when I change the query in the above way, the query cannot be parsed and I cannot applay the changes without parsing the query.
Also not when I use Generic Column Names (parse query at runtime only)
Can somebody help me with this problem.Fred,
You should switch to a PL/SQL Function Body Returning SQL Statement (Dynamic Query) in order to achieve this. Your Function would look like this:
declare
l_sql varchar2(32767);
begin
l_sql := 'select
"INSTALLATIEID",
"INSTALLATIEID" INSTALLATIEID_DISPLAY,
"' || :P50_COMP || '._DRUK" druk,
"' || :P50_COMP || '._H2O" h2o,
"' || :P50_COMP || '._O2" o2,
"' || :P50_COMP || '._O2_11" o2_11,
"' || :P50_COMP || '._TEMP" temp
from "#OWNER#"."CORRECTIE"';
return l_sql;
end;Thanks,
- Scott - -
Creating Crystal Reports Dynamically from an incoming SQL query
Hi,
I have a requirement where a sql query will be entered by the user in a text box and in the back end java code, i have to create a crystal report dynamically based on that sql query and show it in the crystalviewer object.
For example if the user writes "select x,y from xtable ", i should be able to create a report with 2 fields, and if the user says "select x,y,z from xtable" then i should be able create and show a report with 3 fileds...thsi report creation should be done in the click event.
Is this possible in java? I have found something similar in .NET... pls have a look at this
http://vb.net-informations.com/crystal-report/dynamic_crystal_report_from_sql_query_string.htm
Thanks,
PreethiHi Preethi,
Can you please share the steps with me? I am also looking for dynamic SQL being applied to the crystal report.
Thank you so much for your help in advance.
Regards,
Janakiram D. -
I have followed the tutorial in on dynamic query and created a region where the type is SQL Query (PL/SQL function body returning SQL Query)
The source is
declare
q varchar2(4000);
teatid NUMBER := :P305_TARGET_ID;
begin
wwv_flow.debug('teatid = ' || teatid);
q:=' select f.id, ';
q:=q||' f.eat_id ';
q:=q||' from xmlTransactions f ';
q:=q||' where f.eat_id = ' || teatid; -- I've also tried putting :P305_TARGET_ID here
wwv_flow.debug('sql = ' || q);
return q;
end;
I have chosen "Use Generic Column Names...".
When I run the page, I get NO ROWS FOUND. However, when I cut and paste the SQL statement printed out by the debug statement and run it, it returns rows. Both debug statements print correct values.
I'm not sure what the problem is here, but basically, I want to do a query where I substitute a value passed into the page from another page.
In this case the value in P305_TARGET_ID is passed in via a button spawning a popup as in var url = 'f?p=&APP_ID.:305:&APP_SESSION.::::P305_TARGET_ID:' + targetID;
APEX version is 3.0.1.00.08
Thank you.
- JohnWHi, JohnW
I don't understand why you use a dynamic query for that.
A "direct" SQL query like this :
select f.id,f.eat_id from xmlTransactions f where f.eat_id=:P305_TARGET_ID;
should work.
Mike -
Help on performance with dynamic query
Hi All,
We are using SQL Server 2008R2. In our one of report we are using Dynamic query and it is taking more time to retrieve the data. to retrieve 32 records it is taking 13-15 secs. In my observation in a table variable, created more than 60 columns. In
the SP called one more sp with insert statement.
Please let me know how i can improve performance of the SP.
I know that i have to provide the SP for observation but unfortunately I cannot provide the SP. Please guide me how i can achieve this .
I tried with temp tables by creating indexes on temp tables but i couldn't find improvement in performance.
Waiting for valuable replies.First of all a "dynamic query" is not "a query" - it is a multitude of them. Some of them may be fast, others may be slow.
There is of course no way we can give specific suggestions without seeing the code, the table and index definitions etc.
We can only give the generic suggestions. As for the code, make sure that you are using parameterised SQL and you are not building a complete SQL string with parameters and all. If nothing else, this helps to make the code more readable and maintainable.
It also protects you against SQL injection. And it also helps to prevent performance issue due to implicit conversion.
You will need to look at the query plan to see where the bottlenecks may be. You should look at the actual query plan. Note that the thickness of the arrows are more relevant than the percentages you see; the percentages are only estimates, and estimates
are often off. Next step is to see if you can add indexes to alleviate the situation. You should also analyse if there are problems in the query, for instance indexed columns that are entangled in expression. If you are using views, make sure that you don't
have views built on top of views etc. This can often result a table appearing multiple times in a query, when one would be enough.
Erland Sommarskog, SQL Server MVP, [email protected] -
Dynamic Query
When I run the following dynamic query in the stored procedure and try to build the report then I get the following error Rep:1401 Fatal PL/SQL error occured, Ora-00936 Missing expression. When I am generating the report standalone using the following query , everything is working fine but in Stored procedure , it's giving me the above error, pls help.
create or replace package REP_DELIVERY_LOC_STATISTICS is
TYPE REP_DELIVERY_LOC_STAT_rec IS RECORD(
p_coordinating_facility_id sis_education_pgm_session.coordinating_facility_id%TYPE,
p_PSE_MUNICIPALITY_ID pse_education_pgm_session.PSE_MUNICIPALITY_ID%TYPE,
p_pse_education_pgm_session_id sis_education_pgm_session.pse_education_pgm_session_id%TYPE,
p_course_session_id course_session.course_session_id%TYPE);
TYPE REP_DELIVERY_LOC_STAT_cur IS REF CURSOR RETURN REP_DELIVERY_LOC_STAT_rec;
Type REP_DELIVERY_LOC_STAT_cur_Dyn is REF CURSOR;
FUNCTION REP_DELIVERY_LOC_STATISTICS(p_college_id IN pse_education_pgm_session.delivery_institution_id%TYPE,
p_start_date IN pse_education_pgm_session.session_strt_dte%TYPE,
p_end_date IN pse_education_pgm_session.session_strt_dte%TYPE,
p_coord_facility_join IN varchar2) return REP_DELIVERY_LOC_STAT_cur_Dyn;
end REP_DELIVERY_LOC_STATISTICS;
create or replace package body REP_DELIVERY_LOC_STATISTICS is
FUNCTION REP_DELIVERY_LOC_STATISTICS(p_college_id IN pse_education_pgm_session.delivery_institution_id%TYPE,
p_start_date IN pse_education_pgm_session.session_strt_dte%TYPE,
p_end_date IN pse_education_pgm_session.session_strt_dte%TYPE,
p_coord_facility_join varchar2) return REP_DELIVERY_LOC_STAT_cur_Dyn IS
REP_DELIV_LOC_STAT_CUR_Dyn_Q REP_DELIVERY_LOC_STAT_cur_Dyn;
BEGIN
OPEN REP_DELIV_LOC_STAT_CUR_Dyn_Q FOR
'SELECT distinct
seps.coordinating_facility_id,
peps.PSE_MUNICIPALITY_ID,
seps.pse_education_pgm_session_id,
cs.course_session_id
FROM pse_education_pgm_session peps,
sis_education_pgm_session seps,
course_session cs,
facility fac,
desc_sis_reporting_area depa,
desc_sis_reporting_type dept,
pse_education_program pep
WHERE peps.delivery_institution_id (+) = ' || p_college_id
|| ' and peps.session_strt_dte between ' ||p_start_date||' and ' || p_end_date
|| ' and seps.coordinating_facility_id = fac.facility_id (+)
and seps.pse_education_pgm_session_id (+) = peps.pse_education_pgm_session_id
and seps.pse_education_pgm_session_id = cs.pse_education_pgm_session_id (+)
and pep.pse_education_program_id = peps.pse_education_program_id
and dept.desc_sis_reporting_area_id = depa.desc_sis_reporting_area_id
and pep.desc_sis_reporting_type_id = dept.desc_sis_reporting_type_id
and dept.desc_sis_reporting_area_id = depa.desc_sis_reporting_area_id
and fac.desc_facility_id in (2,3)' || NVL (p_coord_facility_join, '1=1');
return REP_DELIV_LOC_STAT_CUR_Dyn_Q;
END;
end REP_DELIVERY_LOC_STATISTICS;I would sugest to grab a book like
Inside Microsoft SQL Server 2008 T-SQL Querying (chapter 12 - Graphs, Trees, Hierarchies and Recursive Queries) or
Joe Celko's Trees and Hierarchies in SQL for Smarties to get familiar with how model hierarchies using SQL.
What is the meaning of the asterisks in the path?
Here is a dirty example using the Adjacency List model.
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.T1 (
id int NOT NULL UNIQUE CLUSTERED,
name varchar(50),
rootid int NULL
INSERT INTO dbo.T1 (id,name,rootid)
SELECT 1, 'animals', NULL
UNION ALL
SELECT 2, 'mamal', 1
UNION ALL
SELECT 3, 'cephalopod mollusc', 1
UNION ALL
SELECT 4, 'salt water fish', 1
UNION ALL
SELECT 5, 'fresh water fish', 1
UNION ALL
SELECT 6,'whale', 2
UNION ALL
SELECT 7,'pirana', 5
UNION
SELECT 8,'shark', 4
UNION
SELECT 9, 'octopus', 3;
GO
WITH Tree AS (
SELECT
id, name, rootid,
CAST('/' + [name] + '/' AS varchar(900)) AS mat_path
FROM
dbo.T1
WHERE
rootid IS NULL
UNION ALL
SELECT
C.id, C.name, C.rootid, CAST(P.mat_path + C.name + '/' AS varchar(900))
FROM
Tree AS P
INNER JOIN
dbo.T1 AS C
ON P.id = C.rootid
SELECT
FROM
Tree
ORDER BY
mat_path;
GO
DROP TABLE dbo.T1;
GO
Excuse my poor knowledge of zoology or animal biology.
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas -
DYNAMIC QUERY FOR INSERT USING SELECT
Hi All,
I am facing an issue...I am un bale to do an dynamic query. i have explained my code and the sample create, insert statements. I shud insert values in a table using a select statement dynamically..
create table listing (tel_no varchar2(16), list_key varchar2(30));
create table dummy_extract ( extract_name varchar2(10),extract_query varchar2(400),extract_date date );
create table dummy_query (tel_no varchar2(16), list_key varchar2(30));
insert into listing (tel_no ,header_key) values ('123456','123.23');
insert into dummy_extract (extract_name,extract_query,extract_date) values ('SP','SELECT TEL_NO, LIST_KEY FROM LISTING','10-DEC-2010');
SET SERVEROUTPUT ON
declare
CURSOR CUR_QUERY IS
SELECT * FROM DUMMY_EXTRACT ;
V_STMT VARCHAR2(4000);
BEGIN
FOR I IN CUR_QUERY LOOP
V_STMT := 'INSERT INTO DUMMY_QUERY VALUES ' ||(I.EXTRACT_QUERY ) ;
EXECUTE IMMEDIATE V_STMT using i.extract_query;
DBMS_OUTPUT.PUT_LINE (V_STMT);
END LOOP;
END ;Hi Blue shadow and Saubik,
I tried my query.It shows missing expression...Could you tell me the reason...
SET SERVEROUTPUT ON
declare
CURSOR CUR_QUERY IS
SELECT * FROM DUMMY_EXTRACT ;
V_STMT VARCHAR2(4000);
BEGIN
FOR I IN CUR_QUERY LOOP
--V_STMT := 'INSERT INTO'|| DUMMY_QUERY ||'VALUES ' ||(I.EXTRACT_QUERY ) ;
EXECUTE IMMEDIATE 'INSERT INTO DUMMY_QUERY VALUES ' ||(I.EXTRACT_QUERY ) ;
DBMS_OUTPUT.PUT_LINE (V_STMT);
END LOOP;
END ;
Error report:
ORA-00936: missing expression
ORA-06512: at line 14
00936. 00000 - "missing expression"
*Cause:
*Action:
Maybe you are looking for
-
Good morning, I'm building tables of contents programmatically and save them as tagged text for importing into InDesign (CS3) for later export to PDF. That works fine for bookmarks and hyperlinks to web sites but not for links to other PDF documents.
-
Illustrator CS6 - Export jpg without adding artboard to name
Is there a way in Illustrator CS6 to export as jpg with Use Artboard check to not have illustrator add the name of the artboard to your file name? Example - File name "redboat.ai" Export jpg "redboat.jpg" with Use Artboard option selected File name b
-
Hi guru's, My end user requirement is they require Base unit of measure in P.O. & sales unit of measure in Stock Transport Order can it be possible if yes please explain what can we do? thanks tuljasingh.
-
just moved houses. Same wifi though. My partners ipad connects fine to the internet. my ipad and Mac get the wifi signal but no internet connectivity! I have already rebooted the wifi and several times the iPad and Mac. I told them to forget the netw
-
Hi, I really, really need to do what is not supported... But my question is if unsupported OS can have impact on functionality of the machine? Sure, that I will never need any support for this server OS wise. Please encourage me :) MS statement: Ques