Aracılığıyla paylaş


küme @ local_variable (Transact-SQL)

Belirtilen yerel değişken, önceden oluşturulmuş @ DECLARE kullanarak ayarlarlocal_variabledeyim için belirtilen değer.

Topic link iconTransact-SQL sözdizimi kuralları

SET 
{ @local_variable
    [ . { property_name | field_name } ] = { expression | udt_name { . | :: } method_name }
}
|
{ @SQLCLR_local_variable.mutator_method
}
|
{ @local_variable
    {+= | -= | *= | /= | %= | &= | ^= | |= } expression
}
| 
  { @cursor_variable = 
    { @cursor_variable | cursor_name 
    | { CURSOR [ FORWARD_ONLY | SCROLL ] 
        [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] 
        [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] 
        [ TYPE_WARNING ] 
    FOR select_statement 
        [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ] 
      } 
    }
} 

Bağımsız değişkenler

  • **@**local_variable
    Dışında herhangi türde bir değişken adıcursor,text,ntext,image, ortable.Değişken adları bir işareti ile başlamalıdır ( @ ). Değişken adları gerekir kuralları ile uyumlutanımlayıcılar.

  • property_name
    Bir özellik mi bir kullanıcı tanımlı tür.

  • field_name
    Bir genel alan kullanıcı tanımlı tür belirtilir.

  • udt_name
    Bir ortak dil çalýþma zamaný (CLR) kullanıcı tanımlı tür adıdır.

  • { . | :: }
    Tür bir CLR yöntem kullanıcı-tanımlı belirtir.Bir dönem için bir örnek (statik olmayan) yöntem kullanın ( .).Static bir yöntem için iki nokta üst üste iki kullanın ( : ). yöntem, özellik veya alanının bir CLR çağırmak için kullanıcı tanımlı tür, bağlı yürütmek izni olması gerekir.

  • method_name**(**argument [ ,... n ] )
    Bir örneğini durumunu değiştirmek için bir veya daha fazla bağımsız değişken alan kullanıcı tanımlı bir tür bir yöntem belirtilir.Statik yöntemleri ortak olmalıdır.

  • **@**SQLCLR_local_variable
    Bir değişken türü bir derlemede bulunan iş.Daha fazla bilgi için bkz:Ortak dil çalışma zamanı (CLR) tümleştirme programlama kavramları.

  • mutator_method
    Bir nesnenin durumunu değiştirmek için derleme yöntem belirtilir.Bu yönteme SQLMethodAttribute.IsMutator uygulanır.

  • { += | -= | *= | /= | %= | &= | ^= | |= }
    Birleşik atama işleç:

    += Ekleyin ve atama

    -= çıkarmak ve atama

    * Çarpma ve atama

    / Bölme ve atama =

    % mod ve atama

    &= Bitsel ve ve atama

    ^ Bitsel XOR ve atama

    | = Bit düzey veya ve atama

  • expression
    Herhangi bir geçerliifade.

  • cursor_variable
    Adı bir imleç değişken.Hedef işaretçi değişkeni önceden farklı bir imleç başvurulan, önceki başvuru kaldırılır.

  • cursor_name
    CURSOR BİLDİRMEK deyim kullanılarak bildirilmiş bir imleç adıdır.

  • imleç
    küme deyim bir imleç, bir bildirim bulunduğunu belirtir.

  • KAYDIRMA
    Belirleyen imleç tüm fetch seçeneklerini destekler: İLK olarak, NEXT, son önceki, GÖRECELİ ve mutlak. FAST_FORWARD de belirtilen SCROLL belirtilemez.

  • FORWARD_ONLY
    Belirleyen imleç yalnızca FETCH NEXT seçeneğini destekler.imleç Gelen ilk olarak bir yönde, yalnızca son alınabilir satır.FORWARD_ONLY statik, anahtar KÜMESİ veya DYNAMIC anahtar belirtildiğinde, imleç DYNAMIC olarak uygulanır.FORWARD_ONLY ya da SCROLL belirtildiğinde, statik, dinamik veya anahtar KÜMESİ anahtar sözcükleri belirtilmedikçe FORWARD_ONLY, varsayılandır.STATİK, anahtar KÜMESİ ve DYNAMIC imleçler SCROLL varsayılandır.

    Not

    InSQL Server 2000FAST_FORWARD ve FORWARD_ONLY imleç seçenekleri şunlardır: karşılıklı özel.Belirtilmişse, diğer olamaz ve bir hata ortaya çıkar.Her iki anahtar sözcükleri aynı BİLDİRMEK İMLECİ kullanılabilir deyim.

  • STATİK
    İmleç tarafından kullanılacak verileri geçici bir kopyasını yapan bir imleç tanımlar.İmleci tüm istekleri bu geçici tarafından yanıtlanan tablo tempdb içinde; bu nedenle tablo s temel alması için yapılan bu imleç yapılan fetches tarafından döndürülen verilerin yansıtılmaz ve bu imleç ilgili izin vermez.

  • ANAHTAR KÜMESİ
    Üyelik ve imleci satır sırasını imleç açıldığında sabit olduğunu belirtir.The set of keys that uniquely identify the rows is built into the keysettable in tempdb.İmleç sahibi imleç kayarken imleç sahibi tarafından yapılan veya diğer kullanıcılar tarafından kabul edilen temel tablo değerleri olmayan değişiklikler görülebilir.Diğer kullanıcıların yaptığı ekler görünür değildir ve ekler ile yapılması olamaz birTransact-SQLsunucu imleç.

    Bir satırın satır getirme girişiminde bir @@ FETCH_STATUS-2 döndürür.Anahtar değerleri dışında güncelleştirmeleri imleç eski satırın bir yeni satır ekleme tarafından izlenen bir silme benzer.Yeni değerlere sahip satır görünmez ve bir @@ FETCH_STATUS-2 satır dönüş eski değerlerle getirmek çalışır.Güncelleştirme WHERE CURRENT OF yan tümce belirterek imleç yoluyla gerçekleştirilirse yeni değerler görülebilir.

  • DİNAMİK
    İmleç sahip kayar imleci geçici olarak sonucu satırlarında yapılan tüm veri değişiklikleri küme yansıtan bir imleç tanımlar.Her getirme veri değerleri, sipariş ve üyelik satırları değiştirebilirsiniz.Mutlak ve göreceli getirme seçenekleri ile dinamik imleçler desteklenmez.

  • FAST_FORWARD
    Bir FORWARD_ONLY belirtir, READ_ONLY imleç en iyi duruma getirme etkin.SCROLL de belirtildiğinde FAST_FORWARD belirtilemez.

    Not

    InSQL Server 2000FAST_FORWARD ve FORWARD_ONLY imleç seçenekleri şunlardır: karşılıklı özel.Belirtilmişse, diğer olamaz ve bir hata ortaya çıkar.Her iki anahtar sözcükleri aynı BİLDİRMEK İMLECİ kullanılabilir deyim.

  • READ_ONLY
    Bu imleç ile yapılan güncelleştirmeler engeller.imleç Bir UPDATE veya DELETE deyim WHERE CURRENT OF yan başvuru yapılamaz.Bu seçenek için bir imleç varsayılan özelliğini geçersiz kılar.

  • KAYDIRMA KİLİDİ
    Specifies that positioned updates or deletes made through the cursor are guaranteed to succeed.SQL Server locks the rows as they are read into the cursor to guarantee their availability for later modifications.FAST_FORWARD de belirtilen SCROLL_LOCKS belirtilemez.

  • İYİMSER
    Specifies that positioned updates or deletes made through the cursor do not succeed if the row has been updated since it was read into the cursor.SQL Server does not lock rows as they are read into the cursor.Bunun yerine, tablonun satır imleç okumak sonra değiştirilmiş olup olmadığını belirlemek için hiçbir zaman damgası sütunu varsa, karşılaştırmalar, zaman damgası sütun değerlerini veya bir sağlama toplamı değeri kullanır.Satırı değiştirildi denenen yerleştirilmiş güncelleştirme veya silme başarısız.FAST_FORWARD de belirtilen OPTIMISTIC belirtilemez.

  • TYPE_WARNING
    Bir uyarı iletisi istemciye gönderilir belirtir, imleç dolaylı olarak istenen türünden diğerine dönüştürülür.

  • FORselect_statement
    Sonuç tanımlayan standart bir deyim, ayarlı imleç.COMPUTE, COMPUTE BY, FOR BROWSE ve INTO anahtar içinde izin verilmeyenselect_statement İmleci bildirim.

    , Farklı, UNION, GROUP BY veya HAVING kullanılır ve bir toplamak ifadesi bulunanselect_listimleç oluşturulan statik.

    Her temel tablolar bir benzersiz dizin ve bir ISO SCROLL imleç yok veya birTransact-SQLAnahtar KÜMESİ imleci istenen, bu otomatik olacak bir statik imleç.

    Ifselect_statementORDER BY yan tümce içeren bir anahtar KÜMESİ imleç açarsa, sütunlar benzersiz satır tanımlayıcısı olmayan içinde DYNAMIC imleç bir anahtar KÜMESİ imleç ya da statik imleç dönüştürülür.Bu, aynı zamanda ISO sözdizimini kullanarak, ancak STATIC anahtar sözcüğü olmadan tanımlanan bir imleç için oluşur.

  • SALT OKUNUR
    Bu imleç ile yapılan güncelleştirmeler engeller.imleç Bir UPDATE veya DELETE deyim WHERE CURRENT OF yan başvuru yapılamaz.Bu seçenek için bir imleç varsayılan özelliğini geçersiz kılar.Bu anahtar sözcük yerine alt çizgi arasında bir boşluk ekleyerek önceki READ_ONLY değişir okuma ve yalnızca.

  • UPDATE [OF column_name[ ,... n ] ]
    Güncellenebilir sütunları tanımlayan imleç.İf OFcolumn_name**,** ... n] yalnızca listelenen sütunlar değişiklikler. izin verir, sağlananListe belirttiğinizde, imleç READ_ONLY tanımlanan sürece tüm sütunlar, güncelleştirilebilir.

Remarks

Bir değişkeni, sonra da NULL olarak başlatılır.Bildirilmiş bir değişkene NULL olmayan bir değer atamak için küme deyimini kullanın.Değişkene bir değer atar küme deyim tek bir değer döndürür.Birden çok değişken başlatmak, ayrı bir küme kullanın deyim her yerel değişken.

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

küme sözdizimi kuralları**@**cursor_variable eklemezseniz LOCAL ve genel anahtar sözcükler.When the SET **@**cursor_variable = CURSOR...syntax is used, the cursor is created as GLOBAL or LOCAL, depending on the setting of the default to local cursor database option.

İmleç değişkenleri, her zaman genel bir imleç oldukları bile yereldir.Bir işaretçi değişkeni genel bir imleç başvurduğunda, imleci hem genel hem de bir yerel imleç başvuru yok.Daha fazla bilgi için bkz: örnek c

Daha fazla bilgi için bkz:imleç (Transact-SQL) BILDIRIR..

Birleşik atama işleç kullanılabilir herhangi bir yerde, bir ifade ile atama güncelleştir ve Al SELECT deyiminde değişkenleri ve bir küme gibi işlecinin sağ tarafı vardır.

İzinler

Public rolünün üyesi olmak gerekir.Tüm kullanıcılar küme kullan**@**local_variable.

Örnekler

C.küme kullanılarak başlatılan bir değişkenin değerini yazdırmak

Aşağıdaki örnek oluşturur@myvardeğişkeni, dize değeri değişkenin koyar ve değerini yazdırır@myvar değişken.

DECLARE @myvar char(20);
SET @myvar = 'This is a test';
SELECT @myvar;
GO

B.Yerel bir değişken kullanarak bir deyim içinde küme kullanarak bir değer atanmış

Aşağıdaki örnek, adlı yerel bir değişken oluşturur@stateve bu değişkeni yerel birSELECTdeyim eden bulunması durumunda tüm çalışanların ad ve soyadları bulmak içinOregon.

USE AdventureWorks;
GO
DECLARE @state char(25);
SET @state = N'Oregon';
SELECT RTRIM(FirstName) + ' ' + RTRIM(LastName) AS Name, City
FROM HumanResources.vEmployee
WHERE StateProvinceName = @state;

C.Yerel bir değişken için bir birleşik atama kullanılarak

Aşağıdaki iki örnek aynı sonucu üretir.Adlı yerel bir değişken oluşturmak@NewBalancegöre 10 ile çarpar ve yeni yerel değişkeni görüntüler birSELECTdeyim.İkinci örnek, bir birleşik atama işleç kullanır.

/* Example one */
DECLARE  @NewBalance  int ;
SET  @NewBalance  =  10;
SET  @NewBalance  =  @NewBalance  *  10;
SELECT  @NewBalance;

/* Example Two */
DECLARE @NewBalance int = 10;
SET @NewBalance *= 10;
SELECT @NewBalance;

D.küme global bir imleç ile kullanma

Aşağıdaki örnek, yerel bir değişken oluşturur ve sonra imleci değişkeni için genel bir imleç adını ayarlar.

DECLARE my_cursor CURSOR GLOBAL 
FOR SELECT * FROM Purchasing.ShipMethod
DECLARE @my_variable CURSOR ;
SET @my_variable = my_cursor ; 
--There is a GLOBAL cursor declared(my_cursor) and a LOCAL variable
--(@my_variable) set to the my_cursor cursor.
DEALLOCATE my_cursor; 
--There is now only a LOCAL variable reference
--(@my_variable) to the my_cursor cursor.

E.Bir imleç küme kullanarak tanımlama

Aşağıdaki örnekSETifadesine tanımlayan imleç.

DECLARE @CursorVar CURSOR;

SET @CursorVar = CURSOR SCROLL DYNAMIC
FOR
SELECT LastName, FirstName
FROM AdventureWorks.HumanResources.vEmployee
WHERE LastName like 'B%';

OPEN @CursorVar;

FETCH NEXT FROM @CursorVar;
WHILE @@FETCH_STATUS = 0
BEGIN
    FETCH NEXT FROM @CursorVar
END;

CLOSE @CursorVar;
DEALLOCATE @CursorVar;

F.Bir sorgudan değer atama

Aşağıdaki örnek, bir değişkene bir değer atamak üzere bir sorgu kullanır.

USE AdventureWorks;
GO
DECLARE @rows int;
SET @rows = (SELECT COUNT(*) FROM Sales.Customer);
SELECT @rows;

G.Türü özelliğini değiştirerek, kullanıcı tanımlı tür değişkeni için bir değer atama

Aşağıdaki örnek, kullanıcı tanımlı tür için bir değer ayarlarPointözellik değerini değiştirerekXyazın.

DECLARE @p Point;
SET @p.X = @p.X + 1.1;
SELECT @p;
GO

H.Türü yöntem çağırarak kullanıcı tanımlı tür değişkeni için bir değer atama

Aşağıdaki örnek, kullanıcı tanımlı tür için bir değer ayarlargelin ile çağırma yöntem SetXYtürü.

DECLARE @p Point;
SET @p=point.SetXY(23.5, 23.5);

I.CLR türü için bir değişken oluşturmak ve mutator yöntem

Aşağıdaki örnek, bir değişken türü oluştururPoint, daha sonra bir mutator yöntem çalıştırılır vePoint.

CREATE ASSEMBLY mytest from 'c:\test.dll' WITH PERMISSION_SET = SAFE
CREATE TYPE Point EXTERNAL NAME mytest.Point
GO
DECLARE @p Point = CONVERT(Point, '')
SET @p.SetXY(22, 23);

Değişiklik Geçmişi

Güncelleştirilmiş içerik

Eklenen@SQLCLR_local_variable.mutator_method sözdizimi bölüm ve bağımsız değişkenleri bölümünde. biçiminde değişkenleri için açıklamalar

Eklenen örnek istiyorum.