Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » 数据库中的 Java » SQL Anywhere 中的 Java 支持 » 数据库中 Java 类的特殊功能

 

从 Java 方法返回结果集

本节介绍如何从 Java 方法获得结果集。您必须编写一个向调用环境返回结果集的 Java 方法,并将此方法包装在一个被声明为 LANGUAGE JAVA 的 EXTERNAL NAME 的 SQL 存储过程中。

♦  从一个 Java 方法返回结果集
  1. 确保在一个公共类中将 Java 方法声明为公共的和静态的。

  2. 对于您期望该方法返回的每个结果集,要确保该方法有一个类型为 java.sql.ResultSet[] 的参数。这些结果集参数都必须出现在参数列表的末尾处。

  3. 在该方法中,首先创建一个 java.sql.ResultSet 实例,然后将其指派给其中一个 ResultSet[] 参数。

  4. 创建一个类型为 EXTERNAL NAME LANGUAGE JAVA 的 SQL 存储过程。该类型的过程是 Java 方法的包装。您可以像对其它任何返回结果集的过程一样对 SQL 过程结果集使用游标。

    有关充当 Java 方法包装的存储过程的语法的详细信息,请参见CREATE PROCEDURE 语句(Web 服务)

示例

下面的简单类有一个方法,该方法执行查询并将结果集返回给调用环境。

import java.sql.*;

public class MyResultSet 
{
  public static void return_rset( ResultSet[] rset1 )
       throws SQLException 
  {
    Connection conn = DriverManager.getConnection(
                       "jdbc:default:connection" );
    Statement stmt = conn.createStatement();
    ResultSet rset =
      stmt.executeQuery (
                       "SELECT Surname " +
                       "FROM Customers" );
    rset1[0] = rset;
  }
}

您可以使用 CREATE PROCEDURE 语句公开结果集,该语句将指明从过程返回的结果集的数量以及 Java 方法的签名。

指明结果集的 CREATE PROCEDURE 语句可以定义如下:

CREATE PROCEDURE result_set()
  DYNAMIC RESULT SETS 1
  EXTERNAL NAME
     'MyResultSet.return_rset([Ljava/sql/ResultSet;)V'
  LANGUAGE JAVA

您可以对此过程打开游标,就像对任何返回结果集的 SQL Anywhere 过程一样。

字符串 ([Ljava/sql/ResultSet;)V 是一个 Java 方法签名,它是参数和返回值的数量及类型的精简字符表示形式。

有关 Java 方法签名的详细信息,请参见CREATE PROCEDURE 语句(Web 服务)

有关返回结果集的详细信息,请参见返回结果集