RETURN (Transact-SQL)
Bir sorgu veya yordamdan koşulsuz olarak çıkar. RETURN ifadesi hemen ve koşulsuz uygulanır ve bir yordamdan, toplu işlemden veya bir deyim bloğundan herhangi bir noktada çıkmak için kullanılabilir. RETURN'den sonra gelen deyimler çalıştırılmaz.
Transact-SQL Sözdizim Kuralları
Sözdizimi
RETURN [ integer_expression ]
Bağımsız değişkenler
- integer_expression
Döndürülen tamsayı değeridir. Saklı yordamlar kendilerini çağıran yordamlara veya uygulamalara bir tamsayı değeri döndürebilir.
Dönüş Türleri
İsteğe bağlı olarak int döndürür.
[!NOT]
Belgelerde aksi belirtilmedikçe tüm sistem saklı yordamları 0 değerini döndürür. Bu başarı durumunu, sıfır olmayan bir değer ise başarısızlık durumunu belirtir.
Açıklamalar
Saklı bir yordamda kullanıldığında, RETURN null değerini döndüremez. Bir yordam null değerini döndürmeye çalışırsa (örneğin, @status NULL olduğunda RETURN @status kullanarak), bir uyarı iletisi üretilir ve 0 değeri döndürülür.
Döndürülen durum değeri, geçerli yordamı çalıştırmış toplu işteki veya yordamdaki sonraki Transact-SQL deyimlerine dahil edilebilir, ancak şu biçimde girilmesi gerekir: EXECUTE @return\_status = <procedure_name>.
Örnekler
A.Bir yordamdan dönme
Aşağıdaki örnek findjobs çalıştırıldığında parametre olarak hiçbir kullanıcı adı belirtilmezse, RETURN'ün, kullanıcı ekranına bir ileti gönderildikten sonra yordamdan çıkılmasına neden olduğunu göstermektedir. Kullanıcı adı belirtilirse, geçerli veritabanında bu kullanıcı tarafından oluşturulan tüm nesnelerin adları uygun sistem tablolarından alınır.
CREATE PROCEDURE findjobs @nm sysname = NULL
AS
IF @nm IS NULL
BEGIN
PRINT 'You must give a user name'
RETURN
END
ELSE
BEGIN
SELECT o.name, o.id, o.uid
FROM sysobjects o INNER JOIN master..syslogins l
ON o.uid = l.sid
WHERE l.name = @nm
END;
CREATE PROCEDURE findjobs @nm sysname = NULL
AS
IF @nm IS NULL
BEGIN
PRINT 'You must give a user name'
RETURN
END
ELSE
BEGIN
SELECT o.name, o.id, o.uid
FROM sysobjects o INNER JOIN master..syslogins l
ON o.uid = l.sid
WHERE l.name = @nm
END;
B.Durum kodları döndürme
Aşağıdaki örnek belirtilen bir kişinin kimliğinin durumunu denetlemektedir. Eyalet Washington (WA) ise, durum olarak 1 değeri döndürülür. Diğer durumlar (StateProvince için WA dışında bir değer veya herhangi bir satırla eşleşmeyen bir ContactID) için 2 değeri döndürülür.
USE AdventureWorks2012;
GO
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
USE AdventureWorks2012;
GO
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
Aşağıdaki örnekler checkstate yordamını çalıştırmanın döndürdüğü durumu göstermektedir. Birinci örnek Washington'daki bir kişiyi; ikincisi Washington'da olmayan bir kişiyi; üçüncüsü ise geçerli olmayan bir kişiyi göstermektedir. @return\_status yerel değişkeni, kullanılmadan önce bildirilmelidir.
DECLARE @return_status int;
EXEC @return_status = checkstate '2';
SELECT 'Return Status' = @return_status;
GO
DECLARE @return_status int;
EXEC @return_status = checkstate '2';
SELECT 'Return Status' = @return_status;
GO
Sonuç kümesi buradadır.
Return Status
-------------
1
Sorguyu farklı bir kişi numarası belirterek yeniden çalıştırın.
DECLARE @return_status int;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO
DECLARE @return_status int;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO
Sonuç kümesi buradadır.
Return Status
-------------
2
Sorguyu başka bir kişi numarası belirterek yeniden çalıştırın.
DECLARE @return_status int
EXEC @return_status = checkstate '12345678901';
SELECT 'Return Status' = @return_status;
GO
DECLARE @return_status int
EXEC @return_status = checkstate '12345678901';
SELECT 'Return Status' = @return_status;
GO
Sonuç kümesi buradadır.
Return Status
-------------
2
Ayrıca bkz.
Başvuru
alter procedure (Transact-sql)
procedure (Transact-sql) oluştur