doc-exports/docs/dws/tool/dws_mt_0302.html
Lu, Huayi 27019c2991 DWS TOOL 830.201 version
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com>
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>
2024-05-16 07:35:25 +00:00

116 lines
14 KiB
HTML

<a name="EN-US_TOPIC_0000001819336305"></a><a name="EN-US_TOPIC_0000001819336305"></a>
<h1 class="topictitle1">REF CURSOR</h1>
<div id="body8662426"><p id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_p8611163594313">REF Cursor is a data type that can store the database cursor values and is used to return query results. DSC supports migration of REF CURSOR. The example below shows how the DSC migrates <strong id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0237712617_b4198172017473">lref_strong_emptyp</strong> (local REF CURSOR) and ref_strong_emptyp (package-level REF CURSOR).</p>
<p id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_p1050535822219"><strong id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0237712617_b543818813814">Input - REF CURSOR in PL/SQL Package </strong>(Package Specification and Body)</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_screen765225513104"><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>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">#</span><span class="w"> </span><span class="n">Package</span><span class="w"> </span><span class="n">specification</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="n">PACKAGE</span><span class="w"> </span><span class="n">pkg_refcur</span><span class="w"> </span>
<span class="k">IS</span><span class="w"> </span>
<span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="n">ref_variable</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">REF</span><span class="w"> </span><span class="k">CURSOR</span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="n">ref_strong_emptyp</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">REF</span><span class="w"> </span><span class="k">CURSOR</span><span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="n">emp_o</span><span class="o">%</span><span class="n">ROWTYPE</span><span class="p">;</span>
<span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">p_get_employees</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">v_id</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nb">INTEGER</span><span class="w"> </span><span class="p">,</span><span class="n">po_results</span><span class="w"> </span><span class="k">OUT</span><span class="w"> </span><span class="n">ref_strong_emptyp</span><span class="w"> </span><span class="p">);</span>
<span class="w"> </span>
<span class="k">END</span><span class="w"> </span><span class="n">pkg_refcur</span><span class="w"> </span><span class="p">;</span>
<span class="o">/</span>
<span class="o">#</span><span class="w"> </span><span class="n">Package</span><span class="w"> </span><span class="n">body</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="n">PACKAGE</span><span class="w"> </span><span class="n">BODY</span><span class="w"> </span><span class="n">pkg_refcur</span><span class="w"> </span>
<span class="k">IS</span><span class="w"> </span>
<span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="n">lref_strong_emptyp</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">REF</span><span class="w"> </span><span class="k">CURSOR</span><span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="n">emp_o</span><span class="o">%</span><span class="n">ROWTYPE</span><span class="w"> </span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span><span class="n">var_num</span><span class="w"> </span><span class="nb">NUMBER</span><span class="w"> </span><span class="p">;</span>
<span class="w"> </span>
<span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">p_get_employees</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">v_id</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="n">po_results</span><span class="w"> </span><span class="k">OUT</span><span class="w"> </span><span class="n">ref_strong_emptyp</span><span class="w"> </span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">is</span><span class="w"> </span>
<span class="w"> </span><span class="n">vemp_rc</span><span class="w"> </span><span class="n">lref_strong_emptyp</span><span class="w"> </span><span class="p">;</span>
<span class="w"> </span><span class="k">Begin</span>
<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">po_results</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp_o</span><span class="w"> </span><span class="n">e</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v_id</span><span class="p">;</span>
<span class="w"> </span><span class="k">EXCEPTION</span><span class="w"> </span>
<span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="n">OTHERS</span><span class="w"> </span><span class="k">THEN</span><span class="w"> </span>
<span class="w"> </span><span class="n">RAISE</span><span class="p">;</span>
<span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="n">p_get_employees</span><span class="p">;</span>
<span class="k">END</span><span class="w"> </span><span class="n">pkg_refcur</span><span class="p">;</span>
<span class="o">/</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_p950855813225"><strong id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0237712617_b14895441185412">Output</strong></p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819336305__en-us_topic_0000001706223881_en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_screen770818721120"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">BEGIN</span>
<span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">MIG_ORA_EXT</span><span class="p">.</span><span class="n">MIG_PKG_VARIABLES</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">SCHEMA_NAME</span><span class="w"> </span><span class="p">,</span><span class="n">PACKAGE_NAME</span><span class="w"> </span><span class="p">,</span><span class="n">SPEC_OR_BODY</span><span class="w"> </span><span class="p">,</span><span class="n">VARIABLE_NAME</span><span class="w"> </span><span class="p">,</span><span class="n">VARIABLE_TYPE</span><span class="w"> </span><span class="p">,</span><span class="n">CONSTANT_I</span><span class="w"> </span><span class="p">,</span><span class="n">DEFAULT_VALUE</span><span class="w"> </span><span class="p">,</span><span class="n">EXPRESSION_I</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">UPPER</span><span class="p">(</span><span class="w"> </span><span class="n">current_schema</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">,</span><span class="k">UPPER</span><span class="p">(</span><span class="w"> </span><span class="s1">'pkg_refcur'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">,</span><span class="s1">'B'</span><span class="w"> </span><span class="p">,</span><span class="k">UPPER</span><span class="p">(</span><span class="w"> </span><span class="s1">'var_num'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">,</span><span class="k">UPPER</span><span class="p">(</span><span class="w"> </span><span class="s1">'NUMBER'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">,</span><span class="k">false</span><span class="w"> </span><span class="p">,</span><span class="k">NULL</span><span class="w"> </span><span class="p">,</span><span class="k">false</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">;</span>
<span class="k">END</span><span class="w"> </span><span class="p">;</span>
<span class="o">/</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">pkg_refcur</span><span class="o">#</span><span class="n">p_get_employees</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">v_id</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="nb">INTEGER</span><span class="w"> </span><span class="p">,</span><span class="n">po_results</span><span class="w"> </span><span class="k">OUT</span><span class="w"> </span><span class="n">SYS_REFCURSOR</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">vemp_rc</span><span class="w"> </span><span class="n">SYS_REFCURSOR</span><span class="w"> </span><span class="p">;</span>
<span class="w"> </span><span class="k">Begin</span>
<span class="w"> </span><span class="k">OPEN</span><span class="w"> </span><span class="n">po_results</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">SELECT</span>
<span class="w"> </span><span class="o">*</span>
<span class="w"> </span><span class="k">FROM</span>
<span class="w"> </span><span class="n">emp_o</span><span class="w"> </span><span class="n">e</span>
<span class="w"> </span><span class="k">WHERE</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v_id</span><span class="w"> </span><span class="p">;</span>
<span class="w"> </span><span class="k">EXCEPTION</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="n">OTHERS</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="p">;</span>
<span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="p">;</span>
<span class="w"> </span><span class="o">/</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_mt_0156.html">PL/SQL Packages</a></div>
</div>
</div>