文档首页/数据库和应用迁移 UGO/用户指南/语法转换指南/转换错误码/Oracle To GaussDB 转换错误码/U0100053: GaussDB暂不支持PACKAGE中RECORD类型属性设置默认值或声明为NOT NULL
更新时间:2026-03-19 GMT+08:00
U0100053: GaussDB暂不支持PACKAGE中RECORD类型属性设置默认值或声明为NOT NULL
描述
GaussDB暂不支持PACKAGE中RECORD类型属性设置默认值或声明为NOT NULL。
数据库类型与版本
- 源库类型与版本:UGO 支持的 Oracle 版本。
- 目标库类型与版本:UGO 支持的 GaussDB 版本。
语法示例
Oracle脚本:
CREATE OR REPLACE PACKAGE simple_record_pkg AS
TYPE person_rec IS RECORD (
id NUMBER := 0,
name VARCHAR2(100) := 'haha',
age NUMBER := 18,
is_active BOOLEAN := TRUE
);
FUNCTION create_default_person(v_age person_rec ) RETURN person_rec;
END simple_record_pkg;
/
CREATE OR REPLACE PACKAGE BODY simple_record_pkg AS
FUNCTION get_default_person RETURN person_rec ;
FUNCTION get_default_person RETURN person_rec IS
v_default person_rec;
BEGIN
RETURN v_default;
END;
FUNCTION create_default_person(v_age in person_rec ) RETURN person_rec IS
v_person person_rec := v_age;
BEGIN
DBMS_OUTPUT.PUT_LINE('ID: ' || v_person.id);
RETURN v_p erson;
END;
END simple_record_pkg;
/ 改造建议
1、package声明record带默认值注释掉;
2、在使用record类型前面,显示的给record类型赋默认值。
GaussDB改写后的脚本:
CREATE OR REPLACE PACKAGE simple_record_pkg AS
TYPE person_rec IS RECORD (
id NUMBER /* := 0*/,
name VARCHAR2(100) /*:= 'haha'*/,
age NUMBER /* := 18*/,
is_active BOOLEAN /* := TRUE*/
);
FUNCTION create_default_person(v_age person_rec ) RETURN person_rec;
END simple_record_pkg;
/
CREATE OR REPLACE PACKAGE BODY simple_record_pkg AS
FUNCTION get_default_person RETURN person_rec ;
FUNCTION get_default_person RETURN person_rec IS
v_default person_rec;
BEGIN
RETURN v_default;
END;
FUNCTION create_default_person(v_age in person_rec ) RETURN person_rec IS
v_person person_rec := v_age;
BEGIN
v_person.id:=0;
v_person.name:='haha';
v_person.age:=18;
v_person.is_active:=TRUE;
DBE_OUTPUT.PRINT_LINE('ID: ' || v_person.id);
RETURN v_person;
END;
END simple_record_pkg;
/ 
