IBExpert 2021.7.8.1对比Firebird2.5存储过程时参数域名被注释替换问题
存储过程对比脚本域名被替换的原因
在使用IBExpert 2021.7.8.1对比Firebird 2.5数据库存储过程时,生成的ALTER脚本把参数的域名替换成基础类型并注释,主要是以下原因:
1. IBExpert脚本生成配置默认展开域名
IBExpert自带的脚本生成选项里,可能默认开启了「解析域名为基础数据类型」的功能。这个功能会在生成ALTER语句时,自动将参数关联的域名替换成对应的底层原生类型,同时把原域名以注释形式保留。你可以进入工具的设置面板,找到「脚本生成」或「元数据处理」相关的选项,查看是否有「保留域名引用」的开关,开启后就能生成保留原域名的脚本。
2. 元数据读取优先级设置问题
Firebird 2.5的系统元数据表中,存储过程参数的类型信息同时记录了域名和对应的基础类型。IBExpert在对比元数据时,如果默认优先读取基础类型而非域名关联信息,就会输出替换后的脚本。这种情况需要调整工具读取元数据的优先级,让它优先使用域名而非原生类型。
3. 版本适配的特定行为
IBExpert 2021.7.8.1版本对Firebird 2.5的兼容性处理可能存在特定逻辑:针对旧版Firebird,工具默认采用展开域名的方式生成脚本,而非保留原域名引用。这种情况下可能需要检查工具是否有针对特定Firebird版本的适配设置,或者升级IBExpert到更兼容的版本。
生成的问题脚本片段
ALTER PROCEDURE WIP_CURRENT_MONTH_PROCEDURE( IP_SELECTEDYEAR /* SMALLINT_DOMAIN */ SMALLINT, IP_SELECTEDMONTH /* SMALLINT_DOMAIN */ SMALLINT, IP_MONTHSDIFFERENCE /* INTEGER_DOMAIN */ INTEGER, IP_MAX_MONTHS_REMOVED /* INTEGER_DOMAIN */ INTEGER, IP_EOM_RUN SMALLINT) RETURNS ( OP_CONTRACTVALUE /* MONETRY_DOMAIN */ NUMERIC(15,2), OP_ESTIMATED_COSTS /* MONETRY_DOMAIN */ NUMERIC(15,2), OP_MECHANICAL_VX_2 /* MONETRY_DOMAIN */ NUMERIC(15,2), )
期望的脚本片段
ALTER PROCEDURE WIP_CURRENT_MONTH_PROCEDURE( IP_SELECTEDYEAR SMALLINT_DOMAIN, IP_SELECTEDMONTH SMALLINT_DOMAIN, IP_MONTHSDIFFERENCE INTEGER_DOMAIN, IP_MAX_MONTHS_REMOVED INTEGER_DOMAIN, IP_EOM_RUN SMALLINT_DOMAIN) RETURNS ( OP_CONTRACTVALUE MONETRY_DOMAIN, OP_ESTIMATED_COSTS MONETRY_DOMAIN, OP_MECHANICAL_VX_2 MONETRY_DOMAIN )
内容的提问来源于stack exchange,提问作者Yuppski
相关产品推荐
相关产品推荐

