Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

INSERT IN @TABLE EXEC @query con SQL Server 2000

NB - questa domanda e risposta si riferiscono alla versione 2000 di SQL Server. Nelle versioni successive, la restrizione su INSERT INTO @table_variable ... EXEC ... sono stati revocati e quindi non si applica a quelle versioni successive.

Dovrai passare a una tabella temporanea:

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

Dalla documentazione:

Una variabile di tabella si comporta come una variabile locale. Ha un ambito ben definito, che è la funzione, la procedura memorizzata o il batch in cui è dichiarato.

All'interno del suo ambito, una variabile di tabella può essere utilizzata come una normale tabella. Può essere applicato ovunque venga utilizzata una tabella o un'espressione di tabella nelle istruzioni SELECT, INSERT, UPDATE e DELETE. Tuttavia, la tabella non può essere utilizzata nelle seguenti istruzioni:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.