自定义 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 脚本:本地与远端同步。