Skip to content
Skills Library
Data & analytics · Building & coding

db-function

/db-function

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

Repository
hello-skill ↗
Licence
MIT
Last repository change
02.07.2026

Assessment and security

86/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability21 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 02.07.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

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

Original author description

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

How it works

  1. 技术栈强制约束
  2. 命名规范
  3. 函数类型规范
  4. 编写规范
  5. 跨数据库兼容
  6. 注释规范
  7. 格式规范
  8. 代码质量强制要求
  9. 性能优化
  10. 测试规范
Original SKILL.md headings · 104 lines, 248 words
SKILL.md 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 个,超过使用自定义类型封装
- 函数体不超过 100 行,超过必须拆分
- 使用 `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 函数性能

Versions

The database has no other skills named db-function.

Database snapshot: 13.11.2026 · package version e06144410274 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 96sql
    SQL开发专家助手。当用户需要进行SQL查询编写、SQL语法规范、跨数据库SQL开发、查询优化或SQL标准规范时调用。
  • 86db-procedure
    存储过程开发专家助手。当用户需要进行数据库存储过程开发、批量数据处理、ETL逻辑、事务处理或跨数据库存储过程编写时调用。
  • 100window-function-generator
    Generate window function generator operations. Auto-activating skill for Data Analytics. Triggers on: window function generator, window function generator Part of the Data Analytics skill category. Use when working with window function generator functionality. Trigger with…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.