SQL Server 常用存储过程集锦
在 SQL Server 中,存储过程是一种预编译的 SQL 语句集合,可以在数据库中存储和重复使用。本攻略将详细介绍 SQL Server 常用存储过程,并提供多个示例说明。
示例一:查询数据
以下是一个简单的查询数据的存储过程:
CREATE PROCEDURE sp_GetEmployees
AS
BEGIN
SELECT * FROM Employees
END
以上存储过程名为 sp_GetEmployees,使用 SELECT 语句查询 Employees 表中的所有数据。
示例二:插入数据
以下是一个简单的插入数据的存储过程:
CREATE PROCEDURE sp_InsertEmployee
@Name VARCHAR(50),
@Age INT,
@Salary DECIMAL(18,2)
AS
BEGIN
INSERT INTO Employees (Name, Age, Salary)
VALUES (@Name, @Age, @Salary)
END
以上存储过程名为 sp_InsertEmployee,使用 INSERT INTO 语句向 Employees 表中插入数据,参数包括 Name、Age 和 Salary。
示例三:更新数据
以下是一个简单的更新数据的存储过程:
CREATE PROCEDURE sp_UpdateEmployee
@Id INT,
@Name VARCHAR(50),
@Age INT,
@Salary DECIMAL(18,2)
AS
BEGIN
UPDATE Employees
SET Name = @Name, Age = @Age, Salary = @Salary
WHERE Id = @Id
END
以上存储过程名为 sp_UpdateEmployee,使用 UPDATE 语句更新 Employees 表中的数据,参数包括 Id、Name、Age 和 Salary。
示例四:删除数据
以下是一个简单的删除数据的存储过程:
CREATE PROCEDURE sp_DeleteEmployee
@Id INT
AS
BEGIN
DELETE FROM Employees
WHERE Id = @Id
END
以上存储过程名为 sp_DeleteEmployee,使用 DELETE FROM 语句删除 Employees 表中的数据,参数为 Id。
示例五:带输出参数的存储过程
以下是一个带输出参数的存储过程:
CREATE PROCEDURE sp_GetEmployeeCount
@Count INT OUTPUT
AS
BEGIN
SELECT @Count = COUNT(*) FROM Employees
END
以上存储过程名为 sp_GetEmployeeCount,使用 SELECT 语句查询 Employees 表中的数据总数,并将结果赋值给输出参数 @Count。
示例六:带条件的存储过程
以下是一个带条件的存储过程:
CREATE PROCEDURE sp_GetEmployeesByAge
@Age INT
AS
BEGIN
SELECT * FROM Employees
WHERE Age = @Age
END
以上存储过程名为 sp_GetEmployeesByAge,使用 SELECT 语句查询 Employees 表中年龄等于输入参数 @Age 的数据。
示例七:带分页的存储过程
以下是一个带分页的存储过程:
CREATE PROCEDURE sp_GetEmployeesByPage
@PageNumber INT,
@PageSize INT
AS
BEGIN
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber, *
FROM Employees
) AS EmployeesWithRowNumber
WHERE RowNumber BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize
END
以上存储过程名为 sp_GetEmployeesByPage,使用 ROW_NUMBER() 函数实现分页查询 Employees 表中的数据,输入参数包括页码 @PageNumber 和每页数据量 @PageSize。
示例八:带事务的存储过程
以下是一个带事务的存储过程:
CREATE PROCEDURE sp_TransferMoney
@FromAccountId INT,
@ToAccountId INT,
@Amount DECIMAL(18,2)
AS
BEGIN
BEGIN TRANSACTION
UPDATE Accounts
SET Balance = Balance - @Amount
WHERE Id = @FromAccountId
UPDATE Accounts
SET Balance = Balance + @Amount
WHERE Id = @ToAccountId
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END
COMMIT TRANSACTION
END
以上存储过程名为 sp_TransferMoney,使用 UPDATE 语句更新 Accounts 表中的数据,实现转账操作,并使用事务保证操作的原子性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sqlserver 常用存储过程集锦 - Python技术站