从Java调用SQL函数并设置参数[重复]

Posted

技术标签:

【中文标题】从Java调用SQL函数并设置参数[重复]【英文标题】:Calling SQL function from Java and setting parameters [duplicate] 【发布时间】:2020-09-02 10:32:12 【问题描述】:

我试图从我的 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, LCODCURRFROM, LCODCURRTO, LIDENTITY), 0);
  END IF;
END;

【问题讨论】:

这个论坛上也有人问过同样的问题。我相信这会解决你的问题。***.com/questions/13158212/… 【参考方案1】:

你可以试试这样的:

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();
               
  

【讨论】:

以上是关于从Java调用SQL函数并设置参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章