将参数传递给SQL视图
问题描述:
我有一个SQL视图,我想用传递给它的参数来过滤它。我正在考虑创建一个存储过程,但经过一番研究后,我得出这样的结论:这是不可能的。将参数传递给SQL视图
其他类似的线程建议创建一个存储的函数或存储过程与视图的代码嵌入到它。我的问题是,执行此类任务的最有效方式是什么。我的观点由大约70行代码组成,仅供参考。你怎么看?以下是从另一个线程获取的一些片段。
存储过程看起来像
CREATE PROCEDURE s_emp
(
@enoNumber INT
)
AS
SQL VIEW CODE +
WHERE
[email protected]_parameter
或者用户定义的函数看起来像
CREATE FUNCTION u_emp
(
@enoNumber INT
)
RETURNS TABLE
AS
RETURN
(
SQL VIEW CODE +
WHERE
[email protected]_parameter
)
答
您可以创建一个表值函数,它的行为完全像一个参数化的视图...
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;
对待查看就像一个表。使用“存储过程”从'Where'子句中的参数中查看'Select'。 –
@WEI_DBA所以你从'存储过程'执行'view'? –
'Select * From View_Name'将您的视图视为表格。而已。添加一个'Where'子句,用参数等缩小选择范围。使用'Order by'排序。你用桌子做的每一件事,都是你的看法。 –