從查詢或過程中無條件退出。RETURN 即時且完全,可在任何時候用于從過程、批處理或語句塊中退出。不執(zhí)行位于 RETURN 之后的語句。
RETURN [ integer_expression ]
integer_expression
是返回的整型值。存儲過程可以給調(diào)用過程或應(yīng)用程序返回整型值。
可以選擇是否返回 int。
說明 除非特別指明,所有系統(tǒng)存儲過程返回 0 值表示成功,返回非零值則表示失敗。
當(dāng)用于存儲過程時,RETURN 不能返回空值。如果過程試圖返回空值(例如,使用 RETURN @status 且 @status 是 NULL),將生成警告信息并返回 0 值。
在執(zhí)行當(dāng)前過程的批處理或過程內(nèi),可以在后續(xù) Transact-SQL 語句中包含返回狀態(tài)值,但必須以下列格式輸入:
EXECUTE @return_status = procedure_name
說明 Microsoft® SQL Server™ 2000 是將空字符串 (NULL) 解釋為單個空格還是真正的空字符串取決于兼容級別設(shè)置。如果兼容級別小于或等于 65,SQL Server 就將空字符串解釋為單個空格。如果兼容級別等于 70,則 SQL Server 將空字符串解釋為空字符串。有關(guān)更多信息,請參見 sp_dbcmptlevel。
下例顯示如果在執(zhí)行 findjobs 時沒有給出用戶名作為參數(shù),RETURN 則將一條消息發(fā)送到用戶的屏幕上然后從過程中退出。如果給出用戶名,將從適當(dāng)?shù)南到y(tǒng)表中檢索由該用戶在當(dāng)前數(shù)據(jù)庫內(nèi)創(chuàng)建的所有對象名。
CREATE PROCEDURE findjobs @nm sysname = NULL
AS
IF @nm IS NULL
BEGIN
PRINT 'You must give a username'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
下例檢查指定作者所在州的 ID。如果所在的州是加利福尼亞州 (CA),將返回狀態(tài)代碼 1。否則,對于任何其它情況(state 的值是 CA 以外的值或者 au_id 沒有匹配的行),將返回狀態(tài)代碼 2。
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT state FROM authors WHERE au_id = @param) = 'CA'RETURN 1
ELSE
RETURN 2
下例顯示從 checkstate 執(zhí)行中返回的狀態(tài)。第一個顯示的是在加利福尼亞州的作者;第二個顯示的是不在加利福尼亞州的作者,第三個顯示的是無效的作者。必須先聲明 @return_status 局部變量后才能使用它。
DECLARE @return_status int
EXEC @return_status = checkstate '172-32-1176'
SELECT 'Return Status' = @return_status
GO
下面是結(jié)果集:
Return Status
-------------
1
再執(zhí)行一次查詢,指定一個不同的作者編號。
DECLARE @return_status int
EXEC @return_status = checkstate '648-92-1872'
SELECT 'Return Status' = @return_status
GO
下面是結(jié)果集:
Return Status
-------------
2
再執(zhí)行一次查詢,指定另一個作者編號。
DECLARE @return_status int
EXEC @return_status = checkstate '12345678901'
SELECT 'Return Status' = @return_status
GO
下面是結(jié)果集:
Return Status
-------------
2
相關(guān)文章