Вы можете сделать это с помощью представления табличной функции. Это выглядит примерно так:
-- === 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
Есть несколько предостережений:
Существуют некоторые ограничения на то, что вы можете делать с функциями. В частности, имеется некоторое несоответствие импеданса между кодом хранимой процедуры и кодом функции, поэтому вы, как правило, не можете использовать функцию, чтобы обернуть хранимую процедуру для целей такого рода вещей.
Первый пункт означает, что вам, вероятно, придется повторно преобразовать вашу хранимую процедуру как табличную функцию.