我需要执行 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 语句,该语句将是前一条语句的结果。当您执行第一个查询时,您会在结果中得到第二个查询,您再次执行该查询即可获得最终结果
第二个查询需要 2 个参数来执行,即 @DomainID
和 @PersonID
,这两个参数将由我从我的 C# 项目传递。因此,如果我创建一个存储过程来处理所有这些并传递所需的参数以及项目中的第一个查询,那么它应该首先执行第一个查询,然后执行第二个查询(带有参数 PersonID
和 DomainID
)作为第一个查询的结果收到,之后我得到了最终结果。
最佳答案
您应该使用动态 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
这里已经有 well answered question如何获取参数返回。您可以使用 RETURN
或 OUTPUT
参数。
以下是如何使用sp_executeSql
关于sql - 使用存储过程在 SQL Server 中执行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386646/