日期:2014-05-18  浏览次数:20720 次

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里调用存储过程
------解决方案--------------------
建议还是改成存储过程吧,