sql >> Base de Datos >  >> RDS >> Sqlserver

T-SQL SQL dinámico y tablas temporales

Primero debe crear su tabla y luego estará disponible en el SQL dinámico.

Esto funciona:

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

SELECT *
FROM #temp3

Esto no funcionará:

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

SELECT *
FROM #temp2

En otras palabras:

  1. Crear tabla temporal
  2. Ejecutar proceso
  3. Seleccionar de la tabla temporal

Aquí hay un ejemplo completo:

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

CREATE TABLE #temp (id INT)

EXEC prTest2 'insert #temp values(1)'

SELECT *
FROM #temp