Java JDBC 执行过程

标签 java oracle jdbc

我需要执行以下 SQL 代码:

exec ais_disp.p_lk.p_add_client
(v_sis_id     => 1640,
 v_proc_id    => 1,
 v_time_start => to_date('01032013 00:00','ddmmyyyy hh24:mi'),
 v_time_end   => to_date('31032013 23:59','ddmmyyyy hh24:mi'));
select * from ais_disp.v_lk_1;
commit;

并从此查询中获取 ResultList。

我尝试这样做:

CallableStatement stmt = connection.prepareCall("{call ais_disp.p_lk.p_add_client " +
                    "(1640,
                      1,
                      to_date('01032013 00:00','ddmmyyyy hh24:mi'),
                      to_date('31032013 23:59','ddmmyyyy hh24:mi'))}");
stmt.execute();
ResultSet rs2 = stmt.executeQuery("select * from ais_disp.v_lk_1");
System.out.println(rs2);
while (rs2.next()){
   System.out.println(rs2.getString("LRP_STATUS_NAME"));
}
stmt.close();

但它返回空的ResultSet。我做错了什么? 数据库为Oracle数据库。

更新:

我已将此字符串添加到 stmt.executeQuery("select * from ais_disp.v_lk_1") 之前的代码中:

stmt.execute();

但它仍然没有返回任何行。 也许我需要在可调用语句中添加某种选择语句。那么该怎么做呢?

最佳答案

似乎您的CallableStatement从未执行过,请先执行您的存储过程:

ResultSet rs = stmt.executeQuery()

您的代码执行选择查询而不是存储过程,并且选择语句不返回任何行。

关于Java JDBC 执行过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650754/

相关文章:

sql - 简单的字符串比较条件使查询运行时间更长

java - 从oracle存储过程返回到Java的字符串为 '???'

java - 列表元素未正确累积

java - 如何只检查新的Java代码?

java - 如何在 JavaFX FXML 中公平分配 VBox 中的节点

java - 优化:通过java中的集合进行双重循环

Oracle PL/SQL 冒泡排序 - ORA-01403 : no data found ORA-06512: at line 12

mysql - 一列中具有多个空值的复合唯一键约束

java - 客户端无法从服务器接收异常的堆栈跟踪

java - 使用jdbc向数据库中插入数据