Le ci-dessous est mon code: Je souhaite stocker le résultat de Sélectionnez EventTypeq à partir de EPS_FRS_PAYments code> retournera 4 valeurs. Donc, je ne peux pas faire un simple sélectionner. P>
Sélectionnez EventTypeq à partir de eps_frrs_payments CODE> dans une variable et apportez le code comme ci-dessous, de sorte que la sous-requête n'est pas exécutée à chaque fois. p>
Sélectionnez Eventypeq à partir de EPS_FRS_PAYMENTS CODE> Renvoie quatre valeurs: P>
1,
2,
3,
4,
4 Réponses :
Créer le type s'il n'existe pas il s'agit d'un tableau p> et d'utilisation dans pl / sql p> declare
v_frseventpeseqs t_number1;
begin
SELECT EVENTTYPESEQ bulk collect
into v_frseventpeseqs
FROM EPS_FRS_PAYMENTS;
for i in (select t.column_value id from table(v_frseventpeseqs) t)
loop
dbms_output.put_line(i.id );
end loop;
end;
Vous pouvez utiliser la clause avec la clause. L'avantage est que les références répétées à une sous-requête peuvent être plus efficaces car les données sont facilement récupérées à partir d'une table temporaire plutôt que d'être demandée par chaque référence.
WITH eventtypeseq_query AS (SELECT EVENTTYPESEQ FROM EPS_FRS_PAYMENTS) SELECT /*+ parallel (sales 8) */ COUNT(1) INTO v_datacount_actualtable FROM sales WHERE processingunitseq=38 AND (compensationdate BETWEEN TO_DATE(v_startdate,'DD-MON-YYYY') AND TO_DATE(v_enddate,'DD-MON-YYYY') OR eventtypeseq IN eventtypeseq_query);
Etant donné que
SELECT EVENTTYPESEQ FROM EPS_FRS_PAYMENTS
Utiliser J'ai réécrit votre requête ci-dessous en utilisant existe code> est toujours meilleur en termes de performances par rapport à l'utilisation de
dans code>.
De plus, si vous écrivez cette requête pour exécuter régulièrement dans l'environnement en direct, il est suggéré de ne pas utiliser de conseils comme
/ * + parallèle * / code>. Les astuces ne doivent être utilisées que pour les requêtes ad hoc.
Existe code>: p>
Oui une collection avec
en vrac sélectionnez dans code> est la voie à suivre