问题描述
我试图从我的Java代码中调用sql函数,但是我对此并不走运。我知道我需要使用Callable Statement
来调用sql函数,但是由于我是sql新手,而且我很难理解sql函数,因此我不确定该函数会产生什么值。
下面是我的sql函数。
FUNCTION FXRATE_ENTITY(CODCURRBASE IN VARCHAR,LCODCURRFROM IN VARCHAR,LCODCURRTO IN VARCHAR,LIDENTITY IN VARCHAR)
RETURN NUMBER IS
CODCUR_L VARCHAR2(3);
BEGIN
IF (LCODCURRTO = '*') THEN
RETURN NVL(FXRATE(CODCURRBASE,LCODCURRFROM,CODCURRBASE,LIDENTITY),0);
ELSE
RETURN NVL(FXRATE(CODCURRBASE,LCODCURRTO,0);
END IF;
END;
解决方法
您可以尝试这样的事情:
public String callPlsql(String a,String b,String c) throws Exception {
String res=null;
CallableStatement cstmt = null;
Connection con=null;
try {
con = getConn(); //define this to get your connection
cstmt = con.prepareCall("{? = call FXRATE_ENTITY(?,?,?)}");
cstmt.registerOutParameter(1,java.sql.Types.NUMERIC);
cstmt.setString(2,a);
cstmt.setString(3,b);
cstmt.setString(4,c);
cstmt.execute();
res = cstmt.getString(1);
//con.commit();
}
catch(Exception e){
con.rollback();
e.printStackTrace();
throw e;
}
finally {
cstmt.close();
}
}