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

INSÉRER DANS @TABLE EXEC @query avec SQL Server 2000

N.B. - cette question et cette réponse concernent la version 2000 de SQL Server. Dans les versions ultérieures, la restriction sur INSERT INTO @table_variable ... EXEC ... ont été supprimés et ne s'appliquent donc pas à ces versions ultérieures.

Vous devrez passer à une table temporaire :

CREATE TABLE #tmp (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

À partir de la documentation :

Une variable de table se comporte comme une variable locale. Il a une portée bien définie, qui est la fonction, la procédure stockée ou le lot dans lequel il est déclaré.

Dans sa portée, une variable de table peut être utilisée comme une table normale. Il peut être appliqué partout où une table ou une expression de table est utilisée dans les instructions SELECT, INSERT, UPDATE et DELETE. Cependant, table ne peut pas être utilisé dans les instructions suivantes :

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.