set @ local_variable (Transact-SQL)
declare kullanarak önceden oluşturulmuş belirtilen yerel değişkenini @local_variable deyim, belirtilen değer.
Sözdizimi
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, veya table.Değişken adları bir işareti başlamalı (@).Değişken adları gerekir kurallarını karşılayan tanımlayıcıları.property_name
Bir ' % s'özellik özellik kullanıcı tanımlı türolur.field_name
kullanıcı tanımlı türbir ortak alan olur.udt_name
Ortak dil çalışma zamanı (clr) kullanıcı tanımlı türaddır.{ . | :: }
Türü bir clr yöntem kullanıcı-tanımlamak belirtir.örnek (statik olmayan) için bir yöntem, bir dönem kullanın (.).Bir static yöntemiçin iki adet iki nokta kullanın (:).yöntem, özellikveya alan CLR kullanıcı tanımlı türüçağırmak için bağlı execute izni olması gerekir.method_name(argument [ ,... n ] )
Bir türünün bir örnek durumunu değiştirmek için bir veya daha fazla değişkenleri kullanıcı tanımlı tür bir yöntem olur.Statik yöntemler ortak olması gerekir.@SQLCLR_local_variable
Türü derlemeiçinde bulunan bir değişkendir.Daha fazla bilgi için, bkz. Ortak dil çalışma zamanı (clr) tümleştirme programlama kavramları.mutator_method
Nesnenin durumunu değiştirebilirsiniz derleme yöntem budur.SQLMethodAttribute.IsMutator bu yöntemuygulanacak.{ += | -= | *= | /= | %= | &= | ^= | |= }
Bileşik atama işleç:+= Ekleyin ve atama
-= Çıkarmak ve atama
* = Çarpın ve atama
/ Bölme ve Ata =
% = Modül ve atama
&= Bitwise ve ve Ata
^ Bitsel xor = ve atama
| = Bitwise or ve Ata
expression
Herhangi bir geçerli ifade.cursor_variable
Bir imleç değişken adıdır.hedefimleç değişken farklı imleçdaha önce başvurulan, önceki başvuru kaldırılır.cursor_name
imleç BİLDİRMEK İMLEÇ deyimkullanılarak bildirilen addır.İMLEÇ
set deyim imleç bildirim içerdiğini belirtir.KAYDIRMA
imleç tüm getirme seçenekleri desteklediğini belirtir: İLK olarak, sonraki, önceki, GÖRELİ ve mutlak son.fast_forward de belirtildiğinde kaydırma belirtilemez.FORWARD_ONLY
imleç yalnızca ileri GETİR seçeneğini desteklediğini belirtir.imleç yalnızca tek bir yönde, ilkinin son alınabilir satır.forward_only statik, anahtar KÜMESİ veya dinamik anahtar sözcükler belirtildiğinde, imleç dinamik olarak uygulanır.forward_only kendisi kaydırma belirtildiğinde, statik, anahtar KÜMESİ veya dinamik anahtar sözcükler belirtilmedikçe forward_only, varsayılandır.STATİK, anahtar KÜMESİ ve dinamik imleçler için kaydırma varsayılandır.Not
De SQL Server 2000, fast_forward ve forward_only imleç seçenekleri var. karşılıklı olarak özelBelirtilmişse, diğer olamaz ve bir hata ortaya çıkar.Her iki anahtar sözcükler aynı BİLDİRMEK İMLEÇ deyimkullanılır.
STATİK
' % S'imleç imleçtarafından kullanılacak verileri geçici bir kopyasını yapar bir imleç tanımlar.Bu geçici tablo imleç tüm isteklere yanıt verdi tempdb; Bu nedenle fetches yapılan bu imleçtarafından döndürülen veri tabloları temel yapılan değişiklikleri yansıtılmaz ve bu imleç değişiklikler için izin vermez.ANAHTAR KÜMESİ
Üyelik ve imleç satırların sırasına imleç açıldığında sabit olduğunu belirtir.Yerleşik küme satırları benzersiz olarak tanımlayan anahtarların bulunan keysettablo tempdb.imleç imleç sahibi kayarken anahtarı olmayan değerlere imleç sahibi tarafından yapılan veya diğer kullanıcılar tarafından kabul edilen temel tablolardaki değişiklikler görülebilir.Diğer kullanıcıların yaptığı ekler görünmez ve ekler ile yapılamaz bir Transact-SQL server imleç.Bir satır silinirse, satır Getir denemesi bir @@ fetch_status-2 döndürür.imleç dışında anahtar değerlerin güncelleştirmeleri Sil Ekle yeni satırın ardından eski satırın benzer.Yeni değerleri içeren satırı görünür değildir ve dönen eski değerlerin bulunduğu satırı bir @@ fetch_status-2 getirmek çalışır.Yeni güncelleştirme where current of yan tümcebelirterek imleç yoluyla gerçekleştirilirse görünen değerlerdir.
DİNAMİK
Satırlara, sonuç kümesi imleç olarak yapılan tüm veri değişiklikleri yansıtan bir imleç tanımlar sahibi imleçkaydırılır.Veri değerleri, sipariş ve üyelik satırların her getirme üzerinde değiştirebilirsiniz.Mutlak ve göreli getirme seçenekleri ile dinamik imleçler desteklenmez.FAST_FORWARD
Bir forward_only belirtir, imleç read_only en iyi duruma getirme etkin.KAYDIRMA de belirtildiğinde fast_forward belirtilemez.Not
De SQL Server 2000, fast_forward ve forward_only imleç seçenekleri var. karşılıklı olarak özelBelirtilmişse, diğer olamaz ve bir hata ortaya çıkar.Her iki anahtar sözcükler aynı BİLDİRMEK İMLEÇ deyimkullanılır.
READ_ONLY
Bu ' % s'imleci imleçyoluyla yapılan güncelleştirmeleri engeller.imleç bir where current of yan tümce bir update veya delete deyimiçinde başvurulamaz.Bu seçenek, güncelleştirilecek bir imleç varsayılan özellikleri geçersiz kılar.KAYDIRMA KİLİTLERİ
Konumlandırılmış güncelleştirmeler veya imleç yoluyla yapılan siler başarılı olması için garanti belirtir.SQL Serversonraki değişiklikler yönelik güvence altına almak için imleç içine okurken satırları kilitler.fast_forward de belirtildiğinde scroll_locks belirtilemez.İYİMSER
Satır imleçokunuşundan güncelleştirilmişse konumlandırılmış güncelleştirmeler veya imleç yoluyla yapılan silme başarısız olduğunu belirtir.SQL Serverimleçokurken değil kilit satır yapar.Bunun yerine karşılaştırmalarını kullanır timestampsütun değerlerini veya bir sağlama toplamı değeri ise tablo vardır Hayır timestamp imleçokunduktan sonra satırın değiştirilip değiştirilmediğini belirlemek içinsütun,. Satır değiştirildiği, denenen konumlandırılmış güncelleştirme veya silme başarısız olur.fast_forward de belirtildiğinde İYİMSER belirtilemez.TYPE_WARNING
imleç örtülü olarak istenen türünden diğerine dönüştürüldüğünde istemci bir uyarı iletisi gönderilir belirtir.İÇİNselect_statement
sonuç kümesi imleçtanımlayan standart bir select deyim olur.compute compute by, göz ve INTO anahtar sözcükler içinde izin verilmeyen select_statement imleç bildirim.DISTINCT, UNION, group by veya HAVING kullanılan veya bir toplu ifade yer alır, select_list, imleç oluşturulan olarak statik.
Her temel tabloların sahip değilse bir benzersiz dizin ve ISO kaydırma imleç veya Transact-SQL anahtar KÜMESİ imleç istenen, otomatik olarak bir statik imleçolur.
select_statement Bir order by yan tümce , içeren sütunlar benzersiz satır tanımlayıcısı değil, dinamik bir imleç için anahtar KÜMESİ imleçdönüştürülür veya statik imleç , bir anahtar KÜMESİ imleç açılamaz.Bu, aynı zamanda ISO sözdizimi kullanarak ancak STATIC anahtar sözcüğü olmadan tanımlanan bir imleç için oluşur.
SALT OKUNUR
Bu ' % s'imleci imleçyoluyla yapılan güncelleştirmeleri engeller.imleç bir where current of yan tümce bir update veya delete deyimiçinde başvurulamaz.Bu seçenek, güncelleştirilecek bir imleç varsayılan özellikleri geçersiz kılar.Bu anahtar sözcük yerine alt çizgi boşluk sağlayarak önceki read_only değişir okuma ve yalnızca.UPDATE [OF column_name[ ,... n ] ]
imleçiçinde güncellenebilir sütunları tanımlar.If OF column_name**,**...n] yalnızca listelenen sütunlar değişiklikler. izin verir, sağlananListe belirttiğinizde, imleç read_only tanımlanmış sürece tüm sütunlar, güncelleştirilebilir.
Açıklamalar
Bir değişken bildirildikten sonra null olarak başlatılır.set deyim bildirilen bir değişken için null olmayan bir değer atamak için kullanın.Değişkenine bir değer atar set deyim tek bir değer döndürür.Birden fazla değişkenlerini başlatmak, her yerel değişkeni için ayrı bir set deyim kullanın.
Değişkenleri yalnızca değil yerine nesne adlarını veya anahtar sözcükler, ifadeler kullanılabilir.Dinamik yapısı oluşturmak için Transact-SQL deyimlerini kullanın execute.
set sözdizimi kurallarýna @cursor_variable ekleme yerel ve genel anahtar sözcükler.Zaman set @cursor_variable = İMLEÇ...Sözdizimi kullanıldığında, imleç genel veya yerel ayarına bağlı olarak oluşturulur default to local cursor veritabanı seçeneği.
İmleç değişkenleri, her zaman genel bir imleçoldukları bile yereldir.Bir imleç değişken genel imleçbaşvurduğunda, imleç hem genel hem de yerel imleç başvurusu vardır.Daha fazla bilgi için bkz: örnek c.
Daha fazla bilgi için, bkz. DECLARE CURSOR (Transact-SQL).
Bileşik atama işleç kullanılabilir herhangi bir ifade atamayla değişkenleri ve bir dizi bir güncelleştirme, seçin ve Al deyimdahil olmak üzere işleç, sağ el tarafındaki elinizde.
İzinler
Üyelik gerektiren public rolü.Tüm kullanıcıları AYARLAMAK kullanabilir @local_variable.
Örnekler
A.KÜMESİ kullanılarak başlatılan bir değişkenin değeri yazdırma
Aşağıdaki örnek oluşturur @myvar değişkeni, dize değeri bir deðiþkene yerleþtirir ve değerini yazdırır @myvar değişkeni.
DECLARE @myvar char(20);
SET @myvar = 'This is a test';
SELECT @myvar;
GO
B.Yerel bir değişken kullanarak bir değer KÜMESİ içinde bir select deyimkullanılarak atanmış.
Aşağıdaki örnek, adlı bir yerel değişken oluşturur @state ve bu yerel değişkeni kullanan bir SELECT deyim kimin bulunması durumunda tüm çalışanların ilk ve son adları Bul Oregon.
USE AdventureWorks2008R2;
GO
DECLARE @state char(25);
SET @state = N'Oregon';
SELECT RTRIM(FirstName) + ' ' + RTRIM(LastName) AS Name, City
FROM HumanResources.vEmployee
WHERE StateProvinceName = @state;
C.Bileşik atama için yerel bir değişken kullanarak
Aşağıdaki iki örnek aynı sonucu verir.Oluşturdukları adlı bir yerel değişken @NewBalancetarafından çarpar, 10 ve yeni yerel değişkeni değerini görüntüler bir SELECT deyim.İ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.Bir genel imleçkullanıyor
Aşağıdaki örnek, yerel bir değişken oluşturur ve sonra imleç değişken genel imleç adı olarak 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ç set kullanarak tanımlama
Aşağıdaki örnek bir imleçtanımlamak içinSETdeyim .
DECLARE @CursorVar CURSOR;
SET @CursorVar = CURSOR SCROLL DYNAMIC
FOR
SELECT LastName, FirstName
FROM AdventureWorks2008R2.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 bir değer atama
Aşağıdaki örnek, bir değişken değeri atamak için bir sorgu kullanır.
USE AdventureWorks2008R2;
GO
DECLARE @rows int;
SET @rows = (SELECT COUNT(*) FROM Sales.Customer);
SELECT @rows;
G.Türünde bir özellik değiştirerek, bir kullanıcı tanımlı tür değişkeni için bir değer atama
Aşağıdaki örnek, kullanıcı tanımlı türiçin bir değer ayarlarPoint özellikdeğerini değiştirerek X türü.
DECLARE @p Point;
SET @p.X = @p.X + 1.1;
SELECT @p;
GO
H.Türü bir yöntem çağırarak bir kullanıcı tanımlı tür değişkeni için bir değer atama
Aşağıdaki örnek, kullanıcı tanımlı türiçin bir değer ayarlarPoint çağırma yöntemtarafından SetXY türü.
DECLARE @p Point;
SET @p=point.SetXY(23.5, 23.5);
Ö.Bir clr türü için bir değişken oluşturmak ve mutator yöntemçağırma
Aşağıdaki örnek, bir değişken türü oluşturur Point, bir mutator yöntem yürütür ve Point.
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);