당신은보기에 변수를 전달할 수 없습니다, 그것은 보인다 그래서 유일한 옵션은을 사용하는 것입니다 어느 것이 더 나은 성능 등 현명한
편집은 (기능 뷰에 가입 또는 전화)을 것 기능. 두 가지 옵션이 거기에 있습니다 : 당신이 기록을 반환 한 경우
이
- 스칼라 기능
- 테이블 반환 함수 (인라인 또는 다중 문)
, 당신은 WHERE 절을 사용할 수 있습니다 보기에서 쿼리에 줄 지어 나타날 수있는 너무 복잡하지 않은 VIEW 외부에서 하나의 열 integer value
이 반환되므로 모두보기가 작동하지 않습니다.
인라인 TVF는 외부 (호출) 쿼리와 함께 작동하도록 쿼리 최적화 프로그램에 의해 확장 될 수 있으므로 SCALAR 기능과 비교할 때 대부분의 경우 더 빠를 수 있습니다.
그러나, 용도가 다르다 - 스칼라 함수는 인라인 TVF 반면 단일 값을 즉시
select dbo.scalarme(col1, col2), other from ..
를 반환하면이 하위 쿼리 또는 CROSS 다른 테이블
select (select value from dbo.tvf(col1, col2)), other from ..
-- or
select f.value, t.other
from tbl t
CROSS apply dbo.tvf(col1, col2) f -- or outer apply
뷰는 단일 열의 단일 행 결과를 반환 할 수 있습니다. 틀림없이 일반적인 경우는 아니지만 여전히 스칼라 UDF보다 효율적입니다. 편집 - 아, 당신은 매개 변수화 측면에 의문을 제기하고있었습니다. 저는 이것이 그 관점에 대한 술어를 통해 이루어질 것이라고 생각했습니다. –
뷰에 가입하고 where 절을 기반으로 결과를 제한 할 수 있습니다. – amateur
일반적으로 Where 절이있는 뷰에 매개 변수를 "전달"합니다. – Andomar