SQL Server 的預存程序(Stored Procedure)是一種在數據庫中預先定義並儲存的 SQL 語句集。它們被用來封裝一組操作,可以被多次調用,並可以接受參數來執行不同的操作。預存程序有助於提高數據庫操作的效率、可重用性和安全性。
標準預存程序:
定義了常見的數據操作,如查詢、插入、更新、刪除等。
範例:
CREATE PROCEDURE GetEmployeeDetails
@EmployeeID INT
AS
BEGIN
SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;
END;
系統預存程序:
SQL Server 提供的一些內建預存程序,用於系統管理和維護,如創建、修改和刪除數據庫對象。
範例:
EXEC sp_help 'Employees'; -- 顯示 Employees 表的結構和相關信息
複雜預存程序:
包含業務邏輯、條件判斷、循環等複雜控制流程的預存程序。
範例:
CREATE PROCEDURE UpdateEmployeeSalary
@EmployeeID INT,
@NewSalary DECIMAL(10, 2)
AS
BEGIN
IF EXISTS (SELECT 1 FROM Employees WHERE EmployeeID = @EmployeeID)
BEGIN
UPDATE Employees
SET Salary = @NewSalary
WHERE EmployeeID = @EmployeeID;
END
ELSE
BEGIN
RAISERROR ('Employee not found', 16, 1);
END
END;
創建預存程序:
使用 CREATE PROCEDURE
語句來創建預存程序。
CREATE PROCEDURE ProcedureName
@Parameter1 DataType,
@Parameter2 DataType
AS
BEGIN
-- SQL 語句
END;
執行預存程序:
使用 EXEC
或 EXECUTE
語句來調用預存程序。
EXEC ProcedureName @Parameter1 = Value1, @Parameter2 = Value2;
修改預存程序:
使用 ALTER PROCEDURE
語句來修改已存在的預存程序。
ALTER PROCEDURE ProcedureName
@Parameter1 DataType
AS
BEGIN
-- 修改後的 SQL 語句
END;
刪除預存程序:
使用 DROP PROCEDURE
語句來刪除預存程序。
DROP PROCEDURE ProcedureName;