TOAD是否支持类似PL/SQL Developer的常量解析替换功能?
TOAD包常量自动替换功能使用说明
TOAD原生支持你提到的、和PL/SQL Developer一致的包常量解析替换能力,不需要额外写包装器,完全适配临时校验SQL的使用场景,开启和使用方式如下:
- 功能入口在TOAD的设置项里,打开顶部菜单栏的
View->Toad Options - 在设置窗口左侧导航栏依次展开
Editor->Execute分组 - 在右侧配置列表里找到
Replace package constants with their literal values when executing,勾选对应复选框即可开启全局替换 - 如果需要和你给出的示例一样,替换后保留原常量名作为注释,额外勾选同分组下的
Add comment with original constant name after replaced value即可
配置完成后的执行效果和你给出的PL/SQL Developer示例完全一致:
编辑器内编写的原始SQL:
select my_package.my_constant from dual;TOAD实际提交到数据库执行的预处理后SQL:
select 2 /*my_package.my_constant*/ from dual;
针对你提到的使用顾虑补充几点说明:
- 所有替换动作都是TOAD在客户端本地执行前做的临时预处理,不会修改你保存的源码文件,也不需要你把包内常量暴露到包外,不会破坏你原有包的封装性
- 替换取值是TOAD从当前数据库连接会话实时读取的包编译后常量值,只要你修改常量后重新编译了包,替换值就会同步更新,不会长期持有旧值
- 如果不想全局开启该功能,也可以选中需要执行的SQL片段后,右键选择
Execute->Execute with constant replacement单次触发替换,不影响其他SQL的正常执行 - 对于包体内定义的私有常量,因为外部会话无法直接读取定义值,全局状态下无法自动替换;你只要打开对应包的编辑窗口,在包体编辑上下文里选中引用私有常量的SQL执行,TOAD可以识别同包内的私有常量取值完成替换,满足你校验包内SQL的需求。
内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud
相关产品推荐
相关产品推荐

