JDBC:通过单个数据库调用返回多个结果集 - 不适用于Oracle

Dau*_*aud 8 java oracle jdbc multiple-resultsets

这篇文章展示了在单个JDBC调用(针对SQL Server数据库)中执行多个查询,方法是用分号分隔它们.当我尝试对Oracle 10G执行相同操作时,会出现错误"无效字符":

class db
{
    public static void main(String aa[])throws Exception
    {
        Class.forName("oracle.jdbc.driver.OracleDriver"); 
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//192.168.10.29:1521/ttt","username","password");
        PreparedStatement stat = conn.prepareStatement("select voila from app where rownum<4; select code from process where rownum<4");
        stat.execute();
        while (stat.getMoreResults()){
            ResultSet rs = stat.getResultSet();
            while (rs.next()){
                System.out.println(rs.getString(1));        
            }
        }
        conn.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ?

a_h*_*ame 7

你没有做错任何事(除了假设所有DBMS都工作相同)

Oracle(及其JDBC驱动程序)根本不支持这一点.

您需要单独运行每个SELECT.

顺便说一下:这是一些SQL注入攻击无法与Orace一起工作的原因之一 - 尤其是着名的" 小桌子 "卡通.