繁体   English   中英

将查询作为参数传递给存储的proc

[英]Passing a query as a parameter in stored proc

我有一个存储过程,需要使用nvarchar但是它将进入查询的一部分,如下所示:

Input Parameter @InputQuery =  '21 OR RevenueAccrualID =  22'

我想将输入查询添加到现有查询中:

UPDATE [RevenueAccrual] SET Posted=1
 Where [RevenueAccrual].RevenueAccrualID = @InputQueryPart

我想要的输出是:

UPDATE [RevenueAccrual] SET Posted=1
Where [RevenueAccrual].RevenueAccrualID = 21
OR RevenueAccrualID =  22

目前,它的作用是:

 UPDATE [RevenueAccrual] SET Posted=1
 Where [RevenueAccrual].RevenueAccrualID = '21 OR RevenueAccrualID =  22' 

我想知道是否有一种方法可以将查询作为参数传递并在SQL Server中使用它。 输入查询将根据情况而有所不同。

您需要将整个查询封装在字符串中-因此,如果要将@InputQuery传递到存储过程中,则它应如下所示:

DECLARE @QueryString NVARCHAR(500)

SET @QueryString = 'UPDATE [RevenueAccrual] SET Posted=1 Where [RevenueAccrual].RevenueAccrualID = '
SET @QueryString = @QueryString + @InputQuery
EXEC (@QueryString)

因此它可以一次执行整个事情。 但是,如果使用IN在同一字段中始终是整数值,我可能会更改该方法

DECLARE @InputQuery NVARCHAR(30)
SET @InputQuery = '21, 22'
EXEC RunThisThang(@InputQuery)

然后,您的存储过程如下所示:

CREATE PROCEDURE RunThisThang (@InputStr)
AS

DECLARE @QUeryStr NVARCHAR(500)

SET @QueryStr = 'UPDATE [RevenueAccrual] SET Posted=1 Where [RevenueAccrual].RevenueAccrualID IN (' + @InputStr + ')'
EXEC (@QueryStr)

为什么将查询作为参数传递。 这是非常糟糕的编程方式。 只需传递变量并写入查询就是sp。

将查询传递给sp并不是一种优化的方法。

暂无
暂无

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

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