使用字典(类似于 Python dict)

Using Dictionaries(similar to Python dict)

我想在 plsql 中创建一个字典对象。 (11克) 字典对象将具有三个字段:employee_id、manager_id、持续时间 由于查询时间的原因,我不想创建 table。我想访问内存中的项目。

我将使用批量收集向该字典对象中插入 200 万行。 然后我想访问 dictionay 对象,例如:(334 是员工 ID) dictEmp[334].manager_id=8 或 return dictEmp[334].duration

你能推荐什么文件吗? 谢谢

假设您可以使用列 [employee_id、manager_id、持续时间]:

迭代列表列表(称为员工)
desired_dict = {}
for employee_id, manager_id, duration in employees:
     desired_dict[employee_id] = {"manager_id" : manager_id, "duration" : duration }

#or even better
desired_dict = {employee_id : {"manager_id" : manager_id, "duration" : duration } 
for employee_id, manager_id, duration in employees}

#now, you can access an  employee like:
some_manager = desired_dict[334]['manager_id']
some_duration = desired_dict[334]['duration']

但你可能想使用 pandas 并做类似的事情:

import pandas as pd
employees_data = pd.DataFrame(employees, columns=['employee_id', 'manager_id', 'duration'])
employees_data.index = employees_data['employee_id']
desired_dict = employees_data.to_dict()

听起来像 PL/SQL 中的关联数组。

declare 
    type employee_t is table of emp_demo%rowtype index by pls_integer;
    l_employees employee_t;
begin
    for r in (
        select * from emp_demo
    )
    loop
        l_employees(r.employee_id) := r;
    end loop;

    dbms_output.put_line('Manager for employee 334 is: ' || l_employees(334).manager_id);

    dbms_output.put_line('Manager''s manager is ' || l_employees(l_employees(334).manager_id).employee_name);
end;

测试数据:

create table emp_demo
( employee_id integer primary key
, employee_name varchar2(40)
, manager_id  integer
, hiredate date
, duration integer );

insert all
    into emp_demo values (8, 'Clark', 5, date '2015-04-02', 18)
    into emp_demo values (334, 'Jones', 8, date '2015-01-05', 12)
    into emp_demo values (455, 'Smith', 7, date '2015-02-04', 14)
    into emp_demo values (566, 'Patel', 6, date '2015-03-03', 16)
select * from dual;