低代码平台 WorkFine 支持存储过程,使低代码应用能够调用数据库逻辑,从而实现更复杂的功能。
本文目录
隐藏
一、什么是存储过程?
存储过程(Stored Procedure) 是一组预编译的 SQL 语句,以一个名称存储在数据库中,用户可以通过指定该名称并传入参数(如果有的话)来执行它。
优点:
- 性能高:首次执行时编译并缓存执行计划,后续调用更快。
- 可重用:一次编写,多次调用。
- 安全性好:可以限制用户直接访问表,只允许通过存储过程操作数据。
- 模块化:便于维护和管理复杂业务逻辑。
二、存储过程的基本语法
1. 创建存储过程
CREATE PROCEDURE 存储过程名称
[@参数名 数据类型 [= 默认值]] [OUTPUT],
...
AS
BEGIN
-- SQL 语句
END
2. 执行存储过程
EXEC 存储过程名称 [参数值]
-- 或
EXECUTE 存储过程名称 [参数值]
3. 修改存储过程
ALTER PROCEDURE 存储过程名称
...
AS
BEGIN
-- 修改后的 SQL 语句
END
4. 删除存储过程
DROP PROCEDURE 存储过程名称
5. 查看存储过程定义
sp_helptext '存储过程名称'
三、常用示例(使用中文字段)
假设有一张员工表
员工信息表,包含以下字段:
- 员工编号(INT)
- 姓名(NVARCHAR(50))
- 部门(NVARCHAR(50))
- 工资(DECIMAL(10,2))
示例 1:创建一个查询所有员工的存储过程
CREATE PROCEDURE 查询所有员工
AS
BEGIN
SELECT 员工编号, 姓名, 部门, 工资
FROM 员工信息表
END
调用:
EXEC 查询所有员工
示例 2:带输入参数的存储过程(根据部门查询员工)
CREATE PROCEDURE 根据部门查询员工
@部门名称 NVARCHAR(50)
AS
BEGIN
SELECT 员工编号, 姓名, 部门, 工资
FROM 员工信息表
WHERE 部门 = @部门名称
END
调用:
EXEC 根据部门查询员工 @部门名称 = N'技术部'
示例 3:带输出参数的存储过程(返回某部门的平均工资)
CREATE PROCEDURE 获取部门平均工资
@部门名称 NVARCHAR(50),
@平均工资 DECIMAL(10,2) OUTPUT
AS
BEGIN
SELECT @平均工资 = AVG(工资)
FROM 员工信息表
WHERE 部门 = @部门名称
END
调用:
DECLARE @结果 DECIMAL(10,2)
EXEC 获取部门平均工资 @部门名称 = N'销售部', @平均工资 = @结果 OUTPUT
SELECT @结果 AS '销售部平均工资'
示例 4:带默认参数的存储过程
CREATE PROCEDURE 查询员工工资范围
@最低工资 DECIMAL(10,2) = 5000.00,
@最高工资 DECIMAL(10,2) = 20000.00
AS
BEGIN
SELECT 员工编号, 姓名, 部门, 工资
FROM 员工信息表
WHERE 工资 BETWEEN @最低工资 AND @最高工资
END
调用(使用默认值):
EXEC 查询员工工资范围
调用(自定义范围):
EXEC 查询员工工资范围 @最低工资 = 8000, @最高工资 = 15000
示例 5:修改数据的存储过程(插入新员工)
CREATE PROCEDURE 添加新员工
@姓名 NVARCHAR(50),
@部门 NVARCHAR(50),
@工资 DECIMAL(10,2)
AS
BEGIN
INSERT INTO 员工信息表 (姓名, 部门, 工资)
VALUES (@姓名, @部门, @工资)
END
调用:
EXEC 添加新员工 @姓名 = N'张三', @部门 = N'人事部', @工资 = 9500.00
四、注意事项
- 中文对象名需注意:虽然 SQL Server 支持中文命名(如表名、字段名、存储过程名),但建议在生产环境中使用英文命名,避免兼容性或脚本迁移问题。
- 参数前加
@:SQL Server 中所有变量和参数都必须以@开头。 - 事务处理:对于涉及多条 DML 操作的存储过程,建议使用
BEGIN TRANSACTION/COMMIT/ROLLBACK来保证数据一致性。 - 错误处理:可使用
TRY...CATCH结构捕获异常。
五、小结
| 功能 | 语法关键词 |
|---|---|
| 创建 | CREATE PROCEDURE |
| 修改 | ALTER PROCEDURE |
| 删除 | DROP PROCEDURE |
| 执行 | EXEC 或 EXECUTE |
| 输出参数 | OUTPUT |
| 查看定义 | sp_helptext |
应用实践
存储过程测试方法:将语句单独拿出


相关文章
© 版权声明
THE END















