0

我正在使用 SQL Server 2008 R2,我正在尝试运行一个查询,其中也将执行存储过程。

查询是:

select a.custnmbr, a.custname, a.salsterr, b.itemnmbr, b.itemdesc, d.slprsnid ,exec dbo.QtySoldPerMonth a.custnmbr, b.itemnmbr, @year 
from rm00101_temp a, iv00101_temp b 
inner join sop30300_RPT c on b.itemnmbr = c.itemnmbr
inner join sop30200_RPT d on c.sopnumbe = d.sopnumbe
where
b.itemnmbr like @houseCode + '%' and itmclscd like @classCode + '%'
AND DATEPART(year, d.docdate) = @year
group by a.custnmbr, a.custname, a.salsterr, b.itemnmbr, b.itemdesc, d.slprsnid
order by d.slprsnid, b.itemnmbr 

我真正要问的是如何dbo.QtySoldPerMonth在选择查询中包含存储过程的执行?此外,存储过程的参数是:@custNo = a.custnmbr, @itemNo = b.itemnmbr@year = @year

任何有关如何重写查询以执行 sp 的帮助将不胜感激。

4

3 回答 3

7
  1. 为 sp 输出创建临时表
  2. exec 存储过程到临时表
  3. 将临时表加入查询的其余部分

    create table #temp(yourCol1 int, your Col2 int...);
    
    insert #temp(yourCol1,yourCol1...)
    exec dbo.QtySoldPerMonth 
    
    select * from blah
        join #temp t on (blah.blah=t.id...)
    
于 2013-03-22T16:34:18.567 回答
1

您不能将存储过程作为另一个查询的一部分执行。

看看您是否可以使用 UDF 的视图来表示 SP 将返回的相同结构。

编辑

另一种选择:首先执行存储过程并在主查询中使用结果。

于 2013-03-22T16:30:23.257 回答
0

您不能将 SP 结果合并到查询中,但可以将 SP 转储到表中。示例: http: //blog.sqlauthority.com/2009/09/23/sql-server-insert-values-of-stored-procedure-in-table-use-table-valued-function/ 但在你的情况下它不是一个选项,因为您希望每行具有不同参数的 SP 结果;除非您修改 SP,否则它会返回一个结果集,您可以在将其插入表后使用该结果集。

于 2013-03-22T16:37:18.320 回答