我们现在用的job平台 定时调用后端的执行存储过程的代码。代码是Spring的jdbcTemplate写的最后只是拼成 call function_name() 这样的sql并执行。但是时好时坏的
失败的话会报:org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [call CP_PLC_ACC()]; nested exception is java.sql.SQLException: ORA-06576: not a valid function or procedure name.但是检查数据库端 发现这个存储过程是有且有权限调用的。而且上面还成功过两次。plsql端也可以调用成功
失败的话会报:org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [call CP_PLC_ACC()]; nested exception is java.sql.SQLException: ORA-06576: not a valid function or procedure name.但是检查数据库端 发现这个存储过程是有且有权限调用的。而且上面还成功过两次。plsql端也可以调用成功
解决方案 »
- Oracle 主键设置自增的问题
- oracle 存储过程查询结果打印很慢 在线等
- 请教一个游标 跨实例查询的问题?
- 通过 pl/sql developer 工具通过DBLINK去查询一个表。为什么commit,rollback按钮会被激活。
- 急,打开Enterprise Manager console和Net configuration assistant报同样的错误(oran9.dll)
- 日期值班表数据库字段该如何设计
- Oracle8.1.7.4补丁不能安装?
- 求救修改oracle的日期存储/显示格式为:YYYYMMDD
- [SQL*Plus WorkSheet]插入表的时候出现这样的问题!
- oracle如果用B表数据更新A表数据?
- 配置linux 的oracle data guard 的问题
- insert 数字转换的问题?
贴图中四个是一个job还是多个,如何拼接的,如何调用
执行代码如下:
/**
* 执行存储过程 (无返回值的)
* @param dbname 数据源名字
* @param spname 存储过程名字
* @param params 传入存储过程参数(null为没有传入参数)
* @return 执行影响的行数,-1为失败
*/
@Override
public String Execute(String dbname, String spname, Object[] params) {
int iReturn=-1;
try{
if(null==jdbcTemplate){
log.warn("jdbcTemplate is null");
}
if(null==spname||0==spname.trim().length()){
log.warn("vSpname is null");
return null;
}
if(null!=dbname && dbname.trim().length()>0){
log.info("dsName="+dbname);
this.jdbcTemplate=(JdbcTemplate)AppUtil.getBean(dbname);
}
String strSQL="call "+spname+"(";
if(null!=params && params.length>0){
for(int i=0;i<params.length;i++){
if(0==i)
strSQL=strSQL+"?";
else
strSQL=strSQL+",?";
}
}
strSQL=strSQL+")";
if(null!=params && params.length>0){
log.debug("执行带参数的存储过程:"+dbname+spname+" info:"+Log4jUtil.getInfo(strSQL, params));
iReturn=this.jdbcTemplate.update(strSQL, params);
}else{
log.debug("执行不带参数的存储过程:"+dbname+spname+" info:"+strSQL);
iReturn=this.jdbcTemplate.update(strSQL);
}
log.info("iReturn="+iReturn);
log.info("strSQL="+strSQL);
// log.info("params="+params[0].toString());
}catch(Exception ex){
log.error("",ex);
throw new ApplicationException(ex.getMessage());
}
return ""+iReturn;
}