Utilisation de tables SGBD temporaires en tant que fichiers HOLD

Dans cette section :

Comment :

Référence :

Vous pouvez créer un fichier de sortie de procédure de rapport, (c'est-à-dire un fichier HOLD), en tant que table SGBD temporaire. Cela améliore la performance car la procédure de créer un rapport se passe entièrement sur le serveur DBMS, vous évitant de télécharger des données vers votre ordinateur et puis vers le serveur SGBD.

Par exemple, si vous stockez temporairement la sortie d'une procédure de rapport pour une utilisation immédiate par une autre procédure, le fait de la stocker en tant que table temporaire et non pas de créer un fichier HOLD standard vous évite d'utiliser du temps-système pour transmettre les données intermédiaires vers votre ordinateur.

Les colonnes des tables temporaires sont créées à partir des éléments de rapport suivants :

sauf celles pour lesquelles la commande NOPRINT a été spécifiée.

La table temporaire que vous créez à partir de votre rapport utilise le même type de source de données (c'est-à-dire, le même SGBD) que la source de données que vous avez utilisée pour créer votre rapport. Si la source de données que vous avez utilisée pour créer votre rapport contient des tables multiples, celles-ci doivent être toutes du même type et résider sur la même instance du serveur SGBD.

Vous pouvez choisir entre plusieurs types de persistance de table.

Vous pouvez créer des fichiers d'extrait en tant que tables SGBD natives en utilisant les adaptateurs suivants :


Haut de page

x
Syntaxe : Utiliser des commandes pour sauvegarder les résultats d'une procédure de rapport en tant que table temporaire native

La syntaxe servant à enregistrer la sortie de rapport en tant que tableau temporaire DBMS natif est

ON TABLE HOLD [AS filename] FORMAT SAME_DB [PERSISTENCE persistValue]

où :

filename
spécifie le nom du fichier HOLD. Si vous omettez AS filename, le nom de la table temporaire prend "HOLD" par défaut.

Comme chaque commande HOLD subséquente écrase le fichier HOLD précédent, il est recommandé de coder un nom de fichier distinct dans chaque requête afin de diriger les données extraites vers un autre fichier, empêchant ainsi l'écrasement du fichier par la prochaine commande HOLD.

PERSISTENCE
Spécifie la persistence de type de tableau et d'autres propriétés de tableau connexes. Il s'agit d'une option pour les DBMS prenant en charge les tableaux volatiles ; autrement, cet attribut est obligatoire. Pour des informations relatives à la prise en charge des tables volatiles pour un SGBD particulier, consultez la rubrique Propriétés des tables temporaires pour les valeurs de persistance SAME_DB et consultez la documentation de votre fournisseur SGBD.
persistValue
indique une des choses suivantes :
VOLATILE
indique que la table est locale relativement à la session SGBD. Un synonyme temporaire (un fichier maître ou fichier d'accès), est généré automatiquement. Il expire lorsque se termine la session du serveur.

Il s'agit de la définition de persistance par défaut pour tous les SGBD qui prennent en charge les tables volatiles.

Pour des informations relatives à la prise en charge de la définition volatile et à la persistance et d'autres propriétés de table pour un SGBD particulier, consultez Propriétés des tables temporaires pour les valeurs de persistance SAME_DB et consultez la documentation de votre fournisseur SGBD.

GLOBAL_TEMPORARY
indique que pendant que la table existe, sa définition est visible par d'autres sessions de bases de données et utilisateurs non pas ses données. Un synonyme permanent (un fichier maître ou fichier d'accès), est généré automatiquement.

Pour des informations relatives à la prise en charge de la définition temporaire globale et à la persistance et d'autres propriétés de table pour un SGBD particulier, consultez Propriétés des tables temporaires pour les valeurs de persistance SAME_DB et consultez la documentation de votre fournisseur SGBD.

PERMANENT
indique qu'une table permanent standard sera créée. Un synonyme permanent (un fichier maître ou fichier d'accès), est généré automatiquement.

Haut de page

x
Référence : Propriétés des tables temporaires pour les valeurs de persistance SAME_DB

Le tableau suivant fournit des détails sur la persistance et d'autres propriétés des tables temporaires qui utilisent différents types de sources de données pris en charge pour l'utilisation avec le format HOLD SAME_DB.

SGBD

VOLATILE

GLOBAL_TEMPORARY

DB2

DB2 sur UNIX, Windows et DB2 pour z/OS : une table volatile est créée à l'aide de la commande DECLARE GLOBAL TEMPORARY TABLE avec l'option ON COMMIT PRESERVE ROWS. Des tables temporaires déclarées sont préservées et ne sont visibles que lors de la session (connexion) en cours. SESSION est le nom de schéma pour toutes les tables temporaires globales déclarées.

DB2 version 7.1 et supérieure pour z/OS uniquement : une table temporaire globale est créée à l'aide de la commande CREATE GLOBAL TEMPORARY TABLE. La définition d'une table temporaire globale est visible à d'autres sessions mais ses données ne le sont pas. Les données sont supprimées à la fin de chaque transaction (commande COMMIT ou ROLLBACK). La définition de table est préservée après que la session se termine.

Informix

Une table volatile est créée en utilisant la commande CREATE TEMP TABLE avec l'option WITH NO LOG. La définition et les données de la sont préservées et sont visibles, mais seulement lors de la session en cours.

Ce type de table n'est pas pris en charge par Informix.

Microsoft SQL Server

Une table volatile est créée en tant que table temporaire locale dont le nom est précédé d'un carré unique (#). Par conséquent, le nom de la table volatile utilisée en tant que fichier HOLD est le nom spécifié par la phrase HOLD, précédé d'un carré (#). La définition et les données de la table sont préservées et sont visibles, mais seulement lors de la session en cours.

Le nom d'une table temporaire globale est précédé de deux carrés (##). Par conséquent, le nom d'une table temporaire globale utilisée en tant que fichier HOLD est le nom spécifié par la phrase HOLD, précédé de deux carrés (##). La table est supprimée automatiquement lorsque la session qui l'a créée se termine et que toutes les autres tâches arrêtent d'y faire référence. La définition et les données de la table sont visibles lors d'autres sessions.

MySQL

Une table volatile est créée en utilisant la commande CREATE TEMPORARY TABLE. Une table temporaire est préservée et n'est visible que lors de la session (connexion) en cours. Si une table temporaire a le même nom qu'une table permanente, celle-ci devient invisible.

Ce type de table n'est pas pris en charge par MzSQL.

Oracle

Ce type de table n'est pas pris en charge par Oracle.

La définition de la table est visible à toutes les sessions. Ses données sont visibles seulement à la session qui y insère des données. La définition de la table est préservée pendant la même période que la définition d'une table standard.

Teradata

La définition et les données d'une table volatile ne sont visibles que lors de la session qui a créé la table et qui y a inséré les données. La table volatile est créée en utilisant l'option ON COMMIT PRESERVE ROWS.

Une table temporaire globale est préservée pendant la même période qu'une table permanente. La définition est visible à toutes les sessions mais ses données ne sont visibles qu'à la session qui y a inséré des données. La table temporaire globale est créée en utilisant l'option ON COMMIT PRESERVE ROWS.



x
Noms de colonnes dans le fichier HOLD

Un nom est attribué à chaque colonne de fichier HOLD :

  1. A partir du nom AS spécifié pour la colonne dans la requête de rapport.
  2. S'il n'y a pas de nom AS spécifié, le nom est attribué en fonction de l'alias spécifié dans le synonyme. (L'alias est identique au nom de colonne dans la table relationnelle originale).
  3. Dans tous les autres cas, le nom est attribué en fonction du nom de champ tel qu'il est spécifié dans le synonyme.

Haut de page

x
Clés primaires et indexes dans le fichier HOLD

Une clé primaire ou un index est créé(e) pour la table HOLD. La définition de clé ou d'index est générée à partir des clés de tri (BY) de la commande TABLE, sauf les clés de tri non affichées (c'est-à-dire, les clés de tri pour lesquelles la commande NOPRINT a été spécifiée). Pour déterminer si une clé primaire ou un index sera créé(e) :

  1. Si ces clés de tri permettent l'unicité et ne permettent pas de caractères nuls (c'est-à-dire, si dans le synonyme l'attribut MISSING de la colonne n'est pas sélectionné ou qu'il égale OFF), et si le SGBD prend en charge les clés primaires pour le type de table qui est en train d'être crée, alors une clé primaire est créée.
  2. Si ces clés primaires permettent l'unicité mais
    1. quelques-unes des colonnes permettent des caractères nuls.
    2. le DBMS ne prend pas en charge les clés primaires sur le tu
  3. Si ces clés de tri ne permettent pas l'unicité, un index non unique est créé.
  4. S'il n'y a pas de clé de tri affichée (c'est-à-dire, s'il n'y a aucune clé de tri pour laquelle la commande NOPRINT a été spécifiée), alors aucune clé primaire n'est pas créée.

WebFOCUS