从Java调用SQL函数并设置参数

问题描述

我试图从我的Java代码调用sql函数,但是我对此并不走运。我知道我需要使用Callable Statement调用sql函数,但是由于我是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();
               }
  }