table (Transact-SQL)

Data aggiornamento: 5 dicembre 2005

Tipo di dati speciale utilizzabile per archiviare un set di risultati per l'elaborazione successiva. table viene utilizzato principalmente come spazio di archiviazione temporanea di un set di righe restituito come set di risultati di una funzione valutata a livello di tabella.

[!NOTA] Per dichiarare variabili di tipo table, utilizzare DECLARE @local_variable.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi


table_type_definition ::= 
    TABLE ( { column_definition | table_constraint } [ ,...n ] ) 

column_definition ::= 
        column_name scalar_data_type 
    [ COLLATE collation_definition ] 
    [ [ DEFAULT constant_expression ] | IDENTITY [ ( seed , increment ) ] ] 
    [ ROWGUIDCOL ] 
    [ column_constraint ] [ ...n ] 

column_constraint ::= 
    { [ NULL | NOT NULL ] 
    | [ PRIMARY KEY | UNIQUE ] 
    | CHECK ( logical_expression ) 
    } 

table_constraint ::= 
     { { PRIMARY KEY | UNIQUE } ( column_name [ ,...n ] ) 
     | CHECK ( logical_expression ) 
     } 

Argomenti

  • collation_definition
    Regole di confronto della colonna composte da un'impostazione internazionale di Microsoft Windows e uno stile di confronto, un'impostazione internazionale di Windows e la notazione binaria oppure dalle regole di confronto di Microsoft SQL Server 2005. Se collation_definition viene omesso, la colonna eredita le regole di confronto del database corrente. Se invece viene specificata come tipo CLR (Common Language Runtime) definito dall'utente, la colonna eredita le regole di confronto del tipo definito dall'utente.

Osservazioni

È possibile dichiarare funzioni e variabili di tipo table. Le variabili di tipo table sono utilizzabili in funzioni, stored procedure e batch.

ms175010.note(it-it,SQL.90).gifImportante:
Per le query che modificano le variabili di table non vengono generati piani di esecuzione parallela. La modifica di variabili di table di dimensioni molto grandi o di variabili di table in query complesse può influire sulle prestazioni. In questi casi, valutare l'utilizzo di tabelle temporanee in alternativa. Per ulteriori informazioni, vedere CREATE TABLE (Transact-SQL). Le query che leggono le variabili di table senza modificarle possono comunque essere eseguite in parallelo.

Le variabili di table offrono i vantaggi seguenti:

  • Le variabili table funzionano in modo analogo alle variabili locali. Queste variabili hanno un ambito ben definito, corrispondente alla funzione, alla stored procedure o al batch in cui sono dichiarate.
    All'interno del proprio ambito, le variabili table possono essere utilizzate come normali tabelle in tutti i casi in cui è possibile utilizzare una tabella o espressione di tabella in istruzioni SELECT, INSERT, UPDATE e DELETE. Le variabili table, tuttavia, non possono essere utilizzate nell'istruzione seguente:

    SELECT select_list INTO table_variable   
    

    Le variabili table vengono cancellate automaticamente alla fine della funzione, stored procedure o batch in cui sono definite.

  • Non è possibile chiamare funzioni definite dall'utente dai vincoli CHECK, dai valori DEFAULT e dalle colonne calcolate nella dichiarazione del tipo table.

  • Quando si utilizzano variabili table in stored procedure, il numero di ricompilazioni delle stored procedure risulta minore rispetto al numero eseguito con tabelle temporanee.

  • La durata delle transazioni che includono variabili table corrisponde solo alla durata dell'aggiornamento della variabile table. Le variabili table richiedono pertanto un numero di risorse di blocco e di registrazione minore.

Non è possibile creare indici in modo esplicito su variabili di table e per le variabili di table non vengono mantenute statistiche. In alcuni casi, è possibile ottenere un miglioramento delle prestazioni utilizzando tabelle temporanee, che supportano indici e statistiche. Per ulteriori informazioni sulle tabelle temporanee, vedere CREATE TABLE (Transact-SQL).

È possibile fare riferimento alle variabili table per nome nella clausola FROM di un batch, come illustrato nell'esempio seguente:

SELECT Employee_ID, Department_ID FROM @MyTableVar

All'esterno di una clausola FROM, è necessario fare riferimento alle variabili table tramite un alias, come illustrato nell'esempio seguente:

SELECT EmployeeID, DepartmentID 
FROM @MyTableVar m
JOIN Employee on (m.EmployeeID =Employee.EmployeeID AND
   m.DepartmentID = Employee.DepartmentID)

Non sono supportate operazioni di assegnazione tra variabili table. Inoltre, le operazioni di rollback delle transazioni non hanno alcun effetto sulle variabili table, in quanto tali variabili hanno un ambito limitato e non fanno parte del database persistente.

Vedere anche

Riferimento

COLLATE (Transact-SQL)
CREATE FUNCTION (Transact-SQL)
CREATE TABLE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)

Altre risorse

Funzioni definite dall'utente valutate a livello di tabella

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Nuovo contenuto
  • Aggiunta di informazioni sulle regole di confronto relative ai casi in cui l'argomento collation_definition non viene specificato.
Contenuto modificato
  • Modifica della nota Importante relativa al parallelismo e alle variabili di table.