文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> Oracle语法迁移> PL/SQL包> REF CURSOR

REF CURSOR

分享
更新时间: 2019/08/09 GMT+08:00

REF Cursor是一种数据类型,它可保存数据库游标值,并可用于返回查询结果。 Migration Tool支持REF CURSOR的迁移。如下示例显示了Migration Tool如何迁移lref_strong_emptyp(本地REF CURSOR)和ref_strong_emptyp(包级别REF CURSOR)。

输入:PL/SQL程序包中使用REF CURSOR(包规范和包体)

# 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;
/

输出

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 ;
     /
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区