140 lines
8.3 KiB
HTML
140 lines
8.3 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-us">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="dc.language" scheme="rfc1766" content="en-us" />
|
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|
<!-- US Government Users Restricted Rights -->
|
|
<!-- Use, duplication or disclosure restricted by -->
|
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|
<meta name="dc.date" scheme="iso8601" content="2005-09-19" />
|
|
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|
<meta name="security" content="public" />
|
|
<meta name="Robots" content="index,follow"/>
|
|
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
|
|
<meta name="keywords" content="CASE statement, SQL-control-statement,
|
|
SQL statements" />
|
|
<title>CASE statement</title>
|
|
<link rel="stylesheet" type="text/css" href="ibmidwb.css" />
|
|
<link rel="stylesheet" type="text/css" href="ic.css" />
|
|
</head>
|
|
<body>
|
|
<a id="Top_Of_Page" name="Top_Of_Page"></a><!-- Java sync-link -->
|
|
<script language = "Javascript" src = "../rzahg/synch.js" type="text/javascript"></script>
|
|
|
|
|
|
<a name="casestmt"></a>
|
|
<h2 id="casestmt"><a href="rbafzmst02.htm#ToC_1420">CASE statement</a></h2><a id="idx3337" name="idx3337"></a><a id="idx3338" name="idx3338"></a>
|
|
<p>The CASE statement selects an execution path based on multiple conditions.</p>
|
|
<a name="wq1860"></a>
|
|
<h3 id="wq1860"><a href="rbafzmst02.htm#ToC_1421">Syntax</a></h3>
|
|
<a href="rbafzmstcasestmt.htm#synccase"><img src="c.gif" alt="Click to skip syntax diagram" /></a>
|
|
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn409.htm"
|
|
border="0" /></span><a href="#skipsyn-408"><img src="c.gif" alt="Skip visual syntax diagram"
|
|
border="0" /></a>>>-+--------+--CASE--+-<span class="italic">simple-when-clause</span>---+------------------->
|
|
'-<span class="italic">label:</span>-' '-<span class="italic">searched-when-clause</span>-'
|
|
|
|
>--+-------------+--END CASE-----------------------------------><
|
|
'-<span class="italic">else-clause</span>-'
|
|
|
|
simple-when-clause:
|
|
|
|
|--<span class="italic">expression</span>--------------------------------------------------->
|
|
|
|
.---------------------------------------------------------.
|
|
| .-----------------------------. |
|
|
V V | |
|
|
>----WHEN--<span class="italic">expression</span>--THEN----<span class="italic">SQL-procedure-statement</span>-- ;-+-+--|
|
|
|
|
searched-when-clause:
|
|
|
|
.---------------------------------------------------------------.
|
|
| .-----------------------------. |
|
|
V V | |
|
|
|----WHEN--<span class="italic">search-condition</span>--THEN----<span class="italic">SQL-procedure-statement</span>-- ;-+-+--|
|
|
|
|
else-clause:
|
|
|
|
.-----------------------------.
|
|
V |
|
|
|--ELSE----<span class="italic">SQL-procedure-statement</span>-- ;-+------------------------|
|
|
|
|
</pre>
|
|
<a name="skipsyn-408" id="skipsyn-408"></a>
|
|
<a name="synccase"></a>
|
|
<h3 id="synccase"><a href="rbafzmst02.htm#ToC_1422">Description</a></h3>
|
|
<dl class="parml">
|
|
<dt class="bold"><span class="italic">label</span></dt>
|
|
<dd>Specifies the label for the CASE statement. The label name
|
|
cannot be the same as another label within the same scope. For more information,
|
|
see <a href="rbafzmstsqlprocstmt.htm#psscope">Labels</a>.
|
|
</dd>
|
|
<dt class="bold"><span class="italic">simple-when-clause</span></dt>
|
|
<dd>The value of the <var class="pv">expression</var> prior to the first WHEN keyword
|
|
is tested for equality with the value of each <var class="pv">expression</var> that follows
|
|
the WHEN keyword. If the comparison is true, the THEN statement is executed.
|
|
If the result is unknown or false, processing continues to the next comparison.
|
|
If the result does not match any of the comparisons, and an ELSE clause is
|
|
present, the statements in the ELSE clause are processed.
|
|
</dd>
|
|
<dt class="bold"><span class="italic">searched-when-clause</span></dt>
|
|
<dd>The <var class="pv">search-condition</var> following the WHEN keyword is evaluated.
|
|
If it evaluates to true, the statements in the associated THEN clause are
|
|
processed. If it evaluates to false, or unknown, the next <var class="pv">search-condition</var> is evaluated. If no <var class="pv">search-condition</var> evaluates to true and
|
|
an ELSE clause is present, the statements in the ELSE clause are processed.
|
|
</dd>
|
|
<dt class="bold"><span class="italic">else-clause</span></dt>
|
|
<dd>If none of the conditions specified in the <span class="italic">simple-when-clause</span> or <span class="italic">searched-when-clause</span> are true, then the statements
|
|
in the <span class="italic">else-clause</span> are executed.
|
|
<p>If none of the
|
|
conditions specified in the WHEN are true, and an ELSE clause is not specified,
|
|
an error is issued at runtime, and the execution of the CASE statement is
|
|
terminated (SQLSTATE 20000).</p>
|
|
</dd>
|
|
<dt class="bold"><span class="italic">SQL-procedure-statement</span></dt>
|
|
<dd>Specifies a statement that should be executed. See <a href="rbafzmstsqlprocstmt.htm#sqlprocstmt">SQL-procedure-statement</a>.
|
|
</dd>
|
|
</dl>
|
|
<a name="wq1861"></a>
|
|
<h3 id="wq1861"><a href="rbafzmst02.htm#ToC_1423">Notes</a></h3>
|
|
<p><span class="bold">Nesting of CASE statements:</span> CASE statements that
|
|
use a <span class="italic">simple-when-clause</span> can be nested up to three
|
|
levels. CASE statements that use a <span class="italic">searched-when-clause</span> have no limit to the number of nesting levels.</p>
|
|
<a name="wq1862"></a>
|
|
<h3 id="wq1862"><a href="rbafzmst02.htm#ToC_1424">Examples</a></h3>
|
|
<p><span class="italic">Example 1:</span> Depending on the value of SQL variable
|
|
v_workdept, update column DEPTNAME in table DEPARTMENT with the appropriate
|
|
name.</p>
|
|
<p>The following example shows how to do this using the syntax for a <span class="italic">simple-when-clause</span>.</p>
|
|
<pre class="xmp"> <span class="bold">CASE</span> v_workdept
|
|
<span class="bold">WHEN</span> 'A00'
|
|
<span class="bold">THEN UPDATE</span> department <span class="bold">SET</span>
|
|
deptname = 'DATA ACCESS 1';
|
|
<span class="bold">WHEN</span> 'B01'
|
|
<span class="bold">THEN UPDATE</span> department <span class="bold">SET</span>
|
|
deptname = 'DATA ACCESS 2';
|
|
<span class="bold">ELSE UPDATE</span> department <span class="bold">SET</span>
|
|
deptname = 'DATA ACCESS 3';
|
|
<span class="bold">END CASE</span> </pre>
|
|
<p><span class="italic">Example 2:</span> The following example shows how to do
|
|
this using the syntax for a <span class="italic">searched-when-clause</span>:</p>
|
|
<pre class="xmp"> <span class="bold">CASE</span>
|
|
<span class="bold">WHEN</span> v_workdept = 'A00'
|
|
<span class="bold">THEN UPDATE</span> department <span class="bold">SET</span>
|
|
deptname = 'DATA ACCESS 1';
|
|
<span class="bold">WHEN</span> v_workdept = 'B01'
|
|
<span class="bold">THEN UPDATE</span> department <span class="bold">SET</span>
|
|
deptname = 'DATA ACCESS 2';
|
|
<span class="bold">ELSE UPDATE</span> department <span class="bold">SET</span>
|
|
deptname = 'DATA ACCESS 3';
|
|
<span class="bold">END CASE</span></pre>
|
|
<hr /><br />
|
|
[ <a href="#Top_Of_Page">Top of Page</a> | <a href="rbafzmstcallstmt.htm">Previous Page</a> | <a href="rbafzmstcompoundstmt.htm">Next Page</a> | <a href="rbafzmst02.htm#wq1">Contents</a> |
|
|
<a href="rbafzmstindex.htm#index">Index</a> ]
|
|
|
|
<a id="Bot_Of_Page" name="Bot_Of_Page"></a>
|
|
</body>
|
|
</html>
|