【DM版本】:DM8
【操作系统】:win10
【CPU】:I7
【问题描述】*:
主要是需要在程序内批量执行脚本,现在并不能批量执行
执行一个脚本里面内容是:
1、创建一个函数
2、调用一个函数写入一条执行记录
在 DM管理工具 执行没问题,放到Java程序里面执行就出错提示:语法分析出错
脚本内容:
CREATE OR REPLACE FUNCTION get_str (p varchar2, le int, gr int)
return varchar
as
rs varchar2;
begin
select
case when p in ('a', 'b') then le
when p in ('c', 'd') then gr
else le||'-'||gr end into rs;
return rs;
end;
add_ver_log('测试程序执行脚本-创建函数5');
Java执行程序,为了方便看程序内脚本移除了,脚本在上面文本中
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("连接成功!开始执行脚本");
Statement statement = conn.createStatement();
String sql = "脚本内容";
try{
statement.execute(sql);
}catch (SQLException e){
System.out.println("执行脚本出现异常");
}
} catch (SQLException e) {
System.out.println("连接失败!");
}
异常内容:
dm.jdbc.driver.DMException: 第 15 行, 第 2 列[add_ver_log]附近出现错误:
语法分析出错
at dm.jdbc.driver.DBError.throwException(SourceFile:711)~[DmJdbcDriver18-8.1.3.62.jar:- 8.1.3.62 - Production]
at dm.jdbc.a.a.y.l(SourceFile:617)
at dm.jdbc.a.a.f.l(SourceFile:137)
at dm.jdbc.a.a.y.t(SourceFile:550)
at dm.jdbc.a.a.y.E(SourceFile:531)
at dm.jdbc.a.a.a(SourceFile:217)
at dm.jdbc.a.a.a(SourceFile:693)
at dm.jdbc.driver.DmdbStatement.executeInner(SourceFile:734)
at dm.jdbc.driver.DmdbStatement.do_execute(SourceFile:189)
at dm.jdbc.driver.DmdbStatement.do_execute(SourceFile:181)
at dm.jdbc.driver.DmdbStatement.execute(SourceFile:1304)
add_ver_log('测试程序执行脚本-创建函数5');
这行去掉