从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函数并设置参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用JDBC从Java调用Oracle SQL中的存储过程的示例