sqlserver存储过程例题
时间: 2025-05-10 11:39:16 浏览: 15
### SQL Server 存储过程 示例题目及解答
#### 题目一:创建带有参数和返回值的存储过程
**需求描述**
编写一个存储过程 `GetEmployeeById`,接收员工 ID 参数,并返回对应员工的信息。
**解决方案**
以下是实现上述需求的代码:
```sql
-- 创建 employee 表
CREATE TABLE employee (
id INT PRIMARY KEY,
name NVARCHAR(50),
position NVARCHAR(50),
salary DECIMAL(10, 2)
);
-- 插入测试数据
INSERT INTO employee (id, name, position, salary) VALUES
(1, 'Alice', 'Manager', 75000.00),
(2, 'Bob', 'Developer', 60000.00),
(3, 'Charlie', 'Designer', 55000.00);
-- 创建存储过程 GetEmployeeById
CREATE PROCEDURE GetEmployeeById
@empId INT,
@empName NVARCHAR(50) OUTPUT,
@empPosition NVARCHAR(50) OUTPUT,
@empSalary DECIMAL(10, 2) OUTPUT
AS
BEGIN
SELECT
@empName = name,
@empPosition = position,
@empSalary = salary
FROM employee
WHERE id = @empId;
END;
-- 调用存储过程
DECLARE @name NVARCHAR(50), @position NVARCHAR(50), @salary DECIMAL(10, 2);
EXEC GetEmployeeById @empId = 1, @empName = @name OUTPUT, @empPosition = @position OUTPUT, @empSalary = @salary OUTPUT;
SELECT @name AS Name, @position AS Position, @salary AS Salary;
```
此示例展示了如何通过传递参数来获取特定员工的数据[^1]。
---
#### 题目二:计算总薪资的存储过程
**需求描述**
编写一个存储过程 `CalculateTotalSalary`,用于计算所有员工的总薪资并将其作为输出参数返回。
**解决方案**
```sql
-- 创建存储过程 CalculateTotalSalary
CREATE PROCEDURE CalculateTotalSalary
@totalSalary DECIMAL(18, 2) OUTPUT
AS
BEGIN
SELECT @totalSalary = SUM(salary) FROM employee;
END;
-- 调用存储过程
DECLARE @result DECIMAL(18, 2);
EXEC CalculateTotalSalary @totalSalary = @result OUTPUT;
SELECT @result AS TotalSalary;
```
这个例子说明了存储过程可以通过输出参数返回计算结果。
---
#### 题目三:更新员工工资的存储过程
**需求描述**
编写一个存储过程 `UpdateEmployeeSalary`,允许管理员根据员工 ID 更新其工资。
**解决方案**
```sql
-- 创建存储过程 UpdateEmployeeSalary
CREATE PROCEDURE UpdateEmployeeSalary
@empId INT,
@newSalary DECIMAL(10, 2)
AS
BEGIN
UPDATE employee
SET salary = @newSalary
WHERE id = @empId;
END;
-- 调用存储过程
EXEC UpdateEmployeeSalary @empId = 2, @newSalary = 65000.00;
-- 查看更新后的数据
SELECT * FROM employee WHERE id = 2;
```
以上代码演示了如何利用存储过程修改数据库中的记录。
---
#### 性能优势分析
存储过程具有显著的优势,例如能够嵌套调用其他存储过程以促进代码重用[^2]。此外,由于它们在定义时即完成编译,在后续运行过程中无需再次解析 SQL 文本,因此相比普通的动态 SQL 查询更高效。
---
阅读全文
相关推荐


















