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

Come utilizzare la variabile di tabella in un'istruzione sql dinamica?

In SQL Server 2008+ è possibile utilizzare i parametri con valori di tabella per passare una variabile di tabella a un'istruzione SQL dinamica purché non sia necessario aggiornare i valori nella tabella stessa.

Quindi dal codice che hai pubblicato potresti usare questo approccio per @TSku ma non per @RelPro

Esempio di sintassi di seguito.

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] 

Il physloc la colonna è inclusa solo per dimostrare che la variabile della tabella a cui si fa riferimento nell'ambito figlio è sicuramente la stessa dell'ambito esterno anziché una copia.