INSERT INTO @TABLE EXEC @query mit SQL Server 2000
Stimmt es, dass man in SQL Server 2000 nicht mit exec in eine Tabellenvariable einfügen kann?
Ich habe dieses Skript ausprobiert und erhielt die Fehlermeldung "EXECUTE kann beim Einfügen in eine Tabellenvariable nicht als Quelle verwendet werden".
declare @tmp TABLE (code varchar(50), mount money)
DECLARE @q nvarchar(4000)
SET @q = 'SELECT coa_code, amount FROM T_Ledger_detail'
INSERT INTO @tmp (code, mount)
EXEC sp_executesql (@q)
SELECT * from @tmp
Wenn das stimmt, was soll ich dann tun?
37
3
N.B. - diese Frage und Antwort beziehen sich auf die Version 2000 von SQL Server. In späteren Versionen wurde die Einschränkung für
INSERT INTO @table_variable ... EXEC ...
aufgehoben, so dass sie für diese späteren Versionen nicht mehr gilt.Sie müssen auf eine temporäre Tabelle umsteigen:
Aus der Dokumentation:
Innerhalb ihres Bereichs kann eine Tabellenvariable wie eine normale Tabelle verwendet werden. Sie kann überall angewendet werden, wo eine Tabelle oder ein Tabellenausdruck in SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen verwendet wird. Eine Tabelle darf jedoch nicht in den folgenden Anweisungen verwendet werden:
SELECT select_list INTO table_variable Anweisungen".
Die Dokumentation ist irreführend.
Ich habe den folgenden Code in der Produktion laufen
Wenn Sie in einer dynamischen Abfrage