繁体   English   中英

使用存储过程在SQL Server中执行结果

[英]Execute a result in SQL Server using a stored procedure

我需要执行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层传递Params @DomainID@PersonID

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

-----------------更多说明-------------

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

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

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

编辑:

DECLARE @ResultOfTheFirstQuery nvarchar(max)

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

exec sp_executeSql @ResultOfTheFirstQuery

或者,如果您需要复杂的逻辑,则可以编写另一个SP,该SP可以包含一个返回值:

DECLARE @ResultOfTheFirstQuery nvarchar(max)

SELECT @ResultOfTheFirstQuery = FirstStoredprocedure @params

exec sp_executeSql @ResultOfTheFirstQuery

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

这是如何使用sp_executeSql

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM