T-SQL Table Variables with Dynamic SQL

All’interno di Store Procedure, può essere utile avere delle tabelle di appoggio in memoria. SQL Server mette a disposizione le Table Variable, variabili “tabella” che memorizzano record:

DECLARE @MyTable TABLE
(
 ProductID int UNIQUE,
 Price money CHECK(Price < 10.0)
)

(1) E’ necessario dichiarare la tabella all’interno dell’ SQL dinamico:Vanno seguite delle accortezze quando si combina l’uso di Table Variable e Dynamic Sql:

set @SQLQuery = '
  DECLARE @ProductTotals TABLE (   ProductID int,   Revenue money )
  INSERT INTO @ProductTotals (ProductID , Revenue ) 
  select ID, Revenue from myRealTable
  UPDATE OtherRealTable 
  set [Tipo Articolo]=tipo 
  from @ProductTotals  where OtherRealTable.ID > [@ProductTotals].ProductID '
 if @debug=1 
  print @SQLQuery 
else 
 exec sp_executesql @SQLQuery

(2) Quando si usa la Table Variable in una clausola di selezione attenzione alla sintassi da usare:

  1. OK: delete from @ProductTotals     where ProductID = 1
    OK: delete from @ProductTotals     where [@ProductTotals].ProductID = 1 
    KO: delete from @ProductTotals     where @ProductTotals.ProductID = 1 

 

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...