Java调用存储过程,一直提示必须声明标识符
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java调⽤存储过程,⼀直提⽰必须声明标识符
近⽇使⽤Java调⽤Oracle存储过程,实际上是packages
代码如下:
public void executeProcedures(String consid){
Connection con = DaoUtil.getConnection();
try {
con.setAutoCommit(false);
CallableStatement call = con.prepareCall("{call usetocanevaluate.canevaluate(?)}");
call.setString(1, consid);
call.execute();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
usetocanevaluate.canevaluate(?) 是Oracle建⽴的存储过程,在PL/SQL中调⽤
call usetocanevaluate.canevaluate('1332512150578'); 完全可以执⾏,但是在Java中⼀直提⽰
PLS-00201: 必须声明标识符 'USETOCANEVALUATE.CANEVALUATE'
经过分析,发现问题原因:必须指定哪个⽤户下的存储过程,即获取连接的时候要⽤存储过程所属的⽤户登录。
解决:Connection con = DaoUtil.getConnection(“admin”);
此处的getConnection是项⽬中封装好的⽅法,默认获取default的连接,
加上参数则以参数为⽤户获取连接,如果出现同样错误,
修改获取连接时候的⽤户名为存储过程所属的⽤户即可。