2012-09-12 60 views
1

我需要執行SQL查詢的結果(已經以SQL的形式)本身,以獲得最終結果。使用存儲過程在SQL Server中執行結果

所以,它應該是這樣,在第一個查詢我執行

Select Top(1) RequiredQuery as ReqQry from EPMaster 

我會得到ReqQry的結果另一個查詢,將隨後在另一形式的查詢來獲得最終的結果執行。

第二查詢還需要一些參數在where子句進行傳遞,當我做這樣的:

Select Top(1) RequiredQuery as ReqQry 
from EPMaster 
--ReqQry after its execution returns: 
Select Top(1) (FirstName + ' ' + LastName) as FullName 
from DPMaster 
where DmID = @DomainID and PnID = @PersonID 

我會從我的C#項目的DAL層傳遞PARAMS @DomainID@PersonID

所以我想它應該在存儲過程的幫助下完成。

----------------- -------------

這裏,執行一個SQL語句更多的解釋,以獲得下一個SQL語句將成爲前述語句的結果。當您執行第一次查詢時,你得到的結果是第二查詢結果,您再次執行才能得到最終結果

第二查詢需要兩個參數來執行的@DomainID@PersonID將由我從我的C#項目進行傳遞。因此,如果我製作一個存儲過程來處理所有這些問題並傳遞所需的參數以及來自我的項目的第1個查詢,它應該首先執行第1個查詢,然後執行第2個查詢(參數PersonIDDomainID)第一個查詢的結果,之後我得到最終結果。

+1

我沒有正確地瞭解您的需求。但是,你可能想在你存儲的porcedure中使用動態SQL嗎? –

+0

這裏,執行1條SQL語句以獲取將成爲前述語句結果的下一條SQL語句。當你執行第一個查詢時,你會在結果中得到第二個查詢,然後再次執行以獲得最終結果。 – Cyberpks

回答

1

您應該使用動態SQL,以從第一個過程/查詢運行返回的nvarchar(max)查詢字符串。

編輯:

DECLARE @ResultOfTheFirstQuery nvarchar(max) 

SELECT @ResultOfTheFirstQuery = (Select Top(1)RequiredQuery 
           as ReqQry from EPMaster) 

exec sp_executeSql @ResultOfTheFirstQuery 

或者,如果你需要一個複雜的邏輯,你可以寫一個其他的SP,可以HEVE返回值:

DECLARE @ResultOfTheFirstQuery nvarchar(max) 

SELECT @ResultOfTheFirstQuery = FirstStoredprocedure @params 

exec sp_executeSql @ResultOfTheFirstQuery 

這是一個已經well answered question如何得到參數返回。您可以使用RETURNOUTPUT參數。

下面是如何使用sp_executeSql

0
Declare @SQL as nvarchar(MAX); 
SET @SQL = (Select Top(1)RequiredQuery as ReqQry from EPMaster); 
EXEC (@SQL); 
+0

_ @'SQL'_附近的語法不正確_l是我得到的結果 – Cyberpks

+1

嘗試使用'EXECUTE sp_executesql @ SQL'而不是 – PhonicUK

+0

錯誤是,當您將其分配到@sql時,缺少「set」 –

相關問題