数据仓库服务 GaussDB(DWS)-包拆分

时间:2025-01-26 10:51:40

包拆分

包规范迁移为以包名命名的模式,包体中的存储过程和函数迁移为Packagename.procedurenamePackagename.funtionname。

设置pkgSchemaNaming=true后,可以进行迁移。

输入: PACKAGE1.FUNC1

 1 2 3 4 5 6 7 8 9101112131415161718192021
CREATE OR REPLACE PACKAGE BODY pack AS  FUNCTION get_fullname(n_emp_id NUMBER) RETURN VARCHAR2 IS      v_fullname VARCHAR2(46);  BEGIN    SELECT first_name || ',' ||  last_name    INTO v_fullname    FROM employees    WHERE employee_id = n_emp_id;    RETURN v_fullname;  END get_fullname;   PROCEDURE get_salary(n_emp_id NUMBER) RETURN NUMBER IS    n_salary NUMBER(8,2);  BEGIN    SELECT salary    INTO n_salary    FROM employees    WHERE employee_id = n_emp_id;    END get_salary;END pack;/

输出

 1 2 3 4 5 6 7 8 91011121314151617181920212223242526
CREATEOR REPLACE FUNCTION pack.get_fullname ( n_emp_id NUMBER )RETURN VARCHAR2 IS v_fullname VARCHAR2 ( 46 ) ;BEGIN          SELECT                    first_name || ',' || last_name INTO v_fullname               FROM                    employees               WHERE                    employee_id = n_emp_id ;               RETURN v_fullname ;          END ;/CREATE     OR REPLACE FUNCTION pack.get_salary ( n_emp_id NUMBER )     RETURN NUMBER IS n_salary NUMBER ( 8 ,2 ) ;BEGIN          SELECT                    salary INTO n_salary               FROM                    employees               WHERE                    employee_id = n_emp_id ;               RETURN n_salary ;          END ;          /

若pkgSchemaNaming为false,可拆分包

当bas_lookup_misc_pkg调用insert_fnd_data_change_logs时,不会迁移insert_fnd_data_change_logs。

输入

 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334
CREATE OR REPLACE PACKAGE BODY SAD.bas_dml_lookup_pkg IS   g_pkg_name CONSTANT VARCHAR2(30) := 'bas_dml_ic_price_rule_pkg' ;  g_func_name VARCHAR2(100);  FUNCTION func_name  RETURN VARCHAR2   IS     l_func_name VARCHAR2(100) ;  BEGIN     l_func_name := g_pkg_name || '.' || g_func_name ;     RETURN l_func_name ;   END ;  PROCEDURE data_change_logs ( pi_table_name        IN VARCHAR2                             , pi_table_key_columns IN VARCHAR2                             , po_error_msg         OUT VARCHAR2        )   IS  BEGIN    g_func_name := 'insert_fnd_data_change_logs_t';    INSERT INTO fnd_data_change_logs_t      ( logid, table_name, table_key_columns )    VALUES      ( fnd_data_change_logs_t_s.NEXTVAL      , pi_table_name, pi_table_key_columns );  EXCEPTION    WHEN OTHERS THEN      po_error_msg := 'Others Exception raise in ' || func_name || ',' || SQLERRM;  END data_change_logs;END bas_dml_lookup_pkg;/

输出

 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334
CREATE OR REPLACE FUNCTION SAD.bas_dml_lookup_pkg#func_nameRETURN VARCHAR2 IS      MIG_PV_VAL_DUMMY_G_PKG_NAME VARCHAR2(30) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_PKG_NAME' )::VARCHAR2(30) ;     MIG_PV_VAL_DUMMY_G_FUNC_NAME VARCHAR2(100) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_FUNC_NAME' )::VARCHAR2(100) ;     l_func_name VARCHAR2(100) ;BEGIN     l_func_name := MIG_PV_VAL_DUMMY_G_PKG_NAME || '.' || MIG_PV_VAL_DUMMY_G_FUNC_NAME ;     RETURN l_func_name ;END ;/CREATE OR REPLACE PROCEDURE SAD.bas_dml_lookup_pkg#data_change_logs ( pi_table_name IN VARCHAR2                 , pi_table_key_columns IN VARCHAR2                 , po_error_msg OUT VARCHAR2 ) IS  MIG_PV_VAL_DUMMY_G_FUNC_NAME VARCHAR2(30) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( 'SAD' ,'BAS_DML_LOOKUP_PKG' ,'G_FUNC_NAME' )::VARCHAR2(30) ;BEGIN     MIG_PV_VAL_DUMMY_G_FUNC_NAME := 'insert_fnd_data_change_logs_t' ;     INSERT INTO fnd_data_change_logs_t (          logid,table_name,table_key_columns )     VALUES ( NEXTVAL ( 'fnd_data_change_logs_t_s' )            , pi_table_name, pi_table_key_columns ) ;     MIG_ORA_EXT.MIG_FN_SET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_FUNC_NAME', MIG_PV_VAL_DUMMY_G_FUNC_NAME ) ;     EXCEPTION        WHEN OTHERS THEN           po_error_msg := 'Others Exception raise in ' || SAD.bas_dml_lookup_pkg#func_name( ) || ',' || SQLERRM ;           MIG_ORA_EXT.MIG_FN_SET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_FUNC_NAME', MIG_PV_VAL_DUMMY_G_FUNC_NAME ) ;END ;/

PACKAGE关键字

内核需要将包标签添加到从包转换来的函数和存储过程。

输入

 1 2 3 4 5 6 7 8 91011121314
CREATE OR REPLACE PACKAGE BODY SAD.bas_dml_lookup_pkg IS   FUNCTION func_name  RETURN VARCHAR2   IS     l_func_name VARCHAR2(100) ;  BEGIN     l_func_name := 'bas_dml_lookup_pkg' || '.' || 'func_name' ;     RETURN l_func_name ;   END ;END bas_dml_lookup_pkg ;/

输出

 1 2 3 4 5 6 7 8 91011
CREATE OR REPLACE FUNCTION func_nameRETURN VARCHAR2 PACKAGEIS   l_func_name VARCHAR2(100) ;BEGIN   l_func_name := 'bas_dml_lookup_pkg' || '.' || 'func_name' ;   RETURN l_func_name ;END ;/
support.huaweicloud.com/tg-dws/dws_mt_0301.html