我正在替换以前开发人员的一些代码,需要将我的结果与旧结果进行比较。
前面的代码是一堆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驱动程序的一些东西。
答案 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();