跳到主要内容

自定义 SQL:从写到执行

平台上的“自定义 SQL”一般指:语句保存在服务端,带参数,可被应用或 BFF 调用。CLI 帮你完成:列举、看详情、校验、保存(新建/更新)、执行一次试跑,以及后面 代码生成与菜单 里提到的代码生成。

SQL 在平台上的标识通常是 **sqlCode **,形如 xxxxxxxx-xxxxxxxx(8 位 hex + - + 8 位 hex)。记不住就先 sql list

看看你有哪些 SQL

rabetbase sql list
rabetbase sql list --name 报表
rabetbase sql list --sqlcode xxxxxxxx-xxxxxxxx

支持分页时可用 --page--pagesize(默认值以 --help 为准)。

看某一条 SQL 的完整定义

rabetbase sql detail --sqlcode xxxxxxxx-xxxxxxxx

会包含语句内容、参数定义等,适合复制到本地文件或对照修改。

先校验,再保存(推荐习惯)

本地准备一个 .sql 文件, 保存前 先校验:

rabetbase sql validate --file ./queries/report.sql

也可以直接传字符串:

rabetbase sql validate --sql "SELECT * FROM t WHERE id = #{id}"

校验会看语句类型、是否包含危险操作、抽出 #{param} 这种参数等。若希望按数据集做表名列名交叉检查,可传:

rabetbase sql validate --file ./queries/report.sql --schemas ,

CI 里常用 --format json 拿机器可读结果。

保存到平台(新建或更新)

**新建 **(至少要有文件路径;名称等可按 help 补充):

rabetbase sql save --file ./queries/report.sql --sqlname 月报查询

**更新 **(必须带上已有的 sqlCode):

rabetbase sql save --file ./queries/report.sql --sqlcode xxxxxxxx-xxxxxxxx

保存前会做与 validate 同一套校验, **不能跳过 **。若只想看校验结果不落库:

rabetbase sql save --file ./queries/report.sql --sqlcode xxxxxxxx-xxxxxxxx --dry-run

非交互环境(CI)请加 --non-interactive,需要跳确认时配合 --yes 等(以命令 help 为准)。

执行已保存的 SQL

用于自测或临时拉数据:

rabetbase sql exec --sqlcode xxxxxxxx-xxxxxxxx
rabetbase sql exec --sqlcode xxxxxxxx-xxxxxxxx --params '{"keyword":"test","page":1}'

--params 是 JSON,键要和 SQL 里 #{...} 对上。


小结

  • list / detail 管理 sqlCode。
  • 养成 validate → save 的顺序,减少校验与落库不一致。
  • exec 用来试跑带参查询。

生成 TypeScript 调用片段见 代码生成与菜单。要写服务端脚本并与 Git 协作,见 BFF 脚本:本地与远端同步