Dynamic query results parsing/ dynamic reports
Is there a way of creating a cursor at runtime, then querying the contents of the the fields of the cursor, without knowing the names and field type of the individual columns at design time?
Say I did as a basic example
Create table testtable( id number,name varchar2(200), address1 varchar2(200),address2 varchar2(200),address3 varchar2(200),dateopened date);
Create or replace procedure testproc(v_query in varchar2(2000)) is
type cur_typ is REF CURSOR;
c_cursor cur_type;
BEGIN
open c_cursor for v_query;
loop
fetch the row into some sort of dynamic record dynrec;
exit when _cursor%notfound;
something like
if dynrec.fields(3).field_type='Date' then
dbms_output.putline( to_char(fields(3),'dd/mm/yy'));
else
dbms_output.putline(fields(3));
end if;
end loop;
close c_cursor;
END;
then i'd be calling it with
testproc('select name, address1,dateopened from testtable where id=24');
or
testproc('select address1,address2,address3 from testtable where id=24');
how do I define the dynamic record without knowing what table it refers to? And, how do I get the column contents?
Thanks for your input
James
You'll need a combination of USER|DBA|ALL_TAB_COLUMNS and the DBMS_SQL package.
Sorry, don't have time for more of a hint than that.
Similar Messages
-
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 -
Display dynamic query result in collection
How to we put the query results in collection for a dynamic query?
Do you want to display or to store or do both.
Anyway try a check at this:
http://forum.java.sun.com/thread.jspa?threadID=584195&messageID=2991930#2991930
I think if u do the reverse process you will be able to retrieve the values from the list and display them.
Try giving a thought. -
Dynamic Query Input Variables / Dynamic Reporting Ouput
Hi All,
Overall Architecture :
Front End : Webpshere Portal
Middle Tier : Webpshere Application Server
Reporting Presentation Layer : Business Objects Reports (The reports will use the BEX query as a datasource)
Reporting DataSource = BEX Query
I am trying to build a BEX query based on the following. I have a sales ODS that shows the following data. Based on a user's selection, the report should return the corresponding data. What would be the best way to tackle something
like that ? Thanks all or your help !
Example :
SALES ODS :
Customer -
Sales $ - Rebate Indicator---Refund Indicator-----Equipment Indicator
Apple -
1000--False False--
False
Apple -
10--True - False--
False
Apple -
50--False True--
False
Apple -
40--False False--
True
QUERY INPUTS #1 :
Customer Site = Apple
Rebate Indicator = True
Refund Indicator = True
Equipment Indicator = False
QUERY RESULT :
Customer -
Sales $
Apple -
1060
QUERY INPUTS #2 :
Customer Site = Apple
Rebate Indicator = False
Refund Indicator = True
Equipment Indicator = False
QUERY RESULT :
Customer----
Sales $
Apple----
1050Hi Nigel ,
Instead of creatin query on ODS u should create on Cube .
ODS Data :
Customer -
Sales $ - Rebate Indicator---Refund Indicator-----Equipment Indicator
Apple -
1000--False False--
False
Apple -
10--True - False--
False
Apple -
50--False True--
False
Apple -
40--False False--
True
Cube data :Would get aggregated depend on Customer and other similar charatoristic. -
How to get the dynamic query result
If in one query, there is the amount range dimension, based on different dimension value combination, the customer revenue should be refreshed into different range, how to make it by cube?
eg.
Customer Store Material Month Amount
C001 M & S Tennis 2005/01 "10"
C001 Douglas Tennis 2005/02 "60"
C002 M & S Soccer 2005/01 "1"
C002 M & S Soccer 2005/02 "50"
C002 M & S Tennis 2005/02 "50"
C003 Douglas Tennis 2005/01 20
Query condition:
Time Customer Amount Range Amount
2005 C001 0~50_____________0
2005 C001 51~100___________70
2005 C001 100 +____________0
2005 C002 0~50_____________0
2005 C002 51~100___________0
2005 C002 100+_____________101
2005 C003 0~50_____________20
2005 C003 51~100___________0
2005 C003 100+_____________0
However, if I drill down Time into month, the result is total different, I only list the result related to customer C001
Time Customer Amount Range Amount
2005/01 C001 0~50____________10
2005/01 C001 51~100__________0
2005/01 C001 100 +___________0
2005/02 C001 0~50____________0
2005/02 C001 51~100__________60
2005/02 C001 100 +___________0
Any good solution on that? Thanks for any input.
Message was edited by: Lei ShaoHi, Sen,
I used your solution in my infocube and query, where I created a structure with 'between'. However, it is still the simple summation in different amount range.
Just like the following:
Sales ORG / Sales Office / Sales Rep / Amount
East / Atlanta / 1001 / 3
East / Atlanta / 1002 / 4
So the query result is the same:
S-ORG / S-Office / S-Rep / Amount Range / Amount
East / Atlanta / 1001 / 0~5 / 3
East / Atlanta / 1001 / 5+ / 0
East / Atlanta / 1002 / 0~5 / 4
East / Atlanta / 1002 / 5+ / 0
When I remove 'drill down' for Sales Rep, the result is:
S-ORG / S-Office / Amount Range / Amount
East / Atlanta / 0~5 / 7
East / Atlanta / 5+ / 0
However our expection for the result is different, because in business traction, if we remove sales rep, the sales org and sales office will get the sub-total like this: (we can image it with ABAP program sub-total)
Sales ORG / Sales Office / Amount
East / Atlanta / 7
So our expection for the result is:
S-ORG / S-Office / Amount Range / Amount
East / Atlanta / 0~5 / 0
East / Atlanta / 5+ / 7
Therefore, any good suggestion for this?
Thanks a lot
Regards,
LS -
How to get dynamic query results from an array/structure
I have an edit page that is set up to display phone number fields from the user stored in our database. The properties for the phone number fields are set by a structure of arrays. My problem is that when a user has more than 1 phone number in my database, my structures correctly show this on the form by displaying 2 phone numbers. The problem I am having is that when it shows multiple phone numebrs, it always shows the first result and just repeats it as opposed to dropping the 2nd or 3rd phone number in their respective fields.
array and structure code below:
<!--- Mobile --->
<cfset mobile = StructNew()>
<cfset mobile.dynamic = false>
<cfset mobile.dynamicLabel = '+ Add'>
<cfset mobile.fields = ArrayNew(1)>
<cfif #checkuserv.recordcount# GT '0'>
<cfset mobile.fields[1] = StructNew()>
<cfset mobile.fields[1].required = false>
<cfset mobile.fields[1].label = 'Phone Number 1'>
<cfset mobile.fields[1].displayIcon = false>
<cfset mobile.fields[1].voice = true>
<cfset mobile.fields[1].voiceChecked = true>
<cfset mobile.fields[1].toolTip = "Please choose if you would like to receive a text or voice call on this number">
</cfif>
<cfif #checkuserv.recordcount# IS '2'>
<cfset mobile.fields[2] = StructNew()>
<cfset mobile.fields[2].required = false>
<cfset mobile.fields[2].label = 'Phone Number 2'>
<cfset mobile.fields[2].displayIcon = false>
<cfset mobile.fields[2].toolTip = "Please choose if you would like to receive a text or voice call on this number">
<cfset mobile.fields[2].voice = true>
<cfset mobile.fields[2].voiceChecked = true>
</cfif>
<cfif #checkuserv.recordcount# IS '3'>
<cfset mobile.fields[3] = StructNew()>
<cfset mobile.fields[3].required = false>
<cfset mobile.fields[3].label = 'Phone Number 3'>
<cfset mobile.fields[3].displayIcon = false>
<cfset mobile.fields[3].toolTip = "Please choose if you would like to receive a text or voice call on this number">
<cfset mobile.fields[3].voice = true>
<cfset mobile.fields[3].voiceChecked = true>
</cfif>
Here is the code for my fields that call the array info:
<!--- Voice 1 --->
<cfloop index="i" from="1" to="#ArrayLen(mobile.fields)#">
<cfif i EQ 1 OR NOT mobile.dynamic OR form.mobileDisplayed GTE i>
<cfparam name="form.areacode_#i#" default="">
<cfparam name="form.prefix_#i#" default="">
<cfparam name="form.suffix_#i#" default="">
<div class="fieldBlock phoneBlock" id="phoneBlock#i#">
<label for="areacode_#i#">
<cfif mobile.fields[i].required><span>*</span></cfif>
<cfif mobile.fields[i].displayIcon><img src="/images/sm_phone.jpg" /></cfif>
#mobile.fields[i].label#:
</label>
<div class="inputBlock">
<input type="text" maxlength="3" onKeyUp="numTyped(this, 'prefix_#i#', 3, event)" name="areacode_#i#" id="areacode_#i#" class="areacode" value="#trim(left(checkuserv.sub_user_number, '3'))#" />
<input type="text" maxlength="3" onKeyUp="numTyped(this, 'suffix_#i#', 3, event)" name="prefix_#i#" id="prefix_#i#" class="prefix" value="#trim(mid(checkuserv.sub_user_number, "4", '3'))#" />
<input type="text" maxlength="4" name="suffix_#i#" id="suffix_#i#" class="suffix" value="#trim(mid(checkuserv.sub_user_number, "7", '4'))#" />
<cfif StructKeyExists(mobile.fields[i], "voice") and mobile.fields[i].voice>
<div class="voice" id="voice#i#">
<input type="radio" value="0" name="voice_#i#"<cfif Not StructKeyExists(mobile.fields[i], "voiceChecked") or Not mobile.fields[i].voiceChecked> checked="checked"</cfif> />
<label>Text</label>
<input type="radio" value="1" name="voice_#i#"<cfif StructKeyExists(mobile.fields[i], "voiceChecked") and mobile.fields[i].voiceChecked> checked="checked"</cfif> />
<label>Voice</label>
</div>
</cfif>
<cfif StructKeyExists(mobile.fields[i], "toolTip") and mobile.fields[i].toolTip neq "">
<div class="toolTip" id="toolTip_#i#" title="#mobile.fields[i].toolTip#" onClick="alert('#mobile.fields[i].toolTip#')">?</div>
</cfif>
</div>
<!--- This number was invalid or if geocoding failed, and they've picked a carrier to override, display the carrier override dropdown--->
<cfif ListFindNoCase(invalidMobileIndexList, i) or ( showMap and IsDefined("form.carrierOverride" & i) )>
<div id="carrierOverrideBox#i#" class="carrierOverrideBlock">
<label>Carrier:</label>
<div class="inputBlock">
<select name="carrierOverride#i#" id="carrierOverride#i#">
<option value="-1">-- Pick your carrier --</option>
<cfloop query="carriers">
<!--- 1111 is voice, 0 is NONE, don't display --->
<cfif Not ListFindNoCase("0,1111", carriers.carrier_id)>
<option value="#Trim(carriers.carrier_id)#"<cfif IsDefined("form.carrierOverride" & i) and form["carrierOverride" & i] eq Trim(carriers.carrier_id)> selected="selected"</cfif>>#Trim(carriers.carrier_title)#</option>
</cfif>
</cfloop>
</select>
<a href="http://www.inspironlogisticscontact.cfm?account_id=#account_id#&carrierOverride=1"
title="Carrier help"
onClick="window.open('http://www.inspironlogisticscontact.cfm?account_id=#account_id#&carrierOverride=1','#accou nt_id#','width=500,height=800,scrollbars=no,screenX=100,screenY=100,top=100,left=100,resiz able=1'); return false;"
>?</a>
</div>
</div>
</cfif>
<cfif mobile.dynamic AND i EQ form.mobileDisplayed AND i LT ArrayLen(mobile.fields)>
<div class="dynamicAddBlock dynamicAddMobileBlock" id="dynamicAddmobile_#i#">
<a href="javascript: submitAddField('mobile')">#mobile.dynamicLabel#</a>
</div>
</cfif>
</div>
</cfif>
</cfloop>
<cfif mobile.dynamic>
<input name="mobileDisplayed" id="mobileDisplayed" value="#form.mobileDisplayed#" type="hidden" />
</cfif>
<input name="carrierOverrideActive" id="carrierOverrideActive" value="<cfif carrierOverrideActive>1<cfelse>0</cfif>" type="hidden" />
I have been stuck on this for days, finally turning to the forum today with a few different issues. I hate trying to work within the framwork of other peoples code.
I use coldfusion 8I broke the chunk of code away from the page and am now getting teh phone numbers in the right spots, but I am still getting a coldfusion error.
Element 2 is undefined in a Java object of type class coldfusion.runtime.Array.
Here is my code...
<cfset invalidMobileIndexList = "">
<cfset showMap = false>
<cfset carrierOverrideActive = false>
<!--- Voice 1 --->
<cfloop index="i" from="1" to="#ArrayLen(mobile.fields)#">
<!------> <cfif i EQ 1 OR NOT mobile.dynamic OR form.mobileDisplayed GTE i>
<cfparam name="form.areacode_#i#" default="">
<cfparam name="form.prefix_#i#" default="">
<cfparam name="form.suffix_#i#" default="">
<div class="fieldBlock phoneBlock" id="phoneBlock#i#">
<label for="areacode_#i#">
<cfif mobile.fields[i].required><span>*</span></cfif>
<cfif mobile.fields[i].displayIcon><img src="/images/sm_phone.jpg" /></cfif>
#mobile.fields[i].label#:
</label>
<cfoutput query="checkuserv" ><div class="inputBlock">
<input type="text" maxlength="3" onKeyUp="numTyped(this, 'prefix_#i#', 3, event)" name="areacode_#i#" id="areacode_#i#" class="areacode" value="#trim(left(checkuserv.sub_user_number, '3'))#" />
<input type="text" maxlength="3" onKeyUp="numTyped(this, 'suffix_#i#', 3, event)" name="prefix_#i#" id="prefix_#i#" class="prefix" value="#trim(mid(checkuserv.sub_user_number, "4", '3'))#" />
<input type="text" maxlength="4" name="suffix_#i#" id="suffix_#i#" class="suffix" value="#trim(mid(checkuserv.sub_user_number, "7", '4'))#" />
<cfif StructKeyExists(mobile.fields[i], "voice") and mobile.fields[i].voice>
<div class="voice" id="voice#i#">
<input type="radio" value="0" name="voice_#i#"<cfif Not StructKeyExists(mobile.fields[i], "voiceChecked") or Not mobile.fields[i].voiceChecked> checked="checked"</cfif> />
<label>Text</label>
<input type="radio" value="1" name="voice_#i#"<cfif StructKeyExists(mobile.fields[i], "voiceChecked") and mobile.fields[i].voiceChecked> checked="checked"</cfif> />
<label>Voice</label>
</cfif></div></cfoutput>
<cfif StructKeyExists(mobile.fields[i], "toolTip") and mobile.fields[i].toolTip neq "">
<div class="toolTip" id="toolTip_#i#" title="#mobile.fields[i].toolTip#" onClick="alert('#mobile.fields[i].toolTip#')">?</div>
</cfif>
</div>
<!--- This number was invalid or if geocoding failed, and they've picked a carrier to override, display the carrier override dropdown--->
<cfif ListFindNoCase(invalidMobileIndexList, i) or ( showMap and IsDefined("form.carrierOverride" & i) )>
<div id="carrierOverrideBox#i#" class="carrierOverrideBlock">
<label>Carrier:</label>
<div class="inputBlock">
<select name="carrierOverride#i#" id="carrierOverride#i#">
<option value="-1">-- Pick your carrier --</option>
<cfloop query="carriers">
<!--- 1111 is voice, 0 is NONE, don't display --->
<cfif Not ListFindNoCase("0,1111", carriers.carrier_id)>
<option value="#Trim(carriers.carrier_id)#"<cfif IsDefined("form.carrierOverride" & i) and form["carrierOverride" & i] eq Trim(carriers.carrier_id)> selected="selected"</cfif>>#Trim(carriers.carrier_title)#</option>
</cfif>
</cfloop>
</select>
<a href="http://www.inspironlogistics.com/wens/contact.cfm?account_id=#account_id#&carrierOverride= 1"
title="Carrier help"
onClick="window.open('http://www.inspironlogistics.com/wens/contact.cfm?account_id=#account_id#&carrierOverride= 1','#account_id#','width=500,height=800,scrollbars=no,screenX=100,screenY=100,top=100,left =100,resizable=1'); return false;"
>?</a>
</div>
</div>
</cfif>
<cfif mobile.dynamic AND i EQ form.mobileDisplayed AND i LT ArrayLen(mobile.fields)>
<div class="dynamicAddBlock dynamicAddMobileBlock" id="dynamicAddmobile_#i#">
<a href="javascript: submitAddField('mobile')">#mobile.dynamicLabel#</a>
</div>
</cfif>
</div>
</cfif>
<cfif mobile.dynamic>
<input name="mobileDisplayed" id="mobileDisplayed" value="#form.mobileDisplayed#" type="hidden" />
</cfif>
<input name="carrierOverrideActive" id="carrierOverrideActive" value="<cfif carrierOverrideActive>1<cfelse>0</cfif>" type="hidden" /><!------>
</cfloop> -
Creating query results in a report without data
Hi ABAP consultants,
First of all I would like to explain you all I am not ABAPPER and this is the first time I work with ABAP Query (I just receive orders...).
I need to do some reports about account receivables and I decided to work with the following tables: VBAK, VBAP, LIPS, LIKP, VBEP, VKDFS, VEPVG, VAPMA, KNB4.
Despite there are information on those tables when I test the query SAP retrieves that "There are no data selected". Why does that happen? Is there any logic that I disrespected?
Thank you all and have a nice day.
NaejHi,
check for contents in tables in tcode -se11 once u find the records try this one
Ex:
TABLES vbak.
select * from vbak.
write:vbak-vbeln.
ENDSELECT.
or
tables vbak.
data: t_vbak type table of vbak.
select * from vbak into table t_vbak.
loop at t_vbak into vbak.
write:vbak-vbeln.
endloop. -
Unable to retrieve results using dynamic query
Hi Experts,
I have created a custom table and have created a custom bol to integrate it with web ui. I have redefined the dynamic query result method of genil layer. I find the data into LT_RESULT but when I invoke the root list method the LR_OBJECT does not contain the values.
Please see below the code that I have written.
====================================
METHOD IF_GENIL_APPL_INTLAY~GET_DYNAMIC_QUERY_RESULT.
DATA: LR_OBJECT TYPE REF TO IF_GENIL_CONT_ROOT_OBJECT,
LT_RESULT TYPE TABLE OF ZCRMST_XXXX,
LV_DYN_WHERE TYPE STRING,
LV_LEN TYPE I,
LS_RANGE TYPE SELOPTOBJ.
DATA: LT_XXXX TYPE TABLE OF SELOPTOBJ,
LT_YYYY TYPE TABLE OF SELOPTOBJ.
FIELD-SYMBOLS: <LFS_RESULT> TYPE ZCRMST_XXXX,
<LFS_SELECTION_RANGE> TYPE GENILT_SELECTION_PARAMETER.
decomposition of selection parameters and build a dynamic where condition
SELECT * FROM ZXXXX INTO TABLE LT_RESULT[].
CHECK LINES( LT_RESULT[] ) > 0.
LOOP AT LT_RESULT[] ASSIGNING <LFS_RESULT>.
LR_OBJECT = IV_ROOT_LIST->ADD_OBJECT( IV_OBJECT_NAME = 'Root'
IS_OBJECT_KEY = <LFS_RESULT>-XXXX ).
CHECK LR_OBJECT IS BOUND.
LR_OBJECT->SET_QUERY_ROOT( ABAP_TRUE ).
ENDLOOP.
ENDMETHOD.
==================================================
Thanks in advance,Hi,
Please check your get_objects method of the genil class. I made some changes to my implementation of get_objects method and it fixed the problem.
Regards,
Sandeep -
i am calling a report from a 10g form. i wanna to pass a dynamic query from form to report. I am able to perform this with 6i but can't using 10g. is there any way to create a dynamic query in reports 10g
thanksActually, i am creating the whole query upon based on a condition in form, then i am passing this query to report via a data parameter. following is the some part of code, which i am using
IF :CONTROL.VOUCHER_FORMAT='S' THEN
V_QUERY:=('select bvno vno,bvdate vdate from bvrm where bvno ='''||:vno||''' AND bvrm.bvdate='''||:VDATE||''' and ccode='''||:PARAMETER.ccode||''' and fycode='''||:PARAMETER.fycode||''' AND BVRM.BVTYPE='''||:VTYPE||''' GROUP by bvdate,bvno');
else
V_QUERY:=('select bvno vno,bvdate vdate from bvrm where bvrm.bvdate BETWEEN '''||TO_DATE(:FROMDATE,'DD/MM/YYYY')||''' AND '''||to_date(TO_DATE(:TODATE,'DD/MM/YYYY')+1)||''' and ccode='''||:PARAMETER.ccode||''' and fycode='''||:PARAMETER.fycode||''' AND BVRM.BVTYPE = '''||:VTYPE||''' GROUP by bvdate,bvno');
end if;
RG_ID:=CREATE_GROUP_FROM_QUERY(RG_NAME,V_QUERY);
NUM:=POPULATE_GROUP(RG_NAME);
ADD_PARAMETER(PL_ID,'Q_MAIN',DATA_PARAMETER,RG_NAME);
after this code, i am calling the run_report_object normally. this code works fine with 6i, but doesn't with 10g
thanks -
How to fetch indivdual rows from a dynamic query.
Hi,
I wish to fetch the individual rows returned from a dynamic query.
if my dynamic query is:
dyn_stmt := select col1, col2, col3
from tab1;
The query returns multiple rows.
Then how to fetch individual rows of this query ?
Please explain.declare
cur_test sys_refcursor;
c1 varchar2(30);
c2 number;
c3 date;
begin
dyn_stmt := select col1, col2, col3 from tab1;
OPEN cur_test FOR dyn_stmt;
LOOP
FETCH cur_test INTO c1, c2, c3;
IF cur_test%NOTFOUND THEN
EXIT;
END IF;
-- Process this row
END LOOP;
CLOSE cur_test;
END; -
Store SQL query results in db table
Hi,
I have a SQL query that produces a report table.
Is it possible to automatically store the query results (or the report table) as a db table - without interrupting the current report building proces?
Thanks,
Dave
Message was edited by:
Dave JudgeHi Dave,
You can also insert records into an existing table:
INSERT INTO TABLEB (colA, colB, colC, etc) SELECT valA, valB, valC, etc FROM VIEWA WHERE etc etc
This can be done during a page process that runs "Before Header" and you can base your report on the TABLEB. Obviously, you will need to maintain that table to ensure that it is only truncated where necessary, that one user doesn't try to access another user's data on that table and that each time your page is loaded it doesn't try to repopulate the table when you don't need it to.
Another possiblity is to use a collection - which is user session based
Andy -
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 - -
Data declaration for result of dynamic query
Good day,
can you help me with declaration of data for query result that can be from any columns of any tables.
For example (this is from SAP documentation):
DATA: wa TYPE spfli,
ftab TYPE TABLE OF STRING.
APPEND 'CITYFROM' TO ftab.
APPEND 'CITYTO' TO ftab.
SELECT DISTINCT (ftab)
FROM spfli
INTO CORRESPONDING FIELDS OF wa
WHERE
carrid = 'LH'.
WRITE: / wa-cityfrom, wa-cityto.
ENDSELECT.
This is clear to me, but I don't know how to do in case FROM clause is generated dynamically too.
SELECT DISTINCT (ftab)
FROM (tab1)
ThanksCheck out this sample program....
report zrich_0002.
type-pools: slis.
field-symbols: <dyn_table> type standard table,
<dyn_wa>,
<dyn_field>.
data: alv_fldcat type slis_t_fieldcat_alv,
it_fldcat type lvc_t_fcat.
type-pools : abap.
data : it_details type abap_compdescr_tab,
wa_details type abap_compdescr.
data : ref_descr type ref to cl_abap_structdescr.
data: new_table type ref to data,
new_line type ref to data,
wa_it_fldcat type lvc_s_fcat.
selection-screen begin of block b1 with frame title text .
parameters: p_table(30) type c.
selection-screen end of block b1.
* Get the structure of the table.
ref_descr ?= cl_abap_typedescr=>describe_by_name( p_table ).
it_details[] = ref_descr->components[].
loop at it_details into wa_details.
clear wa_it_fldcat.
wa_it_fldcat-fieldname = wa_details-name .
wa_it_fldcat-datatype = wa_details-type_kind.
wa_it_fldcat-intlen = wa_details-length.
wa_it_fldcat-decimals = wa_details-decimals.
append wa_it_fldcat to it_fldcat .
endloop.
* Create dynamic internal table and assign to FS
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = it_fldcat
importing
ep_table = new_table.
assign new_table->* to <dyn_table>.
* Create dynamic work area and assign to FS
create data new_line like line of <dyn_table>.
assign new_line->* to <dyn_wa>.
* Select Data from table.
select * into table <dyn_table>
from (p_table).
* Write out data from table.
loop at <dyn_table> into <dyn_wa>.
do.
assign component sy-index of structure <dyn_wa> to <dyn_field>.
if sy-subrc <> 0.
exit.
endif.
if sy-index = 1.
write:/ <dyn_field>.
else.
write: <dyn_field>.
endif.
enddo.
endloop.
Regards,
Rich Heilman -
Need to execute Dynamic query for the report
I was wondering if we can have the option of choosing at runtime from the report builder parameter so that if the end-user selects 'Yes' then the report will run one specific query and if he chooses 'No' then another particular query is invoked. What I mean to say that by choosing between Yes and No at runtime one should have the option of returning query results based on the same table but having different columns selected via the SELECT statement
means we have two querires on our report & upon the chosen parameter we should execute only one of them ... wht should i do to apply tht ???As the previous post noted lexicals are a terrific way to accomplish dynamic queries in Oracle reports.
Another way you could accomplish this would be to use a UNION, whereas the first select in the UNION represents one user option, then second query represents the second option.
For example:
SELECT customer_name name, customer_address address
FROM customer_table
WHERE :p_choice = 'Customer Info'
UNION
SELECT employee_name name, employee_address address
FROM employee_table
WHERE :p_choice = 'Employee Info'If when running the report, the user chooses 'Customer Info' the first query would return results, if the user chose 'Employee Info' then just information from the second query would return information.
So there are different ways to accomplish what you are looking for, you just need to find which is going to work best for you.
Hope this helps! -
Export query results to flat file with dynamic filename
Hi
Can anybody can point me how to dynamic export query serults set to for example txt file using process flows in OWB.
Let say I have simple select query
select * from table1 where daterange >= sysdate -1 and daterange < sysdate
so query results will be different every day because daterange will be different. Also I would like to name txt file dynamicly as well
eg. results_20090601.txt, results_20090602.txt, results_20090603.txt
I cant see any activity in process editor to enter custom sql statment, like it is in MSSQL 2000 or 2005
thanks in advanceYou can call existing procedures from a process flow the procedure can create the filename with whatever name you desire. OWB maps with file as target can also create a file with a dynamic name defined by an expression (see here ).
Cheers
David
Maybe you are looking for
-
Creative Zen sleek, folder based explori
Ok, long story short. i upgraded my Zen sleeks firmware, and for my disapoint, i founded out that whit the new firmware i cant use the "Creative media explorer", and im "forced" to use ether the crappy Mediaplayer 0, or the the "drag and drop" functi
-
Picking up Parameters in a Stored Procedure
Hi, Using the following sqlplus call I am executing a sql script. sqlplus username/password @test.sql "TEST1" "TEST2" The test.sql script makes the following call: execute TABLEOWNER.TEST_SP; Can anyone tell me how to pass parameters shown in the sql
-
I have an eBook (pdf format) which is a workbook style (has radio buttons and text fields). When the pdf is opened in ADE, all the radio buttons and text fields get disabled. Am I doing something wrong?
-
I keep getting an error message when I try to do facebook sharing?why
What is causing the error message I get when trying to share with facebook?
-
HELP,My serial number has been replaced
I bought an iphone 3GS for my friend as a birthday gift from HongKong(5000 HK dollars),it worked great and made so much surprise to my friend.My friend upgraded this iphone iOS to ver 4 about 2 weeks before.after that,it can not be active any more(wi