SQL Server SQL脚本创建存储过程、函数
封面图
•
2025-10-05
•
SQL Server
0
0
0
0
在 SQL Server 中,你可以使用 **存储过程(Stored Procedure)** 和 **函数(Function)** 来封装复杂的 SQL 逻辑。下面我将分别展示如何创建它们的示例。 --- ## 一、创建存储过程(Stored Procedure) ### 示例:创建一个简单的存储过程 ```sql -- 创建存储过程:GetEmployeeDetails CREATE PROCEDURE GetEmployeeDetails @EmployeeID INT AS BEGIN SET NOCOUNT ON; -- 防止返回受影响的行数信息 SELECT EmployeeID, FirstName, LastName, Department FROM Employees WHERE EmployeeID = @EmployeeID; END ``` ### 调用存储过程: ```sql EXEC GetEmployeeDetails @EmployeeID = 101; ``` --- ## 二、创建函数(Function) SQL Server 支持两种类型的函数: 1. **标量函数(Scalar Function)** 2. **表值函数(Table-Valued Function)** ### 1. 标量函数(返回单个值) ```sql -- 创建标量函数:CalculateAge CREATE FUNCTION CalculateAge (@BirthDate DATE) RETURNS INT AS BEGIN DECLARE @Age INT; SET @Age = DATEDIFF(YEAR, @BirthDate, GETDATE()); RETURN @Age; END ``` ### 使用标量函数: ```sql SELECT dbo.CalculateAge('1990-05-15') AS Age; ``` --- ### 2. 表值函数(返回一个表) ```sql -- 创建表值函数:GetEmployeesByDepartment CREATE FUNCTION GetEmployeesByDepartment (@DeptName NVARCHAR(50)) RETURNS TABLE AS RETURN ( SELECT EmployeeID, FirstName, LastName, Department FROM Employees WHERE Department = @DeptName ); ``` ### 使用表值函数: ```sql SELECT * FROM dbo.GetEmployeesByDepartment('IT'); ``` --- ## 三、注意事项 | 项目 | 说明 | |------|------| | 存储过程 | 可以执行多种操作(如插入、更新、删除),支持事务控制。 | | 函数 | 不可以修改数据库状态(不能执行 INSERT/UPDATE/DELETE),只能查询数据。 | | `SET NOCOUNT ON` | 在存储过程中建议使用,避免返回“x rows affected”信息。 | | `dbo.` | 建议使用架构前缀(如 `dbo`)来指定对象所属的架构。 | --- ## 四、查看已创建的对象 你可以使用以下语句查看已创建的存储过程或函数: ```sql -- 查看所有存储过程 SELECT * FROM sys.procedures; -- 查看所有函数 SELECT * FROM sys.objects WHERE type IN ('FN', 'IF', 'TF'); ``` --- 如果你有具体的业务场景(比如需要根据某个条件查询、计算等),我可以为你定制更具体的脚本。欢迎继续提问!
上一篇:
SQL Server SQL脚本修改现有表结构(如添加列、修改列类型等)
下一篇:
SQL Server SQL脚本设置权限
标题录入,一次不能超过6条
返回顶部
留言
留言
评论