作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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/
我是一名优秀的程序员,十分优秀!