在Oracle pl/sql中是否有一种方法可以创建像Java Hashmap这样的数据结构,它可以将记录类型作为值,将String作为索引.
例如;
type emp_rec_type is record (emp_id number,emp_salary number);
emp_rec emp_rec_type;
type emp_assoc_array is table of emp_rec_type indexed by varchar2(30);
emp_map emp_assoc_array;
Run Code Online (Sandbox Code Playgroud)
我希望能够做到以下几点
emp_rec.emp_id := 1;
emp_rec.salary := 1000;
emp_map('Rohan') := emp_rec;
Run Code Online (Sandbox Code Playgroud)
这可以实现吗?我不能使用嵌套表,因为我只能用整数索引它.使用关联数组,我不能使用对象类型作为属性.
也想在不必创建对象或模式数据类型的情况下执行此操作.你能建议一下吗?
我有以下代码片段,我想知道如何检查关联数组中是否存在条目
set serveroutput on;
DECLARE
TYPE per_form_metric IS record
(
output_achieved_itd NUMBER,
output_achieved_ptd NUMBER
);
TYPE per_form_metrics_tbl IS TABLE OF per_form_metric INDEX BY VARCHAR2(10) ;
TYPE interval_number_tbl IS TABLE OF per_form_metrics_tbl INDEX BY VARCHAR2(10) ;
TYPE ms_output_tbl IS TABLE OF interval_number_tbl INDEX BY VARCHAR2(100) ;
g_ms_output_tbl ms_output_tbl ;
l_per_f_rec per_form_metric;
l_per_f_tbl per_form_metrics_tbl;
l_per_int_tbl interval_number_tbl;
l_ms_out_tbl ms_output_tbl;
BEGIN
l_per_f_rec.output_achieved_itd := 1000;
l_per_f_rec.output_achieved_ptd := 1000;
l_per_f_tbl('Period 1') := l_per_f_rec;
l_per_int_tbl('Interval 1') := l_per_f_tbl;
l_ms_out_tbl('1') := l_per_int_tbl;
-- Now get me the output_achieved_itd …Run Code Online (Sandbox Code Playgroud)