oracle - PL/SQL 批量收集到具有稀疏键的关联数组

标签 oracle plsql associative-array

我想在 PL/SQL 中执行 SQL 查询并将结果填充到关联数组中,其中 SQL 中的列之一成为关联数组中的键。例如,假设我有一张 table Person带列

PERSON_ID   INTEGER      PRIMARY KEY
PERSON_NAME VARCHAR2(50)

...和值(value)观,如:
 PERSON_ID  |  PERSON_NAME
 ------------------------
 6          |  Alice
 15         |  Bob
 1234       |  Carol

我想将此表批量收集到TABLE OF VARCHAR2(50) INDEX BY INTEGER这样 key 6在这个关联数组中具有值 Alice等等。这可以在 PL/SQL 中完成吗?如果是这样,如何?

最佳答案

不,您必须使用 2 个集合(id、名称)或元素类型为记录的集合。

这是后者的示例:

  cursor getPersonsCursor is
    SELECT ID, Name
    FROM   Persons
    WHERE  ...;

  subtype TPerson is getPersonsCursor%rowtype;
  type TPersonList is table of TPerson;
  persons TPersonList;
begin

open getPersonsCursor;
fetch getPersonsCursor
  bulk collect into persons;
close getPersonsCursor;

if persons.Count > 0 then
  for i in persons.First .. persons.Last loop
    yourAssocArray(persons(i).ID) := persons(i).Name;
  end loop;
end if;

关于oracle - PL/SQL 批量收集到具有稀疏键的关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715736/

相关文章:

java - 如何在 Java 中的结果集中包含多个 Select 语句

sql - 甲骨文 SQL : Trigger to add grants after creating view

oracle - 在 PL/SQL block 内的 SQL 中使用嵌套表变量/集合

oracle - PLS-00103 : Encountered the symbol ";" when expecting one of the following:

php - 关联数组,对同一键的值求和

python - 关联矩阵?

python - 如何使用另一个表中的数据更新 Python 中的 oracle 表

sql - 在 Oracle 查询中将 varchar 列排序为整数值

oracle - SQL Developer 调试所有包调用

php - 制作多个数组的每个组合,而不重复每个数组中的项目