2

我需要执行 SQL 查询的结果(已经以 SQL 的形式)来获得最终结果。

所以,应该是,在我执行的第一个查询中

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 层传递@DomainID参数@PersonID

所以我想它应该在存储过程的帮助下完成。

-----------------更多解释----------

在这里,执行一条 SQL 语句以获取下一条 SQL 语句,该 SQL 语句将是前一条语句的结果。当您执行第一个查询时,您会在结果中获得第二个查询,您再次执行以获得最终结果

第二个查询需要 2 个参数来执行,这些参数@DomainID将由@PersonID我从我的 C# 项目传递。因此,如果我创建一个存储过程来处理所有这些并传递所需的参数,以及我项目中的第一个查询,它应该首先执行第一个查询,然后执行第二个查询(带有参数PersonIDDomainID)作为结果接收第一个查询,之后我得到最终结果。

4

2 回答 2

2

您应该使用Dynamic SQL来运行从第一个过程/查询返回的 nvarchar(max) 查询字符串。

编辑:

DECLARE @ResultOfTheFirstQuery nvarchar(max)

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

exec sp_executeSql @ResultOfTheFirstQuery

或者如果你需要一个复杂的逻辑,你可以写一个其他的 SP,它可以有一个返回值:

DECLARE @ResultOfTheFirstQuery nvarchar(max)

SELECT @ResultOfTheFirstQuery = FirstStoredprocedure @params

exec sp_executeSql @ResultOfTheFirstQuery

这是一个已经很好回答的问题,如何获得参数返回。您可以使用RETURNOUTPUT参数。

这里是如何使用sp_executeSql

于 2012-09-12T11:13:15.143 回答
0
Declare @SQL as nvarchar(MAX);
SET @SQL = (Select Top(1)RequiredQuery as ReqQry from EPMaster);
EXEC (@SQL);
于 2012-09-12T11:14:24.963 回答