comment utiliser vrac recueillir au lieu d'une boucle dans Oracle
J'ai un exemple de requête comme ci-dessous dans ma procédure:
result_rec mypkg.mytype;
OPEN CUR1 FOR
select col1, col2, col3 from table1 where something = 'a'; --rows will always be 50
LOOP
FETCH CUR1
INTO myrectype;
EXIT WHEN CUR1%NOTFOUND;
result_rec.col1 := myrectype.col1;
result_rec.col2 := myrectype.col2;
result_rec.col3 := myrectype.col3;
PIPE ROW (result_rec);
END LOOP;
Comme vous pouvez le voir, chaque fois que je suis en boucle de 50 fois. Est-il une meilleure façon de le faire? quelque chose comme VRAC RECUEILLIR DANS? comment pourrais-je la mettre?
Vous devez vous connecter pour publier un commentaire.
Dans Oracle 10g (éventuellement 9i), Oracle mettra automatiquement en vrac recueillir implicite des curseurs. Donc le code comme:
Ne fera que rendre le changement de contexte à partir de la PL/SQL moteur pour le moteur SQL pour récupérer les dossiers une fois tous les 100 lignes. L'exécuter en vertu d'une trace SQL (
dbms_monitor.session_trace_enable()
) et de voir!Vous pouvez essayer ce qui suit.