ORACLE存储过程使用数组

ORACLE存储过程使用数组
1 单维数组

--单维数组
DECLARE
    -- 定义一个数组
    TYPE emp_ssn_array IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; 
    -- 声明第一个数组变量
    best_employees  emp_ssn_array;
    -- 声明第二个数组变量
    worst_employees emp_ssn_array;
BEGIN
    -- 数组变量赋值
    best_employees(1) := '123456';
    best_employees(2) := '888888';
    worst_employees(1) := '222222';
    worst_employees(2) := '666666';
    --循环数组
    FOR i IN 1 .. best_employees.count LOOP
            DBMS_OUTPUT.PUT_LINE('i=' || i || ', best_employees= ' ||
                                 best_employees(i) || ', worst_employees= ' ||
                                 worst_employees(i));
        END LOOP;
END;

2 多维数组

--多维数组
DECLARE
    -- 定义一个类型 并指定参数类型 employee_table 数据库表 emp_id 字段
    TYPE emp_type IS RECORD(
                               emp_id     employee_table.emp_id%TYPE,
                               emp_name   employee_table.emp_name%TYPE,
                               emp_gender employee_table.emp_gender%TYPE);
    -- 指定数组类型
    TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER;
    -- 定义数组变量
    emp_rec_array emp_type_array;
    -- 类型变量
    emp_rec       emp_type;
BEGIN
    -- 给变量赋值
    emp_rec.emp_id     := 300000000;
    emp_rec.emp_name   := 'Barbara';
    emp_rec.emp_gender := 'Female';
    -- 添加到数组
    emp_rec_array(1) := emp_rec;
    emp_rec.emp_id     := 300000008;
    emp_rec.emp_name   := 'Rick';
    emp_rec.emp_gender := 'Male';
    emp_rec_array(2) := emp_rec;
    -- 循环数组
    FOR i IN 1 .. emp_rec_array.count LOOP
            DBMS_OUTPUT.PUT_LINE('i=' || i || ', emp_id =' || emp_rec_array(i)
                .emp_id || ', emp_name =' || emp_rec_array(i)
                                     .emp_name || ', emp_gender = ' || emp_rec_array(i)
                                     .emp_gender);
        END LOOP;
END;

3 SQL数据添加到数组

DECLARE
    -- 先指定参数类型
    TYPE emp_type IS RECORD
                     (
                         emp_id     book.id%TYPE,
                         emp_name   book.name%TYPE,
                         emp_gender book.age%TYPE
                     );
    -- 创建数组
    TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER;
    -- 定义数组变量
    emp_rec_array emp_type_array;
    
BEGIN
    -- 从表查询结果并插到定义 的数组变量
    select id, name, age bulk collect into emp_rec_array from book;
    -- 循环遍历数组
    FOR i IN 1 .. emp_rec_array.count
        LOOP
            DBMS_OUTPUT.PUT_LINE('i=' || i || ', emp_id =' || emp_rec_array(i)
                .emp_id || ', emp_name =' || emp_rec_array(i)
                                     .emp_name || ', emp_gender = ' || emp_rec_array(i)
                                     .emp_gender);
        END LOOP;
END;

如有更好的方法欢迎留言。。。。。

 原著所有,如需转载请注明出处。
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值