我正在使用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
我真正想问的是如何在select查询中包含dbo.QtySoldPerMonth
存储过程的执行?此外,存储过程的参数包括:@custNo = a.custnmbr, @itemNo = b.itemnmbr
和@year = @year
。
有关如何重写查询以执行sp的任何帮助都将受到赞赏。
答案 0 :(得分:5)
将临时表连接到查询的其余部分
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...)
答案 1 :(得分:1)
您无法将存储过程作为另一个查询的一部分执行。
查看是否可以使用UDF视图来表示SP将返回的相同结构。
修改强>
另一种选择:首先执行存储过程并在主查询中使用结果。
答案 2 :(得分: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,否则它将返回一个结果集,您可以在将其插入表后使用。