Próbowałem wybrać ... do temp tabeli # TempTable w sp_Executedsql. Nie został pomyślnie wstawiony lub nie, ale istnieją tam komunikaty napisane (dotyczy 359 wierszy), które oznaczają pomyślne wstawienie? Script poniżejWykonaj sp_executeSql dla select ... na #table, ale nie można wybrać danych tabeli temp.
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = 'select distinct Coloum1,Coloum2 into #TempTable
from SPCTable with(nolock)
where Convert(varchar(10), Date_Tm, 120) Between @Date_From And @Date_To';
SET @Sql = 'DECLARE @Date_From VARCHAR(10);
DECLARE @Date_To VARCHAR(10);
SET @Date_From = '''+CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120)+''';
SET @Date_To = '''+CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120)+''';
'+ @Sql;
EXECUTE sp_executesql @Sql;
Po stracony, jego powrót na mnie wiadomości (359 row (s) affected). Następnie przy próbie wybrania danych z #TempTable.
Select * From #TempTable;
jego powrotu do mnie:
Msg 208, Level 16, State 0, Line 2
Invalid object name '#TempTable'.
Podejrzewa się, że tylko jej tylko część roboczą 'Select'. Wkładka nie działa. jak to naprawić?
myślę, że słowo „zakres” będzie lepiej. 'DECLARE @sql NVARCHAR (MAX); SET @sql = 'SELECT @@ SPID'; EXECUTE sp_executesql @sql; SELECT @@ SPID' –
Dzięki @Michal, przypomniałem już tę metodę użycia. Jeszcze raz dziękuję – Worgon
Pytanie brzmiało, jak to naprawić. Nie dlatego jego zerwanie. Podałem poprawną odpowiedź poniżej. 'INSERT INTO @tmpTbl EXEC sp_executesql @ sql' –