sql >> Database >  >> RDS >> Sqlserver

Hoe tabelvariabele te gebruiken in een dynamische SQL-instructie?

Op SQL Server 2008+ is het mogelijk om tabelwaardeparameters te gebruiken om een ​​tabelvariabele door te geven aan een dynamische SQL-instructie, zolang u de waarden in de tabel zelf niet hoeft bij te werken.

Dus op basis van de code die je hebt gepost, zou je deze aanpak kunnen gebruiken voor @TSku maar niet voor @RelPro

Voorbeeld syntaxis hieronder.

CREATE TYPE MyTable AS TABLE 
( 
Foo int,
Bar int
);
GO


DECLARE @T AS MyTable;

INSERT INTO @T VALUES (1,2), (2,3)

SELECT *,
        sys.fn_PhysLocFormatter(%%physloc%%) AS [physloc]
FROM @T

EXEC sp_executesql
  N'SELECT *,
        sys.fn_PhysLocFormatter(%%physloc%%) AS [physloc]
    FROM @T',
  N'@T MyTable READONLY',
  @[email protected] 

De physloc kolom is opgenomen om aan te tonen dat de tabelvariabele waarnaar in het onderliggende bereik wordt verwezen, absoluut dezelfde is als het buitenste bereik in plaats van een kopie.



  1. Een variabele declareren en de waarde ervan instellen vanuit een SELECT-query in Oracle

  2. Somwaarden van multidimensionale array per sleutel zonder lus

  3. Datum- en tijdseenheden in MySQL (volledige lijst)

  4. Hoe ATAN2() werkt in MariaDB