sql >> Database >  >> RDS >> Sqlserver

INSERT INTO @TABLE EXEC @query met SQL Server 2000

NB - deze vraag en het antwoord hebben betrekking op de 2000-versie van SQL Server. In latere versies is de beperking op INSERT INTO @table_variable ... EXEC ... zijn opgeheven en is dus niet van toepassing op die latere versies.

Je moet overschakelen naar een tijdelijke 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

Uit de documentatie:

Een tabelvariabele gedraagt ​​zich als een lokale variabele. Het heeft een goed gedefinieerd bereik, wat de functie, opgeslagen procedure of batch is waarin het wordt gedeclareerd.

Binnen zijn bereik kan een tabelvariabele worden gebruikt als een gewone tabel. Het kan overal worden toegepast waar een tabel of tabeluitdrukking wordt gebruikt in SELECT-, INSERT-, UPDATE- en DELETE-instructies. De tabel mag echter niet worden gebruikt in de volgende uitspraken:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.



  1. SQL Server:is het mogelijk om tegelijkertijd in twee tabellen in te voegen?

  2. Hoe maak je een SQL Server-functie om meerdere rijen van een subquery samen te voegen in een enkel gescheiden veld?

  3. postgresql thread safety voor tijdelijke tabellen

  4. Valutateken £, $ toevoegen aan bepaalde velden ORACLE