Est-il possible d’utiliser des nested table dans sql avec la CLAUSE TABLE() et CAST() ?
Bonjour,
Je souhaite utiliser des « nested table »(ntab) en SQL. Je sais qu’il n’est pas possible de le faire directement.
Il existe 2 solutions. Soit créer des types objet et caster la structures des ntab sur les objets dans la clause from, soit utiliser des pipe row.
Je ne souhaite pas polluer la db en créant des types juste pour caster mes requêtes et je n’ai pas envie d’alourdir un package en ajoutant une trentaine de pipelined fonction.
Cependant Est-il possible de faire dans la clause TABLE des cast colonne par colonne ?
Certains se demandent pourquoi je fais cela ?
J’ai un package avec un grand nombre de fonctions et procédure avec des paramètres sys_refcursor. Ces func/proc sont utilisées en masse par du dotnet elles ont pour but de faire tous les requêtes db. Le sys refcursor est l’interface d’échange pl/sql et dotnet.
Certaines requêtes prennent du temps. Il est possible de booster les résultats en faisant une première passe par une requête de type « bulk collect ». Les résultats se trouvent dans une nested table. Je souhaite envoyer ce résultat à un sysrefcursor : open sys_refcurosr for select * cast( de ma nested table )qui est le résultat de la qry pour l’application dotnet. Pl/Sql réagit mal,
ORA-22905 - cannot access rows from a non-nested table item
Je reviens sur ma question : est-il possible de faire cast de chaque champ de ma nested_table pour que celle si soit comprise par le moteur sql sans créer un type ?
Bien à vous
pat
Partager