我有一个 postgres 数据库和一个与数据库交互的 java 应用程序。我需要运行一个 sql 函数,将数据从一个表复制到另一个表。为此,我使用 jdbcTemplate.update(),但得到了错误的 SQL 语法错误。 我的代码:
public boolean populateWithTemplateActivityData(LocalDate localDate) {
String sql ="DO\n" +
"$$\n" +
" declare\n" +
" day double precision;\n" +
" mydate date;\n" +
" begin\n" +
"\n" +
" mydate := '?';\n" +
" day := extract(\n" +
" isodow from mydate\n" +
" );\n" +
" DELETE FROM activities\n" +
" WHERE date>=mydate AND date<=mydate + INTERVAL '7 days';\n" +
" while day < 6\n" +
" loop\n" +
" insert into activities (groupid, classroomid, lessonnumber, courseid, weekday, teacherid)\n" +
" select groupid, classroomid, lessonnumber, courseid, weekday, teacherid\n" +
" from template_activities\n" +
" where weekday = day;\n" +
" update activities set date = mydate where weekday = day;\n" +
" day := day + 1;\n" +
" mydate := mydate + INTERVAL '1 day';\n" +
" end loop;\n" +
"\n" +
" END\n" +
"$$;";
try{
jdbcTemplate.update(sql, localDate);
return true;
}catch (Exception e){
LOGGER.warn(e.getMessage());
return false;
}
}
从控制台运行时,sql 代码按预期工作。当我在测试中使用 jdbctemplate 运行它时(我使用 h2),它给出了一个错误。
我的问题: 运行包含一些 sql 逻辑的复杂 sql 脚本是否合适?