<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FPL_SQL_Statements%2FCASE</id>
		<title>Oracle PL/SQL Tutorial/PL SQL Statements/CASE - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FPL_SQL_Statements%2FCASE"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/CASE&amp;action=history"/>
		<updated>2026-05-25T23:18:14Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/CASE&amp;diff=3192&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/CASE&amp;diff=3192&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/CASE&amp;diff=3193&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/PL_SQL_Statements/CASE&amp;diff=3193&amp;oldid=prev"/>
				<updated>2010-05-26T10:05:38Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== An example of comparison of two numbers using a searched CASE expression==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    a number :=20;&lt;br /&gt;
  3    b number :=-40;&lt;br /&gt;
  4    string varchar2(50);&lt;br /&gt;
  5  begin&lt;br /&gt;
  6    string :=case&lt;br /&gt;
  7               when (a&amp;gt;b)then &amp;quot;A is greater than B&amp;quot;&lt;br /&gt;
  8               when (a&amp;lt;b)then &amp;quot;A is less than B&amp;quot;&lt;br /&gt;
  9             else&lt;br /&gt;
 10               &amp;quot;A is equal to B&amp;quot;&lt;br /&gt;
 11             end;&lt;br /&gt;
 12    dbms_output.put_line(string);&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
A is greater than B&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== CASE statements==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A Traditional Condition Statement&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace function f_getDateType (in_dt DATE)&lt;br /&gt;
  2  return VARCHAR2&lt;br /&gt;
  3  is&lt;br /&gt;
  4      v_out VARCHAR2(10);&lt;br /&gt;
  5  begin&lt;br /&gt;
  6      if to_char(in_dt,&amp;quot;d&amp;quot;) = 1 then&lt;br /&gt;
  7          v_out:=&amp;quot;SUNDAY&amp;quot;;&lt;br /&gt;
  8      elsif to_char(in_dt,&amp;quot;d&amp;quot;) = 7 then&lt;br /&gt;
  9          v_out:=&amp;quot;SATURDAY&amp;quot;;&lt;br /&gt;
 10      else&lt;br /&gt;
 11          v_out:=&amp;quot;WEEKDAY&amp;quot;;&lt;br /&gt;
 12      end if;&lt;br /&gt;
 13      return v_out;&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
Function created.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Case statement to call procedure==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    salary NUMBER := 20000;&lt;br /&gt;
  3    employee_id NUMBER := 36325;&lt;br /&gt;
  4&lt;br /&gt;
  5    PROCEDURE give_bonus (emp_id IN NUMBER, bonus_amt IN NUMBER) IS&lt;br /&gt;
  6    BEGIN&lt;br /&gt;
  7      DBMS_OUTPUT.PUT_LINE(emp_id);&lt;br /&gt;
  8      DBMS_OUTPUT.PUT_LINE(bonus_amt);&lt;br /&gt;
  9    END;&lt;br /&gt;
 10&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12  CASE&lt;br /&gt;
 13  WHEN salary &amp;gt;= 10000 AND salary &amp;lt;=20000 THEN&lt;br /&gt;
 14     give_bonus(employee_id, 1500);&lt;br /&gt;
 15  WHEN salary &amp;gt; 20000 AND salary &amp;lt;= 40000 THEN&lt;br /&gt;
 16     give_bonus(employee_id, 1000);&lt;br /&gt;
 17  WHEN salary &amp;gt; 40000 THEN&lt;br /&gt;
 18     give_bonus(employee_id, 500);&lt;br /&gt;
 19  ELSE&lt;br /&gt;
 20     give_bonus(employee_id, 0);&lt;br /&gt;
 21  END CASE;&lt;br /&gt;
 22  END;&lt;br /&gt;
 23  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== case when==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL primary key,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select first_name, description&lt;br /&gt;
  2  ,      case when description   = &amp;quot;Tester&amp;quot;    then &amp;quot;  10%&amp;quot;&lt;br /&gt;
  3              when description   = &amp;quot;Developer&amp;quot; then &amp;quot;  20%&amp;quot;&lt;br /&gt;
  4              when first_name = &amp;quot;Jason&amp;quot;     then &amp;quot;  30%&amp;quot;&lt;br /&gt;
  5                                       else &amp;quot;   0%&amp;quot;&lt;br /&gt;
  6         end  as raise&lt;br /&gt;
  7  from   employee;&lt;br /&gt;
&lt;br /&gt;
FIRST_NAME           DESCRIPTION     RAISE&lt;br /&gt;
-------------------- --------------- -----&lt;br /&gt;
Jason                Programmer        30%&lt;br /&gt;
Alison               Tester            10%&lt;br /&gt;
James                Tester            10%&lt;br /&gt;
Celia                Manager            0%&lt;br /&gt;
Robert               Tester            10%&lt;br /&gt;
Linda                Tester            10%&lt;br /&gt;
David                Manager            0%&lt;br /&gt;
James                Tester            10%&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Named case block==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table employee&lt;br /&gt;
  2          (&lt;br /&gt;
  3           emp_no                 integer     primary key&lt;br /&gt;
  4          ,lastname               varchar2(20)    not null&lt;br /&gt;
  5          ,firstname              varchar2(15)    not null&lt;br /&gt;
  6          ,midinit                varchar2(1)&lt;br /&gt;
  7          ,street                 varchar2(30)&lt;br /&gt;
  8          ,city                   varchar2(20)&lt;br /&gt;
  9          ,state                  varchar2(2)&lt;br /&gt;
 10          ,zip                    varchar2(5)&lt;br /&gt;
 11          ,zip_4                  varchar2(4)&lt;br /&gt;
 12          ,area_code              varchar2(3)&lt;br /&gt;
 13          ,phone                  varchar2(8)&lt;br /&gt;
 14          ,salary                 number(5,2)&lt;br /&gt;
 15          ,birthdate              date&lt;br /&gt;
 16          ,hiredate               date&lt;br /&gt;
 17          ,title                  varchar2(20)&lt;br /&gt;
 18          ,dept_no                integer&lt;br /&gt;
 19        ,mgr              integer&lt;br /&gt;
 20        ,region           number&lt;br /&gt;
 21        ,division         number&lt;br /&gt;
 22        ,total_sales          number&lt;br /&gt;
 23         );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, birthdate, title)&lt;br /&gt;
  2  values (1,&amp;quot;Gardinia&amp;quot;,&amp;quot;Joy&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;688 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;12122&amp;quot;,&amp;quot;2333&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;200-3393&amp;quot;,&amp;quot;12-nov-1956&amp;quot;,&amp;quot;President&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (2,&amp;quot;Anderson&amp;quot;,&amp;quot;Lucy&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;33 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;43552&amp;quot;,&amp;quot;6633&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;234-4444&amp;quot;,7.75,&amp;quot;21-mar-1951&amp;quot;,&amp;quot;1-feb-1994&amp;quot;,&amp;quot;Sales Manager&amp;quot;,2,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate,title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (3,&amp;quot;Somers&amp;quot;,&amp;quot;Ingrid&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;12 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;76822&amp;quot;,&amp;quot;8763&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;867-6893&amp;quot;,7.75,&amp;quot;14-feb-1963&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Sales Clerk&amp;quot;,2,2,100,10,10000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (4,&amp;quot;Washington&amp;quot;,&amp;quot;Georgia&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;13th Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;43122&amp;quot;,&amp;quot;4333&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;340-4365&amp;quot;,11.50,&amp;quot;2-jul-1963&amp;quot;,&amp;quot;21-apr-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (5,&amp;quot;Doright&amp;quot;,&amp;quot;Dudley&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;56 Langer Street&amp;quot;,&amp;quot;Staten Island&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;23332&amp;quot;,&amp;quot;4983&amp;quot;,&amp;quot;718&amp;quot;,&amp;quot;777-4365&amp;quot;,21.65,&amp;quot;15-may-1958&amp;quot;,&amp;quot;2-aug-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, salary, birthdate, hiredate,title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 6,&amp;quot;Doright&amp;quot;,&amp;quot;Dorothy&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;56 Langer Street&amp;quot;,&amp;quot;Staten Island&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;23332&amp;quot;,&amp;quot;4983&amp;quot;,&amp;quot;718&amp;quot;,&amp;quot;777-4365&amp;quot;,24.65,&amp;quot;10-dec-1968&amp;quot;,&amp;quot;2-aug-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 7,&amp;quot;Perry&amp;quot;,&amp;quot;Donna&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;1st Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;44444&amp;quot;,&amp;quot;3444&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;111-6893&amp;quot;,7.75,&amp;quot;14-feb-1967&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Sales Clerk&amp;quot;,2,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 8,&amp;quot;Roger&amp;quot;,&amp;quot;John&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;67 H Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33822&amp;quot;,&amp;quot;1163&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;122-6893&amp;quot;,10.00,&amp;quot;14-jun-1956&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Accountant&amp;quot;,3,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 9,&amp;quot;Hall&amp;quot;,&amp;quot;Ted&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;1236 Lane&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33823&amp;quot;,&amp;quot;1164&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;222-4393&amp;quot;,13.00,&amp;quot;10-jun-1959&amp;quot;,&amp;quot;15-aug-1997&amp;quot;,&amp;quot;Sales Representative&amp;quot;,3,1,100,10,50000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 10,&amp;quot;Barbee&amp;quot;,&amp;quot;Candice&amp;quot;,&amp;quot;L&amp;quot;,&amp;quot;400 Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33811&amp;quot;,&amp;quot;2009&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;321-6873&amp;quot;,12.00,&amp;quot;10-oct-1964&amp;quot;,&amp;quot;15-jan-1999&amp;quot;,&amp;quot;Sales Representative&amp;quot;,3,1,100,10,35000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2&lt;br /&gt;
  3     v_emp    employee.emp_no%type  := 4;&lt;br /&gt;
  4     v_sal    employee.salary%type;&lt;br /&gt;
  5     v_title  employee.title%type;&lt;br /&gt;
  6     v_rowid  rowid;&lt;br /&gt;
  7&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9&lt;br /&gt;
 10     SELECT salary, title, rowid&lt;br /&gt;
 11       INTO v_sal, v_title, v_rowid&lt;br /&gt;
 12       FROM employee&lt;br /&gt;
 13       WHERE emp_no = v_emp&lt;br /&gt;
 14       FOR UPDATE;&lt;br /&gt;
 15&lt;br /&gt;
 16       &amp;lt;&amp;lt;salary_test&amp;gt;&amp;gt;&lt;br /&gt;
 17       CASE v_sal&lt;br /&gt;
 18        WHEN 12   THEN&lt;br /&gt;
 19                       dbms_output.put_line(&amp;quot;Salary is &amp;quot;||v_sal);&lt;br /&gt;
 20                       v_sal := v_sal * 1.2 ;&lt;br /&gt;
 21                       dbms_output.put_line(&amp;quot;Salary is &amp;quot;||v_sal);&lt;br /&gt;
 22        WHEN 14   THEN&lt;br /&gt;
 23                       dbms_output.put_line(&amp;quot;Salary is &amp;quot;||v_sal);&lt;br /&gt;
 24                       v_sal := v_sal * 1.15 ;&lt;br /&gt;
 25                       dbms_output.put_line(&amp;quot;Salary is &amp;quot;||v_sal);&lt;br /&gt;
 26        ELSE&lt;br /&gt;
 27                       v_sal := v_sal * 1.1 ;&lt;br /&gt;
 28       END CASE salary_test;&lt;br /&gt;
 29&lt;br /&gt;
 30     UPDATE employee&lt;br /&gt;
 31       SET salary = v_sal&lt;br /&gt;
 32       WHERE rowid = v_rowid;&lt;br /&gt;
 33&lt;br /&gt;
 34  END;&lt;br /&gt;
 35  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Return statement with case==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     boolean_true BOOLEAN := TRUE;&lt;br /&gt;
  3     boolean_false BOOLEAN := FALSE;&lt;br /&gt;
  4     boolean_null BOOLEAN;&lt;br /&gt;
  5&lt;br /&gt;
  6     FUNCTION boolean_to_varchar2 (flag IN BOOLEAN) RETURN VARCHAR2 IS&lt;br /&gt;
  7     BEGIN&lt;br /&gt;
  8        RETURN&lt;br /&gt;
  9        CASE flag&lt;br /&gt;
 10        WHEN TRUE THEN &amp;quot;True&amp;quot;&lt;br /&gt;
 11        WHEN FALSE THEN &amp;quot;False&amp;quot;&lt;br /&gt;
 12        ELSE &amp;quot;NULL&amp;quot; END;&lt;br /&gt;
 13     END;&lt;br /&gt;
 14&lt;br /&gt;
 15  BEGIN&lt;br /&gt;
 16     DBMS_OUTPUT.PUT_LINE(boolean_to_varchar2(boolean_true));&lt;br /&gt;
 17     DBMS_OUTPUT.PUT_LINE(boolean_to_varchar2(boolean_false));&lt;br /&gt;
 18     DBMS_OUTPUT.PUT_LINE(boolean_to_varchar2(boolean_null));&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Simple CASE statement with range==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    salary NUMBER := 20000;&lt;br /&gt;
  3    employee_id NUMBER := 36325;&lt;br /&gt;
  4&lt;br /&gt;
  5    PROCEDURE give_bonus (emp_id IN NUMBER, bonus_amt IN NUMBER) IS&lt;br /&gt;
  6    BEGIN&lt;br /&gt;
  7      DBMS_OUTPUT.PUT_LINE(emp_id);&lt;br /&gt;
  8      DBMS_OUTPUT.PUT_LINE(bonus_amt);&lt;br /&gt;
  9    END;&lt;br /&gt;
 10&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12  CASE TRUE&lt;br /&gt;
 13  WHEN salary &amp;gt;= 10000 AND salary &amp;lt;=20000 THEN&lt;br /&gt;
 14     give_bonus(employee_id, 1500);&lt;br /&gt;
 15  WHEN salary &amp;gt; 20000 AND salary &amp;lt;= 40000 THEN&lt;br /&gt;
 16     give_bonus(employee_id, 1000);&lt;br /&gt;
 17  WHEN salary &amp;gt; 40000 THEN&lt;br /&gt;
 18     give_bonus(employee_id, 500);&lt;br /&gt;
 19  ELSE&lt;br /&gt;
 20     give_bonus(employee_id, 0);&lt;br /&gt;
 21  END CASE;&lt;br /&gt;
 22  END;&lt;br /&gt;
 23  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use CASE statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE books (&lt;br /&gt;
  2    isbn      CHAR(10) PRIMARY KEY,&lt;br /&gt;
  3    category  VARCHAR2(20),&lt;br /&gt;
  4    title     VARCHAR2(100),&lt;br /&gt;
  5    num_pages NUMBER,&lt;br /&gt;
  6    price     NUMBER,&lt;br /&gt;
  7    copyright NUMBER(4)&lt;br /&gt;
  8  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO books (isbn, category, title, num_pages, price, copyright)&lt;br /&gt;
  2    VALUES (&amp;quot;72122048&amp;quot;, &amp;quot;Oracle Basics&amp;quot;, &amp;quot;Oracle8i: A Beginner&amp;quot;&amp;quot;s Guide&amp;quot;, 765, 44.99, 1999);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON ESCAPE OFF&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     v_category books.category%TYPE;&lt;br /&gt;
  3     v_discount NUMBER(10,2);&lt;br /&gt;
  4     v_isbn books.isbn%TYPE := &amp;quot;72230665&amp;quot;;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6     SELECT category&lt;br /&gt;
  7     INTO v_category&lt;br /&gt;
  8     FROM books&lt;br /&gt;
  9     WHERE isbn = v_isbn;&lt;br /&gt;
 10&lt;br /&gt;
 11     -- Determine discount based on category&lt;br /&gt;
 12     CASE v_category&lt;br /&gt;
 13     WHEN &amp;quot;Oracle Basics&amp;quot;&lt;br /&gt;
 14        THEN v_discount := .15;&lt;br /&gt;
 15     WHEN &amp;quot;Oracle Server&amp;quot;&lt;br /&gt;
 16        THEN v_discount := .10;&lt;br /&gt;
 17     END CASE;&lt;br /&gt;
 18&lt;br /&gt;
 19     DBMS_OUTPUT.PUT_LINE(&amp;quot;The discount is &amp;quot;||v_discount*100||&amp;quot; percent&amp;quot;);&lt;br /&gt;
 20  EXCEPTION&lt;br /&gt;
 21     WHEN OTHERS&lt;br /&gt;
 22     THEN&lt;br /&gt;
 23        DBMS_OUTPUT.PUT_LINE(SQLERRM);&lt;br /&gt;
 24  END;&lt;br /&gt;
 25  /&lt;br /&gt;
ORA-01403: no data found&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE books&lt;br /&gt;
  2  SET category = &amp;quot;Oracle Programming&amp;quot;&lt;br /&gt;
  3  WHERE isbn = &amp;quot;72230665&amp;quot;;&lt;br /&gt;
0 rows updated.&lt;br /&gt;
SQL&amp;gt; COMMIT;&lt;br /&gt;
Commit complete.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     v_category books.category%TYPE;&lt;br /&gt;
  3     v_discount NUMBER(10,2);&lt;br /&gt;
  4     v_isbn books.isbn%TYPE := &amp;quot;72230665&amp;quot;;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6     SELECT category&lt;br /&gt;
  7     INTO v_category&lt;br /&gt;
  8     FROM books&lt;br /&gt;
  9     WHERE isbn = v_isbn;&lt;br /&gt;
 10&lt;br /&gt;
 11     -- Determine discount based on category&lt;br /&gt;
 12     CASE v_category&lt;br /&gt;
 13     WHEN &amp;quot;Oracle Basics&amp;quot;&lt;br /&gt;
 14        THEN v_discount := .15;&lt;br /&gt;
 15     WHEN &amp;quot;Oracle Server&amp;quot;&lt;br /&gt;
 16        THEN v_discount := .10;&lt;br /&gt;
 17     ELSE v_discount := .5;&lt;br /&gt;
 18     END CASE;&lt;br /&gt;
 19&lt;br /&gt;
 20     DBMS_OUTPUT.PUT_LINE(&amp;quot;The discount is &amp;quot;||v_discount*100||&amp;quot; percent&amp;quot;);&lt;br /&gt;
 21  EXCEPTION&lt;br /&gt;
 22     WHEN OTHERS&lt;br /&gt;
 23     THEN&lt;br /&gt;
 24        DBMS_OUTPUT.PUT_LINE(SQLERRM);&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
ORA-01403: no data found&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table books;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use case statement in a dbms_output.put_line==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure proc3&lt;br /&gt;
  2  (p1 in number)&lt;br /&gt;
  3  is&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5  dbms_output.put_line(CASE (p1)&lt;br /&gt;
  6       WHEN 1 THEN &amp;quot;A&amp;quot;&lt;br /&gt;
  7       WHEN 2 THEN &amp;quot;B&amp;quot;&lt;br /&gt;
  8       WHEN 3 THEN &amp;quot;C&amp;quot;&lt;br /&gt;
  9       END );&lt;br /&gt;
 10&lt;br /&gt;
 11     IF CASE (p1)&lt;br /&gt;
 12       WHEN 1 THEN &amp;quot;A&amp;quot;&lt;br /&gt;
 13       WHEN 2 THEN &amp;quot;B&amp;quot;&lt;br /&gt;
 14       WHEN 3 THEN &amp;quot;C&amp;quot;&lt;br /&gt;
 15     END&lt;br /&gt;
 16           = &amp;quot;A&amp;quot; THEN dbms_output.put_line(&amp;quot;A&amp;quot;);&lt;br /&gt;
 17     END IF;&lt;br /&gt;
 18&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt; exec proc3(2)&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use case statement in procedure call to use the proper parameter value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    salary NUMBER := 20000;&lt;br /&gt;
  3    employee_id NUMBER := 36325;&lt;br /&gt;
  4&lt;br /&gt;
  5    PROCEDURE give_bonus (emp_id IN NUMBER, bonus_amt IN NUMBER) IS&lt;br /&gt;
  6    BEGIN&lt;br /&gt;
  7      DBMS_OUTPUT.PUT_LINE(emp_id);&lt;br /&gt;
  8      DBMS_OUTPUT.PUT_LINE(bonus_amt);&lt;br /&gt;
  9    END;&lt;br /&gt;
 10&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12     give_bonus(employee_id,&lt;br /&gt;
 13                CASE&lt;br /&gt;
 14                WHEN salary &amp;gt;= 10000 AND salary &amp;lt;=20000 THEN 1500&lt;br /&gt;
 15                WHEN salary &amp;gt; 20000 AND salary &amp;lt;= 40000 THEN 1000&lt;br /&gt;
 16                WHEN salary &amp;gt; 40000 THEN 500&lt;br /&gt;
 17                ELSE 0&lt;br /&gt;
 18                END);&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Variable assignment with case statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure proc2&lt;br /&gt;
  2  (p1 in number)&lt;br /&gt;
  3  is&lt;br /&gt;
  4&lt;br /&gt;
  5     v_switch char(1);&lt;br /&gt;
  6&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8&lt;br /&gt;
  9     v_switch :=&lt;br /&gt;
 10     CASE&lt;br /&gt;
 11       WHEN p1 = 1 THEN &amp;quot;A&amp;quot;&lt;br /&gt;
 12       WHEN p1 = 2 THEN &amp;quot;B&amp;quot;&lt;br /&gt;
 13       WHEN p1 = 3 THEN &amp;quot;C&amp;quot;&lt;br /&gt;
 14     END;&lt;br /&gt;
 15&lt;br /&gt;
 16     dbms_output.put_line(v_switch);&lt;br /&gt;
 17&lt;br /&gt;
 18  END;&lt;br /&gt;
 19  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt; exec proc2(1)&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== When creating selector CASE statements, you cannot have NULL in the list of possible values.==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although the following code is correct from the syntax point of view, it doesn&amp;quot;t work:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create or replace function f_getDateType (in_dt DATE)&lt;br /&gt;
  return VARCHAR2&lt;br /&gt;
  is&lt;br /&gt;
      v_out VARCHAR2(10);&lt;br /&gt;
  begin&lt;br /&gt;
      case TO_CHAR(in_dt,&amp;quot;d&amp;quot;)&lt;br /&gt;
          when null then&lt;br /&gt;
          -- value will be null if in_dt is null&lt;br /&gt;
              v_out:=&amp;quot;&amp;lt;NULL&amp;gt;&amp;quot;;&lt;br /&gt;
          when 1 then&lt;br /&gt;
              v_out:=&amp;quot;SUNDAY&amp;quot;;&lt;br /&gt;
          when 7 then&lt;br /&gt;
              v_out:=&amp;quot;SATURDAY&amp;quot;;&lt;br /&gt;
          else&lt;br /&gt;
              v_out:=&amp;quot;WEEKDAY&amp;quot;;&lt;br /&gt;
      end case;&lt;br /&gt;
      return v_out;&lt;br /&gt;
  end;&lt;br /&gt;
  /&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>