2013-05-01 21 views
5

Tôi có một kịch bản T-SQL, requirment là tôi cần phải gọi một thủ tục được lưu trữ trong mệnh đề where. Thủ tục lưu trữ này chấp nhận một tham số và trả về một kết quả bit. Vui lòng hướng dẫn tôi làm thế nào để làm điều đó.làm thế nào để gọi một thủ tục được lưu trữ trong mệnh đề where của SQL

Cảm ơn

Edit: tôi không thể thay đổi sp này và làm cho nó một chức năng. vui lòng

+2

đó sẽ là một chức năng sử dụng definded ... – bummi

+2

Tôi nghĩ 'User Defined Chức năng' là thực hành tốt – Sachin

+0

Trong trường hợp khoản? hoặc từ? Bạn không thể làm gì cả. –

Trả lời

4

Bạn có thể sử dụng bảng tạm thời để lưu trữ đầu ra của quy trình được lưu trữ và sử dụng nó trong mệnh đề where. Số lượng cột trong các biến tạm thời của bạn phải giống như các cột trong resultset từ thủ tục và với kiểu dữ liệu chính xác như các cột trong kết quả thủ tục lưu sẵn. ví dụ:

create table #spResult ({columns as result of your sp}) 

insert into #spResult exec YourSP ({input parameters}) 

select * from yourtable 
where col in (select col from #spResult) 

drop table #spResult 
5

Bạn không thể sử dụng Stored Procedure trong mệnh đề where nhưng có thể sử dụng User Defined Function trong mệnh đề where.

Nếu bạn không thể chuyển đổi SP hoạt động sau đó bạn phải đầu tiên nhận được giá trị bit từ thực hiện SP và sử dụng biến trong mệnh đề where ..

Các vấn đề liên quan