【问题标题】:How do you make sql server jdbc calls to stored procedure use a server side cursor?如何使用服务器端游标对存储过程进行 sql server jdbc 调用?
【发布时间】:2010-10-06 19:24:31
【问题描述】:

我正在使用 JDBC 在 MSSql 2005 中调用存储过程。我希望结果集使用服务器端游标来限制客户端使用的内存量。我可以使用简单的查询并在连接上设置 SelectMethod=cursor 轻松完成此操作。当我将该查询放入存储过程时,似乎返回了整个结果集,就好像连接是使用 SelectMethod=direct 创建的一样。

有没有办法让存储过程调用表现得像一个简单的查询。

我已经使用 MS SQL JDBC 驱动程序 1.1 和 1.2 进行了测试。在下面的示例中,totalMemory 的两个值之间的差异取决于结果的大小,而不获取任何行。

long totalMemoryUsed = java.lang.Runtime.getRuntime().totalMemory();
String sql = "{call ap_Select(?, ?, ?, ?)}";

CallableStatement cstmt = conn.prepareCall(sql,ResultSet.TYPE_FORWARD_ONLY,  
                           ResultSet.CONCUR_READ_ONLY);     
cstmt.setString(1,readAlldbnames );
cstmt.setString(2,readPublicDbnames);
cstmt.setString(3, whereClause);
cstmt.setString(4, " order by key5 ");

ResultSet a_resultSet = cstmt.executeQuery();
long totalMemoryUsedAfterQuery = java.lang.Runtime.getRuntime().totalMemory();

【问题讨论】:

    标签: sql-server-2005 jdbc cursor


    【解决方案1】:

    到目前为止,我发现的唯一一件事就是从表中的存储过程中获取结果集,然后在表上使用服务器端游标并删除表......我希望我能找到比这更好的方法。

    请告诉我是否可以使用服务器端游标来使用 JDBC 进行存储过程调用。

    谢谢,
    萨亚利

    【讨论】:

    • “请让我知道是否可以使用服务器端游标来使用 JDBC 进行存储过程调用。” - 你应该就此提出一个新问题。
    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2015-04-19
    • 2012-12-29
    相关资源
    最近更新 更多