我想在不使用任何循环的情况下更改集合的元素索引。我该怎么办?
declare
type NumberList is table of pls_integer;
nlist NumberList := NumberList(1,2,3,4,5,6,7,8,9,10);
n_first pls_integer := 1;
n_last pls_integer := 10;
我想使nlist
像(10,9,8,7,6,5,4,3,2,1)
。预先感谢。
答案 0 :(得分:1)
您可以对选择中的元素进行排序,然后将结果收集到新列表中
VK_PIPELINE_STAGE_TRANSFER_BIT
您的嵌套表应声明为全局类型
select * bulk collect into nlist2 from (
select column_value from table(nlist) order by 1 desc
);
比您可以使用的
CREATE or replace TYPE NumberList IS TABLE OF pls_integer;
答案 1 :(得分:0)
嵌套表未排序,因此实际上您的请求没有多大意义。
如果您希望按特定顺序获取元素,请使用
select column_value from table(nlist) order by 1 desc
请注意,您可以将此类数组存储在表中,但是当再次选择这些元素时,元素的顺序可以是任意的,请参见Nested Tables:
在数据库中,嵌套表是一种列类型,用于存储 未指定的行数,没有特定的顺序。
当您从数据库中将嵌套表值检索到PL / SQL中时 嵌套表格变量,PL / SQL为行提供连续索引, 从1开始。使用这些索引,您可以访问各个行 嵌套表变量。语法为variable_name(index)。的 嵌套表的索引和行顺序可能会随着您 从数据库存储和检索嵌套表。