繁体   English   中英

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

[英]How to call Stored Procedure that just uses a SELECT

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

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

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

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

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

我已经尝试使用jTDS和SQLServer驱动程序进行一些操作。

您使用的语法是insert into . . . exec insert into . . . exec insert into . . . exec 就像是:

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

这会将来自存储过程的结果存储到表中。 该表需要预定义,这意味着您需要提前了解各列,如果它们不正确,则会出现错误。 insert 文档包含更多示例和信息。

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

Erland Sommerskog关于在SQL Server中的存储过程之间传递数据的博客非常出色,解释了几种方法的优点和缺点。

尝试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM