我有一个存储过程,nvarchar但它会进入查询的一部分,如下所示:
Input Parameter @InputQuery = '21 OR RevenueAccrualID = 22'
Run Code Online (Sandbox Code Playgroud)
我想将输入查询添加到现有查询中:
UPDATE [RevenueAccrual] SET Posted=1
Where [RevenueAccrual].RevenueAccrualID = @InputQueryPart
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
UPDATE [RevenueAccrual] SET Posted=1
Where [RevenueAccrual].RevenueAccrualID = 21
OR RevenueAccrualID = 22
Run Code Online (Sandbox Code Playgroud)
目前,它的作用是:
UPDATE [RevenueAccrual] SET Posted=1
Where [RevenueAccrual].RevenueAccrualID = '21 OR RevenueAccrualID = 22'
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以将查询作为参数传递并在SQL Server中使用它。输入查询将根据情况而有所不同。
您需要将整个查询封装在字符串中-因此,如果要将@InputQuery传递到存储过程中,则它应如下所示:
DECLARE @QueryString NVARCHAR(500)
SET @QueryString = 'UPDATE [RevenueAccrual] SET Posted=1 Where [RevenueAccrual].RevenueAccrualID = '
SET @QueryString = @QueryString + @InputQuery
EXEC (@QueryString)
Run Code Online (Sandbox Code Playgroud)
因此它可以一次执行整个事情。但是,如果使用IN在同一字段中始终是整数值,我可能会更改该方法
DECLARE @InputQuery NVARCHAR(30)
SET @InputQuery = '21, 22'
EXEC RunThisThang(@InputQuery)
Run Code Online (Sandbox Code Playgroud)
然后,您的存储过程如下所示:
CREATE PROCEDURE RunThisThang (@InputStr)
AS
DECLARE @QUeryStr NVARCHAR(500)
SET @QueryStr = 'UPDATE [RevenueAccrual] SET Posted=1 Where [RevenueAccrual].RevenueAccrualID IN (' + @InputStr + ')'
EXEC (@QueryStr)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5813 次 |
| 最近记录: |