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

Tables SQL dynamique et temporaires T-SQL

Vous devez d'abord créer votre table, puis elle sera disponible dans le SQL dynamique.

Cela fonctionne :

CREATE TABLE #temp3 (id INT)
EXEC ('insert #temp3 values(1)')

SELECT *
FROM #temp3

Cela ne fonctionnera pas :

EXEC (
        'create table #temp2 (id int)
         insert #temp2 values(1)'
        )

SELECT *
FROM #temp2

En d'autres termes :

  1. Créer une table temporaire
  2. Exécuter la procédure
  3. Sélectionner dans le tableau temporaire

Voici un exemple complet :

CREATE PROC prTest2 @var VARCHAR(100)
AS
EXEC (@var)
GO

CREATE TABLE #temp (id INT)

EXEC prTest2 'insert #temp values(1)'

SELECT *
FROM #temp