J'essaie de trier une collection Oracle PL/SQL (un tableau associatif) en utilisant l'approche présentée here. J'ai modifié l'exemple de la page liée afin d'utiliser un tableau associatif , mais je suppose que j'ai quelques problèmes de moulage.Oracle CAST MULTISET ORA-00902: type de données invalide
Ici, il est mon code:
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;
Qu'est-ce que je fais mal?
Vous ne pouvez pas utiliser 'MULTISET' sur des tableaux associatifs. –