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

INSERT INTO @TABLE EXEC @query med SQL Server 2000

NB - dette spørgsmål og svar vedrører 2000-versionen af ​​SQL Server. I senere versioner er begrænsningen på INSERT INTO @table_variable ... EXEC ... blev ophævet, og det gælder derfor ikke for de senere versioner.

Du bliver nødt til at skifte til en midlertidig tabel:

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

Fra dokumentationen:

En tabelvariabel opfører sig som en lokal variabel. Det har et veldefineret omfang, som er den funktion, lagrede procedure eller batch, hvori det er deklareret.

Inden for sit omfang kan en tabelvariabel bruges som en almindelig tabel. Det kan anvendes overalt, hvor et tabel- eller tabeludtryk bruges i SELECT-, INSERT-, UPDATE- og DELETE-sætninger. Tabel må dog ikke bruges i følgende udsagn:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.



  1. Automatisering af PostgreSQL daglige opgaver ved hjælp af Jenkins

  2. Sådan omdøbes tabel i MySQL

  3. Brug DATABASEPROPERTYEX() til at returnere databaseindstillinger i SQL Server

  4. En datamodel for børnefester