Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Transact-SQL yerel değişkeni, belirli bir türe ait tek bir veri değerini tutabilen bir nesnedir. Değişkenleri genellikle aşağıdaki amaçlarla toplu işlerde ve betiklerde kullanırsınız:
- Bir döngünün kaç kez gerçekleştirildiğini saymak veya döngünün kaç kez gerçekleştirildiğini denetlemek için bir değişkeni sayaç olarak kullanın.
- Akış denetimi deyimiyle test etmek için bir veri değeri tutun.
- Saklı yordam dönüş kodu veya işlev dönüş değeriyle döndürülecek veri değerini kaydedin.
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
Remarks
Bazı Transact-SQL sistem işlevlerinin adları iki işaretle (@@) başlar. SQL Server'ın önceki sürümleri işlevlere @@ genel değişkenler olarak başvursa da, @@ işlevler değişken değildir ve değişkenlerle aynı davranışlara sahip değildir. İşlevler @@ sistem işlevleridir ve söz dizimi kullanımı işlevlerin kurallarına uyar.
Görünümde değişkenleri kullanamazsınız.
Değişkenlerdeki değişiklikler, bir işlemin geri alınmasından etkilenmez.
Transact-SQL değişkeni bildirme
Transact-SQL değişkenini başlatmak için deyimini DECLARE kullanın:
Ad atama. Ad tek
@bir karakterle başlamalıdır.Sistem tarafından sağlanan veya kullanıcı tanımlı bir veri türü ve uzunluğu atama. Sayısal değişkenler için bir duyarlık ve isteğe bağlı ölçek atayabilirsiniz. XML türü değişkenler için isteğe bağlı olarak bir şema koleksiyonu atayabilirsiniz.
değeri olarak
NULLayarlanır.
Örneğin, aşağıdaki DECLARE deyim @mycounter veri türüyle adlı bir yerel değişken oluşturur. Varsayılan olarak, bu değişkenin değeri şeklindedir NULL.
DECLARE @MyCounter AS INT;
Birden fazla yerel değişken bildirmek için, ilk yerel değişken tanımından sonra virgül kullanın ve sonraki yerel değişken adını ve veri türünü belirtin.
Örneğin, aşağıdaki DECLARE deyim , @FirstNameve @StateProvinceadlı @LastNameüç yerel değişken oluşturur ve her birini için NULLbaşlatır:
DECLARE @LastName AS NVARCHAR (30),
@FirstName AS NVARCHAR (20),
@StateProvince AS NCHAR (2);
Başka bir örnekte, aşağıdaki DECLARE deyim adlı @IsActivebir Boole değişkeni oluşturur ve değeri () ile 0false olarak bildirilir:
DECLARE @IsActive AS BIT = 0;
Değişken kapsam
Değişkenin kapsamı, değişkene başvurabilen Transact-SQL deyimleri aralığıdır. Değişkenin kapsamı, bildirildiği noktadan, bildirildiği toplu işlemin veya saklı yordamın sonuna kadar sürer. Örneğin, aşağıdaki betik bir söz dizimi hatası oluşturur çünkü değişken bir toplu işte (anahtar sözcükle GO ayrılmış olarak) bildirilir ve başka bir toplu işte başvurulur:
USE AdventureWorks2025;
GO
DECLARE @MyVariable AS INT;
SET @MyVariable = 1;
SELECT BusinessEntityID,
NationalIDNumber,
JobTitle
FROM HumanResources.Employee
WHERE BusinessEntityID = @MyVariable;
Değişkenler yerel kapsama sahiptir ve yalnızca bunları tanımladığınız toplu iş veya yordam içinde görünür. Aşağıdaki örnekte, yürütme sp_executesql için oluşturulan iç içe kapsam, daha yüksek kapsamda bildirilen değişkene erişime sahip değildir ve bir hata döndürür.
DECLARE @MyVariable AS INT;
SET @MyVariable = 1;
EXECUTE sp_executesql N'SELECT @MyVariable';
Bu sorgu aşağıdaki hatayı oluşturur:
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@MyVariable".
Transact-SQL değişkeninde değer ayarlama
Bir değişkeni ilk bildirdiğinizde değeri şeklindedir NULL. Bir değişkene değer atamak için deyimini SET kullanın. Bu yöntem, değişkene değer atamanın tercih edilen yoludur. Ayrıca, bir değişkene bir deyimin seçme listesinde başvurarak bir SELECT değer atayabilirsiniz.
deyimini SET kullanarak bir değişkene değer atamak için değişken adını ve değişkene atanacak değeri ekleyin. Bu yöntem, değişkene değer atamanın tercih edilen yoludur. Aşağıdaki toplu iş, örneğin, iki değişken bildirir, bunlara değerler atar ve sonra bunları bir WHERE deyiminin SELECT yan tümcesinde kullanır:
USE AdventureWorks2025;
GO
-- Declare two variables.
DECLARE @FirstNameVariable AS NVARCHAR (50),
@PostalCodeVariable AS NVARCHAR (15);
-- Set their values.
SET @FirstNameVariable = N'Amy';
SET @PostalCodeVariable = N'BA5 3HX';
-- Use them in the WHERE clause of a SELECT statement.
SELECT LastName,
FirstName,
JobTitle,
City,
PostalCode,
StateProvinceName,
CountryRegionName
FROM HumanResources.vEmployee
WHERE FirstName = @FirstNameVariable
OR PostalCode = @PostalCodeVariable;
Ayrıca, bir değere seçim listesinde başvurarak değişkene de atayabilirsiniz. Seçme listesindeki bir değişkene başvuruda bulunursanız, değişkene bir skaler değer atayın veya deyiminin yalnızca bir satır döndürdüğünden SELECT emin olun. Örneğin:
USE AdventureWorks2025;
GO
DECLARE @EmpIDVariable AS INT;
SELECT @EmpIDVariable = MAX(BusinessEntityID)
FROM HumanResources.Employee;
Warning
Tek SELECT bir deyimde birden çok atama yan tümcesi varsa, Veritabanı Altyapısı ifadelerin değerlendirilme sırasını garanti etmez. Efektler yalnızca atamalar arasında başvurular varsa görünür.
Bir SELECT deyim birden fazla satır döndürürse ve değişken bir nonscalar ifadeye başvuruda bulunursa, değişken sonuç kümesinin son satırında ifade için döndürülen değere ayarlanır. Örneğin, aşağıdaki toplu işlemde @EmpIDVariable döndürülen son satırın değerine ayarlanırBusinessEntityID. Bu değer:1
USE AdventureWorks2025;
GO
DECLARE @EmpIDVariable AS INT;
SELECT @EmpIDVariable = BusinessEntityID
FROM HumanResources.Employee
ORDER BY BusinessEntityID DESC;
SELECT @EmpIDVariable;
Examples
Aşağıdaki betik küçük bir test tablosu oluşturur ve 26 satırla doldurur. Betik, üç şey yapmak için bir değişken kullanır:
- Döngünün kaç kez yürütülür denetleyerek kaç satır eklendiğini kontrol edin.
- Tamsayı sütununa eklenen değeri sağlayın.
- Karakter sütununa eklenecek harfleri oluşturan ifadenin bir parçası olarak işlev.
-- Create the table.
CREATE TABLE TestTable
(
cola INT,
colb CHAR (3)
);
SET NOCOUNT ON;
-- Declare the variable to be used.
DECLARE @MyCounter AS INT;
-- Initialize the variable.
SET @MyCounter = 0;
-- Test the variable to see if the loop is finished.
WHILE (@MyCounter < 26)
-- Insert a row into the table.
BEGIN
INSERT INTO TestTable
-- Use the variable to provide the integer value
-- for cola. Also use it to generate a unique letter
-- for each row. Use the ASCII function to get the
-- integer value of 'a'. Add @MyCounter. Use CHAR to
-- convert the sum back to the character @MyCounter
-- characters after 'a'.
VALUES (
@MyCounter,
CHAR((@MyCounter + ASCII('a')))
);
-- Increment the variable to count this iteration
-- of the loop.
SET @MyCounter = @MyCounter + 1;
END
SET NOCOUNT OFF;
-- View the data.
SELECT cola,
colb
FROM TestTable;
DROP TABLE TestTable;