sql server存储过程例子
时间: 2023-12-06 14:36:53 浏览: 24
以下是一个SQL Server存储过程的例子:
```sql
CREATE PROCEDURE sp_GetCustomerOrders
@CustomerID nchar(5)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM Orders WHERE CustomerID = @CustomerID;
END
```
这个存储过程的作用是获取指定客户的所有订单。存储过程接受一个输入参数@CustomerID,然后使用该参数查询Orders表,并返回结果集。
--相关问题--:
1. 存储过程有哪些优点?
2. 如何在SQL Server中执行存储过程?
3. 存储过程中的参数有哪些类型?
相关问题
sqlserver存储过程实例
回答: 下面是一个SQL Server存储过程的实例:
```sql
CREATE PROCEDURE GetEmployeeByID
@EmployeeID INT
AS
BEGIN
SELECT * FROM Employees WHERE EmployeeID = @EmployeeID
END
```
这个存储过程名为GetEmployeeByID,接收一个参数@EmployeeID,然后根据该参数查询Employees表中对应的员工信息。通过使用存储过程,可以将这个查询逻辑封装起来,方便重复使用,并且可以提高执行速度。当第一次调用存储过程时,它会被编译并存储在缓存中,再次执行时就不需要再次编译,直接执行,从而提高了执行速度。\[1\]\[3\]
#### 引用[.reference_title]
- *1* *2* [SQL SERVER存储过程详解及相关实例](https://blog.csdn.net/MrLsss/article/details/104082972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Sql Server 存储过程实例讲解](https://blog.csdn.net/wuxiaopengnihao1/article/details/126754136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
sqlserver存储过程实例对成绩进行分析
假设有以下成绩表格:
| 学生ID | 课程ID | 成绩 |
|--------|--------|------|
| 1 | 1 | 85 |
| 1 | 2 | 90 |
| 2 | 1 | 75 |
| 2 | 2 | 95 |
| 3 | 1 | 80 |
| 3 | 2 | 85 |
我们可以创建一个存储过程来分析成绩情况:
```
CREATE PROCEDURE analyze_scores
AS
BEGIN
-- 查询平均成绩
SELECT AVG(成绩) AS 平均成绩
FROM 成绩表格;
-- 查询最高成绩和对应的学生和课程
SELECT TOP 1 成绩表格.成绩 AS 最高成绩, 学生表格.姓名 AS 学生姓名, 课程表格.课程名称 AS 课程名称
FROM 成绩表格
INNER JOIN 学生表格 ON 成绩表格.学生ID = 学生表格.ID
INNER JOIN 课程表格 ON 成绩表格.课程ID = 课程表格.ID
ORDER BY 成绩 DESC;
-- 查询不及格的学生和课程
SELECT 学生表格.姓名 AS 学生姓名, 课程表格.课程名称 AS 课程名称
FROM 成绩表格
INNER JOIN 学生表格 ON 成绩表格.学生ID = 学生表格.ID
INNER JOIN 课程表格 ON 成绩表格.课程ID = 课程表格.ID
WHERE 成绩 < 60;
END
```
该存储过程查询了成绩表格中的平均成绩、最高成绩及对应的学生和课程,以及不及格的学生和课程。可以通过调用该存储过程来分析成绩情况:
```
EXEC analyze_scores;
```
执行结果:
```
平均成绩
------
85.0
最高成绩 学生姓名 课程名称
------ ------ ------
95 学生2 课程2
学生姓名 课程名称
------ ------
```