@ Local_variable (Transact-SQL) BILDIRIR.

Değişkenlerin bir toplu iş iş iş veya yordamı DECLARE gövdesinde deyim küme veya SELECT değerler atanır ve deyim.İmleç değişkenleri bu bildirimi ile bildirilen ve imleç ile ilgili diğer ifadelerle kullanılır.Bildirimin bir parçası olarak sağlanan değer sürece bildirim sonra tüm değişkenleri null olarak başlatılır.

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • **@**local_variable
    Bir değişken adıdır.Değişken adları gerekir ile başlayan bir anda ( @ ) işareti. Yerel değişken adları gerekir kuralları ile uyumlutanımlayıcılar.

  • data_type
    Tüm sistem tarafından sağlanan, ortak dil çalýþma zamaný (CLR) kullanıcı tanımlı tablo türü veya diğer ad ad veri türü belirtilir.Bir değişken olarak olamaztext,ntext, orimageveri türü.

    Sistem veri türleri hakkında daha fazla bilgi için bkz:(Transact-SQL) veri türleri.CLR kullanıcı tanımlı türler veya diğer ad ad veri türleri hakkında daha fazla bilgi için bkz:TYPE (Transact-SQL) CREATE.

  • = value
    Değişken,-satır için bir değer atar.Değer, bir sabit veya bir ifade olabilir, ancak, deðiþken bildirim türüyle eşleşecek ya bu türüne örtük olarak dönüştürülebilir.

  • **@**cursor_variable_name
    Imleç bir değişken adıdır.İmleç değişken adları ile başlaması gerekir bir anda ( @ ) imzalamak ve tanımlayıcılar. kurallarına uygun

  • İMLEÇ
    Değişken bir yerel imleç değişkeni olduğunu belirtir.

  • @table_variable_name
    Türünde bir değişken adı
    Tablo
    .Değişken adları gerekir ile başlayan bir anda ( @ ) imzalamak ve tanımlayıcılar. kurallarına uygun

  • <table_type_definition>
    Tanımlayantableveri türü.Tablo bildirim sütun tanımları, adlarını, veri türleri ve sınırlamaları içerir.birincil anahtar, UNIQUE, null ve CHECK izin verilen tek kısıtlama türleri şunlardır.Kural, bir sütun skaler veri türü olarak bir diğer ad veri türü kullanılamaz veya varsayılan tanımını türüne bağlıdır.

    <table_type_definition>CREATE TABLE. bir tablo tanımlamak için kullanılan bilgilerin alt küme küme küme kümesinin değilÖğeleri ve gerekli açıklamaları burada bulunur.Daha fazla bilgi için bkz: tablo (Transact-SQL) CREATE.

  • n
    Yer tutucu birden çok değişken belirtilen ve olması değer atanmış olduğunu gösteren iş.BildirmekTablo değişkenleri, tek değişken olarak bildirilen DECLARE deyim. Tablo değişkeni olmalıdır

  • column_name
    Sütun adı tablo.

  • scalar_data_type
    Sütun skaler veri türünü belirtir.

  • computed_column_expression
    İş bir ifade hesaplanan sütun değerini tanımlama.Tarafından hesaplanan bir ifade aynı tabloda başka sütun kullanarak.Örneğin, hesaplanan sütun olabilir tanımıMaliyetAS price * qty.ifade Noncomputed sütun adı, sabit, yerleşik bir işlev, değişken veya bunlar tarafından bir veya daha çok işleç bağlı herhangi bir birleşimi olabilir.ifade alt alt sorgu veya kullanıcı tanımlı bir işlev olamaz.İfade, CLR kullanıcı tanımlı türü başvuramaz.

  • [ 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.Belirtilmezse, sütun (sütun kullanıcı tanımlı veri türü ise) kullanıcı tanımlı veri türünün harmanlama veya geçerli veritabanı harmanlama atanır.

    Windows ve SQL Harmanlaması adları hakkında daha fazla bilgi için bkz: (Transact-SQL) HARMANLA.

  • Varsayılan
    Sütun için bir değer açıkça bir ekleme sırasında sağlanan verilen değeri belirtir.Tanımları varsayılan olarak tanımlı olanlar dışında tüm sütunları uygulanabilirtimestampya da kimlik özellik.Tablo bırakılan DEFAULT tanımları kaldırılır.Gibi bir karakter dizesini yalnızca sabit bir değer; bir SYSTEM_USER() gibi; bir sistem işlev, ya da NULL varsayılan olarak kullanılabilir.Önceki sürümleriyle uyumluluğu korumak içinSQL Servervarsayılan. kısıtlama adı atanabilir

  • constant_expression
    Bir sabit, NULL ya da sütun için varsayılan değer olarak kullanılan bir sistem işlev belirtilir.

  • Identity
    Yeni bir sütun kimlik sütunu olduğunu gösterir.Yeni bir satır eklendiğinde için tablo,SQL Serversağlayan benzersiz artan bir değer sütun.Kimlik sütunları, tablo için benzersiz satır tanımlayıcısı olarak hizmet verecek sık birincil anahtar kısıtlamaları ile birlikte kullanılır.IDENTITY özellik için atanabilirtinyint,smallint,int,decimal(p,0), ornumeric(p,0)sütun.Her tablo için yalnızca bir kimlik sütun oluşturulabilir.Ilişkili varsayılan değerler ve VARSAYıLAN kısıtlamalar, kimlik sütun ile kullanılamaz.Hem üretim artışı veya ikisi de belirtmeniz gerekir.Hiçbiri belirtilmediyse, (1,1) varsayılandır.

  • seed
    İlk satırı için kullanılan değeri, tabloya yüklenen.

  • increment
    Artan değer yüklenen önceki satırın kimlik değerine eklenir.

  • rowguidcol
    Yeni bir sütun, satır genel benzersiz tanımlayıcı sütun olduğunu gösterir.Yalnızca bir uniqueidentifier sütun tablo başına ROWGUIDCOL sütun olarak belirlenebilir. ROWGUIDCOL özellik yalnızca atanabilecek bir uniqueidentifier sütun.

  • null | OLMAYAN BOŞ
    Sütunda null değerlere izin verilip verilmediğini belirleyen anahtar mı.

  • BİRİNCİL ANAHTAR
    Varlık zorlar bir kısıtlama mı bütünlük belirli bir sütun veya sütunlar boyunca benzersiz dizin.Her tablo yalnızca bir birincil anahtar kısıtlaması oluşturulamaz.

  • BENZERSİZ
    Belirli bir sütun veya sütunlar boyunca benzersiz dizin için varlık bütünlüğü sağlayan bir kısıtlama belirtilir.Bir tablonun birden çok UNIQUE kısıtlamaları olabilir.

  • ONAY
    Olası bir sütun veya sütunlara girilen değerler sınırlayarak, etki alanı bütünlüğü zorlar bir kısıtlama belirtilir.

  • logical_expression
    TRUE veya FALSE döndürür mantıksal bir ifade olarak belirtilir.

  • <Kullanıcı tanımlı tablo türü>
    Değişkeni olduğunu belirtir birkullanıcı tanımlı tablo türü.

Remarks

Değişkenleri, genellikle bir toplu iş veya yordam sayaçları WHILE, LOOP, kullanılan veya bir IF... ELSE için engeller.

Değişkenleri yalnızca ifadeler değil, yerine nesne adlarını veya anahtar sözcükler kullanılabilir.Dinamik SQL deyimleri oluşturmak için yürütmek'ı kullanın.

Bir yerel değişken kapsam, onu bildirilen sahip.

Geçerli olan bir imleç kendisine atanmış bir imleç değişken başvurulan bir kaynağı olarak a:

  • CLOSE deyim.

  • DEALLOCATE deyim.

  • GETİRME deyim.

  • OPEN deyim.

  • DELETE veya UPDATE deyim konumlandırılmış.

  • küme imleç değişkeni bildirimi (sağdaki).

Tüm bu deyimlerSQL Serverharekete geçiren bir hata, başvurulan imleç değişken var ancak it. şu anda ayrılmış bir imleç yokBaşvurulan imleç değişkeni yokSQL Serverharekete geçiren aynı hata geçirilen bir bildirilmemiş değişkeninin başka bir türü.

imleç değişkeni:

  • Olabilir hedef imleç türünü veya başka bir işaretçi değişkeni.Daha fazla bilgi için bkz: küme @ local_variable (Transact-SQL).

  • İmleç değişken bir imleç şu anda atanmış yoksa bir çıktı imleç parametresini yürütmek deyim, hedefi olarak başvurulabilir.

  • İmleci imleç olarak kabul.İmleç değişkenleri hakkında daha fazla bilgi için bkz:Transact-SQL imleçler.

Örnekler

C.DECLARE kullanma

Aşağıdaki örnek, yerel bir değişken adı kullanır@findTüm son Aşağıdakiyle başlayan adları ile ilgili irtibat bilgilerini almak içinMan.

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.DECLARE iki değişkenleri kullanma

Aşağıdaki örnek adını alırAdventure Works CyclesSatış Temsilcisi kim Kuzey Amerika satış bölgesi içinde bulunan ve sahip en az $ 2,000,000 satış yılı.

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.Tablo türü bir değişken bildirmek

Aşağıdaki örnek oluşturur birtabledeğişkeni değerleri depolar belirtilen OUTPUT tümcesinde UPDATE deyim.Iki SELECT ifade değerleri döndüren izleyin. @MyTableVar güncelleştirme işlemi sonuçlarını Employee TABLO. Dikkat sonuçlarINSERTED.ModifiedDatesütun farklı değerler arasındaModifiedDatesütunundaEmployee Tablo.Bu, çünküAFTER UPDATETetikleyici, değerini güncelleştirirModifiedDategeçerli tarih olarak tanımlananEmployeeTablo.Ancak, sütunları döndürülen OUTPUT önce Tetikleyicileri harekete verileri yansıtır. Daha fazla bilgi için bkz: OUTPUT yan tümce (Transact-SQL).

d.Kullanıcı tanımlı tablo türünde bir değişken bildirmek

Aşağıdaki örnek, bir tablo deerli parametre veya değişken olarak adlandırılan tablo oluşturur@LocationTVP.Bu adı verilen karşılık gelen kullanıcı tanımlı tablo türü gerektirirLocationTableType.Bir kullanıcı tanımlı tablo türü oluşturma hakkında daha fazla bilgi için bkz:TYPE (Transact-SQL) CREATE.Tablo değerli parametreleri hakkında daha fazla bilgi için bkz: Tablo biçiminde Parametreler (Veritabanı Altyapısı).

DECLARE @LocationTVP 
AS LocationTableType;