DECLARE @local_variable (Transact-SQL)
Zmienne są zgłaszane do treści programu wsadowego lub procedury przy użyciu instrukcja DECLARE i są przypisane wartości przy użyciu instrukcja zestaw albo SELECT.Kursor zmienne mogą być deklarowane z tej instrukcja i używane w innych instrukcjach związanych z kursora.Po zgłoszeniu wszystkie zmienne są inicjowane jako wartość NULL, chyba że wartość jest dostarczane w ramach deklaracja.
DECLARE
{
{{ @local_variable [AS] data_type } | [ = value ] }
| { @cursor_variable_name CURSOR }
} [,...n]
| { @table_variable_name [AS] <table_type_definition> | <user-defined table type> }
<table_type_definition> ::=
TABLE ( { <column_definition> | <table_constraint> } [ ,... ]
)
<column_definition> ::=
column_name { scalar_data_type | AS computed_column_expression }
[ COLLATE collation_name ]
[ [ DEFAULT constant_expression ] | IDENTITY [ ( seed ,increment ) ] ]
[ ROWGUIDCOL ]
[ <column_constraint> ]
<column_constraint> ::=
{ [ NULL | NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| CHECK ( logical_expression )
}
<table_constraint> ::=
{ { PRIMARY KEY | UNIQUE } ( column_name [ ,... ] )
| CHECK ( search_condition )
}
Argumenty
@local_variable
Jest nazwą zmiennej.Nazwy zmiennych muszą rozpoczynać na ()@) Zaloguj się.Lokalne nazwy zmiennych muszą być zgodne z regułami dla identyfikatory.data_type
Jest wspólne, wszelkie systemu dostarczone przez język (CLR) w czasie wykonywania tabela zdefiniowaną przez użytkownika typu lub alias typu danych.Zmienna nie może być text, ntext, lub image Typ danych.Aby uzyskać więcej informacji na temat typów danych systemu Zobacz Data Types (Transact-SQL). Aby uzyskać więcej informacji na temat środowiska CLR typów zdefiniowanych przez użytkownika lub alias typy danych zobacz CREATE TYPE (Transact-SQL).
= value
Przypisuje wartość do zmiennej w wiersz.Wartość może być stała lub wyrażenie, ale musi odpowiadać typowi deklaracja zmiennej lub można niejawnie zamienne dla tego typu.@cursor_variable_name
Jest nazwą zmiennej kursor.Kursor w nazwach zmiennych musi zaczynać się od na ()@) zarejestrować się i są zgodne z zasadami dla identyfikatorów.KURSOR
Określa, że zmienna jest zmienną kursor lokalnego.@table_variable_name
Jest nazwą zmiennej typu Tabela.Nazwy zmiennych muszą rozpoczynać na ()@) zarejestrować się i są zgodne z zasadami dla identyfikatorów.<table_type_definition>
Definiuje table Typ danych. Deklaracja tabela zawiera definicje kolumn, nazwy, typy danych i ograniczeń.Typy Jedyne ograniczenie dozwolone są klucz podstawowy, unikatowy, wartości NULL i wyboru.Typem danych alias nie można użyć jako typu danych wartość skalarna kolumna, jeśli reguła lub domyślnej definicji jest związany z typem.<table_type_definition> jest podzbiorem informacje używane do definiowania tabela w CREATE tabela. W tym elementów i definicje podstawowych miejscu są uwzględniane.Aby uzyskać więcej informacji zobaczCREATE TABLE (Transact-SQL).
n
Jest symbolem zastępczym wskazującą, że wiele zmiennych może być określony i przypisane wartości.Podczas zgłaszania Tabela zmiennychTabela zmiennej musi być jedynym zmiennej jest zadeklarowanej w instrukcja DECLARE.column_name
To nazwa kolumna w tabela.scalar_data_type
Określa, że kolumna jest typu danych wartość skalarna.computed_column_expression
Wyrażenie jest zdefiniowanie wartości kolumna obliczana.To jest obliczana z wyrażenie przy użyciu innych kolumn w tej samej tabela.Kolumna obliczana może mieć na przykład, definicja Koszt AS cena * ilość.Wyrażenie może być nazwę kolumna noncomputed, funkcja wbudowanych, stała, zmienna lub dowolną ich kombinacją połączone przy użyciu jednego lub kilku operatorów.Wyrażenie nie może być podkwerenda lub funkcja zdefiniowanej przez użytkownika.Wyrażenie nie może odwoływać się do środowiska zdefiniowany przez użytkownika typ danych CLR.[ COLLATE collation_name]
Specifies the collation for the column.collation_name can be either a Windows collation name or an SQL collation name, and is applicable only for columns of the char, varchar, text, nchar, nvarchar, and ntext data types.Jeśli nie zostanie określony, w kolumnie jest przypisywany sortowanie typu danych zdefiniowanego przez użytkownika (jeżeli kolumna jest typu danych zdefiniowanego przez użytkownika) lub sortowanie bieżącej bazy danych.Aby uzyskać więcej informacji na temat nazw sortowanie systemu Windows i programu SQL zobacz COLLATE (Transact-SQL).
WARTOŚĆ DOMYŚLNA
Określa wartość podana kolumna, gdy wartość nie jest jawnie podany podczas wstawiania.Definicje DEFAULT można stosować do żadnych kolumn, z wyjątkiem tych, które są zdefiniowane jako timestamp lub tych, których właściwość IDENTITY. Definicje DEFAULT są usuwane, gdy w tabela zostanie usunięte.Tylko stała wartości, takiej jak ciąg znaków; funkcja systemowych, takich jak SYSTEM_USER(); lub wartość NULL może być używany jako domyślny.Aby zachować zgodność ze starszymi wersjami SQL Server, nazwa ograniczenia mogą być przypisane do domyślnego.constant_expression
Jest stała, wartość NULL lub funkcja systemowej używana jako wartość domyślną dla kolumna.TOŻSAMOŚĆ
Wskazuje, że nowa kolumna kolumna tożsamości.Po dodaniu nowego wiersza w tabela SQL Server zawiera unikatową wartość przyrostowej dla kolumna. For more information on OGC specifications, see the following resources:Właściwość IDENTITY mogą być przypisane do tinyint, smallint, int, decimal(p,0), lub numeric(p,0) kolumny. Tylko jeden kolumna tożsamości mogą być tworzone na tabela.Wartości domyślne związane i DEFAULT ograniczeń nie mogą być używane z tożsamości kolumna.Należy określić zarówno siewnego i przyrostu lub żadna.Jeśli żadna z nich nie zostanie określony, wartość domyślna to (1,1).seed
Wartość używana dla bardzo pierwszy wiersz jest ładowany do tabela.increment
Jest to wartość przyrostowe dodawane do wartości tożsamości poprzedniego wiersza, który został załadowany.ROWGUIDCOL
Nie ma znaczenia.Tylko jeden uniqueidentifierKolumna tabela może być wyznaczony jako kolumna ROWGUIDCOL. Właściwość ROWGUIDCOL mogą być przypisywane tylko do uniqueidentifier Kolumna.WARTOŚCI NULL | NIE JEST PUSTY
Czy słowa kluczowe, które określają, czy kolumna dozwolone są wartości null.KLUCZ PODSTAWOWY
Jest ograniczenie, które wymusza integralność obiekt dla danej kolumna lub kolumn do indeks unikatowy.Mogą być tworzone tylko jeden ograniczenia klucz podstawowy dla tabela.UNIKATOWE
Jest ograniczenie, które zapewnia integralność obiekt dla danej kolumna lub kolumn do unikatowego indeksu.Tabela może zawierać wiele ograniczeń UNIQUE.SPRAWDŹ
Jest ograniczenie, które wymusza integralność domena, ograniczając możliwych wartości, które mogą być wprowadzane do kolumna lub kolumn.logical_expression
To wyrażenie logiczne, które zwraca wartość TRUE lub FALSE.<Typ zdefiniowany przez użytkownika tabela>
Określa, że zmienna jest Typ zdefiniowany przez użytkownika tabela.
Remarks
Zmienne są często używane w procedury wsadowej lub jak liczniki dla WHILE LOOP, lub dla IF... ELSE blokowania.
Zmienne mogą być używane tylko w wyrażeniach nie zamiast nazwy obiektu lub słowa kluczowe.Do konstruowania dynamicznych instrukcji SQL, należy użyć wykonać.
Zakres zmiennej lokalnej jest partia, w którym jest on zadeklarowany jako.
Zmienna kursora, która aktualnie znajduje się kursor, przypisane do niego odwoływać się jako urządzenie źródłowe w a:
Instrukcja CLOSE.
DEALLOCATE instrukcja.
Instrukcja pobrania.
Instrukcja OPEN.
Pozycjonowane instrukcja DELETE lub UPDATE.
Zmienna instrukcja zestaw kursor (po prawej stronie).
We wszystkich tych instrukcji SQL Server zgłasza błąd, jeżeli istnieje zmienna kursor do którego istnieje odwołanie, ale nie ma obecnie przydzielony jest z nim kursor. Jeśli zmienna kursor do którego istnieje odwołanie, nie istnieje, SQL Server wywołuje ten sam błąd, wywoływane dla zmiennych niezadeklarowanego innego typu.
Zmienna kursor:
Może być miejsce docelowe typ kursor lub innej zmiennej kursor.Aby uzyskać więcej informacji zobaczSET @local\_variable (Transact-SQL).
Można się odwoływać jako miejsce docelowe parametru wyjściowego kursor w instrukcja wykonać Jeśli zmiennej kursora nie ma aktualnie przypisane do niego kursor.
Powinny być traktowane jako wskaźnik do kursor.Aby uzyskać więcej informacji na temat zmiennych kursor zobacz Kursory języka Transact-SQL.
Przykłady
A.Za pomocą DECLARE
W poniższym przykładzie użyto zmiennej lokalnej o nazwie @find Aby pobrać informacje kontaktowe dla wszystkich ostatniego nazwiska rozpoczynające się od Man.
USE AdventureWorks;
GO
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = 'Man%';
*/
SET @find = 'Man%';
SELECT LastName, FirstName, Phone
FROM Person.Contact
WHERE LastName LIKE @find;
Here is the result set.
LastName FirstName Phone
-------------------------------------------------- -------------------------------------------------- -------------------------
Manchepalli Ajay 1 (11) 500 555-0174
Manek Parul 1 (11) 500 555-0146
Manzanares Tomas 1 (11) 500 555-0178
(3 row(s) affected)
B.Przy użyciu DECLARE z dwoma zmiennymi
Poniższy przykład pobiera nazwy Adventure Works Cycles przedstawicieli handlowych, którzy znajdują się w Ameryce Północnej obszaru sprzedaży i co najmniej 2,000,000 $ sprzedaży w roku.
USE AdventureWorks;
GO
SET NOCOUNT ON;
GO
DECLARE @Group nvarchar(50), @Sales money;
SET @Group = N'North America';
SET @Sales = 2000000;
SET NOCOUNT OFF;
SELECT FirstName, LastName, SalesYTD
FROM Sales.vSalesPerson
WHERE TerritoryGroup = @Group and SalesYTD >= @Sales;
C.Zadeklarowanie zmiennej typu tabela
Poniższy przykład tworzy table Zmienna, która przechowuje wartości określone w klauzula wyjście instrukcja UPDATE. Dwa SELECT instrukcje, należy wykonać, które zwracają wartości w @MyTableVar i wyniki operacji aktualizacji w Employee Tabela. Należy zauważyć, że wyniki w INSERTED.ModifiedDate Kolumna różnią się od wartości w polach ModifiedDate kolumny w Employee Tabela. Dzieje się tak, ponieważ AFTER UPDATE wyzwalacz, która aktualizuje wartości ModifiedDate Data bieżąca jest zdefiniowany na Employee Tabela. Jednak zwrócił kolumny OUTPUT odzwierciedlające dane przed wyzwalacze są uruchamiane. Aby uzyskać więcej informacji zobaczKlauzula OUTPUT (języka Transact-SQL).
USE AdventureWorks;
GO
DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25
OUTPUT INSERTED.EmployeeID,
DELETED.VacationHours,
INSERTED.VacationHours,
INSERTED.ModifiedDate
INTO @MyTableVar;
--Display the result set of the table variable.
SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate
FROM @MyTableVar;
GO
--Display the result set of the table.
--Note that ModifiedDate reflects the value generated by an
--AFTER UPDATE trigger.
SELECT TOP (10) EmployeeID, VacationHours, ModifiedDate
FROM HumanResources.Employee;
GO
D.Zadeklarowanie zmiennej typu tabela zdefiniowaną przez użytkownika
Poniższy przykład tworzy wycenione tabela tabela lub parametr zmienną o nazwie @LocationTVP. Wymaga to odpowiedni typ zdefiniowany przez użytkownika tabela o nazwie LocationTableType. Aby uzyskać więcej informacji na temat tworzenia tabela zdefiniowaną przez użytkownika Zobacz CREATE TYPE (Transact-SQL). Aby uzyskać więcej informacji na temat parametrów wycenione tabela zobacz Tabela Valued parametry (aparat bazy danych).
DECLARE @LocationTVP
AS LocationTableType;