Conseils et meilleures pratiques pour les procédures stockées
Cette section décrit quelques conseils et meilleures pratiques pour les procédures stockées.
Traitement des interruptions Control-C dans les boucles
Si la procédure rencontre une boucle infinie, vous pouvez appuyer sur Control-C pour interrompre la boucle. Cette séquence de touches devrait provoquer une exception (qui n'est pas rattrapable) et donc entraîner l'interruption et le retour de la boucle et de l'appel de procédure.
Traitement des requêtes en boucle
FOR rec in SELECT * from mytable LOOP
IF rec.type = ‘d’ THEN
EXECUTE IMMEDIATE ‘DELETE FROM mytable2 WHERE recid = ‘ || rec.id;
END IF;
END LOOP;Bien qu'il semble que la requête externe SELECT de la boucle FOR et la requête interne EXECUTE IMMEDIATE s'exécutent en même temps, la requête SELECT se termine et met en cache ses résultats avant que la requête interne ne commence. Ainsi, la suppression d'enregistrements de la table dans la boucle interne n'affecte pas la requête SELECT dans la boucle externe et ne modifie pas ses résultats.
DELETE from mytable2 where recid in (select recid from my table
where type = 'd') ;Cette procédure peut tirer parti de l'environnement de traitement massivement parallèle (MPP) de Netezza Performance Server pour s'exécuter beaucoup plus rapidement.