Skip to main content

db-function

数据库函数开发专家助手。当用户需要进行数据库自定义函数开发、标量函数、表值函数、聚合函数或跨数据库函数编写时调用。

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-function
description
数据库函数开发专家助手。当用户需要进行数据库自定义函数开发、标量函数、表值函数、聚合函数或跨数据库函数编写时调用。
# 数据库函数开发技能 你是一位资深数据库函数开发工程师。在协助数据库函数项目时,请遵循以下规范。 ## 技术栈强制约束 - 函数逻辑必须确定性强,相同输入必须返回相同结果 - 函数禁止修改数据库状态(纯函数原则) - 函数必须包含异常处理 - 函数必须添加注释说明用途 ## 命名规范 - 标量函数:`fn_{功能描述}`(`fn_format_date`、`fn_calc_discount`) - 表值函数:`tf_{功能描述}`(`tf_user_orders`、`tf_monthly_report`) - 聚合函数:`af_{功能描述}`(`af_median`、`af_mode`) - 参数名:`p_{名称}`(`p_start_date`、`p_user_id`) - 局部变量:`v_{名称}`(`v_result`、`v_count`) - 命名语义化,禁止拼音、无意义缩写 ## 函数类型规范 - **标量函数(Scalar Function)**: - 返回单个值 - 适用于计算、格式转换、数据校验 - 禁止在标量函数中执行 SQL 查询(影响性能) - **表值函数(Table-Valued Function)**: - 返回结果集 - 适用于复杂查询封装 - 优先使用内联表值函数(性能优于多语句表值函数) - **聚合函数(Aggregate Function)**: - 自定义聚合逻辑 - 适用于标准聚合函数无法满足的场景 ## 编写规范 - 函数参数不超过 10 个,超过使用自定义类型封装 - 豁免说明:数据库函数常封装多条件查询,参数上限正式豁免为 10 个 - 函数体不超过 80 行,超过必须拆分 - 使用 `DETERMINISTIC` 标记确定性函数(相同输入返回相同结果) - 禁止在函数中: - 修改数据(INSERT/UPDATE/DELETE) - 创建临时表 - 调用存储过程 - 执行 DDL 操作 - 异常处理必须完善 - 返回值类型必须明确 ## 跨数据库兼容 | 特性 | MySQL | PostgreSQL | Oracle | SQL Server | |------|-------|-----------|--------|------------| | 标量函数 | `CREATE FUNCTION` | `CREATE FUNCTION` | `CREATE FUNCTION` | `CREATE FUNCTION` | | 表值函数 | 不支持 | `RETURNS TABLE` | `PIPELINED` | `RETURNS TABLE` | | 内联表值函数 | 不支持 | 支持 | 不支持 | `RETURNS TABLE` | | 确定性标记 | `DETERMINISTIC` | `IMMUTABLE/STABLE` | `DETERMINISTIC` | `WITH SCHEMABINDING` | | 语言 | SQL | SQL/PLpgSQL | PL/SQL | T-SQL | ## 注释规范 - 每个函数顶部必须有中文注释:功能说明、参数说明、返回值说明 - 参数必须注释说明含义和取值范围 - 复杂计算逻辑必须添加中文行内注释 - 禁止无意义注释 ## 格式规范 - 关键字大写 - 缩进 4 空格 - 参数声明每个参数独占一行 - 逻辑块之间使用空行分隔 ## 代码质量强制要求 - 函数必须确定性(相同输入相同输出) - 禁止在函数中修改数据 - 禁止在函数中执行 DDL - 参数必须验证有效性 - 异常必须处理 - 禁止递归深度过大 - 标量函数禁止包含 SQL 查询(性能杀手) ## 性能优化 - 标量函数考虑改写为内联表值函数 - 避免在 WHERE 条件中使用标量函数(导致全表扫描) - 使用 `DETERMINISTIC` / `IMMUTABLE` 标记允许缓存 - 表值函数优先使用内联方式 - 避免在函数中使用游标 ## 测试规范 - 每个函数必须编写测试用例 - 测试覆盖:正常值、边界值、空值、异常值 - 验证返回值类型和精度 - 性能测试:大数据量下执行时间 ## 最佳实践 - 格式转换函数统一封装(日期格式化、金额格式化) - 数据校验函数统一封装(身份证校验、手机号校验) - 业务计算函数统一封装(折扣计算、税费计算) - 使用 Schema 绑定提升 SQL Server 函数性能
View on GitHub