IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

im getting sqlocde -104


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
dkalyan_c

New User


Joined: 06 Apr 2006
Posts: 17

PostPosted: Mon Jan 07, 2013 6:50 pm
Reply with quote

i'm getting sqlcode -104 when executing a select statement.

im getting below error:

SQLCODE = -104, ERROR: ILLEGAL SYMBOL "<END-OF-STATEMENT>". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: SELECTIVITY AND OR HAVING GROUP INTERSECT ORDER FETCH EXCEPT

SQLSTATE = 42601 SQLSTATE RETURN CODE
SQLERRP = DSNHPARS SQL PROCEDURE DETECTING ERROR

Does anyone encounterd such error before ? can u pls help
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Mon Jan 07, 2013 7:05 pm
Reply with quote

Quote:
can u pls help


what happened when You looked at the manuals ???
Back to top
View user's profile Send private message
Pandora-Box

Global Moderator


Joined: 07 Sep 2006
Posts: 1592
Location: Andromeda Galaxy

PostPosted: Mon Jan 07, 2013 7:09 pm
Reply with quote

Also when you ask for help it would have been great to post the SQL so someone can atleast try to understand what the problem could be
Back to top
View user's profile Send private message
dkalyan_c

New User


Joined: 06 Apr 2006
Posts: 17

PostPosted: Mon Jan 07, 2013 7:14 pm
Reply with quote

its a big sql. might give a tough time to understand.

Code:
SELECT                                                                     
T1.*,T2.*,                                                                 
'<?xml version="1.0"?><com:FIMCC_ITEM_REQ xmlns:com='||                     
'"http://www.cigna.com/fi/1/" xmlns:contribns="http://www.cigna.com'||     
'/fi/contrib/1/" xmlns:dclm'||                                             
'="http://www.cigna.com/fi/dclm/1/" xmlns:tns="http://www.cigna.com/'||     
'utility/1/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns'||         
':xsi="'||                                                                 
'http://www.w3.'||                                                         
'org/2001/XMLSchema-instance"><com:TrackingNumber><com:TraceNumber>'||     
REPLACE(VARCHAR((NEXT VALUE FOR GOKH.CF_TRACE_NUM )),'.','')||             
'</com:TraceNumber></com:TrackingNumber><com:SubscriberPersonID>'||         
REPLACE(VARCHAR(T2.membr_persn_id),'.','')||                               
'</com:SubscriberPersonID><com:ClientAccountNumber>'||                     
T2.acct_num||                                                               
'</com:ClientAccountNumber><com:Scheduled>0</com:Scheduled><com:'||         
'ResponseRequired>0</com:ResponseRequired>'||                               
CASE WHEN T1.DN <> T2.DN THEN                                               
'<com:RestrictionItem><com:ReimbFundProdType>'||                               
RTRIM(T2.reimb_fund_ty)||                                                     
'</com:ReimbFundProdType><com:FundSubType>'||                                 
RTRIM(T2.reimb_fund_sub_ty)||                                                 
'</com:FundSubType><com:PlanYearBeginDate>'||                                 
CHAR(T2.clnt_fund_acct_e_dt)||                                                 
'</com:PlanYearBeginDate><com:PlanYearEndDate>'||                             
CHAR(T2.clnt_fund_acct_c_dt)||                                                 
'</com:PlanYearEndDate><com:ServiceCategory>DN</com:ServiceCategory>'||       
'<com:AvailabilityIndicator>'||                                               
CASE WHEN T1.DN = 'N' THEN '0'                                                 
ELSE '1' END ||'</com:AvailabilityIndicator><com:ServiceDate>'||               
CHAR(T2.fund_Acct_e_dt)||                                                     
'</com:ServiceDate></com:RestrictionItem>'                                     
ELSE '' END ||                                                                 
CASE WHEN T1.GM <> T2.GM THEN                                                 
'<com:RestrictionItem><com:ReimbFundProdType>'||                               
RTRIM(T2.reimb_fund_ty)||                                                     
'</com:ReimbFundProdType><com:FundSubType>'||                                 
RTRIM(T2.reimb_fund_sub_ty)||                                               
'</com:FundSubType><com:PlanYearBeginDate>'||                               
CHAR(T2.clnt_fund_acct_e_dt)||                                               
'</com:PlanYearBeginDate><com:PlanYearEndDate>'||                           
CHAR(T2.clnt_fund_acct_c_dt)||                                               
'</com:PlanYearEndDate><com:ServiceCategory>GM</com:ServiceCategory>'||     
'<com:AvailabilityIndicator>'||                                             
CASE WHEN T1.GM = 'N' THEN '0'                                               
ELSE '1' END ||'</com:AvailabilityIndicator><com:ServiceDate>'||             
CHAR(T2.fund_Acct_e_dt)||                                                   
'</com:ServiceDate></com:RestrictionItem>'                                   
ELSE '' END ||                                                               
CASE WHEN T1.RX <> T2.RX THEN                                               
'<com:RestrictionItem><com:ReimbFundProdType>'||                             
RTRIM(T2.reimb_fund_ty)||                                                   
'</com:ReimbFundProdType><com:FundSubType>'||                               
RTRIM(T2.reimb_fund_sub_ty)||                                               
'</com:FundSubType><com:PlanYearBeginDate>'||                               
CHAR(T2.clnt_fund_acct_e_dt)||                                               
'</com:PlanYearBeginDate><com:PlanYearEndDate>'||                               
CHAR(T2.clnt_fund_acct_c_dt)||                                                 
'</com:PlanYearEndDate><com:ServiceCategory>RX</com:ServiceCategory>'||         
'<com:AvailabilityIndicator>'||                                                 
CASE WHEN T1.RX = 'N' THEN '0'                                                 
ELSE '1' END ||'</com:AvailabilityIndicator><com:ServiceDate>'||               
CHAR(T2.fund_Acct_e_dt)||                                                       
'</com:ServiceDate></com:RestrictionItem>'                                     
ELSE '' END ||                                                                 
CASE WHEN T1.VN <> T2.VN THEN                                                   
'<com:RestrictionItem><com:ReimbFundProdType>'||                               
RTRIM(T2.reimb_fund_ty)||                                                       
'</com:ReimbFundProdType><com:FundSubType>'||                                   
RTRIM(T2.reimb_fund_sub_ty)||                                                   
'</com:FundSubType><com:PlanYearBeginDate>'||                                   
CHAR(T2.clnt_fund_acct_e_dt)||                                                 
'</com:PlanYearBeginDate><com:PlanYearEndDate>'||                               
CHAR(T2.clnt_fund_acct_c_dt)||                                                 
'</com:PlanYearEndDate><com:ServiceCategory>VN</com:ServiceCategory>'||         
'<com:AvailabilityIndicator>'||                                               
CASE WHEN T1.VN = 'N' THEN '0'                                               
ELSE '1' END ||'</com:AvailabilityIndicator><com:ServiceDate>'||             
CHAR(T2.fund_Acct_e_dt)||                                                     
'</com:ServiceDate></com:RestrictionItem>'                                   
ELSE '' END ||                                                               
'</com:FIMCC_ITEM_REQ>'                                                       
FROM (                                                                       
SELECT A.acct_num,A.membr_persn_id,A.reimb_fund_ty,                           
A.reimb_fund_sub_ty,A.clnt_fund_acct_e_Dt,C.clnt_fund_acct_c_Dt,             
A.fund_acct_e_Dt,membr_fund_stat_Cd,--b.last_timestmp,                       
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'DN'                                 
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                           
THEN 'N' ELSE 'Y' END END) AS DN,                                             
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'GM'                                 
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                           
THEN 'N' ELSE 'Y' END END) AS GM,                                             
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'RX'                                 
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                           
THEN 'N' ELSE 'Y' END END) AS RX,                                       
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'VN'                           
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                     
THEN 'N' ELSE 'Y' END END) AS VN                                       
FROM                                                                   
GOKH.MEMBR_FUND_ACCT a                                                 
LEFT JOIN GOKH.MFA_DEBIT_CARD_SVC_CATEG B on                           
A.membr_fund_acct_id = B.membr_fund_acct_id                             
LEFt JOIN GOKH.CLNT_FUND_ACCT C ON C.acct_num = A.acct_num             
AND C.reimb_fund_ty = A.reimb_fund_ty                                   
AND C.reimb_fund_sub_ty = A.reimb_fund_Sub_ty                           
AND c.clnt_fund_Acct_e_dt = A.clnt_fund_acct_e_dt                       
WHERE  A.reimb_fund_sub_ty = 'BA'                                       
AND A.reimb_fund_ty IN ('HRAGM','HRAHA')                               
AND membr_fund_stat_cd = 'A'                                           
AND A.acct_num IN ('2465054','3155584','3174696','3177728',             
'3192572','3210664','3324668','3333594','3333751','3333762',           
'3334164','3313172')                                                   
--AND A.acct_num = &acct --'3315304'                                   
AND a.clnt_fund_acct_e_dt = '2012-01-01'                                   
--AND A.membr_persn_id = 486260380899308                                   
GROUP BY A.acct_num,A.membr_persn_id,A.reimb_fund_ty,                     
A.reimb_fund_sub_ty,A.clnt_fund_acct_e_Dt,c.clnt_fund_acct_c_Dt,           
A.fund_acct_e_Dt,membr_fund_stat_Cd--,b.last_timestmp                     
) T1 JOIN                                                                 
(                                                                         
SELECT A.acct_num,A.membr_persn_id,A.reimb_fund_ty,                       
A.reimb_fund_sub_ty,A.clnt_fund_acct_e_Dt,C.clnt_fund_acct_c_Dt,           
A.fund_acct_e_Dt,membr_fund_stat_Cd,--b.last_timestmp,                     
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'DN'                               
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                       
THEN 'N' ELSE 'Y' END END) AS DN,                                         
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'GM'                               
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                       
THEN 'N' ELSE 'Y' END END) AS GM,                                         
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'RX'                               
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                       
THEN 'N' ELSE 'Y' END END) AS RX,                                         
MAX(CASE WHEN DEBIT_CARD_SVC_CATEG_CD = 'VN'                           
THEN CASE WHEN DEBIT_CARD_SVC_CATEG_AVAIL_IND = 'Y'                     
THEN 'N' ELSE 'Y' END END) AS VN                                       
FROM                                                                   
GOKH.MEMBR_FUND_ACCT a                                                 
LEFT JOIN GOKH.MFA_DEBIT_CARD_SVC_CATEG B on                           
A.membr_fund_acct_id = B.membr_fund_acct_id                             
LEFt JOIN GOKH.CLNT_FUND_ACCT C ON C.acct_num =                         
A.acct_num                                                             
AND C.reimb_fund_ty = A.reimb_fund_ty                                   
AND C.reimb_fund_sub_ty = A.reimb_fund_Sub_ty                           
AND c.clnt_fund_Acct_e_dt = A.clnt_fund_acct_e_dt                       
WHERE  A.reimb_fund_sub_ty = 'CO'                                       
AND A.reimb_fund_ty IN ( 'HRAGM','HRAHA')                               
AND membr_fund_stat_cd = 'A'                                           
AND A.acct_num IN ('2465054','3155584','3174696',                       
'3177728',                                                             
'3192572','3210664','3324668','3333594','3333751',                     
'3333762','3334164','3313172')                                         
-- = &acct --'3315304'                                                 
AND a.clnt_fund_acct_e_dt = '2012-01-01'                               
--AND A.membr_persn_id = 486260380899308                               
GROUP BY A.acct_num,A.membr_persn_id,A.reimb_fund_ty,                 
A.reimb_fund_sub_ty,A.clnt_fund_acct_e_Dt,                             
c.clnt_fund_acct_c_Dt,A.fund_acct_e_Dt,membr_fund_stat_Cd             
--,b.last_timestmp                                                     
) T2 ON T1.acct_num = T2.acct_num                                     
AND T1.membr_persn_id = T2.membr_persn_id                             
AND T1.reimb_fund_ty = T2.reimb_fund_ty                               
AND T1.clnt_fund_acct_e_Dt    =T2.clnt_fund_acct_e_dt                 
and t1.fund_acct_e_Dt = t2.fund_acct_e_Dt                             
AND (T1.DN<>T2.DN OR T1.GM<>T2.GM OR T1.RX<>T2.RX OR T1.VN<>T2.VN)   
fetch first 2 rows only   
WITH UR;   

----
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Mon Jan 07, 2013 7:28 pm
Reply with quote

this kind of error happens when the SQL statement is badly written.
almost everybody experienced it at least once

so the only reasonable answer that You might get is ...
FIX Your SQl statement ...

also having the statement properly indented might have helped

nobody will spend time on it as it is posted now!

there too much is much noise from the XML stuff
work in stages

1) extract the data
2) add all the <constant> strings
Back to top
View user's profile Send private message
Pandora-Box

Global Moderator


Joined: 07 Sep 2006
Posts: 1592
Location: Andromeda Galaxy

PostPosted: Mon Jan 07, 2013 7:46 pm
Reply with quote

What you could do with such a big SQL is try executing it in parts so that it is easier to identify the problem

That is the best approach I think to identify the problematic statement

Edit: Also note codes with indentation is easier to understand ( Just a thought so you might be able to identify it yourself)
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DB2

 


Search our Forums:

Back to Top