Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL Server / Oracle :Tables temporaires privées

Comme vous l'avez découvert, les tables temporaires SQL Server et Oracle sont fondamentalement différentes.

Dans Oracle, les tables temporaires globales sont des objets permanents qui stockent des données temporaires spécifiques à une session (ou à une transaction).

Dans SQL Server, les tables temporaires sont des objets temporaires stockant des données temporaires, #temp_tables stockant des données locales à une session et ##temp_tables stockant des données globales. (Je n'ai jamais eu besoin de tables temporaires globales SQL Server et je ne sais pas quel problème elles résolvent.) Si la #temp_table a été créée dans une procédure stockée, elle sera supprimée à la sortie de la procédure stockée. Sinon, il sera supprimé à la fermeture de la session.

Et non, il n'y a vraiment aucun moyen de faire en sorte que SQL Server imite Oracle. Vous pouvez utiliser une table normale avec une colonne supplémentaire stockant un ID de session. Mais vous n'obtiendrez pas les avantages des tables temporaires en ce qui concerne moins de journalisation. Vous devrez supprimer manuellement les données temporaires. Et gérez le nettoyage des sessions qui s'arrêtent prématurément.

MODIF : Une autre différence entre Oracle et SQL Server est que SQL Server permet d'encapsuler DDL dans une transaction avec d'autres instructions. Donc, si vous avez besoin d'utiliser une table temporaire dans le cadre d'une transaction plus importante, le create table #table_name... l'instruction ne validera pas implicitement la transaction en cours comme une create table déclaration serait dans Oracle.