在本文中,我們將深入探討 SQL Server 存儲過程中的返回值。在開始之前,建議閱讀我們之前的文章,了解SQL Server 存儲過程中的輸出參數。
什么是 SQL Server 存儲過程的返回值?
在 SQL Server 中,每當執行一個存儲過程時,它總是返回一個整數狀態變量,以指示狀態,通常情況下,零表示成功,非零表示失敗。要親自查看這一點,可以在 SQL Server 管理工作室的對象資源管理器中執行任何存儲過程。
執行步驟如下:
右鍵點擊并選擇執行存儲過程。
如果存儲過程需要參數,提供值并點擊確定。
除了你期望的結果外,存儲過程還會返回一個“返回值 = 0”。
通過這個過程,我們了解到,執行存儲過程時,它會返回一個整數狀態變量。接下來,我們將使用以下員工表來理解 SQL Server 中的存儲過程輸出參數和返回值。
-- 創建員工表
CREATE TABLE Employee (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Gender VARCHAR(50),
DOB DATETIME,
DeptID INT
);
-- 使用測試數據填充員工表
INSERT INTO Employee VALUES
(1, '張三', '男', '1996-02-29 10:53:27.060', 1),
(2, '李四', '女', '1995-05-25 10:53:27.060', 2),
(3, '王五', '男', '1995-04-19 10:53:27.060', 2),
(4, '趙六', '女', '1996-03-17 10:53:27.060', 3),
(5, '孫七', '男', '1997-01-15 10:53:27.060', 1),
(6, '周八', '女', '1995-07-12 10:53:27.060', 2),
(7, '吳九', '男', '1998-08-22 10:53:27.060', 3),
(8, '鄭十', '女', '1999-11-30 10:53:27.060', 1),
(9, '朱十一', '男', '2000-12-01 10:53:27.060', 2),
(10, '錢十二', '女', '2001-01-02 10:53:27.060', 3);
示例1: 使用輸出參數統計員工總數
-- 創建存儲過程
CREATE PROCEDURE spGetTotalCountOfEmployee1
@TotalCount INT OUTPUT
AS
BEGIN
SELECT @TotalCount = COUNT(ID) FROM Employee
END
-- 調用存儲過程
DECLARE @EmployeeTotal INT
EXECUTE spGetTotalCountOfEmployee1 @EmployeeTotal OUTPUT
PRINT @EmployeeTotal

示例2: 使用返回狀態統計員工總數
-- 創建存儲過程
CREATE PROCEDURE spGetTotalCountOfEmployee2
AS
BEGIN
RETURN (SELECT COUNT(ID) FROM Employee)
END
-- 調用存儲過程
DECLARE @EmployeeTotal INT
EXECUTE @EmployeeTotal = spGetTotalCountOfEmployee2
PRINT @EmployeeTotal

示例3: 使用輸出參數根據員工ID獲取員工姓名
-- 創建存儲過程
CREATE PROCEDURE spGetEmployeeNameById1
@ID INT, @Name VARCHAR(30) OUTPUT
AS
BEGIN
SELECT @Name = Name FROM Employee WHERE ID = @ID
END
-- 調用存儲過程
DECLARE @EmployeeName VARCHAR(30)
EXECUTE spGetEmployeeNameById1 3, @EmployeeName OUTPUT
PRINT @EmployeeName

示例4: 嘗試使用返回狀態獲取員工姓名
-- 創建存儲過程
CREATE PROCEDURE spGetEmployeeNameById2
@ID INT
AS
BEGIN
RETURN (SELECT Name FROM Employee WHERE ID = @ID)
END
-- 調用存儲過程
DECLARE @EmployeeName VARCHAR(30)
EXECUTE @EmployeeName = spGetEmployeeNameById2 3
PRINT @EmployeeName
執行上述存儲過程 spGetEmployeeNameById2
時,會返回錯誤:“轉換失敗,當嘗試將 nvarchar 值 '王五' 轉換為 int 類型時”。
SQL Server 中返回狀態值的缺點
不能返回多個值。
只能返回整數類型的值。
而這些限制在輸出參數中是可以被克服的。
返回狀態值與輸出參數的區別
希望本文能幫助您更好地理解 SQL Server 存儲過程中的返回值和輸出參數。
該文章在 2024/8/2 18:30:42 編輯過