是否可以取出视图参数使其不会创建函数?
我需要选择“历史”,即 类型选择:
select * from filials p
left join filials rea on rea.number = p.number
and (@date between rea.dateopen and '12.12.9999')
where @date between p.datestart and p.datestop
那些。示例中的参数@date
2 次(我有 10 次)分别用一个线程渗透到整个请求中,这仍然不是一个函数,而是一个选择。是@date 阻止你简单地输入它create view as select
。是否可以以某种方式或在其中放置一个参数......是否可以使这个选择完全成为一个视图而不是一个函数?(有人猜测该功能会降低性能)。
我需要一个视图,即 create view myview1 as ....
和@date 参数“干扰”
好吧,让我们说
安排?
可能需要预约,不能替换视图中的参数。但是您可以使用其他 sql 功能,以下是其中两个:
事实证明,mssql 允许您设置位于请求的“会话”内的“临时”参数。它被称为context_info。假设使用此实现,每次选择使用一次视图。
我使用子查询使选择更方便。
context_info
可以推入许多参数。当然,如果两个视图影响了 context_info,就会产生冲突。如果您知道值列表 - 您可以转换样本,使其提供所有选项。如果选项不多(假设每年有 4 个季度日期),那么您可以像这样转换表达式:
通过将日期字段移动到选择值,您可以对其进行过滤。那些。
select * from my_view where date = @date
很高兴知道如何告诉 sql 这个字段首先会被“过滤”......也许有人会告诉你。但是由于日期选择很多(我尝试了 365 天),我无法加快选择速度。