如何调用仅使用SELECT的存储过程

时间:2014-05-22 10:58:07

标签: java sql sql-server jdbc

我正在替换以前开发人员的一些代码,需要将我的结果与旧结果进行比较。

前面的代码是一堆MS SQL存储过程,实质上,它只返回1或0。 但它最后做的是

select key, cd,  descr, sum(quantity) quantity, sum(price) price
from ##output

我无法访问调用它的C#代码,因此我不确定这是如何工作的。它的结果是0或1,但它也设法从select中返回这5个字段。

没有任何OUT参数。如何在存储过程中(在Java / JDBC / JPA /任何方法中)获取SELECT的结果?

我已经尝试过使用jTDS和SQLServer驱动程序的一些东西。

2 个答案:

答案 0 :(得分:1)

您使用的语法是insert into . . . exec。类似的东西:

insert into t(col1, . . . coln)
    exec sp_stored_procedure ;

这会将存储过程的结果存储到表中。该表需要预定义,这意味着您需要提前知道列,如果不正确则会出错。 insert {{1}}包含更多示例和信息。

我认为使用这样的过程是从存储过程返回结果集的坏方法。在许多情况下,可以使用返回表的用户定义函数替换此类存储过程。

Erland Sommerskog在SQL Server中的存储过程之间传递数据方面有很好的documentation,解释了几种方法的优点和缺点。

答案 1 :(得分:0)

试试这个

PreparedStatement ps = conn.prepareStatement("SELECT * FROM proc1(?)");
ps.set...
ResultSet rs = ps.executeQuery();