Oracle type怎么使用_oracle_type的个人理解

oracle 中 有两个type

Oracle 自定义TYPE 的几种用法

Oracle中的类型有很多种,主要可以分为以下几类:

1、字符串类型。如:char、nchar、varchar2、nvarchar2。

2、数值类型。如:int、number(p,s)、integer、smallint。

3、日期类型。如:date、interval、timestamp。

4、PL/SQL类型。如:pls_integer、binary_integer、binary_double(10g)、binary_float(10g)、boolean。plsql类型是不能在sql环境中使用的,比如建表时。

5、自定义类型。

***********************一个type 就像是复合变量: 个人理解这个type 就是一个数组一样,不过他返回值只有一个值。而且需要赋值。

例1:

DECLARE

TYPE t1 IS TABLE OF emp.ename%TYPE

INDEX BY BINARY_INTEGER;

TYPE t2 IS TABLE OF DATE INDEX BY BINARY_INTEGER;

type t3 is table of varchar2(10) index by binary_integer;

v1 t1;

v2 t2;

v3 t3;

BEGIN

v1(1) := 'CAMERON';

v2(8) := SYSDATE + 7;

select ename,hiredate into v1(7900),v2(7900) from emp where empno=7900;

v1(555) :='AAAA';

v2(666) :=sysdate-100;

v3(1):='test';

dbms_output.put_line(v1(1)||' '||v1(7900)||v2(666));

dbms_output.put_line(v2(8)||' '||v2(7900)||v1(555));

dbms_output.put_line(v3(1));

END;

/

例2:

使用集合的属性来操作集合的数据

– NEXT

– TRIM

– DELETE

– EXISTS

– COUNT

– FIRST and LAST

– PRIOR

DECLARE

TYPE t2 IS TABLE OF dept%rowtype INDEX BY BINARY_INTEGER;

v2 t2;

n1 number(3);n2 number(3);n3 number(3);n4 number(3);n5 number(3);n6 number(3);

BEGIN

select * into v2(10) from dept where deptno=10;

select * into v2(20) from dept where deptno=20;

select * into v2(30) from dept where deptno=30;

select * into v2(40) from dept where deptno=40;

n1:=v2.first;--第一号元素

n2:=v2.last;--最后一个元素

n3:=v2.count;--共有多少个元素

n4:=v2.PRIOR(20);--20号的前一个为几号

n5:=v2.NEXT(20);--20号的后一个为几号

dbms_output.put_line(n1||'...'||n2||'...'||n3||'...'||n4||'...'||n5);

v2.delete(30);--将30号删除,不写几号为都删除

n6:=v2.count;

dbms_output.put_line(n6);

END;

/

例3:成员为复合变量,每个主键访问一行数据

DECLARE

TYPE t1 IS TABLE OF emp%rowtype

INDEX BY BINARY_INTEGER;

TYPE t2 IS TABLE OF dept%rowtype INDEX BY BINARY_INTEGER;

v1 t1;

v2 t2;

BEGIN

select * into v1(7900) from emp where empno=7900;

select * into v2(10) from dept where deptno=10;

dbms_output.put_line(v1(7900).empno||v1(7900).ename);

dbms_output.put_line(v2(10).dname);

END;

/

例4:

declare

type t_tab is table of emp%rowtype;

v_tab t_tab;

i int := 0;

v_count int;

begin

v_tab := t_tab();--用不带参数的构造函数初始化一个空表

dbms_output.put_line(v_tab.count);

dbms_output.put_line('---------------------------');

for rec in (select * from emp where empno like '7%') loop

i := i + 1;

v_tab.extend;--增加一条空表

v_tab(i).empno := rec.EMPNO;

v_tab(i).ename :=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值