使用字典(类似于 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;
我想在 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;