小编Roh*_*han的帖子

像Hashmap这样的PL/SQL数据结构

在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)

这可以实现吗?我不能使用嵌套表,因为我只能用整数索引它.使用关联数组,我不能使用对象类型作为属性.

也想在不必创建对象或模式数据类型的情况下执行此操作.你能建议一下吗?

sql plsql

8
推荐指数
1
解决办法
2万
查看次数

如何获取PL/SQL关联数组DS的NULL条件检查

我有以下代码片段,我想知道如何检查关联数组中是否存在条目

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)

sql oracle plsql

1
推荐指数
1
解决办法
4923
查看次数

标签 统计

plsql ×2

sql ×2

oracle ×1