【发布时间】:2012-08-06 11:24:30
【问题描述】:
在不重复代码的情况下更新 schema_version 表并在 flyway 中执行修改后的 PL/SQL 包/过程的最佳方法是什么?
我的示例需要为每个 PL/SQL 代码修改创建一个类文件
public class V2_1__update_scripts extends AbstractMigration {
// update package and procedures
}
AbstractMigration 类执行 db/update 文件夹中的文件:
public abstract class AbstractMigration implements SpringJdbcMigration {
private static final Logger log = LoggerFactory.getLogger(AbstractMigration.class);
@Override
public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
Resource packageFolder = new ClassPathResource("db/update");
Collection<File> files = FileUtils.listFiles(packageFolder.getFile(), new String[]{"sql"}, true);
for (File file : files ) {
log.info("Executing [{}]", file.getAbsolutePath());
String fileContents = FileUtils.readFileToString(file);
jdbcTemplate.execute(fileContents);
}
}
}
有没有更好的方法来执行 PL/SQL 代码?
【问题讨论】: