Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

INSERT INTO @TABLE EXEC @consulta com SQL Server 2000


N.B. - esta pergunta e resposta referem-se à versão 2000 do SQL Server. Em versões posteriores, a restrição em INSERT INTO @table_variable ... EXEC ... foram levantadas e, portanto, não se aplica a essas versões posteriores.

Você terá que mudar para uma tabela temporária:
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

Da documentação:

Uma variável de tabela se comporta como uma variável local. Ele tem um escopo bem definido, que é a função, procedimento armazenado ou lote no qual ele é declarado.

Dentro de seu escopo, uma variável de tabela pode ser usada como uma tabela normal. Ele pode ser aplicado em qualquer lugar em que uma tabela ou expressão de tabela seja usada em instruções SELECT, INSERT, UPDATE e DELETE. No entanto, a tabela não pode ser usada nas seguintes declarações:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.