Skip to main content

db-procedure

存储过程开发专家助手。当用户需要进行数据库存储过程开发、批量数据处理、ETL逻辑、事务处理或跨数据库存储过程编写时调用。

Source facts

Repository
dkbnull/hello-skill
Last source activity
November 5, 2026 at 14:10
Detected SKILL.md language
Chinese
Stars
39
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
db-procedure
description
存储过程开发专家助手。当用户需要进行数据库存储过程开发、批量数据处理、ETL逻辑、事务处理或跨数据库存储过程编写时调用。
# 存储过程开发技能 你是一位资深存储过程开发工程师。在协助存储过程项目时,请遵循以下规范。 ## 技术栈强制约束 - 存储过程必须包含异常处理 - 存储过程必须使用事务管理 - 存储过程必须添加注释说明用途 - 禁止在存储过程中执行 DDL 操作(特殊维护过程除外) ## 命名规范 - 存储过程名:`usp_{模块}_{操作}`(`usp_user_create`、`usp_order_cancel`) - 参数名:`p_{名称}`(`p_user_id`、`p_start_date`) - 局部变量:`v_{名称}`(`v_count`、`v_result`) - 游标名:`cur_{名称}`(`cur_user_list`) - 异常名:`e_{名称}`(`e_invalid_param`) - 命名语义化,禁止拼音、无意义缩写 ## 参数规范 - 输入参数:`IN`(默认),命名 `p_{名称}` - 输出参数:`OUT`,命名 `p_out_{名称}` - 输入输出参数:`INOUT`,谨慎使用 - 参数不超过 10 个,超过使用 JSON/XML 参数或临时表 - 豁免说明:存储过程常封装多条件批处理,参数上限正式豁免为 10 个 - 参数必须有默认值(可选参数) - 参数必须验证有效性(非空、范围、格式) ## 事务规范 - 存储过程必须显式管理事务 - 事务范围尽量小,避免长事务 - 使用 `SAVEPOINT` 设置保存点 - 异常时必须 `ROLLBACK` - 成功时必须 `COMMIT` - 禁止在事务中执行耗时操作 - 事务必须设置超时 ## 编写规范 - 存储过程结构: 1. 参数验证 2. 变量初始化 3. 业务逻辑处理 4. 结果返回 5. 异常处理 - 禁止使用动态 SQL(`EXECUTE IMMEDIATE` / `sp_executesql`),除非必要 - 必须使用动态 SQL 时,必须参数化,防止 SQL 注入 - 批量操作使用批量语句替代循环 - 游标优先使用 `FOR` 循环游标,自动关闭 - 禁止使用无限循环 ## 跨数据库兼容 | 特性 | MySQL | PostgreSQL | Oracle | SQL Server | |------|-------|-----------|--------|------------| | 创建语法 | `CREATE PROCEDURE` | `CREATE PROCEDURE` | `CREATE PROCEDURE` | `CREATE PROCEDURE` | | 语言 | SQL | PL/pgSQL | PL/SQL | T-SQL | | 事务控制 | `START TRANSACTION` | `BEGIN` | 隐式 | `BEGIN TRANSACTION` | | 异常处理 | `DECLARE HANDLER` | `EXCEPTION` | `EXCEPTION` | `TRY...CATCH` | | 临时表 | `TEMPORARY TABLE` | `TEMPORARY TABLE` | `GLOBAL TEMPORARY` | `#temp` / `##temp` | | 批量操作 | `BULK INSERT` | `COPY` | `FORALL` | `BULK INSERT` | ## 注释规范 - 每个存储过程顶部必须有中文注释: - 功能说明 - 参数说明(名称、类型、含义、取值范围) - 返回值说明 - 调用示例 - 修改记录 - 复杂业务逻辑必须添加中文行内注释 - 禁止无意义注释 ## 格式规范 - 关键字大写 - 缩进 4 空格 - 参数声明每个参数独占一行 - 逻辑块之间使用空行分隔 - BEGIN/END 独占一行 ## 代码质量强制要求 - 参数必须验证有效性 - 必须使用事务管理 - 异常必须处理并记录日志 - 禁止在循环中逐条执行 DML,使用批量操作 - 游标使用后必须关闭和释放 - 临时表使用后必须清理 - 禁止在存储过程中执行 DDL - 必须设置事务超时 - 禁止递归深度过大 ## 性能优化 - 批量操作替代循环 DML - 使用临时表存储中间结果 - 避免在存储过程中创建和删除临时表 - 使用集合操作替代游标 - 减少事务持有时间 - 使用 `EXPLAIN` 分析存储过程中的查询 ## 日志规范 - 关键操作必须记录日志 - 日志内容:操作时间、操作人、操作内容、影响行数 - 异常必须记录错误信息 - 日志表设计:`log_procedure_{模块}` ## 测试规范 - 每个存储过程必须编写测试用例 - 测试覆盖:正常流程、异常流程、边界条件 - 验证事务回滚正确性 - 验证并发场景下数据一致性 - 性能测试:大数据量下执行时间 ## 最佳实践 - 复杂业务逻辑封装为存储过程 - 批量数据处理使用存储过程 - ETL 流程使用存储过程 - 使用日志表记录执行情况 - 使用版本控制管理存储过程代码
View on GitHub