forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Reviewed-by: Jiang, Beibei <beibei.jiang@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
63 lines
2.9 KiB
HTML
63 lines
2.9 KiB
HTML
<a name="EN-US_TOPIC_0000001234042175"></a><a name="EN-US_TOPIC_0000001234042175"></a>
|
|
|
|
<h1 class="topictitle1">REF CURSOR</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001234042175__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_0000001234042175__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_0000001234042175__en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_p1050535822219"><strong id="EN-US_TOPIC_0000001234042175__en-us_topic_0237712617_b543818813814">Input - REF CURSOR in PL/SQL Package </strong>(Package Specification and Body)</p>
|
|
<pre class="screen" id="EN-US_TOPIC_0000001234042175__en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_screen765225513104"># Package specification
|
|
CREATE OR REPLACE PACKAGE pkg_refcur
|
|
IS
|
|
TYPE ref_variable IS REF CURSOR;
|
|
TYPE ref_strong_emptyp IS REF CURSOR RETURN emp_o%ROWTYPE;
|
|
PROCEDURE p_get_employees ( v_id in INTEGER ,po_results OUT ref_strong_emptyp );
|
|
|
|
END pkg_refcur ;
|
|
/
|
|
|
|
# Package body
|
|
CREATE OR REPLACE PACKAGE BODY pkg_refcur
|
|
IS
|
|
TYPE lref_strong_emptyp IS REF CURSOR RETURN emp_o%ROWTYPE ;
|
|
var_num NUMBER ;
|
|
|
|
PROCEDURE p_get_employees ( v_id IN INTEGER, po_results OUT ref_strong_emptyp )
|
|
is
|
|
vemp_rc lref_strong_emptyp ;
|
|
Begin
|
|
OPEN po_results for
|
|
SELECT * FROM emp_o e
|
|
WHERE e.id = v_id;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
RAISE;
|
|
END p_get_employees;
|
|
END pkg_refcur;
|
|
/</pre>
|
|
<p id="EN-US_TOPIC_0000001234042175__en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_p950855813225"><strong id="EN-US_TOPIC_0000001234042175__en-us_topic_0237712617_b14895441185412">Output</strong></p>
|
|
<pre class="screen" id="EN-US_TOPIC_0000001234042175__en-us_topic_0238518408_en-us_topic_0237362354_en-us_topic_0202727407_screen770818721120">BEGIN
|
|
INSERT INTO MIG_ORA_EXT.MIG_PKG_VARIABLES ( SCHEMA_NAME ,PACKAGE_NAME ,SPEC_OR_BODY ,VARIABLE_NAME ,VARIABLE_TYPE ,CONSTANT_I ,DEFAULT_VALUE ,EXPRESSION_I )
|
|
VALUES ( UPPER( current_schema ( ) ) ,UPPER( 'pkg_refcur' ) ,'B' ,UPPER( 'var_num' ) ,UPPER( 'NUMBER' ) ,false ,NULL ,false ) ;
|
|
END ;
|
|
/
|
|
|
|
CREATE
|
|
OR REPLACE PROCEDURE pkg_refcur#p_get_employees ( v_id IN INTEGER ,po_results OUT SYS_REFCURSOR ) is vemp_rc SYS_REFCURSOR ;
|
|
Begin
|
|
OPEN po_results for SELECT
|
|
*
|
|
FROM
|
|
emp_o e
|
|
WHERE
|
|
e.id = v_id ;
|
|
EXCEPTION WHEN OTHERS
|
|
THEN RAISE ;
|
|
END ;
|
|
/</pre>
|
|
</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>
|
|
|