Tabela (języka Transact-SQL)

Is a special data type that can be used to store a result set for processing at a later time.table is primarily used for temporary storage of a set of rows returned as the result set of a table-valued function.

Uwaga

Aby zadeklarować zmienne typu table, należy użyć DECLARE @ local_variable.

Topic link iconKonwencje składni języka Transact-SQL


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 ) 
     } 

Argumenty

  • table_type_definition
    Czy ten sam podzbiór informacji, który służy do definiowania tabela CREATE tabela.Deklaracja tabela zawiera definicje kolumn, nazwy, typy danych i ograniczeń.Dozwolone typy Jedyne ograniczenie to klucz podstawowy, UNIQUE klucz i wartość NULL.

    Aby uzyskać więcej informacji na temat składni zobacz CREATE TABLE (Transact-SQL), CREATE funkcja języka Transact-SQL), a DECLARE @local\_variable (Transact-SQL).

  • collation_definition
    Is the collation of the column that is made up of a Microsoft Windows locale and a comparison style, a Windows locale and the binary notation, or a Microsoft SQL Server collation.Jeśli collation_definition nie jest określony, kolumna dziedziczy sortowanie bieżącej bazy danych. Lub jeśli kolumna jest zdefiniowana jako język (CLR) w czasie wykonywania przez użytkownika typu wspólnego, kolumna dziedziczy sortowanie typ zdefiniowany przez użytkownika.

Remarks

Functions and variables can be declared to be of type table.table variables can be used in functions, stored procedures, and batches.

Important noteImportant Note:

Kwerendy, które modyfikują table zmienne nie generują planów wykonywania kwerend równoległych. Wydajność może mieć wpływ po bardzo duży table zmienne, lub table zmienne w złożonych kwerend są modyfikowane. W takich sytuacjach należy wziąć pod uwagę możliwość użycia tabel tymczasowych.Aby uzyskać więcej informacji zobaczCREATE TABLE (Transact-SQL).Kwerendy, które odczytu table nadal mogą być parallelized zmiennych bez modyfikowania ich.

table zmienne przynieść następujące korzyści:

  • A table Zmienna zachowuje się jak zmiennej lokalnej. Ma ona wyraźnie określone zakres.Jest to funkcja, procedura przechowywana lub partia, które są zadeklarowane.

    W swoim zakresie table jak regularne tabela można użyć zmiennej. To może być stosowana dowolne miejsce tabeli lub wyrażenie, tabela jest używana w instrukcji SELECT, INSERT, UPDATE i DELETE.Jednak table Nie można użyć w następującej instrukcja:

    SELECT select_list INTO table_variable   
    

    table zmienne są automatycznie czyszczone na końcu funkcja, procedura przechowywana lub partia, w którym są zdefiniowane.

  • Sprawdź ograniczenia, wartości DEFAULT i kolumny obliczane w table Deklaracja typu nie można wywołać funkcji zdefiniowanych przez użytkownika.

  • table zmienne używane w procedurach przechowywanych powodować mniejszą liczbę ponownych kompilacji procedur przechowywanych niż kiedy należy używać tabel tymczasowych.

  • Transakcje obejmujące table zmienne ostatni tylko na czas trwania aktualizacji na table Zmienna. Dlatego też table zmienne wymagają mniej blokowania i rejestrowanie zasobów.

Indeksy nie można utworzyć bezpośrednio na table zmienne i statystyki nie są przechowywane na table zmienne. W niektórych przypadkach wydajność może zwiększyć za pomocą tabel tymczasowych, które obsługują indeksy i statystyki.Aby uzyskać więcej informacji dotyczących tabel tymczasowych zobacz CREATE TABLE (Transact-SQL).

table Zmienne można odwoływać się do nazwy w klauzula FROM partia, jak pokazano w poniższym przykładzie:

SELECT Employee_ID, Department_ID FROM @MyTableVar

Poza klauzulę FROM table Zmienne muszą odwoływać się za pomocą alias, jak pokazano w poniższym przykładzie:

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

Przypisanie operacji między table zmienne nie jest obsługiwana. Ponadto ponieważ table zmienne ograniczony zakres i nie są częścią persistent bazy danych, ich nie dotyczy transakcji wycofywanie zmian.