quelles sont les différences entre les tables temporaires et les variables de type table ?
Transaction
La première différence se situe au niveau des transactions, il n’y en a pas pour les variables de type table.
Exécutons le code ci-dessous pour le démontrer :
create table #TempTable (monchamp varchar(128))
declare @VarTable table (monchamp varchar(128))
insert into # TempTable select 'old value #'
insert into @ VarTable select 'old value @'
begin transaction
update #TempTable set monchamp ='new value #'
update @ VarTable set monchamp ='new value @'
rollback transaction
select * from # TempTable
---------------
old value #
select * from @VarTable
---------------
new value @
Pré-compilation
La seconde différence est qu’une table temporaire ne peut pas être pre-compilée, alors qu’un plan d’exécution d’une procédure stockée contenant des variables de types table peut être compilé en avance.
Pré-compiler un script permet une amélioration de sa vitesse d’exécution. Cet avantage est surtout vrai dans le cas de longue procédure, ou le coup d’une recompilation est pénalisant.
Portée
les variables de type Table ont la même portée que tout autres variables, a savoir la même que la fonction, procédure stockée ou lot d’instruction dans laquelle elle est déclarée. Contrairement aux tables temporaires, une une variable de type table ne peut pas être utilisée dans les instructions suivantes :
INSERT INTO table_variable EXEC stored_procedure
SELECT select_list INTO table_variable.
Pas de commentaire reçu(s)
Laisser une réponse