DECODE Statement and argument limitations
Does anyone know the number of arguments that the DECODE statement will allow you to enter. I currently have 863 and it gives me an error message when i try and run the query.
Database Error - ORA-00939: too many arguments for function.
Thanks
Chris
I dont have the rights to create/edit database, just pull data from it.
Here is my attempt at the nest, but i stil get the error message about size.
DECODE(
DECODE(Point Of Sales His.End User Baan Account,'4260','Croteau; Mark','5001','Croteau; Mark','10714','Croteau; Mark','11966','Croteau; Mark','13739','Croteau; Mark','16233','Croteau; Mark','16736','Croteau; Mark','17276','Croteau; Mark','17377','Croteau; Mark','17387','Croteau; Mark','17436','Croteau; Mark','17452','Croteau; Mark','17485','Croteau; Mark','17681','Croteau; Mark','17741','Croteau; Mark','17794','Croteau; Mark','17799','Croteau; Mark','19364','Croteau; Mark','19462','Croteau; Mark','20205','Croteau; Mark','20995','Croteau; Mark','21916','Croteau; Mark','22269','Croteau; Mark','22629','Croteau; Mark','23562','Croteau; Mark','24078','Croteau; Mark','24079','Croteau; Mark','24550','Croteau; Mark','24796','Croteau; Mark','25196','Croteau; Mark','25506','Croteau; Mark','31494','Croteau; Mark','38067','Croteau; Mark','750457','Croteau; Mark'),
DECODE(Point Of Sales His.End User Baan Account,'314','Bruning; Barbara','500','Bruning; Barbara','3601','Bruning; Barbara','4142','Bruning; Barbara','4433','Bruning; Barbara','8219','Bruning; Barbara','8584','Bruning; Barbara','13839','Bruning; Barbara','15195','Bruning; Barbara','15307','Bruning; Barbara','15523','Bruning; Barbara','16394','Bruning; Barbara','16529','Bruning; Barbara','17111','Bruning; Barbara','17410','Bruning; Barbara','17471','Bruning; Barbara','19158','Bruning; Barbara','19219','Bruning; Barbara','20219','Bruning; Barbara','20308','Bruning; Barbara','20687','Bruning; Barbara','22364','Bruning; Barbara','22895','Bruning; Barbara','23411','Bruning; Barbara','23983','Bruning; Barbara','24343','Bruning; Barbara','24890','Bruning; Barbara','25828','Bruning; Barbara','25866','Bruning; Barbara','32850','Bruning; Barbara','38046','Bruning; Barbara','38048','Bruning; Barbara','38049','Bruning; Barbara','38051','Bruning; Barbara','38192','Bruning; Barbara','38237','Bruning; Barbara'),
DECODE(Point Of Sales His.End User Baan Account,'7781','Weber; Ed','8668','Weber; Ed','9016','Weber; Ed','12219','Weber; Ed','12669','Weber; Ed','13200','Weber; Ed','13529','Weber; Ed','13704','Weber; Ed','15453','Weber; Ed','16643','Weber; Ed','17127','Weber; Ed','17399','Weber; Ed','17400','Weber; Ed','17480','Weber; Ed','18064','Weber; Ed','18267','Weber; Ed','18914','Weber; Ed','20121','Weber; Ed','20177','Weber; Ed','21523','Weber; Ed','22155','Weber; Ed','22347','Weber; Ed','31405','Weber; Ed','31445','Weber; Ed','31542','Weber; Ed','31545','Weber; Ed','31696','Weber; Ed','31830','Weber; Ed','31960','Weber; Ed','32818','Weber; Ed','33111','Weber; Ed','34060','Weber; Ed','38061','Weber; Ed','38062','Weber; Ed','38063','Weber; Ed','38208','Weber; Ed','38213','Weber; Ed'),
DECODE(Point Of Sales His.End User Baan Account,'3455','Rogers; Mary Jill','6854','Rogers; Mary Jill','7277','Rogers; Mary Jill','7376','Rogers; Mary Jill','8223','Rogers; Mary Jill','8645','Rogers; Mary Jill','12063','Rogers; Mary Jill','15449','Rogers; Mary Jill','16086','Rogers; Mary Jill','16782','Rogers; Mary Jill','16940','Rogers; Mary Jill','17036','Rogers; Mary Jill','17232','Rogers; Mary Jill','17285','Rogers; Mary Jill','17316','Rogers; Mary Jill','17430','Rogers; Mary Jill','17462','Rogers; Mary Jill','17656','Rogers; Mary Jill','20015','Rogers; Mary Jill','20277','Rogers; Mary Jill','23184','Rogers; Mary Jill','23318','Rogers; Mary Jill','23387','Rogers; Mary Jill','23388','Rogers; Mary Jill','23689','Rogers; Mary Jill','23696','Rogers; Mary Jill','24157','Rogers; Mary Jill','24219','Rogers; Mary Jill','24336','Rogers; Mary Jill','24676','Rogers; Mary Jill','24681','Rogers; Mary Jill','24793','Rogers; Mary Jill','24827','Rogers; Mary Jill','25038','Rogers; Mary Jill','25245','Rogers; Mary Jill','25281','Rogers; Mary Jill','25416','Rogers; Mary Jill','25417','Rogers; Mary Jill','25418','Rogers; Mary Jill','25419','Rogers; Mary Jill','25420','Rogers; Mary Jill','25421','Rogers; Mary Jill','25422','Rogers; Mary Jill','25423','Rogers; Mary Jill','25424','Rogers; Mary Jill','25425','Rogers; Mary Jill','25426','Rogers; Mary Jill','25427','Rogers; Mary Jill','25428','Rogers; Mary Jill','25429','Rogers; Mary Jill','25430','Rogers; Mary Jill','25431','Rogers; Mary Jill','25432','Rogers; Mary Jill','25433','Rogers; Mary Jill','25434','Rogers; Mary Jill','25435','Rogers; Mary Jill','25436','Rogers; Mary Jill','25437','Rogers; Mary Jill','25438','Rogers; Mary Jill','25439','Rogers; Mary Jill','25440','Rogers; Mary Jill','25441','Rogers; Mary Jill','25442','Rogers; Mary Jill','25443','Rogers; Mary Jill','25444','Rogers; Mary Jill','25445','Rogers; Mary Jill','25446','Rogers; Mary Jill','25447','Rogers; Mary Jill','25448','Rogers; Mary Jill','25449','Rogers; Mary Jill','25450','Rogers; Mary Jill','25451','Rogers; Mary Jill','25452','Rogers; Mary Jill','25453','Rogers; Mary Jill','25454','Rogers; Mary Jill','25455','Rogers; Mary Jill','25456','Rogers; Mary Jill','25457','Rogers; Mary Jill','25458','Rogers; Mary Jill','25459','Rogers; Mary Jill','25460','Rogers; Mary Jill','25461','Rogers; Mary Jill','25462','Rogers; Mary Jill','25463','Rogers; Mary Jill','25464','Rogers; Mary Jill','25465','Rogers; Mary Jill','25466','Rogers; Mary Jill','25467','Rogers; Mary Jill','25468','Rogers; Mary Jill','25469','Rogers; Mary Jill','25470','Rogers; Mary Jill','25471','Rogers; Mary Jill','25472','Rogers; Mary Jill','25473','Rogers; Mary Jill','25474','Rogers; Mary Jill','25475','Rogers; Mary Jill','25476','Rogers; Mary Jill','25477','Rogers; Mary Jill','25478','Rogers; Mary Jill','25479','Rogers; Mary Jill','25488','Rogers; Mary Jill','25489','Rogers; Mary Jill','25522','Rogers; Mary Jill','25532','Rogers; Mary Jill','25541','Rogers; Mary Jill','25547','Rogers; Mary Jill','25570','Rogers; Mary Jill','25775','Rogers; Mary Jill','25845','Rogers; Mary Jill','25875','Rogers; Mary Jill','32164','Rogers; Mary Jill','33328','Rogers; Mary Jill','33844','Rogers; Mary Jill','38057','Rogers; Mary Jill','38060','Rogers; Mary Jill'),
DECODE(Point Of Sales His.End User Baan Account,'4188','Gallo; Peter','7520','Gallo; Peter','8371','Gallo; Peter','9524','Gallo; Peter','9647','Gallo; Peter','10768','Gallo; Peter','12788','Gallo; Peter','15248','Gallo; Peter','16641','Gallo; Peter','17284','Gallo; Peter','17330','Gallo; Peter','17331','Gallo; Peter','17332','Gallo; Peter','17333','Gallo; Peter','17334','Gallo; Peter','17335','Gallo; Peter','17336','Gallo; Peter','17347','Gallo; Peter','17431','Gallo; Peter','17598','Gallo; Peter','17763','Gallo; Peter','17801','Gallo; Peter','18529','Gallo; Peter','19071','Gallo; Peter','19328','Gallo; Peter','19572','Gallo; Peter','21003','Gallo; Peter','22975','Gallo; Peter','23548','Gallo; Peter','23562','Gallo; Peter','23985','Gallo; Peter','24088','Gallo; Peter','25665','Gallo; Peter','32145','Gallo; Peter','32905','Gallo; Peter','38053','Gallo; Peter','38059','Gallo; Peter','38070','Gallo; Peter','38071','Gallo; Peter','38072','Gallo; Peter','38200','Gallo; Peter'),
DECODE(Point Of Sales His.End User Baan Account,'142','Coady; Ed','1291','Coady; Ed','2420','Coady; Ed','7726','Coady; Ed','9334','Coady; Ed','10678','Coady; Ed','11487','Coady; Ed','12052','Coady; Ed','12223','Coady; Ed','15386','Coady; Ed','15597','Coady; Ed','16245','Coady; Ed','17277','Coady; Ed','17278','Coady; Ed','17469','Coady; Ed','17674','Coady; Ed','17675','Coady; Ed','17731','Coady; Ed','17826','Coady; Ed','18500','Coady; Ed','18791','Coady; Ed','19035','Coady; Ed','19100','Coady; Ed','19130','Coady; Ed','19131','Coady; Ed','19132','Coady; Ed','19133','Coady; Ed','19134','Coady; Ed','19135','Coady; Ed','19136','Coady; Ed','19137','Coady; Ed','19138','Coady; Ed','19139','Coady; Ed','19140','Coady; Ed','19141','Coady; Ed','19142','Coady; Ed','19143','Coady; Ed','19144','Coady; Ed','19145','Coady; Ed','19146','Coady; Ed','19147','Coady; Ed','19148','Coady; Ed','19149','Coady; Ed','19150','Coady; Ed','19151','Coady; Ed','19152','Coady; Ed','19175','Coady; Ed','19300','Coady; Ed','19533','Coady; Ed','19999','Coady; Ed','20900','Coady; Ed','21020','Coady; Ed','21053','Coady; Ed','21144','Coady; Ed','21470','Coady; Ed','21665','Coady; Ed','21720','Coady; Ed','21731','Coady; Ed','22829','Coady; Ed','22841','Coady; Ed','23457','Coady; Ed','24243','Coady; Ed','24257','Coady; Ed','24345','Coady; Ed','24383','Coady; Ed','25184','Coady; Ed','25354','Coady; Ed','25777','Coady; Ed','25865','Coady; Ed','30181','Coady; Ed','31349','Coady; Ed','38052','Coady; Ed','38224','Coady; Ed'),
DECODE(Point Of Sales His.End User Baan Account,'1106','Saale; Thomas','2726','Saale; Thomas','6840','Saale; Thomas','7785','Saale; Thomas','7834','Saale; Thomas','8464','Saale; Thomas','8843','Saale; Thomas','8897','Saale; Thomas','9074','Saale; Thomas','9809','Saale; Thomas','10259','Saale; Thomas','10301','Saale; Thomas','10313','Saale; Thomas','10314','Saale; Thomas','10604','Saale; Thomas','10662','Saale; Thomas','10788','Saale; Thomas','10789','Saale; Thomas','10790','Saale; Thomas','10791','Saale; Thomas','10792','Saale; Thomas','10793','Saale; Thomas','10794','Saale; Thomas','10795','Saale; Thomas','10796','Saale; Thomas','10798','Saale; Thomas','10799','Saale; Thomas','10800','Saale; Thomas','10801','Saale; Thomas','10802','Saale; Thomas','10803','Saale; Thomas','10804','Saale; Thomas','10805','Saale; Thomas','10806','Saale; Thomas','10807','Saale; Thomas','10808','Saale; Thomas','10809','Saale; Thomas','10810','Saale; Thomas','10811','Saale; Thomas','10812','Saale; Thomas','10813','Saale; Thomas','10814','Saale; Thomas','10815','Saale; Thomas','10816','Saale; Thomas','10817','Saale; Thomas','10818','Saale; Thomas','10819','Saale; Thomas','10820','Saale; Thomas','10821','Saale; Thomas','10822','Saale; Thomas','10823','Saale; Thomas','10824','Saale; Thomas','10825','Saale; Thomas','10826','Saale; Thomas','10827','Saale; Thomas','10828','Saale; Thomas','10829','Saale; Thomas','10830','Saale; Thomas','10831','Saale; Thomas','10832','Saale; Thomas','10833','Saale; Thomas','10834','Saale; Thomas','10835','Saale; Thomas','10836','Saale; Thomas','10837','Saale; Thomas','10838','Saale; Thomas','10839','Saale; Thomas','10840','Saale; Thomas','10841','Saale; Thomas','10842','Saale; Thomas','10843','Saale; Thomas','10845','Saale; Thomas','10846','Saale; Thomas','10853','Saale; Thomas','10854','Saale; Thomas','10855','Saale; Thomas','10856','Saale; Thomas','10858','Saale; Thomas','10859','Saale; Thomas','10860','Saale; Thomas','10906','Saale; Thomas','10916','Saale; Thomas','10960','Saale; Thomas','11012','Saale; Thomas','11420','Saale; Thomas','11723','Saale; Thomas','11872','Saale; Thomas','11939','Saale; Thomas','11940','Saale; Thomas','11941','Saale; Thomas','12650','Saale; Thomas','12657','Saale; Thomas','12717','Saale; Thomas','12749','Saale; Thomas','12756','Saale; Thomas','12792','Saale; Thomas','12847','Saale; Thomas','12969','Saale; Thomas','13063','Saale; Thomas','13323','Saale; Thomas','13413','Saale; Thomas','13433','Saale; Thomas','13475','Saale; Thomas','13493','Saale; Thomas','13754','Saale; Thomas','13859','Saale; Thomas','14204','Saale; Thomas','14612','Saale; Thomas','14615','Saale; Thomas','14748','Saale; Thomas','15147','Saale; Thomas','15149','Saale; Thomas','15473','Saale; Thomas','15551','Saale; Thomas','15613','Saale; Thomas','15659','Saale; Thomas','15872','Saale; Thomas','15891','Saale; Thomas','16360','Saale; Thomas','16837','Saale; Thomas','16849','Saale; Thomas','16909','Saale; Thomas','16981','Saale; Thomas','17048','Saale; Thomas','17153','Saale; Thomas','17402','Saale; Thomas','17833','Saale; Thomas','18095','Saale; Thomas','18226','Saale; Thomas','18342','Saale; Thomas','18900','Saale; Thomas','19331','Saale; Thomas','19651','Saale; Thomas','19667','Saale; Thomas','19850','Saale; Thomas','19856','Saale; Thomas','20054','Saale; Thomas','20069','Saale; Thomas','20120','Saale; Thomas','20454','Saale; Thomas','20753','Saale; Thomas','20758','Saale; Thomas','20765','Saale; Thomas','21860','Saale; Thomas','22062','Saale; Thomas','22548','Saale; Thomas','22772','Saale; Thomas','22966','Saale; Thomas','22972','Saale; Thomas','22989','Saale; Thomas','23623','Saale; Thomas','23816','Saale; Thomas','23817','Saale; Thomas','23893','Saale; Thomas','24014','Saale; Thomas','24022','Saale; Thomas','24122','Saale; Thomas','24158','Saale; Thomas','24179','Saale; Thomas','24248','Saale; Thomas','24329','Saale; Thomas','24338','Saale; Thomas','24366','Saale; Thomas','24481','Saale; Thomas','24517','Saale; Thomas','24611','Saale; Thomas','24618','Saale; Thomas','24816','Saale; Thomas','24820','Saale; Thomas','24880','Saale; Thomas','24924','Saale; Thomas','24925','Saale; Thomas','24936','Saale; Thomas','24985','Saale; Thomas','24998','Saale; Thomas','25191','Saale; Thomas','25326','Saale; Thomas','25327','Saale; Thomas','25598','Saale; Thomas','25821','Saale; Thomas'),
DECODE(Point Of Sales His.End User Baan Account,'620753','Saale; Thomas','620758','Saale; Thomas','620765','Saale; Thomas','623816','Saale; Thomas','623817','Saale; Thomas','624014','Saale; Thomas','624022','Saale; Thomas','624248','Saale; Thomas','624329','Saale; Thomas','624816','Saale; Thomas','624880','Saale; Thomas','625598','Saale; Thomas','899998','Saale; Thomas','E99998','Saale; Thomas','UPS001','Saale; Thomas'),
'Other')
Similar Messages
-
How to determine INT and FLOAT in a DECODE statement
Can anyone help me with the following problem:
I have a column defined as a NUMBER(15,4). I am trying to determine the java type using the getScale() method in ResultSetMetaData. When the scale is greater than 0, then it is an float, else it is an int. In this case, the getScale() method should return 4. However, when querying with a DECODE statement on the NUMBER(15,4) field, the getScale() method always returns 0 and the value is therefore converted to an int. Anyone knows how to solve this problem?
ThanksAlcides,
Oracle NUMBER data type is mapped to "java.math.BigDecimal" class.
You will find more information in the JDBC Developer's Guide and Reference which is part of the Oracle documentation and available from:
http://www.oracle.com/technology/documentation/index.html
Good Luck,
Avi. -
Case statement and Decode function both are not working in Select cursor.
I have tried both the Case statement and Decode function in Select cursor, but both the things are not working. On the other hand both the things work in just select statement.
See the first column in select (PAR_FLAG), I need to have this evaluated along with other fields. Can you please suggest some thing to make this work. And also I would like to
know the reason why decode is not working, I heard some where Case statement do not work with 8i.
Author : Amit Juneja
Date : 06/20/2011
Description:
Updates the Diamond MEMBER_MASTER table with the values from
INC.MEM_NJ_HN_MEMBER_XREF table.
declare
rec_cnt number(12) := 0;
commit_cnt number(4) := 0;
cursor select_cur is
Select DECODE(1,
(Select 1
from hsd_prov_contract R
where R.seq_prov_id = PM.seq_prov_id
and R.line_of_business = H.line_of_business
and R.PCP_FLAG = 'Y'
and R.participation_flag = 'P'
and SYSDATE between R.EFFECTIVE_DATE AND
NVL(R.TERM_DATE,
TO_DATE('31-DEC-9999', 'DD-MON-YYYY'))),
'Y',
'N') PAR_FLAG,
H.SEQ_ELIG_HIST,
H.SEQ_MEMB_ID,
H.SEQ_SUBS_ID,
H.SUBSCRIBER_ID,
H.PERSON_NUMBER,
H.EFFECTIVE_DATE,
H.TERM_DATE,
H.TERM_REASON,
H.RELATIONSHIP_CODE,
H.SEQ_GROUP_ID,
H.PLAN_CODE,
H.LINE_OF_BUSINESS,
H.RIDER_CODE_1,
H.RIDER_CODE_2,
H.RIDER_CODE_3,
H.RIDER_CODE_4,
H.RIDER_CODE_5,
H.RIDER_CODE_6,
H.RIDER_CODE_7,
H.RIDER_CODE_8,
H.MEDICARE_STATUS_FLG,
H.OTHER_STATUS_FLAG,
H.HIRE_DATE,
H.ELIG_STATUS,
H.PREM_OVERRIDE_STEP,
H.PREM_OVERRIDE_AMT,
H.PREM_OVERRIDE_CODE,
H.SEQ_PROV_ID,
H.IPA_ID,
H.PANEL_ID,
H.SEQ_PROV_2_ID,
H.SECURITY_CODE,
H.INSERT_DATETIME,
H.INSERT_USER,
H.INSERT_PROCESS,
H.UPDATE_DATETIME,
H.UPDATE_USER,
H.UPDATE_PROCESS,
H.USER_DEFINED_1,
H.SALARY,
H.PEC_END_DATE,
H.REASON_CODE,
H.PEC_WAIVED,
H.BILL_EFFECTIVE_FROM_DATE,
H.BILLED_THRU_DATE,
H.PAID_THRU_DATE,
H.SUBSC_DEPT,
H.SUBSC_LOCATION,
H.USE_EFT_FLG,
H.BENEFIT_START_DATE,
H.SEQ_ENROLLMENT_RULE,
H.MCARE_RISK_ACCRETION_DATE,
H.MCARE_RISK_DELETION_DATE,
H.MCARE_RISK_REFUSED_DATE,
H.COMMENTS,
H.USER_DEFINED_2,
H.USER_DEFINED_3,
H.RATE_TYPE,
H.PCPAA_OCCURRED,
H.PRIVACY_ON,
H.PCP_CHANGE_REASON,
H.SITE_CODE,
H.SEQ_SITE_ADDRESS_ID,
PM.seq_prov_id rendered_prov
from hsd_member_elig_history H,
INC.PCP_REASSIGN_RPRT_DATA P,
hsd_prov_master PM
where P.subscriber_id = H.subscriber_id
and P.rendered_pcp = PM.provider_ID
and H.elig_status = 'Y'
and (H.term_date is NULL or H.term_date >= last_day(sysdate))
order by H.Seq_memb_id;
begin
for C in select_cur loop
rec_cnt := rec_cnt + 1;
update hsd_member_elig_history
set term_date = TRUNC(SYSDATE - 1),
term_reason = 'PCPTR',
update_datetime = SYSDATE,
update_user = USER,
update_process = 'TD33615'
where seq_elig_hist = C.seq_elig_hist
and seq_memb_id = C.seq_memb_id;
INSERT INTO HSD_MEMBER_ELIG_HISTORY
(SEQ_ELIG_HIST,
SEQ_MEMB_ID,
SEQ_SUBS_ID,
SUBSCRIBER_ID,
PERSON_NUMBER,
EFFECTIVE_DATE,
TERM_DATE,
TERM_REASON,
RELATIONSHIP_CODE,
SEQ_GROUP_ID,
PLAN_CODE,
LINE_OF_BUSINESS,
RIDER_CODE_1,
RIDER_CODE_2,
RIDER_CODE_3,
RIDER_CODE_4,
RIDER_CODE_5,
RIDER_CODE_6,
RIDER_CODE_7,
RIDER_CODE_8,
MEDICARE_STATUS_FLG,
OTHER_STATUS_FLAG,
HIRE_DATE,
ELIG_STATUS,
PREM_OVERRIDE_STEP,
PREM_OVERRIDE_AMT,
PREM_OVERRIDE_CODE,
SEQ_PROV_ID,
IPA_ID,
PANEL_ID,
SEQ_PROV_2_ID,
SECURITY_CODE,
INSERT_DATETIME,
INSERT_USER,
INSERT_PROCESS,
UPDATE_DATETIME,
UPDATE_USER,
UPDATE_PROCESS,
USER_DEFINED_1,
SALARY,
PEC_END_DATE,
REASON_CODE,
PEC_WAIVED,
BILL_EFFECTIVE_FROM_DATE,
BILLED_THRU_DATE,
PAID_THRU_DATE,
SUBSC_DEPT,
SUBSC_LOCATION,
USE_EFT_FLG,
BENEFIT_START_DATE,
SEQ_ENROLLMENT_RULE,
MCARE_RISK_ACCRETION_DATE,
MCARE_RISK_DELETION_DATE,
MCARE_RISK_REFUSED_DATE,
COMMENTS,
USER_DEFINED_2,
USER_DEFINED_3,
RATE_TYPE,
PCPAA_OCCURRED,
PRIVACY_ON,
PCP_CHANGE_REASON,
SITE_CODE,
SEQ_SITE_ADDRESS_ID)
values
(hsd_seq_elig_hist.nextval,
C.SEQ_MEMB_ID,
C.SEQ_SUBS_ID,
C.SUBSCRIBER_ID,
C.PERSON_NUMBER,
trunc(SYSDATE),
C.TERM_DATE,
C.TERM_REASON,
C.RELATIONSHIP_CODE,
C.SEQ_GROUP_ID,
C.PLAN_CODE,
C.LINE_OF_BUSINESS,
C.RIDER_CODE_1,
C.RIDER_CODE_2,
C.RIDER_CODE_3,
C.RIDER_CODE_4,
C.RIDER_CODE_5,
C.RIDER_CODE_6,
C.RIDER_CODE_7,
C.RIDER_CODE_8,
C.MEDICARE_STATUS_FLG,
C.OTHER_STATUS_FLAG,
C.HIRE_DATE,
C.ELIG_STATUS,
C.PREM_OVERRIDE_STEP,
C.PREM_OVERRIDE_AMT,
C.PREM_OVERRIDE_CODE,
C.SEQ_PROV_ID,
C.IPA_ID,
C.PANEL_ID,
C.SEQ_PROV_2_ID,
C.SECURITY_CODE,
SYSDATE,
USER,
'TD33615',
SYSDATE,
USER,
'TD33615',
C.USER_DEFINED_1,
C.SALARY,
C.PEC_END_DATE,
C.REASON_CODE,
C.PEC_WAIVED,
C.BILL_EFFECTIVE_FROM_DATE,
C.BILLED_THRU_DATE,
C.PAID_THRU_DATE,
C.SUBSC_DEPT,
C.SUBSC_LOCATION,
C.USE_EFT_FLG,
C.BENEFIT_START_DATE,
C.SEQ_ENROLLMENT_RULE,
C.MCARE_RISK_ACCRETION_DATE,
C.MCARE_RISK_DELETION_DATE,
C.MCARE_RISK_REFUSED_DATE,
C.COMMENTS,
C.USER_DEFINED_2,
C.USER_DEFINED_3,
C.RATE_TYPE,
C.PCPAA_OCCURRED,
C.PRIVACY_ON,
C.PCP_CHANGE_REASON,
C.SITE_CODE,
C.SEQ_SITE_ADDRESS_ID);
commit_cnt := commit_cnt + 1;
if (commit_cnt = 1000) then
dbms_output.put_line('Committed updates for 1000 records.');
commit;
commit_cnt := 0;
end if;
end loop;
commit;
dbms_output.put_line('Total number of MEMBER_ELIG_HISTROY records inserted : ' ||
rec_cnt);
exception
when others then
raise_application_error(-20001,
'An error was encountered - ' || sqlcode ||
' -error- ' || sqlerrm);
end;user10305724 wrote:
I have tried both the Case statement and Decode function in Select cursor, but both the things are not working. Please define what you mean by not working even if your computer screen is near the internet we can't see it.
You should also look at the FAQ about how to ask a question
SQL and PL/SQL FAQ
Particularly *9) Formatting with {noformat}{noformat} Tags* and posting your version.
know the reason why decode is not working, I heard some where Case statement do not work with 8i.
Does this mean you are using 8i? Then scalar sub queries - selects within the select list, are not supported, along with CASE in PL/SQL.
Select DECODE(1,
* (Select 1
from hsd_prov_contract R
where R.seq_prov_id = PM.seq_prov_id
and R.line_of_business = H.line_of_business
and R.PCP_FLAG = 'Y'
and R.participation_flag = 'P'
and SYSDATE between R.EFFECTIVE_DATE AND
NVL(R.TERM_DATE,
TO_DATE('31-DEC-9999', 'DD-MON-YYYY')))*,
'Y',
'N') PAR_FLAG,
>
exception
when others then
raise_application_error(-20001,
'An error was encountered - ' || sqlcode ||
' -error- ' || sqlerrm);
http://tkyte.blogspot.com/2008/01/why-do-people-do-this.html -
Regarding case statement and decode function
Hi Experts,
I have question.....regarding case statement and decode statement....
Can you please explain me that which one will be efficient,to place in insert statement...
insert statement(
(case when ........then
case when ....then
else
end)
else
end)
or
insert statement(
case when.....then
decode(....)
else
end)
Can you people explain me which one is more efficient method?
Thanks in advance.......The are major differences to talk about in case of CASE vs DECODE, but performance wise both are pretty much the same.
Have a look at Tom's thread
Ask Tom "better performance - case or decode"
I would suggest to use CASE whenever possible. Don't worry about the performance part. -
CASE STATEMENTS AND CASE EXPRESSIONS IN ORACLE9I PL/SQL
제품 : PL/SQL
작성날짜 : 2001-11-13
CASE STATEMENTS AND CASE EXPRESSIONS IN ORACLE9I PL/SQL
=======================================================
PURPOSE
아래의 자료는 Case 문에서 oracle 8.1.7과 Oracle 9i의 New Feature로 8.1.7에서는
sqlplus 에서만 가능했고, 9i 부터는 pl/sql 까지 가능하다.
Explanation
1. Oracle 8.1.7 Feature
Oracle 8.1.7 에서 Case 문은 Decode 문과 유사하지만, 기존의 decode 문을 쓰는 것보다
더 많은 확장성과 Logical Power와 좋은 성능을 제공한다. 주로 나이와 같이 category 별로
나눌때 주로 사용하고 Syntex는 아래와 같다.
CASE WHEN <cond1> THEN <v1> WHEN <cond2> THEN <v2> ... [ELSE <vn+1> ] END
각각의 WHEN...THEN 절의 argument 는 255 까지 가능하고 이 Limit를 해결하려면
Oracle 8i Reference를 참조하면 된다.
The maximum number of arguments in a CASE expression is 255, and each
WHEN ... THEN pair counts as two arguments. To avoid exceeding the limit of 128 choices,
you can nest CASE expressions. That is expr1 can itself be a CASE expression.
Case Example : 한 회사의 모든 종업원의 평균 봉급을 계산하는데 봉급이 $2000보다 작은경우
2000으로 계산을 하는 방법이 pl/sql을 대신하여 case function을 사용할 수 있다.
SELECT AVG(CASE when e.sal > 2000 THEN e.sal ELSE 2000 end) FROM emp e;
Case Example : 나이를 column으로 가지고 있는 customer table을 예로 들어보자.
SQL> SELECT
2 SUM(CASE WHEN age BETWEEN 70 AND 79 THEN 1 ELSE 0 END) as "70-79",
3 SUM(CASE WHEN age BETWEEN 80 AND 89 THEN 1 ELSE 0 END) as "80-89",
4 SUM(CASE WHEN age BETWEEN 90 AND 99 THEN 1 ELSE 0 END) as "90-99",
5 SUM(CASE WHEN age > 99 THEN 1 ELSE 0 END) as "100+"
6 FROM customer;
70-79 80-89 90-99 100+
4 2 3 1
1 SELECT
2 (CASE WHEN age BETWEEN 70 AND 79 THEN '70-79'
3 WHEN age BETWEEN 80 and 89 THEN '80-89'
4 WHEN age BETWEEN 90 and 99 THEN '90-99'
5 WHEN age > 99 THEN '100+' END) as age_group,
6 COUNT(*) as age_count
7 FROM customer
8 GROUP BY
9 (CASE WHEN age BETWEEN 70 AND 79 THEN '70-79'
10 WHEN age BETWEEN 80 and 89 THEN '80-89'
11 WHEN age BETWEEN 90 and 99 THEN '90-99'
12* WHEN age > 99 THEN '100+' END)
SQL> /
AGE_G AGE_COUNT
100+ 1
70-79 4
80-89 2
90-99 3
Example
2. Oracle 9i Feature
Oracle 9i부터는 pl/sql에서도 case문을 사용할 수 있으면 이것은
복잡한 if-else 구문을 없애고, C언어의 switch문과 같은 기능을 한다.
아래의 9i pl/sql Sample 및 제약 사항을 보면 아래와 같다.
Sample 1:
A simple example demonstrating the proper syntax for a case
statement
using a character variable as the selector. See the section entitled
'Restrictions' at the end of this article for details on which PLSQL
datatypes may appear as a selector in a case statement or
expression.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
declare
achar char(1) := '&achar';
begin
case achar
when 'A' then dbms_output.put_line('The description was Excellent');
when 'B' then dbms_output.put_line('The description was Very Good');
when 'C' then dbms_output.put_line('The description was Good');
when 'D' then dbms_output.put_line('The description was Fair');
when 'F' then dbms_output.put_line('The description was Poor');
else dbms_output.put_line('The description was No such Grade');
end case;
end;
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Sample 2:
A simple example demonstrating the proper syntax for a case
expression
using a character variable as the selector. See the section entitled
'Restrictions' at the end of this article for details on which PLSQL
datatypes may appear as a selector in a case statement or
expression.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
declare
achar char(1) := '&achar';
description varchar2(20);
begin
description :=
case achar
when 'A' then 'Excellent'
when 'B' then 'Very Good'
when 'C' then 'Good'
when 'D' then 'Fair'
when 'F' then 'Poor'
else 'No such grade'
end;
dbms_output.put_line('The description was ' || description);
end;
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
NOTE: The above simple samples demonstrate two subtle differences in the
syntax
required for case statements and expressions.
1) A case STATEMENT is terminated using the 'end case' keywords; a
case
EXPRESSION is terminated using only the 'end' keyword.
2) Each item in a case STATEMENT consists of one or more
statements, each
terminated by a semicolon. Each item in a case expression
consists of
exactly one expression, not terminated by a semicolon.
Sample 3:
Sample 1 demonstrates a simple case statement in which the selector
is
compared for equality with each item in the case statement body.
PL/SQL
also provides a 'searched' case statement as an alternative; rather
than
providing a selector and a list of values, each item in the body of
the
case statement provides its own predicate. This predicate can be any
valid boolean expression, but only one case will be selected.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
declare
achar char(1) := '&achar';
begin
case
when achar = 'A' then dbms_output.put_line('The description was
Excellent');
when achar = 'B' then dbms_output.put_line('The description was Very
Good');
when achar = 'C' then dbms_output.put_line('The description was
Good');
when achar = 'D' then dbms_output.put_line('The description was
Fair');
when achar = 'F' then dbms_output.put_line('The description was
Poor');
else dbms_output.put_line('The description was No such Grade');
end case;
end;
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Sample 4:
This sample demonstrates the proper syntax for a case expression of
the
type discussed in Sample 3 above.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
declare
achar char(1) := '&achar';
description varchar2(20);
begin
description :=
case
when achar = 'A' then 'Excellent'
when achar = 'B' then 'Very Good'
when achar = 'C' then 'Good'
when achar = 'D' then 'Fair'
when achar = 'F' then 'Poor'
else 'No such grade'
end;
dbms_output.put_line('The description was ' || description);
end;
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Sample 5:
This sample demonstrates the use of nested case statements. It is
also
permissable to nest case expressions within a case statement (though
it
is not demonstrated here), but nesting of case statements within a
case
expression is not possible since statements do not return any value.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
declare
anum1 number := &anum1;
anum2 number := &anum2;
answer number;
begin
case anum1
when 1 then case anum2
when 1 then answer := 10;
when 2 then answer := 20;
when 3 then answer := 30;
else answer := 999;
end case;
when 2 then case anum2
when 1 then answer := 15;
when 2 then answer := 25;
when 3 then answer := 35;
else answer := 777;
end case;
else answer := 555;
end case;
dbms_output.put_line('The answer is ' || answer);
end;
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Sample 6:
This sample demonstrates nesting of case expressions within another
case
expression. Note again the absence of semicolons to terminate both
the
nested case expression and the individual cases of those
expressions.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
declare
anum1 number := &anum1;
anum2 number := &anum2;
answer number;
begin
answer :=
case anum1
when 1 then case anum2
when 1 then 10
when 2 then 20
when 3 then 30
else 999
end
when 2 then case anum2
when 1 then 15
when 2 then 25
when 3 then 35
else 777
end
else 555
end;
dbms_output.put_line('The answer is ' || answer);
end;
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Although PL/SQL anonymous blocks have been used in all of the examples
so far,
case statements and expressions can also be used in procedures,
functions, and
packages with no changes to the syntax.
The following samples are included for completeness and demonstrate the
use of
case statements and/or expressions in each of these scenarios.
Sample 7:
This sample demonstrates use of a case statement in a stored
procedure.
Note that this sample also demonstrates that it is possible for each
of
the items in the case body to consist of more than one statement.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
create or replace procedure testcasestmt ( anum IN number ) is
begin
case
when anum = 1 then dbms_output.put_line('The number was One');
dbms_output.put_line('In case 1');
when anum = 2 then dbms_output.put_line('The number was Two');
dbms_output.put_line('In case 2');
when anum = 3 then dbms_output.put_line('The number was Three');
dbms_output.put_line('In case 3');
when anum = 4 then dbms_output.put_line('The number was Four');
dbms_output.put_line('In case 4');
when anum = 5 then dbms_output.put_line('The number was Five');
dbms_output.put_line('In case 5');
else dbms_output.put_line('The description was Invalid input');
dbms_output.put_line('In the else case');
end case;
end;
exec testcasestmt(&anum);
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Sample 8:
This sample demonstrates the use of a case statement in a stored
package.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
create or replace package testpkg2 is
procedure testcasestmt ( anum IN number );
function testcasestmt_f ( anum IN number ) return number;
end testpkg2;
create or replace package body testpkg2 is
procedure testcasestmt ( anum IN number ) is
begin
case
when anum = 1 then dbms_output.put_line('The number was One');
dbms_output.put_line('In case 1');
when anum = 2 then dbms_output.put_line('The number was Two');
dbms_output.put_line('In case 2');
when anum = 3 then dbms_output.put_line('The number was Three');
dbms_output.put_line('In case 3');
when anum = 4 then dbms_output.put_line('The number was Four');
dbms_output.put_line('In case 4');
when anum = 5 then dbms_output.put_line('The number was Five');
dbms_output.put_line('In case 5');
else dbms_output.put_line('The description was Invalid input');
dbms_output.put_line('In the else case');
end case;
end;
function testcasestmt_f ( anum IN number ) return number is
begin
case
when anum = 1 then dbms_output.put_line('The number was One');
dbms_output.put_line('In case 1');
when anum = 2 then dbms_output.put_line('The number was Two');
dbms_output.put_line('In case 2');
when anum = 3 then dbms_output.put_line('The number was Three');
dbms_output.put_line('In case 3');
when anum = 4 then dbms_output.put_line('The number was Four');
dbms_output.put_line('In case 4');
when anum = 5 then dbms_output.put_line('The number was Five');
dbms_output.put_line('In case 5');
else dbms_output.put_line('The description was Invalid input');
dbms_output.put_line('In the else case');
end case;
return anum;
end;
end testpkg2;
exec testpkg2.testcasestmt(&anum);
variable numout number
exec :numout := testpkg2.testcasestmt_f(&anum);
print numout
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
Sample 9:
This sample demonstrates the use of a case expression in a stored
package.
- - - - - - - - - - - - - - - - Code begins here - - - - - - - - - - - -
set serveroutput on
create or replace package testpkg is
procedure testcase ( anum IN number );
function testcase_f ( anum IN number ) return number;
end testpkg;
create or replace package body testpkg is
procedure testcase ( anum IN number ) is
anumber number := anum;
anothernum number;
begin
anothernum :=
case
when anumber = 1 then anumber + 1
when anumber = 2 then anumber + 2
when anumber = 3 then anumber + 3
when anumber = 4 then anumber + 4
when anumber = 5 then anumber + 5
else 999
end;
dbms_output.put_line('The number was ' || anothernum);
end;
function testcase_f ( anum IN number ) return number is
anumber number := anum;
anothernum number;
begin
anothernum :=
case
when anumber = 1 then anumber + 1
when anumber = 2 then anumber + 2
when anumber = 3 then anumber + 3
when anumber = 4 then anumber + 4
when anumber = 5 then anumber + 5
else 999
end;
dbms_output.put_line('The number was ' || anothernum);
return anothernum;
end;
end testpkg;
variable numout number
exec testpkg.testcase(&anum);
exec :numout := testpkg.testcase_f(&anum);
print numout
- - - - - - - - - - - - - - - - Code ends here - - - - - - - - - - - -
제약 사항
다음의 databasetype은 case 문에서 지원되지 않는다.
BLOB
BFILE
VARRAY
Nested Table
PL/SQL Record
PL/SQL Version 2 tables (index by tables)
Object type (user-defined type)
All of these types except for object types face a similar restriction
even for if statements (i.e. they cannot be compared for equality directly) so this is unlikely to change for these types. Lack of support for object types is simply an implementation restriction which may be relaxed in future releases.
Reference Ducumment
Oracle 8.1.7 Manual
NOTE:131557.1I have done the following code but doesn't
like the statement of - "case(butNext)". What do you mean "doesn't like" -- did you get an error message?
I'm guessing it won't compile because you're trying to switch on a Button.
I tried something
like "g.fillOval(100,50,70,90, BorderLayout.NORTH)"...no that doesn't make sense. You only use BorderLayout.NORTH when you're adding components to a BorderLayout layout manager. An oval is not a component and fillOval isn't adding a component and Graphics is not a Panel or layout manager.
Would appreciate it if someone could tell me how to position
shapes using the graohic method. I think the problem is that you're confusing shapes with components. -
Logical Standby SQL Apply Using Incorrect Decode Statement
We are seeing statements erroring out on our logical standby that have been rewritten (presumably by sql apply) with decode statements that don't appear to be correct. For example, here is one of the rewritten statements.
update /*+ streams restrict_all_ref_cons */ "CADPROD"."OMS_SQL_STATEMENT" p
set *"APPLICATION"=decode(:1,'N',"APPLICATION",:2)*,
"STATEMENT"=dbms_reputil2.get_final_lob(:3,"STATEMENT",:4)
where (:5='N' or(1=1 and (:6='N' or(dbms_lob.compare(:7,"STATEMENT")=0)or(:7 is null and "STATEMENT" is null)))) and(:8="APPLICATION")
The problem comes in, we believe, with the attempt to write the value "APPLICATION" to the application column which is only a 10 character field. the value for the :1 bind variable is "N" and the value for :2 is null.
We see the following error on the logical standby:
ORA-00600: internal error code, arguments: [kgh_heap_sizes:ds], [0x01FCDBE60], [], [], [], [], [], []
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [kxtoedu+54] [PC:0x2542308] [ADDR:0xFFFFFFFFFFFFFFFF] [UNABLE_TO_READ] []
ORA-12899: value too large for column "CADPROD"."OMS_SQL_STATEMENT"."APPLICATION" (actual: 19576, maximum: 10)
Is this a configuration issue or is it normal for SQL Apply to convert statements from logminer into decode statements?
We have an Oracle 10.2.0.4 database running on windows 2003 R2 64-bit os. We have 3 physical and 2 logical standby's, no problems on the physical standbys.Hello;
I noticed some of your parameters seem to be wrong.
fal_client - This is Obsolete in 11.2
You have db_name='test' on the Standby, it should be 'asadmin'
fal_server=test is set like this on the standby, it should be 'asadmin'
I might consider changing VALID_FOR to this :
VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)Would review 4.2 Step-by-Step Instructions for Creating a Logical Standby Database of Oracle Document E10700-02
Document 278371.1 is showing its age in my humble opinion.
-----Wait on this until you fix your parameters----------------------
Try restarting the SQL Apply
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATEI don't see the parameter MAX_SERVERS, try setting it to 8 times the number of cores.
Use these statements to trouble shoot :
SELECT NAME, VALUE, UNIT FROM V$DATAGUARD_STATS;
SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE ;TRANSACTIONS%';
SELECT COUNT(1) AS IDLE_PREPARERS FROM V$LOGSTDBY_PROCESS WHERE
TYPE = 'PREPERER' AND STATUS_CODE = 16166;Best Regards
mseberg
Edited by: mseberg on Feb 14, 2012 7:37 AM -
Help! format of decode statements with between or signs ?
Looking for an example of a decode statement with either a between/and or < > signs in the comparison field.
I have tried several variations, but none seem to work. Any help would be appreciated.
Here's a sample that doesn't work.
Select course_no, section_no, capacity, decode(capacity, (capacity < 12), Less than 12, (capacity between 13 and 15), 13-15, More than 15) from section;
Thanks in advanceHi,
There is a limitation to the Case function, as it cannot be used in the PL/SQL (atleast upto Oracle 8i). Therefore, the only option left is Decode.
If you have to compare the values like capacity < 12 then display Less than 12. You can write it using combination of other functions.
For e.g. follow the steps below:-
1)If you deduct 12 from capacity : (capacity-12) [it will give result as +ve, 0 or -ve.]
2)If you have to narrow down the values to above three options, use function sign:
SIGN(capacity-12) [will result into +1, 0 or -1]
3)Then compare the values using Decode:
DECODE(SIGN(capacity-12),-1,Less than 12,Greater than or equal to 12)
The Decode can be used inside Decode(nested Decode) in above steps to compare more than one values (range between) to get the desired result. Hope have made it clear enough. If not, please let me know.
Cheers.
Yogesh D. -
I had the table as follows :
ITEMCODE TEDCODE AMOUNT
AAAA BED 12345
AAAA EDU CESS 1234
AAAA SHECESS 123
AAAA CST 3% 12456
AND SO ON.
Now i want to convert the rows in Column heading TEDCODE to columns. But i want the specific rows like BED, EDU CESS, SHECESS in one column suppose EXCISE, and the other row i.e CST 3% in other column under heading TAX.
Please help me how i can do it using Decode statement.SQL> create table t (itemcode varchar(4),tedcode varchar(10),amount number);
Table created.
SQL> insert into t values('AAAA','BED',12345);
1 row created.
SQL> insert into t values('AAAA','EDU CESS',1234);
1 row created.
SQL> insert into t values('AAAA','SHECESS',123);
1 row created.
SQL> insert into t values('AAAA','CST 3%',12456);
1 row created.
SQL> select itemcode, tedcode,decode(tedcode,'CST 3%',null,amount) EXCISE, decod
e(tedcode,'CST 3%',amount,null) TAX from t;
ITEM TEDCODE EXCISE TAX
AAAA BED 12345
AAAA EDU CESS 1234
AAAA SHECESS 123
AAAA CST 3% 12456 -
Calling a stored proc in a decode statement
I am having a problem calling a store procedure in a SQL statement. I am using Oracle's thin driver.
I have been able to do the following:
select col1,
col2,
SOME_STORED_PROC(var1,var2,col3)
from some_table
where col3 = var3
However, when I try to call a stored procedure with-in a decode statement, the call fails. I have tested the call from a sql prompt and it works fine but it does not work when I execute the query in my Java program.
Here is an example of what I am trying to do:
select col1,
col2,
decode((select col1
from some_other_table
where col2 = var1), 'X',
SOME_STORED_PROC(var1,var2,col3),
SOME_OTHER_STORED_PROC(var2,var4,col5))
from some_table
where col3 = var3
Does anyone know if this type of call is not supported in Oracle's thin driver?
Thanks,
Cory
nullI played around with a [parallel PL/SQL launcher|http://www.williamrobertson.net/feed/2008/08/parallel-plsql-launcher-update.html] a while ago, but I wouldn't call it production-ready.
You could also [submit procedure calls in background|http://www.williamrobertson.net/feed/2005/12/job-control-object.html] using DBMS_ALERT to track completion status. -
Hi
I am trying to achieve the following in my report:
If an employee has a surname of . (dot) or a first name of . (dot), the report should not display a dot. An employee's name is made up of surname, first name and middle name which should all be concatenated together. To try to achieve this, I have the following statement in my report:
decode(e.Surname, '.', ( LTRIM(RTRIM((INITCAP(e.FIRST_NAME)))||' '||INITCAP(e.MIDDLE_NAME)) ) ,
e.FIRST_NAME, '.', ( LTRIM(RTRIM((INITCAP(e.Surname)))||' '||INITCAP(e.MIDDLE_NAME)) ) ,
( LTRIM(RTRIM((INITCAP(e.SURNAME )))||', '||INITCAP(e.FIRST_NAME)||' '||INITCAP(e.MIDDLE_NAME)) ) ) as emp_name
FROM Employee e
Problem: The above statement is only working for those employees with surname of . (dot). It's not working for first names of dot. How can I use the decode statement OR is there any other way of doing it without using the CASE statement?
It seems my decode statement doesn't work with 2 different fields (surname, firstname) being tested within one decode statement.Thanks.Thank you so much InoL . I have used the ltrim with Replace but now have a new problem.
Because I am joining Surname, First name and middle name together and put a comma after the Surname, the name now appears as follows:
, Maria Ane (if Surname is a dot)
Boiler, (if first name is a dot)
I would like to get rid of a comma and only have comma when surname or first name does not have a dot, i.e. for those people with full names e.g. Blake, Anna Marie.
InoL, how can I achieve this? Thanks. -
please can someone kindly code the following line of SQL using the DECODE statement:
case when Student_Status in ('Registered','Repeat','Referral', 'Deferral')and GRADE <> 'MISSING' then EXAM1_RESULT else Null end as Valid_EX1
It will be most appreciated.
Thanksuser607929 wrote:
I'm ever so sorry, I keep sending the same Wrong thing.
This is what i need translated to DECODE:
"case when
Student_Status in ('Registered','Repeat','Referral', 'Deferral') and GRADE is not 'MISSING'
then EXAM1_RESULT
else Null end as Valid_EX1"
the issue is with the NOT 'MISSING' string.Check this. Just re-arrange of Andrés Muchiut post
DECODE (
STUDENT_STATUS
,'Registered',DECODE(GRADE,'MISSING',null,EXAM1_RESULT)
,'Repeat' ,DECODE(GRADE,'MISSING',null,EXAM1_RESULT)
,'Referral' ,DECODE(GRADE,'MISSING',null,EXAM1_RESULT)
,'Deferral' ,DECODE(GRADE,'MISSING',null,EXAM1_RESULT)
, null) Valid_EX1Hope this may help you... -
Decode statement in a mapping involve Source Text File & Table.
Hi All,
Oracle 9i Warehouse Builder Client: 9.2.0.4.0
Oracle 9i Warehouse Builder Repository: 9.2.0.2.0
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
Does OWB allow to use Decode statement in a mapping involves Source Text File and Oracle Table.
My understanding is it's not possible, since OWB makes use of Sqlloader. For this work arround could be make use of External Table instead of Text Flat File.
However I came across an old posting (June-2003) which says that this feature is available OWB 9.2.
Following is the url:
IF THEN LOGIC from Flat File to Table
Can someone please confirm this?
Thanks in Advance.
Regards,
VidyanandHi all,
If you want to validate correctly this mapping you must to :
1. Right click on the mapping, then Configure
2. Right click on Sql Loader Data Files, then Create
3. Verify that the location name is correct and complete the Data File Name
4. OK
The validation is now OK.
I hope it will be help you
Best Regards
Samy -
Decode Statement Inside the Case statement
Can we use Decode Statement inside a CASE Statement as show below --
It is giving an error -- Is the a better way to write with out any error
create or replace
function test (a varchar2) RETURN VARCHAR2
is
m varchar2(20);
begin
m :=
CASE
WHEN a IN (
'1009' -- (soon obsolete)
,'1010'
,'1019'
,'1051'
,'XGP'
,'XSC')
THEN (SELECT DECODE(v_lef_cd,'NAM','71','GLB','99','01') into m FROM DUAL)
-- ) THEN '01' -- UNITED STATES OF AMERICA
WHEN a IN (
'1069' -- South Africa
,'SAO' -- South Africa
,'SA' -- South Africa
) THEN '26' -- South Africa
ELSE NULL
END;
return m;
end;Hi,
You can only use DECODE in SQL statements.
Your SELECT DECODE (...) INTO statement would work anywhere a PL/SQL statement is allowed; but PL/SQL statements are not allowed within CASE expressions.
Remember, the expression that comes after THEN in a CASE expression must be a single value.
I would write a function like this using IF ... ELSIF statements. It's a little more typing than CASE, but a lot easier to code, test and maintain.
If you want to use CASE, here's one way:
... m := CASE
WHEN a IN ('1069', 'SAO', 'SA')
THEN '26' -- South Africa
WHEN a NOT IN ('1009', '1019', '1051', 'XGP', 'XSC')
OR a IS NULL
THEN NULL
WHEN v_lef_cd = 'NAM'
THEN '71'
WHEN v_lef_cd = 'GLB'
THEN '99'
ELSE '01' -- USA
END;This assumes that you have a variable v_lef_cd defined.
If you want, you can nest CASE expressions, like this:
... m := CASE
WHEN a IN ('1069', 'SAO', 'SA')
THEN '26' -- South Africa
WHEN a IN ('1009', '1019', '1051', 'XGP', 'XSC')
THEN CASE v_lef_cd
WHEN 'NAM'
THEN '71'
WHEN 'GLB'
THEN '99'
ELSE '01' -- USA
END
END;Always format your code, so you can see where the CASE expressions and each of the WHEN clauses begin and end.
When posting formatted text on this site, type these 6 characters:
(all small letters, inside curly brackets) before and after sections of formatted text, to preserve spacing. -
Need help in decode statement to check condition
Hi All,
I have table emp with below structure
empno
work_phone_no
Home_phone
cell_phone
For the employee if work_phone & Home Phone is null then in place of work_phone we need to send the cell_phone number.
How to use the decode statement in this scenario to test for Home_phone
condition in the select statement.
select DECODE (work_phone_no,
null, cell_phone_no,office_phone_no )
from emp
ThanksHi,
Given the data you posted:
empno work_phone_no home_phone_no cell_phone_no
1 null 80032108556 8003210855
2 null null 8003210000 and your requirement is
"If work & Home nunbers are null then display cellhone number in place of workphone number "
, then, as John said, you do not want the results you posted. You want:
1 null 80032108556
2 8003210000 null That is, on the first row, where empno=1, the work_phone_no is NULL because the home_phone_no is NOT NULL, and cell_phone_no is only to be shown when both of the other phone numbers are missing.
To get the results above, use CASE:
SELECT empno
, CASE
WHEN work_phone_no IS NULL
AND home_phone_no IS NULL
THEN cell_phone_no
ELSE work_phone_no
END AS work_phone_no
, home_phone_no
FROM ...If you really do want the results you posted, then, as John said, use NVL. -
I have a scenario like
if account no is 0001 or 0002 or 0003 then account_flag <> 'Y'
ELSE IF account no is 00009 then account_status <> 'Y'
How to write DECODE statement for this in Where part of select statement
Note: account_flag and account_status are 2 different columns in same tableHi,
I assumed you mean to update the values?
You can use case for that:
MHO%xe> select * from same_table;
ACCOU A A
0001 N N
0002 N N
0003 N N
0004 N N
0005 N N
0006 N N
0007 N N
0008 N N
0009 N N
0010 N N
10 rijen zijn geselecteerd.
Verstreken: 00:00:01.90
MHO%xe> update same_table
2 set account_flag = case when account_no in ('0001', '0002', '0003')
3 then 'Y'
4 else account_flag
5 end
6 , account_status = case when account_no = '0009'
7 then 'Y'
8 else account_status
9 end;
10 rijen zijn bijgewerkt.
Verstreken: 00:00:00.15
MHO%xe> commit;
Commit is voltooid.
Verstreken: 00:00:00.09
MHO%xe> select * from same_table;
ACCOU A A
0001 Y N
0002 Y N
0003 Y N
0004 N N
0005 N N
0006 N N
0007 N N
0008 N N
0009 N Y
0010 N N
10 rijen zijn geselecteerd.
Verstreken: 00:00:00.07
MHO%xe> desc same_table
Naam Null? Type
ACCOUNT_NO VARCHAR2(5)
ACCOUNT_FLAG VARCHAR2(1)
ACCOUNT_STATUS VARCHAR2(1)
Maybe you are looking for
-
Session Rules from Servlet to JSP
I'm getting a null pointer exception from the else statement in the JSP below when I check to see if a user has been authenticated by a servlet. Are there any problems with the else statement to cause an exception? <% /**Verify Authenticationt*/ Http
-
Adobe reader 8.1 has stopped working
All of a sudden I cannot open PDF files. Acrobat won't open. I get the message: error 1606. Could not access network location %APPDATA%\ I've tried uninstalling. It will not uninstall, just gives the same message Running Windows 7
-
Safari address field is missing
I have a power mac g4 and upgraded to tiger I am the administrator and my daughter is another user, on my safari page there isn't an address field although when my daughter logs into safari it registers on hers hellllp!
-
I own a preforma 6300CD its not in very good shape. It was given to me, and there is no system restore cd. I downloaded system 7.5 the free download provided by apple. I dont understand what to do from there. I cant get an internet connection on my p
-
I forgot my passcode to my iPad. How do I recover it?
I forgot my passcode to my iPad. How do I recover it?