本节介绍如何从 Java 方法获得一个或多个结果集。
您必须编写一个用于向调用环境返回一个或多个结果集的 Java 方法,并将此方法包装在 SQL 存储过程中。以下代码段说明如何才能向调用 SQL 代码返回多个结果集。它使用三个 executeQuery 语句获得三个不同的结果集。
public static void Results( ResultSet[] rset ) throws SQLException { // Demonstrate returning multiple result sets Connection con = DriverManager.getConnection( "jdbc:default:connection" ); rset[0] = con.createStatement().executeQuery( "SELECT * FROM Employees" + " ORDER BY EmployeeID" ); rset[1] = con.createStatement().executeQuery( "SELECT * FROM Departments" + " ORDER BY DepartmentID" ); rset[2] = con.createStatement().executeQuery( "SELECT i.ID,i.LineID,i.ProductID,i.Quantity," + " s.OrderDate,i.ShipDate," + " s.Region,e.GivenName||' '||e.Surname" + " FROM SalesOrderItems AS i" + " JOIN SalesOrders AS s" + " JOIN Employees AS e" + " WHERE s.ID=i.ID" + " AND s.SalesRepresentative=e.EmployeeID" ); con.close(); } |
此代码段是位于 samples-dir\SQLAnywhere\JDBC 目录中的 JDBCExample 类的一部分。
此服务器端 JDBC 示例使用当前连接(使用 getConnection)与缺省的运行数据库建立连接。
executeQuery 方法返回结果集。
使用 Interactive SQL,以 DBA 身份连接到示例数据库。
确保已安装 JDBCExample 类。
有关安装 Java 示例类的详细信息,请参见准备示例。
定义一个名为 JDBCResults 的存储过程,该存储过程充当类中 JDBCExample.Results 方法的包装:
CREATE PROCEDURE JDBCResults() DYNAMIC RESULT SETS 3 EXTERNAL NAME 'JDBCExample.Results([Ljava/sql/ResultSet;)V' LANGUAGE JAVA; |
设置以下 Interactive SQL 选项,以便您可以查看查询的所有结果:
从 [工具] 菜单中选择 [选项]。
单击 [SQL Anywhere]。
单击 [结果] 选项卡。
将 [要显示的最大行数] 的值设置为 5000。
选择 [显示所有结果集]。
单击 [确定]。
如下所示调用 JDBCExample.Results 方法:
CALL JDBCResults(); |
分别检查以下这三个结果选项卡:[结果集 1]、[结果集 2] 和 [结果集 3]。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |