oracle 自定义类型

例1: 批量 查询部门号为 "10" 号的并把它们打印出来 .

DECLARE

   TYPE emp_table_type IS TABLE OF my_emp%ROWTYPE INDEX BY BINARY_INTEGER;

   v_emp_table emp_table_type;

BEGIN

    SELECT * BULK COLLECT INTO v_emp_table FROM my_emp WHERE deptno=&deptno;

    FOR i IN 1..v_emp_table.COUNT LOOP

           dbms_output.put_line('EMPLOYEE_INFO:'||v_emp_table(i).ename||

                                                      ','||v_emp_table(i).job||

                                                      ','||v_emp_table(i).hiredate);

   END LOOP;

END;

 

 

说明部分:

1. DECLARE 说明以下你要声明的部分

2. Type 声明是类型 emp_table_typ e 类型的名字

3. IS TABLE OF 指定是一个集合的表的数组类型, 简单的来说就是一个可以存储一列多行的数据类型 , my_emp 指出在哪个表上( 存在的表 ) %ROWTYPE指在表上的行的数据类型.

4. INDEX BY BINARY_INTEGER 指索引组织类型

5. v_emp_table 定义一个变量来存储集合数据类型

6. BULK COLLECT INTO 指是一个成批聚合类型, 简单的来说 , 它可以存储一个多行多列存储类型 ,into 后面指定从哪里来 ,

7. v_emp_table.COUNT 用来 v_emp_table 里面的数量

8. (i)表示下标号

 

 

 

by PLS_INTEGER你可以用类似 string_index_by_number(1),也就用数字下标来访问集合中的元素,例子:
declare
TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(30);
num_collection string_index_by_number;
begin
num_collection(1) := '北京';
dbms_output.put_line(num_collection(1)); --输出为北京
end;
BY VARCHAR2(30) 你可以用类似 number_index_by_string ('name'),也就用数字下标来访问集合中的元素.
例子: declare
TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(30);
num_collection number_index_by_string;
begin
num_collection('北京') := 1;
dbms_output.put_line(num_collection('北京')); --输出为1
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值