Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: ** is there PL/SQL for case
Below is an example (with Oracle 8173), "case" works in sql, not in pl/sql.
Guang
YPD_OWNER_at_essex-SQL> create table t1 (name varchar2(30), salary number );
Table created.
YPD_OWNER_at_essex-SQL> insert into t1 (name,salary) values ('Bill', 1000);
1 row created.
YPD_OWNER_at_essex-SQL> insert into t1 (name,salary) values ('George', 2000);
1 row created.
YPD_OWNER_at_essex-SQL> insert into t1 (name,salary) values ('Gore', 3000);
1 row created.
YPD_OWNER_at_essex-SQL> insert into t1 (name,salary) values ('Dick', 4000);
1 row created.
YPD_OWNER_at_essex-SQL> commit;
Commit complete.
YPD_OWNER_at_essex-SQL> select * from t1;
NAME SALARY ------------------------------ ---------- Bill 1000 George 2000 Gore 3000 Dick 4000
YPD_OWNER_at_essex-SQL> select count(case when salary < 2000 then 1 else null end) poor,
count(case when salary between 2000 and 3000 then 1 else null end) middle_class,
count(case when salary > 3000 then 1 else null end) rich from t1;
POOR MIDDLE_CLASS RICH
---------- ------------ ----------
1 2 1
YPD_OWNER_at_essex-SQL> declare
c1 number; c2 number; c3 number;
count(case when salary between 2000 and 3000 then 1 else null end) middle_class,
count(case when salary > 3000 then 1 else null end) rich
into c1,c2,c3
from t1;
end;
/
select count(case when salary < 2000 then 1 else null end) poor,
*
ERROR at line 6:
ORA-06550: line 6, column 16: PLS-00103: Encountered the symbol "CASE" when expecting one of the following:
-----Original Message-----
From: ml-errors_at_fatcity.com [mailto:ml-errors_at_fatcity.com]On Behalf Of A
Joshi
Sent: Thursday, August 07, 2003 4:55 PM
To: Multiple recipients of list ORACLE-L
Subject: RE: ** is there PL/SQL for case
Guang,
Thanks for your help. Do you have an example you can send me. I thought
whatever one can do in sql one can do in pl/sql. meaning sql is a subset of
pl/sql. Correct me if i am wrong. Thank You.
Guang Mei <gmei_at_incyte.com> wrote:
I am not sure in 9i. But in 8i I think you can use "case" in sql but not
in pl/sql. You have to use if elsif in pl/sql.
Guang
-----Original Message----- From: ml-errors_at_fatcity.com [mailto:ml-errors_at_fatcity.com]On Behalf Of A Joshi Sent: Thursday, August 07, 2003 4:24 PM To: Multiple recipients of list ORACLE-L Subject: ** is there PL/SQL for case Hi, Is there a statement in pl/SQL like case or is if elsif the onlyway. Meaning if I need to transalate state depending on input number as follows :
1 - CA 2 - OR 3 - WA 4 - AR Can I have one statement like case 'state# : 1: state := 'CA' 2: state := 'OR' etc. or do i have to do : IF state# = 1 THEN state := 'CA'; ELSIF state# = 2 THEN state := 'OR'; etc Thank You. -------------------------------------------------------------------------- Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software ----------------------------------------------------------------------------
-- Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software -- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: Guang Mei INET: gmei_at_incyte.com Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting services --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).Received on Thu Aug 07 2003 - 16:24:24 CDT
![]() |
![]() |