Voyons maintenant la logique dont la procédure stockée SQL invoquante a besoin pour traiter les données du jeu de résultats contenues dans une table temporaire globale. Dans la figure 5, la procédure staff_project appelle la procédure Get_Free_Employees pour trouver les employés actuellement libres pour un nouveau projet.
La
Logique nécessaire
procédure staff-project sait que le résultat de cette interrogation se trouvera dans une table temporaire globale appelée freepmp_results. Pour traiter la liste renvoyée des employés dans la table temporaire, l’instruction For est utilisée pour ouvrir un curseur pour la table temporaire. A noter que le nom de la table temporaire globale doit être qualifié avec SESSION afin que DB2 puisse trouver la table temporaire globale déclarée renvoyée à partir de l’invocation de la procédure stockée Get_Free_Employees.
Si la procédure staff_project est appelée par deux connexions (ou jobs) de bases de données différentes simultanément, chaque connexion aura alors sa propre instance unique de cette table temporaire globale pour passer la liste des employés libres.
S’il existe certains programmes non SQL qui doivent accéder à ces données employé « libre » dans la table temporaire globale, des requêtes de lecture et d’écriture natives normales peuvent aussi être appliquées, parce qu’une table temporaire globale est considérée comme un objet table DB2 ordinaire.
Les déclencheurs SQL utilisaient le même langage procédural que le langage de procédure SQL. Ils souffrent donc de la même restriction : l’incapacité de traiter un jeu de résultats. Bien que les déclencheurs SQL puissent aussi utiliser cette technique de table temporaire globale, une étape de préparation supplémentaire est nécessaire. Quand un déclencheur SQL est créé, le standard SQL Server exige qu’existent tous les objets référencés par le déclencheur. De sorte que, si la table temporaire globale freemp_results n’existe pas dans le même job ou la même connexion qui tente de créer le déclencheur suivant, cette création échouera.
Pour contourner cet aspect d’imposition des standards, vous pourriez juste copier et exécuter l’instruction Declare Global Temporary Table pour la table globale requise à partir de la procédure stockée Get_Free_Employees ou appeler la procédure stockée avant d’exécuter cette instruction Create_Trigger (figure 6). Pour s’assurer que la dernière version de la définition de table temporaire globale sera utilisée, il vaudra mieux appeler la procédure avant de créer le déclencheur.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Veeam passe à la vitesse supérieure avec iResOps pour Microsoft 365
- Visibilité, réputation, clients : ce que les petites entreprises ne pourront plus déléguer en 2027
- IA souveraine : l’Europe avance, mais son interconnexion prend du retard
- Cloud public : la sécurité des données s’impose comme premier critère pour les agents publics
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
