Cursor as select
HI I have the below cursor definition .
OPEN lv_refcur FOR
WITH TEMP_HOLDINGS AS
+(+
SELECT A1.VENDOR_INSTRUMENT_ID,A1.DATA_SOURCE_CD FROM FI_IDX_BENCHMARK_HOLDINGS A1, FI_IDX_BENCHMARK B1, FI_IDX_SOURCE C1
WHERE
A1.PRICING_DT = '17-DEC-2012' AND A1.DATA_SOURCE_CD = 'LBG' AND A1.INDEX_CD = B1.INDEX_CD
AND B1.INDEX_CD = C1.INDEX_CD AND C1.DATA_SOURCE_CD = A1.DATA_SOURCE_CD AND B1.IS_PA_REQUIRED = 'Y'
UNION
SELECT A2.VENDOR_INSTRUMENT_ID,A2.DATA_SOURCE_CD FROM FI_IDX_FORWARD_HOLDINGS A2, FI_IDX_BENCHMARK B2, FI_IDX_SOURCE C2
WHERE
A2.PRICING_DT = '17-DEC-2012' AND A2.DATA_SOURCE_CD = 'LBG' AND A2.INDEX_CD = B2.INDEX_CD
AND B2.INDEX_CD = C2.INDEX_CD AND C2.DATA_SOURCE_CD = A2.DATA_SOURCE_CD AND B2.IS_PA_REQUIRED = 'Y'
-- MDR START MC IGAR Disclosure change
UNION
SELECT
A1.VENDOR_INSTRUMENT_ID,
A1.DATA_SOURCE_CD
FROM
FI_IDX_BENCHMARK_HOLDINGS A1,
FI_IDX_BENCHMARK B1,
FI_IDX_SOURCE C1,
fi_group_member GM
WHERE
A1.PRICING_DT = '17-DEC-2012'
AND GM.group_cd = 'BCGLBIDXPA'
AND GM.purpose_cd = 'GLOBALIDX'
AND A1.DATA_SOURCE_CD = GM.character_val
AND A1.INDEX_CD = B1.INDEX_CD
AND B1.INDEX_CD = C1.INDEX_CD
AND C1.DATA_SOURCE_CD = 'LBG'
AND B1.IS_PA_REQUIRED = 'N'
UNION
SELECT
A2.VENDOR_INSTRUMENT_ID,
A2.DATA_SOURCE_CD
FROM
FI_IDX_FORWARD_HOLDINGS A2,
FI_IDX_BENCHMARK B2,
FI_IDX_SOURCE C2,
fi_group_member GM
WHERE
A2.PRICING_DT = '17-DEC-2012'
AND GM.group_cd = 'BCGLBIDXPA'
AND GM.purpose_cd = 'GLOBALIDX'
AND A2.DATA_SOURCE_CD = GM.character_val
AND A2.INDEX_CD = B2.INDEX_CD
AND B2.INDEX_CD = C2.INDEX_CD
AND C2.DATA_SOURCE_CD = 'LBG'
AND B2.IS_PA_REQUIRED = 'N'
-- MDR END
+)+
SELECT
INSTRUMENT_ID,
FUND_OR_INDEX_CD,
PRICING_DT,
FI_INSTRUMENT_ID,
ISSUE_DESCRIPTION,
TICKER,
ISSUE_DT,
STATED_MATURITY_DT,
COUPON,
STATE_CD,
COUNTRY_CD,
CURRENCY_CD,
CALLABLE_FLAG,
PUTABLE_FLAG,
INSURED_FLAG,
AMT_CD,
REVENUE_SOURCE_CD,
ISSUER_ID,
NON_2A7_DIVER_ISSUER_ID,
BLOOMBERG_MBS_TYPE,
MBS_AGENCY_CD,
ORIGINAL_TERM,
DS_CLASS1_CD,
DS_CLASS2_CD,
DS_CLASS3_CD,
MAX(LB_CLASS1_CD) LB_CLASS1_CD,
MAX(LB_CLASS2_CD) LB_CLASS2_CD,
MAX(LB_CLASS3_CD) LB_CLASS3_CD,
MAX(LB_CLASS4_CD) LB_CLASS4_CD,
GENERIC_INSTRUMENT_ID,
MAX(SC_CLASS1_CD) SC_CLASS1_CD,
MAX(SC_CLASS2_CD) SC_CLASS2_CD,
MAX(SC_CLASS3_CD) SC_CLASS3_CD,
MAX(SC_CLASS4_CD) SC_CLASS4_CD
FROM (
SELECT
DISTINCT
+'I' AS FUND_OR_INDEX_CD,+
IAI.FI_INSTRUMENT_ID AS FI_INSTRUMENT_ID,
-- MC IGAR Disclosure
decode( 'LBG', 'LBG', decode (I.INSTRUMENT_DOMAIN_CD, 'MBS', I.cusip, IAI.ALTERNATE_ID), IAI.ALTERNATE_ID) AS INSTRUMENT_ID,
-- MC IGAR Disclosure
+'17-DEC-2012' AS PRICING_DT,+
I.ISSUE_DESC AS ISSUE_DESCRIPTION,
I.BLOOMBERG_TICKER AS TICKER,
DECODE('LBG','LBG',I.ISSUE_DT,NULL) AS ISSUE_DT,
I.STATED_MATURITY_DT AS STATED_MATURITY_DT,
I.COUPON AS COUPON,
I.STATE_CD AS STATE_CD,
I.COUNTRY_CD AS COUNTRY_CD,
I.CURRENCY_CD AS CURRENCY_CD,
I.CALLABLE_IND AS CALLABLE_FLAG,
I.PUTABLE_IND AS PUTABLE_FLAG,
DECODE('LBG','LBG',I.INSURED_IND,NULL) AS INSURED_FLAG,
I.AMT_CD AS AMT_CD,
I.REVENUE_SOURCE_CD AS REVENUE_SOURCE_CD,
I.MASTER_ISSUER_ID AS ISSUER_ID,
I.NON_2A7_DIVER_ISSUER_ID AS NON_2A7_DIVER_ISSUER_ID,
MBS.BLOOMBERG_MBS_TYPE AS BLOOMBERG_MBS_TYPE,
MBS.MBS_AGENCY_CD AS MBS_AGENCY_CD,
MBS.ORIGINAL_TERM AS ORIGINAL_TERM,
NULL AS DS_CLASS1_CD,
NULL AS DS_CLASS2_CD,
NULL AS DS_CLASS3_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL1_CD)
AS LB_CLASS1_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL2_CD)
AS LB_CLASS2_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL3_CD)
AS LB_CLASS3_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL4_CD)
AS LB_CLASS4_CD,
NULL AS GENERIC_INSTRUMENT_ID,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL1_CD)
AS SC_CLASS1_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL2_CD)
AS SC_CLASS2_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL3_CD)
AS SC_CLASS3_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL4_CD)
AS SC_CLASS4_CD
FROM
INSTRUMENT I,
INSTRUMENT_SECTOR S,
TEMP_HOLDINGS H,
INSTRUMENT_ALTERNATE_ID IAI,
INSTRUMENT_MBS MBS,
FI_IDX_INSTRUMENT FII
WHERE
H.DATA_SOURCE_CD = FII.DATA_SOURCE_CD
AND H.VENDOR_INSTRUMENT_ID = FII.VENDOR_INSTRUMENT_ID
AND FII.FMR_CUSIP = IAI.ALTERNATE_ID
AND IAI.FI_INSTRUMENT_ID = I.FI_INSTRUMENT_ID
AND IAI.FI_INSTRUMENT_ID = S.FI_INSTRUMENT_ID()+
AND IAI.FI_INSTRUMENT_ID = MBS.FI_INSTRUMENT_ID()+
AND IAI.ALTERNATE_ID_TYPE_CODE = 'FMR_CUSIP'
+)+
GROUP BY INSTRUMENT_ID, FUND_OR_INDEX_CD, PRICING_DT, FI_INSTRUMENT_ID,
ISSUE_DESCRIPTION, TICKER, ISSUE_DT, STATED_MATURITY_DT, COUPON, STATE_CD,
COUNTRY_CD, CURRENCY_CD, CALLABLE_FLAG, PUTABLE_FLAG, INSURED_FLAG, AMT_CD,
REVENUE_SOURCE_CD, ISSUER_ID, NON_2A7_DIVER_ISSUER_ID, BLOOMBERG_MBS_TYPE,
MBS_AGENCY_CD, ORIGINAL_TERM, DS_CLASS1_CD, DS_CLASS2_CD, DS_CLASS3_CD,
GENERIC_INSTRUMENT_ID;I wanted to convert it into a select statement for debugging.
please help how to convert this cursor as a select statement.
thanks ,
prabhu.
Hi All ,
thanks for the help .
I tried that and it is working .
So i learnt the with clause with this example.
Also could you please help me how to write an insert statement for this select query .
I mean i want an "insert into select " followed by the query .
I tried by just adding the insert into (column_names )
and the above query .
i got an error saying "missing expression"
please see below
INSERT INTO FI_STAGING.STG_PA_INSTRUMENT (INSTRUMENT_ID,
FUND_OR_INDEX_CD,
PRICING_DT,
FI_INSTRUMENT_ID,
ISSUE_DESCRIPTION,
TICKER,
STATED_MATURITY_DT,
COUPON,
COUNTRY_CD,
CURRENCY_CD,
CALLABLE_FLAG,
PUTABLE_FLAG,
ISSUER_ID,
NON_2A7_DIVER_ISSUER_ID,
ORIGINAL_TERM,
LB_CLASS1_CD,
LB_CLASS2_CD,
LB_CLASS3_CD,
LB_CLASS4_CD)
with TEMP_HOLDINGS as (SELECT A1.VENDOR_INSTRUMENT_ID,A1.DATA_SOURCE_CD FROM FI_IDX_BENCHMARK_HOLDINGS A1, FI_IDX_BENCHMARK B1, FI_IDX_SOURCE C1
WHERE
A1.PRICING_DT = '17-DEC-2012' AND A1.DATA_SOURCE_CD = 'LBG' AND A1.INDEX_CD = B1.INDEX_CD
AND B1.INDEX_CD = C1.INDEX_CD AND C1.DATA_SOURCE_CD = A1.DATA_SOURCE_CD AND B1.IS_PA_REQUIRED = 'Y'
UNION
SELECT A2.VENDOR_INSTRUMENT_ID,A2.DATA_SOURCE_CD FROM FI_IDX_FORWARD_HOLDINGS A2, FI_IDX_BENCHMARK B2, FI_IDX_SOURCE C2
WHERE
A2.PRICING_DT = '17-DEC-2012' AND A2.DATA_SOURCE_CD = 'LBG' AND A2.INDEX_CD = B2.INDEX_CD
AND B2.INDEX_CD = C2.INDEX_CD AND C2.DATA_SOURCE_CD = A2.DATA_SOURCE_CD AND B2.IS_PA_REQUIRED = 'Y'
-- MDR START MC IGAR Disclosure change
UNION
SELECT
A1.VENDOR_INSTRUMENT_ID,
A1.DATA_SOURCE_CD
FROM
FI_IDX_BENCHMARK_HOLDINGS A1,
FI_IDX_BENCHMARK B1,
FI_IDX_SOURCE C1,
fi_group_member GM
WHERE
A1.PRICING_DT = '17-DEC-2012'
AND GM.group_cd = 'BCGLBIDXPA'
AND GM.purpose_cd = 'GLOBALIDX'
AND A1.DATA_SOURCE_CD = GM.character_val
AND A1.INDEX_CD = B1.INDEX_CD
AND B1.INDEX_CD = C1.INDEX_CD
AND C1.DATA_SOURCE_CD = 'LBG'
AND B1.IS_PA_REQUIRED = 'N'
UNION
SELECT
A2.VENDOR_INSTRUMENT_ID,
A2.DATA_SOURCE_CD
FROM
FI_IDX_FORWARD_HOLDINGS A2,
FI_IDX_BENCHMARK B2,
FI_IDX_SOURCE C2,
fi_group_member GM
WHERE
A2.PRICING_DT = '17-DEC-2012'
AND GM.group_cd = 'BCGLBIDXPA'
AND GM.purpose_cd = 'GLOBALIDX'
AND A2.DATA_SOURCE_CD = GM.character_val
AND A2.INDEX_CD = B2.INDEX_CD
AND B2.INDEX_CD = C2.INDEX_CD
AND C2.DATA_SOURCE_CD = 'LBG'
AND B2.IS_PA_REQUIRED = 'N'
-- MDR END
SELECT
INSTRUMENT_ID,
FUND_OR_INDEX_CD,
PRICING_DT,
FI_INSTRUMENT_ID,
ISSUE_DESCRIPTION,
TICKER,
ISSUE_DT,
STATED_MATURITY_DT,
COUPON,
COUNTRY_CD,
CURRENCY_CD,
CALLABLE_FLAG,
PUTABLE_FLAG,
ISSUER_ID,
NON_2A7_DIVER_ISSUER_ID,
ORIGINAL_TERM,
MAX(LB_CLASS1_CD) LB_CLASS1_CD,
MAX(LB_CLASS2_CD) LB_CLASS2_CD,
MAX(LB_CLASS3_CD) LB_CLASS3_CD,
MAX(LB_CLASS4_CD) LB_CLASS4_CD,
FROM (
SELECT
DISTINCT
'I' AS FUND_OR_INDEX_CD,
IAI.FI_INSTRUMENT_ID AS FI_INSTRUMENT_ID,
-- MC IGAR Disclosure
decode( 'LBG', 'LBG', decode (I.INSTRUMENT_DOMAIN_CD, 'MBS', I.cusip, IAI.ALTERNATE_ID), IAI.ALTERNATE_ID) AS INSTRUMENT_ID,
-- MC IGAR Disclosure
'17-DEC-2012' AS PRICING_DT,
I.ISSUE_DESC AS ISSUE_DESCRIPTION,
I.BLOOMBERG_TICKER AS TICKER,
DECODE('LBG','LBG',I.ISSUE_DT,NULL) AS ISSUE_DT,
I.STATED_MATURITY_DT AS STATED_MATURITY_DT,
I.COUPON AS COUPON,
I.STATE_CD AS STATE_CD,
I.COUNTRY_CD AS COUNTRY_CD,
I.CURRENCY_CD AS CURRENCY_CD,
I.CALLABLE_IND AS CALLABLE_FLAG,
I.PUTABLE_IND AS PUTABLE_FLAG,
DECODE('LBG','LBG',I.INSURED_IND,NULL) AS INSURED_FLAG,
I.AMT_CD AS AMT_CD,
I.REVENUE_SOURCE_CD AS REVENUE_SOURCE_CD,
I.MASTER_ISSUER_ID AS ISSUER_ID,
I.NON_2A7_DIVER_ISSUER_ID AS NON_2A7_DIVER_ISSUER_ID,
MBS.BLOOMBERG_MBS_TYPE AS BLOOMBERG_MBS_TYPE,
MBS.MBS_AGENCY_CD AS MBS_AGENCY_CD,
MBS.ORIGINAL_TERM AS ORIGINAL_TERM,
NULL AS DS_CLASS1_CD,
NULL AS DS_CLASS2_CD,
NULL AS DS_CLASS3_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL1_CD)
AS LB_CLASS1_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL2_CD)
AS LB_CLASS2_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL3_CD)
AS LB_CLASS3_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'LBCC', S.CLASSIFICATION_LEVEL4_CD)
AS LB_CLASS4_CD,
NULL AS GENERIC_INSTRUMENT_ID,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL1_CD)
AS SC_CLASS1_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL2_CD)
AS SC_CLASS2_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL3_CD)
AS SC_CLASS3_CD,
DECODE (S.CLASSIFICATION_SCHEME_CD, 'SCIS', S.CLASSIFICATION_LEVEL4_CD)
AS SC_CLASS4_CD
FROM
INSTRUMENT I,
INSTRUMENT_SECTOR S,
TEMP_HOLDINGS H,
INSTRUMENT_ALTERNATE_ID IAI,
INSTRUMENT_MBS MBS,
FI_IDX_INSTRUMENT FII
WHERE
H.DATA_SOURCE_CD = FII.DATA_SOURCE_CD
AND H.VENDOR_INSTRUMENT_ID = FII.VENDOR_INSTRUMENT_ID
AND FII.FMR_CUSIP = IAI.ALTERNATE_ID
AND IAI.FI_INSTRUMENT_ID = I.FI_INSTRUMENT_ID
AND IAI.FI_INSTRUMENT_ID = S.FI_INSTRUMENT_ID(+)
AND IAI.FI_INSTRUMENT_ID = MBS.FI_INSTRUMENT_ID(+)
AND IAI.ALTERNATE_ID_TYPE_CODE = 'FMR_CUSIP'
GROUP BY INSTRUMENT_ID, FUND_OR_INDEX_CD, PRICING_DT, FI_INSTRUMENT_ID,
ISSUE_DESCRIPTION, TICKER, ISSUE_DT, STATED_MATURITY_DT, COUPON, STATE_CD,
COUNTRY_CD, CURRENCY_CD, CALLABLE_FLAG, PUTABLE_FLAG, INSURED_FLAG, AMT_CD,
REVENUE_SOURCE_CD, ISSUER_ID, NON_2A7_DIVER_ISSUER_ID, BLOOMBERG_MBS_TYPE,
MBS_AGENCY_CD, ORIGINAL_TERM, DS_CLASS1_CD, DS_CLASS2_CD, DS_CLASS3_CD,
GENERIC_INSTRUMENT_ID;Edited by: 953115 on Dec 18, 2012 4:30 AM
Similar Messages
-
How can I fill a table of objects from cursor with select * bulk collect???
Hi All, I have a TYPE as OBJECT
create or replace type dept2_o as object (
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
I can fill a table of objects from cursor with out select * bulk collect...., row by row
declare
TYPE dept2_t IS TABLE of dept2_o;
dept_o_tab dept2_t:=dept2_t();
i integer;
begin
i:=0;
dept_o_tab.extend(20);
for rec in (select * from dept) loop
i:=i+1;
dept_o_tab(i):=dept2_o(
deptno => rec.deptno,
dname => rec.dname,
loc =>rec.loc
end loop;
for k IN 1..i loop
dbms_output.put_line(dept_o_tab(k).deptno||' '||dept_o_tab(k).dname||' '||dept_o_tab(k).loc);
end loop;
end;
RESULT
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
But I can't fill a table of objects from cursor with select * bulk collect construction ...
declare
TYPE dept2_t IS TABLE of dept2_o;
dept_o_tab dept2_t:=dept2_t();
begin
dept_o_tab.extend(20);
select * bulk collect into dept_o_tab from dept;
end;
RESULT
ORA-06550: line 6, column 39;
PL/SQL: ORA-00947: not enough values ....
How can I fill a table of objects from cursor with select * bulk collect???create or replace type dept_ot as object (
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
create table dept
(deptno number
,dname varchar2(14)
,loc varchar2(13)
insert into dept values (10, 'x', 'xx');
insert into dept values (20, 'y', 'yy');
insert into dept values (30, 'z', 'zz');
select dept_ot (deptno, dname, loc)
from dept
create type dept_nt is table of dept_ot
declare
l_depts dept_nt;
begin
select dept_ot (deptno, dname, loc)
bulk collect
into l_depts
from dept
for i in l_depts.first .. l_depts.last
loop
dbms_output.put_line (l_depts(i).deptno);
dbms_output.put_line (l_depts(i).dname);
dbms_output.put_line (l_depts(i).loc);
end loop;
end;
/ -
how i use cursor in select query ?
I have 2 table
1. emp
2. dept
i want output like
Manager
a
b
c
Clark
d
e
f
HOD
g
h
i
by using cursorWe wouldn't help you to learn something if we just give you an answer.
Show some effort by yourself first, then ask what specific problem you encountered and you'll find this forum much more willingness to help. -
Hi,
Please let me know what is the difference between using OPEN CURSOR and SELECT statement WITH PACAKGE additon.
PraneethHi,
http://wiki.sdn.sap.com/wiki/display/ABAP/SELECTStatementsandCURSORstatement-Performance+Analysis.
and also check
http://help.sap.com/saphelp_46c/helpdata/en/fc/eb3b23358411d1829f0000e829fbfe/content.htm
cheers,
Bhavana -
How position the cursor in selected screen field insted of defualt field
Hi All,
Can you pls let me know , how to position the cursor in selected selection-screen filed. My requirement is i have 3 selection-screen fields, By default cursor is positioned on field screen field, but i want the cursor to be positioned at 3rd screen field to enter input, i want to do this coz i am filling first 2 screen fields with default values, so i need to position the cursor at 3 rd screen filed. let me know if it is possible to achieve this.
Thanks in advance.
Regards
VishalYou will need to point it to the LOW field.
report zrich_0001.
tables: reguh.
select-options :
s_bukrs for REGUH-ZBUKR default 'US10',
s_laufd for REGUH-LAUFD default sy-datum,
S_LAUFI FOR REGUH-LAUFI .
at selection-screen output.
<b>set cursor field 'S_LAUFI-LOW'.</b>
Welcome to SDN! PLease be sure to award points for helpful answer and mark you post as solved when solved completely. Thanks.
Regards,
Rich Heilman -
Need cursor to select type when dragged
There must be a preference to set but nothing I do helps...I know I've been able to do it before, but now when I put the selection arrow (black arrow) into a line of type by double clicking, I am unable to then drag the cursor to select the row of type. Triple clicking does nothing.
In other words, double clicking with the selection tool places the cursor in a word, but how to then highlight the word??
In Preferences, it doesn't matter if the 'Double Click to Isolate' box is checked or not and the 'Object Selection by Path Only' is unchecked.
I know it's something simple.
thanks!Kurt,
you are GOLD!
now if I can only remember this!
Best wishes! -
How do I stop my cursor from selecting things on the page? It shows up like I want to type something and when I press the down key it goes through all the words like its a word document.
== This happened ==
Every time Firefox opened
== June 27, 2010You have '''caret browsing''' enabled - that preference appears as set in your Troubleshooting Information.
http://kb.mozillazine.org/Accessibility.browsewithcaret
Hit the '''F7''' key to disable '''''caret browsing'''''. -
Hi, I have had a student ask me a question I cannot answer: what controls the color of the cursor that selects text when you use the "Edit Document Text" tool?
I have only seen it appear as a black semicircle over each letter, but at a different computer in our training facility, this same tool appears as an aqua-green highlight.
Is it a preference I never noticed? Thanks for any info.What version of Acrobat? What operating system?
-
Using Cursor in Select statements? How to do this?
I am getting an error whilt passing a cursor to a select clause:
SELECT dbms_xmlquery.getXML('select deptno, dname, '||
'cursor(select empno, ename, sal from emp e where e.deptno = d.deptno) employees '||
'from dept d where d.deptno in (10, 20)')
FROM dual;
DBMS_XMLQUERY.GETXML('SELECTDEPTNO'||'CURSORIS(SELECTEMPNOFROMEMPEWHEREE.DEPT=D.
<?xml version = '1.0'?>
<ERROR>oracle.xml.sql.OracleXMLSQLException: ORA-00923
: FROM keyword not found where expected
</ERROR
THIS IS DUE TO THE CURSOR AND ITS FROM STATEMENT?
CAN ANY ONE PLEASE GUIDE AS TO HOW TO USE CURSORS IN A SELECT STATEMENT PLEASE?Another duplicate thread. See my response Select CLAUSE error using CURSORS & XSU.Please SEE..
Cheers, APC -
Error while using a cursor on select
Hello,
I am using a cursor for a select statement below is the code.
OPEN CURSOR g_cursor FOR
SELECT bkpf~blart
bkpf~budat
bkpf~usnam
bsegc~bukrs
bsegc~belnr
bsegc~rfzei
bsegc~kunnr
bsegc~aunum
bsegc~ccins
bsegc~ccnum
bsegc~rcrsp
FROM bkpf
INNER JOIN bsegc
ON bkpf~bukrs = bsegc~bukrs AND
bkpf~belnr = bsegc~belnr AND
bkpf~gjahr = bsegc~gjahr
WHERE bkpf~budat IN s_budat
AND bsegc~bukrs IN s_bukrs
AND bsegc~rcrsp NE space.
DO.
FETCH NEXT CURSOR g_cursor APPENDING CORRESPONDING FIELDS OF TABLE i_bkpf PACKAGE SIZE g_pack.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDDO.
CLOSE CURSOR g_cursor.
CLEAR g_cursor.
The program gives me a dump on the fetch statement , can anyone help me understand the possible cause of this dump and suggest a solution?
Thanks,
Alok.Hi,
What is the message that you get in the Dump?
Regards
Prasenjit -
Cursor in select query in row to column format
Hi
I have the query like below
SELECT d.department_id,
CURSOR(SELECT e.first_name,
e.last_name
FROM employees e
WHERE e.department_id = d.department_id
) emps
FROM depatments dI want the result set in a format of Row To columns like
10 20
<cursor result> <cursor result>pls give ur suggestions how to achieve this in a efficient way?I tried the method of "max(decode(.." but dont think so its possible with thisvishnu prakash wrote:
Hi
I have the query like below
SELECT d.department_id,
CURSOR(SELECT e.first_name,
e.last_name
FROM employees e
WHERE e.department_id = d.department_id
) emps
FROM depatments dI want the result set in a format of Row To columns like
10 20
<cursor result> <cursor result>pls give ur suggestions how to achieve this in a efficient way?I tried the method of "max(decode(.." but dont think so its possible with thisNumber of column of a select query is static. Must be known at the parsing time itself. But in your case i dont think the number of columns will be limited to 2 (10 and 20) there could be many more.
You can search this forum to see how to PIVOT your data. There are lot of example. You can also try dynamic pivot. Its all in here, just search. -
Change the default "Hand" cursor to "Select" cursor?
I am making an interactive PDF, and I do not want the user to miss a link when they click, and be brought to the next page.
I think my only way to combat the scrolling problem is to make the "Select" object the default cursor when the user opens the document.
Is there a way to do this?
Also, is there any way to disable the scroll wheel on a PDF?
Thanks in advance! I'm using Adobe Acrobat X ProTry setting the check boxes in Edit>Preferences>General for the following:
- Make Hand tool select text & images
- Make Hand tool read articles
- Make Hand tool use mouse-wheel zooming
Adjust these as needed but does it make any difference? -
CURSOR Inside select statement
Hi,
I am trying to generate reports in XML Publisher using PL/SQL Procedure. Following is my procedure:
PROCEDURE XXDL_PO_VEN_SUMMARY_BY_VEN (ERR_BUFF VARCHAR2,
RETCODE VARCHAR2,
in_vendor_number IN VARCHAR2,
in_start_date IN VARCHAR2,
in_end_date IN VARCHAR2
IS
SQL_STMT VARCHAR2(15000);
result CLOB;
in_vendor_summary_from_date DATE;
in_vendor_summary_to_date DATE;
CURSOR_WHERE_CLAUSE VARCHAR2(1000);
BEGIN
in_vendor_summary_from_date := TO_DATE(in_start_date,'YYYY/MM/DD HH24:MI:SS');
in_vendor_summary_to_date := TO_DATE(in_end_date,'YYYY/MM/DD HH24:MI:SS');
--DBMS_OUTPUT.PUT_LINe('start date object'||in_vendor_summary_from_date);
--DBMS_OUTPUT.PUT_LINe('end date object'||in_vendor_summary_to_date);
IF in_start_date IS NOT NULL AND LENGTH(in_start_date) > 0 AND in_end_date IS NOT NULL AND LENGTH(in_end_date) > 0 THEN
CURSOR_WHERE_CLAUSE := 'AND TO_DATE(CONCAT(CONCAT(SUMMARY_MONTH, ''/''), SUMMARY_YEAR),''MM/YYYY'') BETWEEN'
||' '''||in_vendor_summary_from_date||''' AND '''||in_vendor_summary_to_date||'''';
END IF;
IF in_vendor_number IS NOT NULL AND LENGTH(in_vendor_number)>0 THEN
CURSOR_WHERE_CLAUSE := CURSOR_WHERE_CLAUSE || ' AND UPPER(VENDOR_NUM) LIKE UPPER('''||in_vendor_number||'%'')';
END IF;
--DBMS_OUTPUT.PUT_LINe('cursor where clause : '||CURSOR_WHERE_CLAUSE );
SQL_STMT := 'SELECT VS.VENDOR_NUM,' ||
' VS.VENDOR_NAME,' ||
' VS.SUMMARY_MONTH,' ||
' VS.SUMMARY_YEAR,' ||
' VS.ORD_TOTAL_CNT,' ||
' VS.ORD_DOLLAR_AMT,'||
' VS.RPO_TOTAL_CNT,' ||
' VS.RPO_DOLLAR_AMT,'||
' VS.CWA_TOTAL_CNT,' ||
' VS.CWA_DOLLAR_AMT,'||
' VS.STD_TOTAL_CNT,' ||
' VS.STD_DOLLAR_AMT,'||
' VS.BLM_TOTAL_CNT,' ||
' VS.BLM_DOLLAR_AMT,'||
' VS.INVOICE_TOTAL_CNT,' ||
' VS.INVOICE_DOLLAR_AMT, ' ||
' CURSOR (SELECT nvl(SUM( nvl(VS1.ORD_TOTAL_CNT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS1 '||
' ) TOTAL_ORDERS, ' ||
' CURSOR(SELECT nvl(SUM(nvl(VS2.ORD_DOLLAR_AMT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS2 '||
' ) TOTAL_DOLLARS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS3.RPO_TOTAL_CNT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS3 '||
' ) RPO_ORDERS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS4.RPO_DOLLAR_AMT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS4 '||
' ) RPO_DOLLARS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS5.CWA_TOTAL_CNT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS5 '||
' ) CWA_ORDERS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS6.CWA_DOLLAR_AMT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS6 '||
' ) CWA_DOLLARS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS7.STD_TOTAL_CNT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS7 '||
' ) STD_ORDERS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS8.STD_DOLLAR_AMT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS8 '||
' ) STD_DOLLARS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS9.BLM_TOTAL_CNT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS9 '||
' ) BLM_ORDERS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS10.BLM_DOLLAR_AMT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS10 '||
' ) BLM_DOLLARS,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS11.INVOICE_TOTAL_CNT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS11 '||
' ) TOTAL_INVOICES,' ||
' CURSOR(SELECT nvl(SUM(nvl(VS12.INVOICE_DOLLAR_AMT,0)),0) FROM STANPRS.VENDOR_SUMMARY VS12 '||
' ) INVOICE_DOLLARS, ' ||
' CURSOR(SELECT nvl(SUM(nvl(V1.RPO_TOTAL_CNT,0)),0)*100 / decode(SUM(nvl(V1.RPO_TOTAL_CNT,0)),0,1,NULL,1,SUM(nvl(V1.RPO_TOTAL_CNT,0))) FROM '|| ' STANPRS.VENDOR_SUMMARY V1 ) RPO_ORDERS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V2.RPO_DOLLAR_AMT,0)),0)*100 / decode(SUM(nvl(V2.RPO_DOLLAR_AMT,0)),0,1,NULL,1,SUM(nvl(V2.RPO_DOLLAR_AMT,0))) '|| 'FROM STANPRS.VENDOR_SUMMARY V2 ) RPO_DOLLARS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V3.CWA_TOTAL_CNT,0)),0)*100 / decode(SUM(nvl(V3.CWA_TOTAL_CNT,0)),0,1,NULL,1,SUM(nvl(V3.CWA_TOTAL_CNT,0))) FROM '|| 'STANPRS.VENDOR_SUMMARY V3 ) CWA_ORDERS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V4.CWA_DOLLAR_AMT,0)),0)*100 / decode(SUM(nvl(V4.CWA_DOLLAR_AMT,0)),0,1,NULL,1,SUM(nvl(V4.CWA_DOLLAR_AMT,0))) '||
'FROM STANPRS.VENDOR_SUMMARY V4 ) CWA_DOLLARS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V5.STD_TOTAL_CNT,0)),0)*100 / decode(SUM(nvl(V5.STD_TOTAL_CNT,0)),0,1,NULL,1,SUM(nvl(V5.STD_TOTAL_CNT,0))) FROM '|| 'STANPRS.VENDOR_SUMMARY V5 ) STD_ORDERS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V6.STD_DOLLAR_AMT,0)),0)*100 / decode(SUM(nvl(V6.STD_DOLLAR_AMT,0)),0,1,NULL,1,SUM(nvl(V6.STD_DOLLAR_AMT,0))) '||
'FROM STANPRS.VENDOR_SUMMARY V6 ) STD_DOLLARS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V7.BLM_TOTAL_CNT,0)),0)*100 / decode(SUM(nvl(V7.BLM_TOTAL_CNT,0)),0,1,NULL,1,SUM(nvl(V7.BLM_TOTAL_CNT,0))) '||
'FROM STANPRS.VENDOR_SUMMARY V7 ) BLM_ORDERS_PER,' ||
' CURSOR(SELECT NVL(SUM(nvl(V8.BLM_DOLLAR_AMT,0)),0)*100 / decode(SUM(nvl(V8.BLM_DOLLAR_AMT,0)),0,1,NULL,1,SUM(nvl(V8.BLM_DOLLAR_AMT,0))) '||
'FROM STANPRS.VENDOR_SUMMARY V8 ) BLM_DOLLARS_PER,' ||
'CURSOR(SELECT NVL(SUM(nvl(V9.INVOICE_TOTAL_CNT,0)),0)*100 / '||
'decode(SUM(nvl(V9.INVOICE_TOTAL_CNT,0)),0,1,NULL,1,SUM(nvl(V9.INVOICE_TOTAL_CNT,0))) FROM '||
'STANPRS.VENDOR_SUMMARY V9 ) TOTAL_INVOICES_PER, ' ||
'CURSOR(SELECT NVL(SUM(nvl(V10.INVOICE_DOLLAR_AMT,0)),0)*100/ decode(SUM(nvl(V10.INVOICE_DOLLAR_AMT,0)),0,1,NULL,1,SUM(nvl(V10.INVOICE_DOLLAR_AMT,0))) FROM STANPRS.VENDOR_SUMMARY V10 ) INVOICE_DOLLARS_PER' ||
' FROM STANPRS.VENDOR_SUMMARY VS' ||
' WHERE';
--DBMS_OUTPUT.PUT_LINE('STANPRS.VENDOR_SUMMARY V10 WHERE V10.VENDOR_NUM = VS.VENDOR_NUM ') INVOICE_DOLLARS_PER');
IF in_start_date IS NOT NULL AND LENGTH(in_start_date) > 0 AND in_end_date IS NOT NULL AND LENGTH(in_end_date) > 0 THEN
SQL_STMT := SQL_STMT || ' TO_DATE(CONCAT(CONCAT(VS.SUMMARY_MONTH, ''/''), VS.SUMMARY_YEAR),''MM/YYYY'') BETWEEN '
||' '''||in_vendor_summary_from_date||''' AND '''||in_vendor_summary_to_date||'''';
END IF;
IF in_vendor_number IS NOT NULL AND LENGTH(in_vendor_number)>0 THEN
IF SUBSTR(SQL_STMT, LENGTH(SQL_STMT)-4) = 'WHERE' THEN
SQL_STMT := SQL_STMT || ' UPPER(VS.VENDOR_NUM) LIKE UPPER('''||in_vendor_number||'%'')';
ELSE
SQL_STMT := SQL_STMT || ' AND UPPER(VS.VENDOR_NUM) LIKE UPPER('''||in_vendor_number||'%'')';
END IF;
END IF;
IF in_vendor_name IS NOT NULL AND LENGTH(in_vendor_name)>0 THEN
IF SUBSTR(SQL_STMT, LENGTH(SQL_STMT)-4) = 'WHERE' THEN
SQL_STMT := SQL_STMT || ' UPPER(VS.VENDOR_NAME) LIKE UPPER('''||in_vendor_name||'%'')';
ELSE
SQL_STMT := SQL_STMT || ' AND UPPER(VS.VENDOR_NAME) LIKE UPPER('''||in_vendor_name||'%'')';
END IF;
END IF;
IF SUBSTR(SQL_STMT, LENGTH(SQL_STMT)-4) = 'WHERE' THEN
SQL_STMT := SQL_STMT || ' VS.VENDOR_NUM = '''||in_vendor_number||'''';
END IF; */
SQL_STMT := SQL_STMT || ' ORDER BY VS.VENDOR_NUM, VS.VENDOR_NAME ASC';
--insert into XX_ERROR VALUES('Spriha',SQL_STMT);
SELECT DBMS_XMLGEN.GETXML(SQL_STMT) INTO result FROM DUAL;
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, result);
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLERRM);
END XXDL_PO_VEN_SUMMARY_BY_VEN ;
Now u can see in this Procedure that i have created so many cursors. i.e. for one function i have created one cursor. at present thesecursors are working fine. but the time i will put the where clause inside the cursors this will throw an ERROR ' ORA-01460 Unimplemented or Unreasonable Conversion Request'. Also these cursors are working with where clause but they are not working together. i.e when i will remove some cursors then i am not getting any error but at present i.e. without any where clause they all r working fine. Seriously i am not getting anything that what is happening. Can anyone help me? waiting for the reply....
Thanks
SprihaThis is pretty much a poster for ugly code.
Simplify this down to the bare minimum and debug it. Then add back the rest of the functionality.
But I am at a loss, looking at this code, as to why any cursor is either desirable or required. -
Cursor - dynamic select statement?
Hello!
I am passing a string into a function, and my string is a sql select statement. Is it possible to create a cursor using the string that is passed to the function?
Ex:
create or replace function "GETCOUNT"
(sqlstring in VARCHAR2)
return NUMBER
is
rec_count NUMBER; --I eventually want to return a count of the rows returned from my sqlstring
cursor c1 is sqlstring <--this is what I'd like to do...but how?
begin
... -- I haven't gotten to this point yet
end;
The error I get says 'Encountered the symbol "sqlstring" when expecting on of the following: ( select '
Thanks in advance!!Something like this ->
create or replace procedure gen_cur(str in varchar2,rc in out sys_refcursor)
is
str1 varchar2(500);
begin
str1 := 'select empno,ename,hiredate,sal
from emp
where '||str;
open rc for str1;
exception
when others then
dbms_output.put_line(sqlerrm);
end;
variable b refcursor
declare
src varchar2(300);
begin
src:= 'sal between 2000 and 7000';
gen_cur(src,:b);
exception
when others then
dbms_output.put_line(sqlerrm);
end;
print bRegards.
Satyaki De. -
Cursor Expression Select Statement
SELECT DNAME, CURSOR(SELECT SAL,COMM FROM EMP E WHERE E.DEPTNO = D.DEPTNO) FROM DEPT D
DNAME CURSOR(SELECTSAL,COM
ACCOUNTING CURSOR STATEMENT : 2
CURSOR STATEMENT : 2
SAL COMM
2450
5000
1300
RESEARCH CURSOR STATEMENT : 2
CURSOR STATEMENT : 2
SAL COMM
800
2975
3000
1100
3000
SALES CURSOR STATEMENT : 2
CURSOR STATEMENT : 2
SAL COMM
1600 300
1250 500
1250 1400
2850
1500 0
950
6 rows selected.
OPERATIONS CURSOR STATEMENT : 2
CURSOR STATEMENT : 2
no rows selected
Can we get rid of "CURSOR STATEMENT : 2"(Also I don't know what is its
significance there) from the output so that the output is in a readable format.
Thanks,
Neeraj GoelI want Data in the Format Like
deptno cnt1
cnt2
cntN
deptno cnt1
cntM
when you have a parent table (dept) and you sometimes
want to see the child rows (emp) but "on demand". For example, you fetch
"select deptno, cursor( from emp ) from dept" and the user says "hmmm, I'd like
to see the emps in deptno 20" -- great, you just fetch that cursor and display
them -- you didn't have to bring everyone else back with that query.
Also useful when you have more then 1:M relationship in a query
Now you can get a result set like:
deptno Sal Comm
Sal Comm
Sal
3 Sal, 2 Comm items and one deptno -- in one "row"
Thats why i used cursor Expression.
Thanks
Neeraj Goel
Maybe you are looking for
-
Why are both my Mac's so slow now after upgrading to Mavericks?
I have 2 Macs, an MB Pro Core i5, & Mac Mini Mid 2010 Core 2 Duo, (both 4/320's) and both have remained significantly slower, even after indexing, unless indexing takes days upon days. I understand why the Mini may have taken a speed dip, but a Core
-
I keep plugging in my iPhone to my computer, but iTunes says it does not recognize my phone and won't sync because it needs the latest version of iTunes (11.1 I believe?) to work. I have already downloaded the latest version of iTunes, and I have ret
-
Back-up in Two Separate Locations
I have a Mini-mac server and a Time Capsule for backup in my office. I would like to have a second backup of my files offsite - it is actually required by my insurance company. Is it possible to have the Mini-mac backup to the on-site Time Capsule an
-
Mismatched ABAP and JAVA SP Stacks
Hi, We have upgraded to BI7 and are on SP Stack 14. We want to use our existing portal to implement BI-JAVA. However our portal is currently at SP13... We plan to align the stacks at the next patching exercise, but until then would it be better to de
-
Special Character Issue in outbound file(Extra length)
I have a big issue when generating output file. I have data like party_name=00CONSTRUÇÕES JOSÉ VIEIRA, LDA. The data is for Spain client and so the need those special characters. So in the cursor query I used following convert function like CONVERT(T