【发布时间】:2021-10-27 14:26:06
【问题描述】:
我正在尝试对运行时查询中的数据进行排序,如果不使用集合,我无法做到这一点。本质上,我在服务表中有 2 列 - SERVICE_ID、SERVICE_NAME。我在包中创建了一个关联数组,以便可以在我的过程中使用它。
TYPE g_vc_arr IS TABLE OF VARCHAR2(4000) INDEX BY PLS_INTEGER;
在我的 pl/sql 块中,我正在创建一个如下所示的变量:
service_list my_pkg.g_vc_arr;
我将 SERVICE_ID 和 SERVICE_NAME 分配给这个变量,如下所示:
LOOP
service_list(services.SERVICE_ID) := services.SERVICE_NAME;
END LOOP;
现在,我正在使用它来对名称列进行排序,如下面的 sn-p。我可以打印姓名,但在此过程中,我丢失了 ID。
for query_result_row in (SELECT * from table(service_list) order by 1) loop
dbms_output.put_line(query_result_row.COLUMN_VALUE);
end loop;
我需要 ID 和 NAME 来进一步处理。我怎样才能两者兼得?
【问题讨论】:
-
刚刚通过 varchar2 定义了一个整数索引的集合并使用名称作为它的键,然后只使用迭代器(或我的旧迭代器:orasql.org/2017/10/02/…
-
在这种情况下,您的收藏将按键排序
-
没有任何sql
-
发布您的来源以获得 service.service_name 为您的分配声明。如果
select来自表或已构建游标,您可能不需要循环或排序。 -
似乎问题与排序无关,尽管有标题。我认为这是关于在将 PL/SQL 关联数组视为关系表时如何将数组索引显示为列。还是真的只是排序?
标签: oracle sorting plsql associative-array