sql >> Databasteknik >  >> RDS >> Sqlserver

Hur använder man tabellvariabel i en dynamisk SQL-sats?

På SQL Server 2008+ är det möjligt att använda Table Valued Parameters för att skicka in en tabellvariabel till en dynamisk SQL-sats så länge du inte behöver uppdatera värdena i själva tabellen.

Så från koden du postade kan du använda den här metoden för @TSku men inte för @RelPro

Exempel på syntax nedan.

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] 

physloc kolumnen ingår bara för att visa att tabellvariabeln som refereras till i det underordnade omfånget definitivt är samma som det yttre omfånget snarare än en kopia.



  1. Kontrollera om en rad finns, annars infogas

  2. XMLAGG med RTRIM-problem

  3. Producera DISTINCT-värden i STRING_AGG

  4. 5 sätt att hitta rader som innehåller versaler i SQL Server