forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
122 lines
15 KiB
HTML
122 lines
15 KiB
HTML
<a name="EN-US_TOPIC_0000001188482192"></a><a name="EN-US_TOPIC_0000001188482192"></a>
|
|
|
|
<h1 class="topictitle1">Conditional Statements</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001188482192__ac45c4135268243c08ce800c4d0e7eb0d">Conditional statements are used to decide whether given conditions are met. Operations are executed based on the decisions made.</p>
|
|
<p id="EN-US_TOPIC_0000001188482192__ae1e711a345f44a5fb6c6f303e329448a"><span id="EN-US_TOPIC_0000001188482192__text1783115070">GaussDB(DWS)</span> supports five usages of <strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0085031821_b1317913278295">IF</strong>:</p>
|
|
<ul id="EN-US_TOPIC_0000001188482192__u1406b229a2d9430782541c38dd3fa584"><li id="EN-US_TOPIC_0000001188482192__l46c849e657984a1ca8caef9fa34397f4">IF_THEN<div class="fignone" id="EN-US_TOPIC_0000001188482192__f592f1ceb35fb4eaca88759d2d5363ca0"><span class="figcap"><b>Figure 1 </b>IF_THEN::=</span><br><span><img id="EN-US_TOPIC_0000001188482192__ica7bffe2fe814773ac5ae3ed4365466c" src="figure/en-us_image_0000001188163806.jpg"></span></div>
|
|
<p id="EN-US_TOPIC_0000001188482192__ad66a631b9965434189cb136a3ea2dd81"><strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b1085570393612">IF_THEN</strong> is the simplest form of <strong id="EN-US_TOPIC_0000001188482192__b14361111719327">IF</strong>. If the condition is true, statements are executed. If it is false, they are skipped.</p>
|
|
<p id="EN-US_TOPIC_0000001188482192__ad31dc88e3938428d9a83e4a44fe843dd"><strong id="EN-US_TOPIC_0000001188482192__b97659305312">Example</strong></p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188482192__sa6a17e85952648e1af2f160bbc302d17"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">IF</span><span class="w"> </span><span class="n">v_user_id</span><span class="w"> </span><span class="o"><></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">users</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">email</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v_email</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">user_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v_user_id</span><span class="p">;</span>
|
|
<span class="k">END</span><span class="w"> </span><span class="k">IF</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000001188482192__lfe9e61ba0211477e8ea06b51a3fb7341">IF_THEN_ELSE<div class="fignone" id="EN-US_TOPIC_0000001188482192__fc614e0e7fbcd4c25ac25caa68e48369d"><span class="figcap"><b>Figure 2 </b>IF_THEN_ELSE::=</span><br><span><img id="EN-US_TOPIC_0000001188482192__id51e74741e87474594dacc8ed44a5ac1" src="figure/en-us_image_0000001233883413.jpg"></span></div>
|
|
<p id="EN-US_TOPIC_0000001188482192__a6edbfbcee0be4d94b06f46980627d89c"><strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b4025251116845">IF-THEN-ELSE</strong> statements add <strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b2672828016845">ELSE</strong> branches and can be executed if the condition is <strong id="EN-US_TOPIC_0000001188482192__b826914034020">false</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001188482192__a71ab9662ef54476d9cfb30192d653af5"><strong id="EN-US_TOPIC_0000001188482192__b1787713343316">Example</strong></p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188482192__sf2060941db46430ea37821e036ae361c"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">IF</span><span class="w"> </span><span class="n">parentid</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="n">parentid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">''</span>
|
|
<span class="k">THEN</span>
|
|
<span class="w"> </span><span class="k">RETURN</span><span class="p">;</span>
|
|
<span class="k">ELSE</span>
|
|
<span class="w"> </span><span class="n">hp_true_filename</span><span class="p">(</span><span class="n">parentid</span><span class="p">);</span><span class="w"> </span><span class="c1">-- Call the stored procedure.</span>
|
|
<span class="k">END</span><span class="w"> </span><span class="k">IF</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000001188482192__ld2f39d322f384457a75377fbf20600ab">IF_THEN_ELSE IF<p id="EN-US_TOPIC_0000001188482192__a0ba629d7971842468ef0e985613f9de2"><a name="EN-US_TOPIC_0000001188482192__ld2f39d322f384457a75377fbf20600ab"></a><a name="ld2f39d322f384457a75377fbf20600ab"></a><strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b1093622016927">IF</strong> statements can be nested in the following way:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188482192__s092a84a2d6dd49e9a09e768a9e0fc4e7"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span>
|
|
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">IF</span><span class="w"> </span><span class="n">sex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'m'</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="n">pretty_sex</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'man'</span><span class="p">;</span>
|
|
<span class="k">ELSE</span>
|
|
<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="n">sex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'f'</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="n">pretty_sex</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'woman'</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="k">IF</span><span class="p">;</span>
|
|
<span class="k">END</span><span class="w"> </span><span class="k">IF</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001188482192__a012b2c816aec4f77b8d2e5222bc1f291">Actually, this is a way of an <strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b4319503116950">IF</strong> statement nesting in the <strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b5321096016950">ELSE</strong> part of another <strong id="EN-US_TOPIC_0000001188482192__en-us_topic_0027042961_b913659316950">IF</strong> statement. Therefore, an <strong id="EN-US_TOPIC_0000001188482192__b18321881386">END IF</strong> statement is required for each nesting IF statement and another <strong id="EN-US_TOPIC_0000001188482192__b1552111171983">END IF</strong> statement is required to end the parent <strong id="EN-US_TOPIC_0000001188482192__b02191213121317">IF-ELSE</strong> statement. To set multiple options, use the following form:</p>
|
|
</li><li id="EN-US_TOPIC_0000001188482192__l74140d57219d47ac92bfa7f8d4435850">IF_THEN_ELSIF_ELSE<div class="fignone" id="EN-US_TOPIC_0000001188482192__f29e71ff3977549f19ee1d4e36b223ec6"><span class="figcap"><b>Figure 3 </b>IF_THEN_ELSIF_ELSE::=</span><br><span><img id="EN-US_TOPIC_0000001188482192__ia91f5458ed364ec3b6b92f4c642f4791" src="figure/en-us_image_0000001188323780.png"></span></div>
|
|
<p id="EN-US_TOPIC_0000001188482192__a7caf98d7fb65418f88bb6fdf5fd32061"><strong id="EN-US_TOPIC_0000001188482192__b1938416401533">Example</strong></p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188482192__s1b59a1998bc543cdaec0ad89372728a2"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span>
|
|
<span class="normal">7</span>
|
|
<span class="normal">8</span>
|
|
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">IF</span><span class="w"> </span><span class="n">number_tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'zero'</span><span class="p">;</span>
|
|
<span class="k">ELSIF</span><span class="w"> </span><span class="n">number_tmp</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'positive'</span><span class="p">;</span>
|
|
<span class="k">ELSIF</span><span class="w"> </span><span class="n">number_tmp</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'negative'</span><span class="p">;</span>
|
|
<span class="k">ELSE</span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'NULL'</span><span class="p">;</span>
|
|
<span class="k">END</span><span class="w"> </span><span class="k">IF</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000001188482192__lf1253f48896e4f639d859ce123d8b72a">IF_THEN_ELSEIF_ELSE<p id="EN-US_TOPIC_0000001188482192__adccf03b8e5674e949eff4c0ca6899627"><a name="EN-US_TOPIC_0000001188482192__lf1253f48896e4f639d859ce123d8b72a"></a><a name="lf1253f48896e4f639d859ce123d8b72a"></a><strong id="EN-US_TOPIC_0000001188482192__b142671133913">ELSEIF</strong> is an alias of <strong id="EN-US_TOPIC_0000001188482192__b10538161303910">ELSIF</strong>.</p>
|
|
<div class="p" id="EN-US_TOPIC_0000001188482192__a54770c3cbbf7487c8cfc6128b0448632"><strong id="EN-US_TOPIC_0000001188482192__b12885101393917">Example</strong><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188482192__s184c5d14d15b4068b750dcfb406e7bd5"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">proc_control_structure</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nb">integer</span><span class="p">)</span><span class="w"> </span>
|
|
<span class="k">AS</span>
|
|
<span class="w"> </span><span class="k">BEGIN</span>
|
|
<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="n">raise</span><span class="w"> </span><span class="n">info</span><span class="w"> </span><span class="s1">'i:% is greater than 0. '</span><span class="p">,</span><span class="n">i</span><span class="p">;</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="k">ELSIF</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="n">raise</span><span class="w"> </span><span class="n">info</span><span class="w"> </span><span class="s1">'i:% is smaller than 0. '</span><span class="p">,</span><span class="n">i</span><span class="p">;</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="k">ELSE</span>
|
|
<span class="w"> </span><span class="n">raise</span><span class="w"> </span><span class="n">info</span><span class="w"> </span><span class="s1">'i:% is equal to 0. '</span><span class="p">,</span><span class="n">i</span><span class="p">;</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="k">IF</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">RETURN</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">END</span><span class="p">;</span>
|
|
<span class="o">/</span>
|
|
|
|
<span class="k">CALL</span><span class="w"> </span><span class="n">proc_control_structure</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
|
|
|
|
<span class="c1">-- Delete the stored procedure:</span>
|
|
<span class="k">DROP</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">proc_control_structure</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</li></ul>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0532.html">Control Statements</a></div>
|
|
</div>
|
|
</div>
|
|
|