Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

T-SQL Dynamisches SQL und temporäre Tabellen

Sie müssen zuerst Ihre Tabelle erstellen, dann ist sie im dynamischen SQL verfügbar.

Das funktioniert:

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

SELECT *
FROM #temp3

Das wird nicht funktionieren:

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

SELECT *
FROM #temp2

Mit anderen Worten:

  1. Temporäre Tabelle erstellen
  2. Prozess ausführen
  3. Aus temporärer Tabelle auswählen

Hier ist ein vollständiges Beispiel:

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

CREATE TABLE #temp (id INT)

EXEC prTest2 'insert #temp values(1)'

SELECT *
FROM #temp