sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo usar la variable de tabla en una declaración SQL dinámica?

En SQL Server 2008+, es posible usar parámetros con valores de tabla para pasar una variable de tabla a una instrucción SQL dinámica siempre que no necesite actualizar los valores en la tabla.

Entonces, a partir del código que publicaste, podrías usar este enfoque para @TSku pero no para @RelPro

Ejemplo de sintaxis a continuación.

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] 

El physloc La columna se incluye solo para demostrar que la variable de la tabla a la que se hace referencia en el ámbito secundario es definitivamente la misma que la del ámbito externo en lugar de una copia.