【发布时间】:2018-02-24 10:16:21
【问题描述】:
我正在尝试使用here 提供的方法对 Oracle PL/SQL 集合(关联数组)进行排序。我修改了链接页面中的示例以使用关联数组,但我想我遇到了一些转换问题。
这是我的代码:
DECLARE
TYPE TABLE_TYPE IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
table_in TABLE_TYPE;
table_out TABLE_TYPE;
BEGIN
-- 1. Populating the collection with random numbers between 1 and 50
FOR i IN 1..9 LOOP
SELECT ROUND(DBMS_RANDOM.VALUE(1,50))
INTO table_in('key-'||i)
FROM DUAL;
END LOOP;
-- 2. Trying to order the collection -> throws ORA-00902: invalid datatype
SELECT CAST (MULTISET(
SELECT * FROM TABLE(table_in)
ORDER BY 2
) AS TABLE_TYPE
)
INTO table_out
FROM DUAL;
END;
我做错了什么?
【问题讨论】:
-
你不能在关联数组上使用
MULTISET。
标签: oracle collections plsql casting associative-array