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>
69 lines
8.3 KiB
HTML
69 lines
8.3 KiB
HTML
<a name="EN-US_TOPIC_0000001188163598"></a><a name="EN-US_TOPIC_0000001188163598"></a>
|
|
|
|
<h1 class="topictitle1">Implicit Cursor</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001188163598__a91db09438b2e4a009eea8be7d0f266b7">The system automatically sets implicit cursors for non-query statements, such as <strong id="EN-US_TOPIC_0000001188163598__b12627111620579">ALTER</strong> and <strong id="EN-US_TOPIC_0000001188163598__b19148101945719">DROP</strong>, and creates work areas for these statements. These implicit cursors are named SQL, which is defined by the system.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001188163598__sae59469dfc8143279ad669e46b0687f3"><h4 class="sectiontitle">Overview</h4><p id="EN-US_TOPIC_0000001188163598__af2952542df3840d5b348010100a260c9">Implicit cursor operations, such as definition, opening, value-grant, and closing, are automatically performed by the system. Users can use only the attributes of implicit cursors to complete operations. The data stored in the work area of an implicit cursor is the latest SQL statement, and is not related to the user-defined explicit cursors.</p>
|
|
<p id="EN-US_TOPIC_0000001188163598__a6557b20b754c4ecf8b259de4d900d04e"><strong id="EN-US_TOPIC_0000001188163598__en-us_topic_0059778352_a80a8b7e8197f475dbe76a037558814d5">Format call</strong>: SQL%</p>
|
|
<div class="note" id="EN-US_TOPIC_0000001188163598__nd97a6181fe4b425cac2dd791e878dbec"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001188163598__a26d8a7e2a64d43bc9f750f547cce11b3"><strong id="EN-US_TOPIC_0000001188163598__en-us_topic_0027042955_b55638965163217">INSERT</strong>, <strong id="EN-US_TOPIC_0000001188163598__en-us_topic_0027042955_b30988637163217">UPDATE</strong>, <strong id="EN-US_TOPIC_0000001188163598__en-us_topic_0027042955_b10462278163217">DROP</strong>, and <strong id="EN-US_TOPIC_0000001188163598__en-us_topic_0027042955_b27051641163217">SELECT</strong> statements do not require defined cursors.</p>
|
|
</div></div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001188163598__s1c46fe9ed5eb413aaba669929bbf126b"><h4 class="sectiontitle">Attributes</h4><p id="EN-US_TOPIC_0000001188163598__ad1047c04328848389bddfa8b904d77be">An implicit cursor has the following attributes:</p>
|
|
<ul id="EN-US_TOPIC_0000001188163598__ua06826aedaa842b8a9c8d87d766a2305"><li id="EN-US_TOPIC_0000001188163598__l9b7cfe6d3afb45499b666fabd272eb9d"><strong id="EN-US_TOPIC_0000001188163598__b4653545400">SQL%FOUND</strong>: Boolean attribute, which returns <strong id="EN-US_TOPIC_0000001188163598__b1566135434017">TRUE</strong> if the last fetch returns a row.</li><li id="EN-US_TOPIC_0000001188163598__lf8253b1bec88498cad4c624c476e2dc2"><strong id="EN-US_TOPIC_0000001188163598__b148521411414">SQL%NOTFOUND</strong>: Boolean attribute, which works opposite to the <strong id="EN-US_TOPIC_0000001188163598__b1985214119418">SQL%FOUND</strong> attribute.</li><li id="EN-US_TOPIC_0000001188163598__l4eba6df2e8cd444e8dea4f2fc4319c66"><strong id="EN-US_TOPIC_0000001188163598__b4475110194110">SQL%ROWCOUNT</strong>: numeric attribute, which returns the number of records fetched from the cursor.</li><li id="EN-US_TOPIC_0000001188163598__l902dffed005740e2b8d48cb01aa9dff0"><strong id="EN-US_TOPIC_0000001188163598__b1710142584118">SQL%ISOPEN</strong>: Boolean attribute, whose value is always <strong id="EN-US_TOPIC_0000001188163598__b210782516419">FALSE</strong>. Close implicit cursors immediately after an SQL statement is executed.</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001188163598__s1f9e06b45fb34e4f8f25be3a01efe273"><h4 class="sectiontitle">Examples</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188163598__s880700cefc0b4873b77648200f5b3eed"><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>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span></pre></div></td><td class="code"><div><pre><span></span><span class="c1">-- Delete all employees in a department from the EMP table. If the department has no employees, delete the department from the DEPT table.</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">staffs_t1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">staffs</span><span class="p">;</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">sections_t1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">sections</span><span class="p">;</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_cursor3</span><span class="p">()</span><span class="w"> </span>
|
|
<span class="k">AS</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="k">DECLARE</span>
|
|
<span class="w"> </span><span class="n">V_DEPTNO</span><span class="w"> </span><span class="nb">NUMBER</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="mi">100</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="k">BEGIN</span>
|
|
<span class="w"> </span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">staffs</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">section_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">V_DEPTNO</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="c1">-- Proceed based on cursor status:</span>
|
|
<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">SQL</span><span class="o">%</span><span class="n">NOTFOUND</span><span class="w"> </span><span class="k">THEN</span>
|
|
<span class="w"> </span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">sections_t1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">section_ID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">V_DEPTNO</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="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_cursor3</span><span class="p">();</span>
|
|
|
|
<span class="c1">-- Drop the stored procedure and the temporary table:</span>
|
|
<span class="k">DROP</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">proc_cursor3</span><span class="p">;</span>
|
|
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">staffs_t1</span><span class="p">;</span>
|
|
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">sections_t1</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0545.html">Cursors</a></div>
|
|
</div>
|
|
</div>
|
|
|