云服务器内容精选

  • 数据类型 子类型 包中的自定义类型无法被转换。 SUBTYPE error_msg IS sad_products_t.exception_description%TYPE; SUBTYPE AR_FLAG IS SAD_RA_LINES_TI.AR_FLAG%TYPE; SUBTYPE LOCK_FLAG IS SAD_SHIPMENT_BATCHES_T.LOCK_FLAG%TYPE; bas_subtype_pkg.error_msg 输入: 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE PACKAGE SAD.bas_subtype_pkg IS SUBTYPE func_name IS sad_products_t.func_name%TYPE; END bas_subtype_pkg; / CREATE OR REPLACE PACKAGE BODY SAD.bas_subtype_pkg IS BEGIN NULL; END bas_subtype_pkg; / 输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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 bas_subtype_pkg.func_name;; BEGIN l_func_name := g_pkg_name || '.' || g_func_name ; RETURN l_func_name ; END func_name; END bas_dml_lookup_pkg; / %ROWTYPE 包的过程/函数包含 IN/OUT参数中的%ROWTYPE属性,此功能不被支持。 脚本:BAS_DML_SERVIECE_PKG.SQL, BAS_LOOKUP_MISC_PKG.SQL 输入: 1 2 3 4 5 6 7 8 CREATE OR REPLACE PACKAGE BODY "SAD"."BAS_DML_SERVIECE_PKG" IS PROCEDURE save_split_ou(pi_split_ou IN split_ou%ROWTYPE, po_error_msg OUT VARCHAR2) IS --- BEGIN --- end save_split_ou; end BAS_DML_SERVIECE_PKG; 输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE OR REPLACE PROCEDURE SAD.BAS_DML_SERVIECE_PKG#save_split_ou ( pi_split_ou IN split_ou%ROWTYPE ,po_error_msg OUT VARCHAR2 ) IS MIG_PV_VAL_DUMMY_G_FUNC_NAME VARCHAR2 ( 30 ) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( current_schema ( ) ,'BAS_DML_SERVIECE_PKG' ,'g_func_name' ) ::VARCHAR2 ( 30 ) ; ex_data_error EXCEPTION ; ex_prog_error EXCEPTION ; --- BEGIN --- END; 输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE OR REPLACE PACKAGE BODY SAD.BAS_DML_SERVIECE_PKG IS PROCEDURE save_split_ou(pi_split_ou IN split_ou%ROWTYPE, po_error_msg OUT VARCHAR2) IS BEGIN UPDATE split_ou so SET so.auto_balance_flag = pi_split_ou.auto_balance_flag, so.balance_start_date = pi_split_ou.balance_start_date, so.balance_source = pi_split_ou.balance_source WHERE so.dept_code = pi_split_ou.dept_code; EXCEPTION WHEN OTHERS THEN po_error_msg := 'Others Exception raise in ' || g_func_name || ',' || SQLERRM; END save_split_ou; END bas_dml_serviece_pkg; / 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE TYPE mig_typ_split_ou AS ...; CREATE OR REPLACE PROCEDURE SAD.BAS_DML_SERVIECE_PKG#save_split_ou ( pi_split_ou IN mig_typ_split_ou ,po_error_msg OUT VARCHAR2 ) PACKAGE IS BEGIN UPDATE split_ou so SET so.auto_balance_flag = pi_split_ou.auto_balance_flag ,so.balance_start_date = pi_split_ou.balance_start_date ,so.balance_source = pi_split_ou.balance_source WHERE so.dept_code = pi_split_ou.dept_code ; EXCEPTION WHEN OTHERS THEN po_error_msg := 'Others Exception raise in ' || g_func_name || ',' || SQLERRM ; END ; / 父主题: Oracle语法迁移
  • VARRAY REF CURSOR定义为返回参数。 设置plSQLCollection=varray后进行迁移。 输入: VARRAY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 CREATE OR REPLACE TYPE TYPE_RMTS_ARRAYTYPE IS TABLE OF VARCHAR2 (30000); CREATE OR REPLACE PACKAGE BODY SCMS_STRING_UTILS As FUNCTION END_WITH (SRCSTRING VARCHAR2, --Source character string ENDCHAR VARCHAR2, --End character string IGNORECASE BOOLEAN --Ignore Case ) RETURN BOOLEAN IS SRCLEN NUMBER (20) := LENGTH(SRCSTRING); ENDLEN NUMBER (20) := LENGTH(ENDCHAR); V_TOKEN_ARRAY TYPE_RMTS_ARRAYTYPE := TYPE_RMTS_ARRAYTYPE (); V_TOKEN_ARRAY1 TYPE_RMTS_ARRAYTYPE := TYPE_RMTS_ARRAYTYPE (); I NUMBER (20) := 1; TMP_CHAR VARCHAR(1); TMP_CHAR1 VARCHAR(1); BEGIN ... END; END; / 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE OR REPLACE FUNCTION SCMS_STRING_UTILS.END_WITH (SRCSTRING VARCHAR2 /* source character string */ , ENDCHAR VARCHAR2 /* End character string */ , IGNORECASE BOOLEAN /* Ignore case */ ) RETURN BOOLEAN IS SRCLEN NUMBER (20) := LENGTH(SRCSTRING); ENDLEN NUMBER (20) := LENGTH(ENDCHAR); TYPE TYPE_RMTS_ARRAYTYPE IS VARRAY (1024) OF VARCHAR2 (30000); V_TOKEN_ARRAY TYPE_RMTS_ARRAYTYPE /*:= TYPE_RMTS_ARRAYTYPE()*/ ; V_TOKEN_ARRAY1 TYPE_RMTS_ARRAYTYPE /*:= TYPE_RMTS_ARRAYTYPE()*/ ; I NUMBER (20) := 1; TMP_CHAR VARCHAR(1); TMP_CHAR1 VARCHAR(1); BEGIN END; 父主题: Oracle语法迁移