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 に答える