【发布时间】:2015-06-12 10:02:43
【问题描述】:
我试图在休眠中调用一个存储函数,但我得到了无效的 sql 异常。
Java 代码---
public Integer callSqlBlock(){
Integer outputValue =1;
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
session.doWork(new Work() {
@Override
public void execute(Connection conn)
throws SQLException {
CallableStatement stmt = conn.prepareCall("? = call test(?)");
stmt.registerOutParameter(1, Types.INTEGER);
stmt.setString(2, "callIndex");
stmt.execute();
Integer output = stmt.getInt(1);
test(output);
}
});
Connection oracleConnection = getJavaSqlConnectionFromHibernateSession(session);
// CallableStatement statement = oracleConnection.prepareCall(sql)
return outputValue;
}
在oracle中测试存储函数---
create or replace
function test( str in varchar2) return number
as
begin
if str = 'test' then
return 1;
end if;
return 0;
end;
请告诉我哪里出错了
【问题讨论】: