프로시저의 내용을 단순히 하나의 SELECT 문으로 만들 수 있다면 이 질문을 안하셨겠죠?
아마 프로시저의 내용이 복잡해서 직접 뷰로 전환하기는 어렵고, 뷰 안에서 SP를 호출하고 그 결과를 반환할 수 있는지 묻고 계신 것 같습니다.
답은.. "안된다" 입니다.
뷰 안에서 SP 호출은 불가능하니까요.
"인터페이스로 다른 곳에 제공할 때 뷰로 하고 싶다" 고 하셨는데, 즉.. 적절한 권한을 주고 FROM 절에서 호출해서 사용할 수 있게 해 주면 된다는 의미로 보입니다.
그렇다면 대안으로 사용자 정의 함수 중.. FROM 절에서 사용할 수 있는 테이블 함수 (Table Valued Function)를 고려해 볼 수 있습니다.
참고로.. MS-SQL에서는 3종류의 함수가 있어요.
- 스칼라 함수
- 인라인 테이블 함수 (inline TVF)
- 테이블 함수 (multi-statement TVF)
이 중에 FROM절에서 테이블이나 뷰처럼 사용할 수 있는 함수는 아래 2가지입니다.
(개념적으로는 parameterized view 라고도 부르죠)
각설하고..
SP 안에서 사용하는 왠만한 기능들은 함수 안에서도 사용할 수 있으니, SP를 테이블 함수로 변환해 보세요.
간단한거면 인라인 테이블 함수로도 되겠지만.. 아마 테이블 함수로 만드셔야 할 겁니다.
아래 링크에서 MSTVF 부분 보세요.
아.. 이렇게 얘기하면 함수 안에서 SP를 호출하면 안되냐고 하실 수 있는데.. 원칙적으로는 그것도 안됩니다.
다만, linked server와 openquery를 조합한 꼼수를 사용하면 불가능한 것은 아니지만.. 별로 권해드리고 싶진 않네요. ^^