用途
Embedded SQL in ADVPL/TLPP 技能面向在 Protheus 平台(ADVPL/TLPP 语言)中处理 SQL 的开发场景,帮助用户在代码中编写、审查和迁移嵌入式 SQL 查询。其核心载体是 BeginSQL ... EndSQL 代码块,替代旧式的字符串拼接 SQL 写法。
主要能力
技能涵盖以下内容:
- BeginSQL ... EndSQL 代码块及其特殊宏表达式:
- %table:TABLE% 用于物理表解析
- %xfilial:TABLE% 用于分支(filial)过滤
- %notDel% 用于逻辑删除过滤
- %exp:EXPRESSION% 用于安全变量绑定
- %Order:TABLE% 用于主键排序
- 列类型声明
- JOIN 与聚合(aggregation)模式
- 子查询
- 将旧式 TCQuery 字符串拼接代码迁移到 Embedded SQL
- 通过 TCSqlExec 执行 INSERT/UPDATE/DELETE 等 DML 操作的适用场景
- 性能提示
使用方式
当用户正在编写新查询、审查已有查询的正确性或安全性,或需要将旧的拼接字符串 SQL 转换为现代 BeginSQL 语法时,激活此技能。技能同时说明了 BeginSQL 的限制与注意事项,包括:行首不能使用 *、始终包含 %notDel% 与分支过滤、使用 GetNextAlias()、关闭别名(alias)。当需要执行 INSERT/UPDATE/DELETE 时,则考虑使用 TCSqlExec。
官方资料中附带一个 reference.md 参考文件,建议始终阅读,其中包含 BeginSQL 语法、宏表达式、JOIN/聚合/子查询模式、通过 TCSqlExec 的 DML、性能提示以及 TCQuery 迁移等内容。
适用场景
适用于在 ADVPL/TLPP 中编写、审查、迁移 SQL 查询的开发者,尤其是使用 Protheus 平台并将旧 TCQuery 拼接写法迁移至 BeginSQL 的场景。
限制
该技能不涵盖以下内容:与 SQL 无关的通用原生函数查询(参见 protheus-reference)、用于决定查询哪些表与字段的业务流程上下文(参见 protheus-business),以及为恰好包含 SQL 的例程生成文档(参见 documentation-patterns)。