gpt4 book ai didi

java - 如何从 Netbeans 中的 pl/sql 函数获取结果

转载 作者:行者123 更新时间:2023-12-01 13:55:52 26 4
gpt4 key购买 nike

我的 Oracle 数据库中有一个函数(不是过程)。这个函数看起来像:

CREATE OR REPLACE FUNCTION GETTOTAL(v_user_id IN NUMBER)
RETURN NUMBER
AS
v_result number := 0;
BEGIN
SELECT SUM(DAY1+DAY2) INTO v_result FROM TABLE WHERE USER_ID = v_user_id;
RETURN v_result;
END;

现在,在我的 java Netbeans 程序中,我需要该结果才能在我的程序中使用它。

我尝试过以下方法:

callStatement = con.prepareCall("SELECT GETTOTAL(1) FROM DUAL;");
callStatement.execute();
resultaat = callStatement.getDouble(1);
callStatement.close();

我也尝试过使用 CALL。但似乎没有任何作用。我也尝试在网上寻找问题,但似乎只解释了程序而不解释功能......所以我希望我能在这里找到一个遮阳篷。

最佳答案

检查我的示例:

CREATE TABLE my_test_tab (
user_id NUMBER,
day1 NUMBER,
day2 NUMBER
);

INSERT INTO my_test_tab VALUES (1, 5, 10);
INSERT INTO my_test_tab VALUES (1, 1, 2);

COMMIT;

CREATE OR REPLACE FUNCTION GETTOTAL(v_user_id IN NUMBER)
RETURN NUMBER
AS
v_result number := 0;
BEGIN
SELECT SUM(DAY1+DAY2) INTO v_result FROM my_test_tab WHERE USER_ID = v_user_id;
RETURN v_result;
END;
/

在 Java 中,您创建一个 CallableStatement,并且必须 registerOutParameter 来获取函数的返回值,请检查代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.CallableStatement;

public class Main2 {
public static void main(String[] args) throws Exception {
Connection conn = getOracleConnection();
System.out.println("Got Connection.");

CallableStatement callStmt = null;

try {
callStmt = conn.prepareCall("{? = call gettotal(?)}");
callStmt.setInt(2, 1);
callStmt.registerOutParameter(1, java.sql.Types.NUMERIC);
callStmt.execute();

System.out.println(callStmt.getInt(1));
} finally {
callStmt.close();
conn.close();
}
}

public static Connection getOracleConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@HOST_ADDRESS:1521:orcl";
String username = "USERNAME";
String password = "PASSWORD";

Class.forName(driver); // load Oracle driver

java.util.Properties info = new java.util.Properties();
info.put ("user", "hr");
info.put ("password", "oracle");
Connection conn = DriverManager.getConnection(url, info);

return conn;
}
}

关于java - 如何从 Netbeans 中的 pl/sql 函数获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com