执行存储过程,返回一个游标结果集,并把游标结果集取出来放入一个list中返回
public List getProcedureValues(String procedure, Object[] o) {
List list = new ArrayList();
Connection con = null;
CallableStatement ps = null;
ResultSet rs = null;
try {
con = getSession().connection();
ps = con.prepareCall(procedure);
ps.registerOutParameter(1, OracleTypes.CURSOR);
for(int i = 0; i < o.length; i++) {
if(null == o[i] || "".equals(o[i].toString().trim()) || "*".equals(o[i].toString().trim())) {
ps.setNull(i+2, Types.VARCHAR);
} else {
ps.setObject(i+2, o[i]);
}
}
ps.execute();
rs = (ResultSet) ps.getObject(1);
while(rs.next()) {
Map base = new LinkedHashMap(100);
ResultSetMetaData data = rs.getMetaData();
for(int i = 1; i < (data.getColumnCount()+1); i++) {
String name = data.getColumnName(i);
Object obj = rs.getObject(name);
base.put(name.toLowerCase(), obj!=null?obj:"");
}
list.add(base);
}
rs.close();
ps.close();
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException("根据sql查询失败\r\n" + e.getMessage());
}
return list;
}
分享到:
相关推荐
如果存储过程返回游标,我们需要声明一个`OUT`参数来接收。 4. **执行存储过程**:通过`pstmt.execute()`执行存储过程。这将打开一个游标,我们可以从游标中获取结果。 5. **处理游标结果**:使用`...
这段Java代码首先创建了一个CallableStatement对象,然后注册了Out参数(游标),执行存储过程,并从存储过程返回的结果集中读取数据。 总结一下,Oracle存储过程的Out游标是PL/SQL中返回多行结果的有效方式,Java...
这里使用了`CallableStatement`来执行存储过程,因为它可以处理返回游标的存储过程调用。`registerOutParameter`方法用于声明第1个参数为输出参数,并指定其类型为`OracleTypes.CURSOR`。执行存储过程后,我们通过`...
5. 执行存储过程,调用CallableStatement的`execute`或`executeQuery`方法。 6. 获取结果,如果存储过程有返回值,可以使用`getXXX`方法(如getInt, getString等)获取输出参数值。如果有结果集,可以迭代处理。 ...
在实际开发中,开发者通常会使用编程语言如Java、C#等来与数据库交互,通过特定的数据库连接库(如JDBC、ADO.NET等)来执行存储过程和管理游标。 综上所述,存储过程和游标是数据库开发中的重要工具,它们有助于...
以下是一个简单的示例代码片段,演示了如何调用一个返回游标的Oracle存储过程: ```java import oracle.jdbc.OracleCallableStatement; import oracle.jdbc.OracleResultSet; try (Connection conn = ...
而`SYS_REFCURSOR`是Oracle提供的一种特殊类型,它允许存储过程动态地打开一个游标(即结果集)并将其作为`OUT`参数返回。 以下是一个简单的存储过程示例,它打开一个游标并返回包含`employees`表所有列的结果集: ...
这一步骤通常涉及到设置数据库连接、创建PreparedStatement对象以及执行存储过程。 ```java Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/XE", "username", "password"); ...
### Orcale 存储过程、游标、函数详解 #### 一、存储过程概述 **存储过程**(Procedure)是一种数据库对象,它是由一系列 SQL 语句和过程性语句组成的预编译代码块,存储在数据库服务器上,并可以通过名称进行调用...
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
3. 执行存储过程并获取返回的游标对象。 4. 将游标对象转换为`ResultSet`,遍历并处理数据。 游标在处理大量数据或分批处理结果时非常有用,因为它允许你在需要时逐条处理结果,而不是一次性加载所有数据。通过这种...
对于需要返回多行数据的情况,存储过程可以通过返回游标的方式实现。这种方式适用于返回多行或多列的数据。 ##### 创建程序包 ```sql CREATE OR REPLACE PACKAGE test_package AS TYPE Test_CURSOR IS REF CURSOR...
执行存储过程后,通过getObject方法获取Cursor,然后遍历ResultSet处理返回的数据。 总结一下,Java通过ODBC6驱动获取Oracle存储过程返回的Cursor主要包括以下步骤: 1. 创建数据库连接。 2. 准备...
存储过程是一组预先编译的SQL语句,可以接受参数,执行复杂操作,然后返回结果。在Oracle中,存储过程可以通过PL/SQL语言编写,它可以包含变量声明、控制流语句以及对数据库表的操作。 游标(Cursor)在数据库编程...
以下是一个调用返回游标的存储过程的例子: ```java CallableStatement cs = conn.prepareCall("{call package.procedure(?)}"); cs.registerOutParameter(1, OracleTypes.CURSOR); cs.execute(); ResultSet rs...
执行存储过程并获取结果集: ```java cs.execute(); ResultSet resultSet = (ResultSet) cs.getObject(2); ``` `getObject(2)`会返回第二个参数,也就是我们在注册输出参数时指定的游标。 现在,我们可以遍历结果集...
- 执行存储过程后,通过`execute`方法,我们可以获取到结果集,即游标。 - `ResultSet`对象`rs`可以像处理普通的SQL查询结果一样进行遍历,读取存储过程返回的数据。 注意,处理返回的Cursor时,必须确保存储过程...
7、调用过程返回游标并封装到list返回(包括包中过程); 8、调用函数返回游标并封装到list中返回(包括包中函数); 其中,与数据库的连接声明成了成员变量,建立连接后可执行各种操作,每个类中的statement、...
在Oracle数据库中,返回多个结果集是一个常见的需求,特别是在处理复杂的查询或存储过程时。一个结果集通常对应于SQL查询的执行结果,但有时我们可能需要在一个操作中获取并处理多个独立的结果集。这就涉及到了...
- **调用返回游标的存储过程**:BIRT支持通过游标获取数据,需要正确配置数据集以处理游标返回的结果。 - **调用返回多个结果集的存储过程**:如果存储过程返回多个结果集,BIRT会自动处理并分别显示每个结果集。 ...