将参数传递给 SQL 视图

Passing parameters to a SQL view

我有一个 SQL 视图,我想使用传递给它的参数对其进行过滤。我正在考虑创建一个存储过程,但是,经过一番研究,我得出的结论是这是不可能的。

其他类似线程建议创建一个存储函数或一个嵌入了视图代码的存储过程。我的问题是,执行此类任务的最有效方法是什么。我的视图由大约 70 行代码组成,仅供记录。你怎么看?以下是从另一个线程中截取的一些片段。

存储过程看起来像

CREATE PROCEDURE s_emp
(
    @enoNumber INT
) 
AS 
SQL VIEW CODE + 
WHERE 
    parameter=@stored_parameter

或者用户定义的函数看起来像

CREATE FUNCTION u_emp
(   
    @enoNumber INT
)
RETURNS TABLE 
AS
RETURN 
(
    SQL VIEW CODE + 
    WHERE     
        parameter=@stored_parameter
)

Source Thread

您可以使用存储过程中的视图和基于参数的过滤器

CREATE PROCEDURE s_emp
(
    @enoNumber INT
) 
AS 
BEGIN
   SELECT *
   FROM VIEW_NAME
   WHERE COLUMN_NAME =  @enoNumber
END

您可以创建一个 table 值函数,它的行为与参数化视图完全一样...

SELECT 
    mt.SomeColumn,
    mt.ComeOtherColumn,
    mtvf.FunctionColumn,
    mtvf.AnotherFunctionColumn
FROM 
    dbo.MyTable mt
    JOIN dbo.MyTableValuedFunction('2017-07-01', '2017-08-01') mtvf
        ON mt.SomeColumn = mtvf.SomeColumn;