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

Tables temporaires globales - SQL Server vs Oracle

Les tables temporaires dans Oracle sont des objets permanents qui contiennent des données temporaires locales à la session. Les tables temporaires dans SQL Server sont des objets temporaires.

  1. Dans SQL Server, une table temporaire globale contient des données visibles pour toutes les sessions. "Les tables temporaires globales sont visibles par tout utilisateur et toute connexion après leur création." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
  2. Les tables temporaires globales sont toujours des objets temporaires qui ne persistent pas indéfiniment et peuvent devoir être créées avant utilisation. "Les tables temporaires globales sont ... sont supprimées lorsque tous les utilisateurs qui font référence à la table se déconnectent de l'instance de SQL Server." http://msdn.microsoft.com/en-us/library/ms186986 .aspx

Je trouve qu'une table temporaire locale, ou une variable de table, est la plus proche de la table temporaire globale d'Oracle, la grande différence est que vous devez la créer à chaque fois.

Habituellement, dans un cas comme le vôtre, l'étape 3, ajouter des lignes à la table temporaire, se ferait en faisant un select ... into #temp_table_name .... (équivalent à Oracle create table ... as select ... ) http://msdn.microsoft.com/en-us/library/ ms188029.aspx

De plus, vous ne pouvez pas effectuer les actions suivantes dans une procédure stockée :(pseudo-code.)

begin proc
   call another proc to create local temp table.
   use temp table
end proc

Les tables temporaires locales sont détruites lors du retour de la procédure stockée qui les a créées.

Mise à jour 2014-10-14 : Le comportement des tables temporaires locales est différent dans la version Parallel Data Warehousev de SQL Server. Les tables temporaires ne sont pas supprimées à la sortie de la procédure stockée qui les a créées et continuent à exister pour le reste de la session. Ce comportement observé sur :

select @@version
Microsoft SQL Server 2012 - 10.0.5108.1 (X64) Jun 24 2014 20:17:02 Copyright (c) Microsoft Corporation Parallel Data Warehouse (64-bit) on Windows NT 6.2 <X64> (Build 9200: )