2013-06-20 95 views
0

的outptut我有這樣一個存儲過程:包括的StoredProcedure的選擇

create proc calcaulateavaerage 
@studentid int 
as 
begin 

-- some complicated business and query 

return @result -- single decimal value 
end 

,然後我想

創建PROC整個結果

select * , ................................ from X where X.value > (calculateaverage X.Id) 

它總是給人一種像「多部分標識計算平均值不能被綁定」的錯誤。任何想法如何解決?

回答

4

你不想要一個存儲過程。你想要一個功能。

+0

它破壞性能 – AMH

+2

什麼破壞性能不函數語法。這是對您調用X的表中每個記錄的「複雜業務查詢」的重複執行。只是因爲複雜的業務查詢位於存儲過程中才會消失。 請考慮製作一個實現部分或全部業務邏輯的視圖。相反,您可以選擇並加入。 – catfood

2

使用輸出變量輸出數據從存儲過程:

create proc calcaulateavaerage 
@studentid int, @result int 
as 
begin 

-- some complecated business and query 

select @result = id from sometable; 
end 

-- Declaring output variable named result; 
declare @result int; 
-- Passing output variable to stored procedure. 
exec calculateaverage 1, @result; 

-- Now you can display the result or do whatever you like. 
print @result 
+0

這是否實現了能夠在SELECT語句的WHERE子句中使用過程調用的目標? – catfood