And*_*rew 2 mysql sql oracle postgresql liquibase
是不是没有数据库规范就调用存储过程的方式?例如:
<changeSet author="name" id="id1" dbms="mysql">
<sql>
EXEC procedure_name('some_string_value')
</sql>
</changeSet><changeSet author="name" id="id2" dbms="oracle">
<sql>
EXECUTE procedure_name('some_string_value')
</sql>
</changeSet><changeSet author="name" id="id3" dbms="postgresql">
<sql>
SELECT fun_name('some_string_value')
</sql>
</changeSet>我需要避免数据库条件,因为我在不同的地方调用此过程。有没有办法通过在一个地方实现数据库条件来实现这一目标?
我找到解决方案:
<property name="call.procedure" value="EXEC" dbms="oracle" />
<property name="call.procedure" value="SELECT" dbms="postgresql" />
<property name="call.procedure" value="EXEC" dbms="mssql" />
<property name="before.param" value="(" dbms="oracle" />
<property name="before.param" value="(" dbms="postgresql" />
<property name="before.param" value=" @Name=" dbms="mssql" />
<property name="after.param" value=")" dbms="oracle" />
<property name="after.param" value=")" dbms="postgresql" />
<property name="after.param" value="" dbms="mssql" />
Run Code Online (Sandbox Code Playgroud)
现在,我可以避免在变更集中指定数据库名称,并在一行中为不同的数据库调用过程。
<changeSet author="andrew" id="id">
<sql>
${call.procedure} cd_test ${before.param}'some_string'${after.param}
</sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3106 次 |
| 最近记录: |