如果@Parameter = NULL,如何将所有行带入存储过程中>

问题描述 投票:0回答:1
我有一个存储过程,其中参数@PolicySymbol可以接受多个值。为此,我正在使用分割字符串函数:StringOfStringsToTable

如果用户选择@ControlNo,那么无论为@PolicySymbol设置什么值,我都希望为该控件带来数据。

如果@PolicySymbol = NULL,无论与哪个策略符号相关,我都希望控制所有数据。

这里是代码示例:

create table #Test (ControlNo int, policy_symbol varchar(50)) insert into #Test values (1111, 'CSE'), (2222, 'PRE'), (3333, 'CSE'), (4444, 'GLG'), (4444, 'PRE'), (4444, 'GLS') declare @ControlNo int = 1111, @PolicySymbol varchar(50) = NULL SELECT DISTINCT ControlNo,policy_symbol FROM #Test WHERE ControlNo = COALESCE(@ControlNo, ControlNo) -- here, if parameter @PolicySymbol IS NULL I want to include all policy symbols AND policy_symbol IN (SELECT String FROM [dbo].[StringOfStringsToTable] (@PolicySymbol,',')) drop table #Test

我有一个存储过程,其中参数@PolicySymbol可以接受多个值。为此,我正在使用拆分字符串函数:StringOfStringsToTable如果用户选择@ControlNo,那么我想带...
sql-server tsql sql-server-2017
1个回答
0
投票
WHERE ControlNo = COALESCE(@ControlNo, ControlNo) -- here, if parameter @PolicySymbol IS NULL I want to include all policy symbols AND ( @PolicySymbol is null or policy_symbol IN (SELECT String FROM [dbo].[StringOfStringsToTable] (@PolicySymbol,',')) )
© www.soinside.com 2019 - 2024. All rights reserved.