sql >> Databasteknik >  >> RDS >> Sqlserver

INSERT INTO @TABLE EXEC @query med SQL Server 2000

Obs. - denna fråga och svaret gäller 2000-versionen av SQL Server. I senare versioner är begränsningen för INSERT INTO @table_variable ... EXEC ... togs bort och det gäller därför inte för de senare versionerna.

Du måste byta till en tillfällig tabell:

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

Från dokumentationen:

En tabellvariabel beter sig som en lokal variabel. Den har ett väldefinierat omfång, vilket är funktionen, lagrad procedur eller batch i vilken den deklareras.

Inom dess räckvidd kan en tabellvariabel användas som en vanlig tabell. Det kan användas var som helst där ett tabell- eller tabelluttryck används i SELECT-, INSERT-, UPDATE- och DELETE-satser. Tabell får dock inte användas i följande uttalanden:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.



  1. Exportera och importera alla MySQL-databaser på en gång

  2. Hur skapar man användare för en db i postgresql?

  3. Hur man jämför två kolumner i MySQL

  4. Hur delar man en sträng i PL/SQL?