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

标签 sql sql-server-2005 stored-procedures

我需要执行 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# 项目传递。因此,如果我创建一个存储过程来处理所有这些并传递所需的参数以及项目中的第一个查询,那么它应该首先执行第一个查询,然后执行第二个查询(带有参数 PersonIDDomainID)作为第一个查询的结果收到,之后我得到了最终结果。

最佳答案

您应该使用动态 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如何获取参数返回。您可以使用 RETURNOUTPUT 参数。

以下是如何使用sp_executeSql

关于sql - 使用存储过程在 SQL Server 中执行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386646/

相关文章:

sql - SKIP 锁定和 nowait 的区别

mysql - 谁卖的价格最低

sql-server - 计算每个产品(Inkcode)库存

c# - 无法将参数值从字符串转换为十进制?

sql-server-2005 - 触发器是否可以找到修改数据的存储过程的名称?

MySQL 存储过程或动态 View

sql - 什么是正确的使用方法包括(Rails 4、ActiveRecord、PostgreSQL)

sql - 无法使用只读用户登录 SQL Azure 数据库

c# - server.Databases[数据库名称].Drop();在 MSTest 中失败

asp.net-mvc - 使用 .net MVC View 将 csv 或 excel 文件导入 SQL Server 2005 的最佳方法