JAVA调用用户自定义的函数
Session s=this.getSessionFactory().openSession();
Connection con=s.connection();
String procedure = "{?=call fcm(?)} ";
CallableStatement cstmt;
try {
cstmt = con.prepareCall(procedure);
cstmt.setString(2,companyid);
cstmt.registerOutParameter(1,java.sql.Types.VARCHAR );//函数返回两个值
cstmt.registerOutParameter(2,java.sql.Types.VARCHAR );
boolean b=cstmt.execute();
String retValue = cstmt.getString(1);
String retvalue2=cstmt.getString(2);
} catch (
SQLException e) {
e.printStackTrace();
return null;}finally{s.close();}
执行总是报这样的错(数据库是SQL SERVER2000):
过程 'fcm '的请求失败,因为 'fcm ' 是 函数 对象。
路过的朋友如果知道请解答一下,不胜感激!
------解决方案--------------------两个?,当然设两个参数值!找不到存储过程!你先搞清楚存储过程!
------解决方案--------------------SQL server调用函数的时候要加函数的所有者吧,如:dbo.fmt()
------解决方案--------------------因为 'fmt '是 函数 对象。
一看这句话就知道,不是这样调用函数的或者是不能请求函数对像啊,你写一个存储过程,然后在存储过程里调用这个函数,Java里调用存储过程
------解决方案--------------------建议还是改成存储过程吧,