YashanDB TREAT函数

TREAT函数用于修改expr定义的类型。

必须拥有type的EXECUTE权限。

  • expr和type的类型必须是自定义类型的OBJECT类型。

  • 如果expr和type是同一类型,函数返回值为expr。

  • type必须是expr定义类型的超类型或子类型,否则TREAT编译错误。

  • 如果expr的值不是type类型或type的子类型,TREAT执行错误,在SQL中返回NULL,在PL中产生一个异常。

示例

CREATE OR REPLACE TYPE udt_object_sp FORCE IS OBJECT (
    branch_no CHAR(4),
    branch_name VARCHAR2(200)
) NOT FINAL;
/

CREATE OR REPLACE TYPE udt_object_sub FORCE UNDER udt_object_sp (
    area_no CHAR(2),
    address VARCHAR2(200)
) NOT FINAL;
/

DECLARE
    obj1 udt_object_sub := udt_object_sub('0101','Beijing','01','North Street');
    obj2 udt_object_sp;
BEGIN
    obj2 := TREAT (obj1 AS udt_object_sp);
    DBMS_OUTPUT.PUT_LINE(obj2.branch_name);
END;
/

DECLARE
    obj1 udt_object_sp := udt_object_sub('0101','Beijing','01','North Street');
    obj2 udt_object_sub;
BEGIN
    obj2 := TREAT (obj1 AS udt_object_sub);
    DBMS_OUTPUT.PUT_LINE(obj2.branch_name);
END;
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值