ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

ORACLE存储过程使用数组

2021-07-18 13:02:20  阅读:181  来源: 互联网

标签:存储 -- employees emp 数组 ORACLE rec array


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;

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

 原著所有,如需转载请注明出处。

标签:存储,--,employees,emp,数组,ORACLE,rec,array
来源: https://blog.csdn.net/weixin_45659202/article/details/118875914

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有