Выполнение хранимой процедуры в запросе на выборку

Я использую 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.


person user2030579    schedule 22.03.2013    source источник
comment
Проверьте эту ссылку, она может вам помочь. stackoverflow.com/questions/1676655/ спасибо   -  person I kiet    schedule 22.03.2013


Ответы (3)


  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...)
    
person Stanley    schedule 22.03.2013

Вы не можете выполнить хранимую процедуру как часть другого запроса.

Посмотрите, можете ли вы использовать представление UDF для представления той же структуры, которую возвращает SP.

Изменить

Другой вариант: сначала выполнить хранимую процедуру и использовать результаты в своем основном запросе.

person Phil Sandler    schedule 22.03.2013

Вы не можете включить результаты SP в запрос, но можете вывести SP в таблицу. Пример: http://blog.sqlauthority.com/2009/09/23/sql-server-insert-values-of-stored-procedure-in-table-use-table-valued-function/ Но в вашем случае это не вариант, так как вам нужен результат SP с разными параметрами для каждой строки; если вы не измените SP, чтобы он возвращал набор результатов, который вы можете использовать позже после вставки его в таблицу.

person AdamL    schedule 22.03.2013