Oracle中%Type和%RowType的使用

参考文档
https://docs.oracle.com/database/121/LNPLS/type_attribute.htm#LNPLS01352
https://docs.oracle.com/database/121/LNPLS/rowtype_attribute.htm#LNPLS01342

1.语法

%TYPE

%TYPE SYNTAX

%ROWTYPE

%ROWTYPE SYNTAX

2.%TYPE和%ROWTYPE的区别

相同点
1)%TYPE和%ROWTYPE都是继承表的字段类型和长度,不继承约束条件和默认值。参考ROWTYPE测试【示例二】

不同点
1)%TYPE只可以继承表中的某个一字段类型和长度,而%ROWTYPE可以继承表中所有的字段类型和长度。参考TYPE测试【示例一】和ROWTYPE测试【示例一】、【示例三】
2)%ROWTYPE可以继承游标中的字段类型和长度。
3)%ROWTYPE可以记录之间相互赋值。
4)表中若有不可见的列,%ROWTYPE若要调用时会受影响。

3.数据准备

create table TEST_DEPT
(
  deptno NUMBER(2) not null,
  dname  VARCHAR2(14),
  loc    VARCHAR2(13)
);
alter table TEST_DEPT add constraint PK_DEPTNO primary key (DEPTNO);

INSERT INTO TEST_DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO TEST_DEPT VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO TEST_DEPT VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO TEST_DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

select * from test_dept;
   DEPTNO   DNAME   LOC
   ---   ---------  -----------
1	10	ACCOUNTING	NEW YORK
2	20	RESEARCH	DALLAS
3	30	SALES	CHICAGO
4	40	OPERATIONS	BOSTON

4.测试

1)TYPE测试

【示例一】
%TYPE继承表的字段类型和字段长度,但是不会继承约束条件以及初始化的值。 如test_dept表中的deptno是主键,变量depno只会继承test_dept表中的deptno字段的类型和长度NUMBER(2)。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值