2009-04-28 13 views
1

ビュー内でストアドプロシージャを実行することはできますか?ストアドプロシージャをビューで実行しますか?

I.e.

VIEW [DBO] CREATE [v_ReportInvoiceClientsThisMonth] AS EXEC [DBO]。[GetInvoiceClients] @startDate = '2009-03-01'、@EndDate = '2009-04-01'

私がこれを必要とするのは、ExcelでSPにアクセスする方法が必要であるということです(VBAを使わないで馬鹿にして安全に)。

+0

類似の質問を参照してください:http://stackoverflow.com/questions/728898/can-you-do-a-select-on-the-results-of-a-stored-procedure-in-t- sql –

+0

http://stackoverflow.com/questions/916784/how-to-call-stored-procedure-in-a-view –

答えて

3

これは、テーブル値関数のビューで行うことができます。このようなものになります。

-- === Table-Valued function ==================================== 
-- 
create function fn_foo (
     @Date datetime 

) returns @ResultSet table (
     DateKey   datetime 
     ,DisplayDate  varchar (20) 
) as 
    insert @ResultSet (
      DateKey 
      ,DisplayDate 
    ) 
    select DateKey  -- Just pretend there's something to select 
      ,DisplayDate -- behind the scenes 
     from ods.Dates 
    where DateKey <= @Date 
    return 
go 


-- === View ============================================ 
-- 
create view vw_foo (
     DateKey 
     ,DisplayDate 
) as 
select DateKey 
     ,DisplayDate 
    from fn_foo ('2009-04-31') 
go 

を、いくつかの注意点があります。

  • は、あなたが機能で何ができるかにはいくつかの制限があります。特に、ストアドプロシージャコードとファンクションコードの間にインピーダンスの不一致がありますので、通常この種の処理を行う目的でストアドプロシージャをラップする関数を使用することはできません。

  • 最初の点は、おそらくストアドプロシージャをテーブル値関数として再キャストする必要があることを意味します。

+0

統計情報を保存していないので、TVFには注意が必要です... –

関連する問題