Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como usar a variável de tabela em uma instrução sql dinâmica?


No SQL Server 2008+, é possível usar Parâmetros com valor de tabela para passar uma variável de tabela para uma instrução SQL dinâmica, desde que você não precise atualizar os valores na própria tabela.

Então, a partir do código que você postou, você pode usar essa abordagem para @TSku mas não para @RelPro

Sintaxe de exemplo abaixo.
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] 

O physloc column é incluída apenas para demonstrar que a variável de tabela referenciada no escopo filho é definitivamente a mesma que o escopo externo em vez de uma cópia.