我在SP下方,想要query 3
query 2 = 0
or
的值并且想要返回null
query 1 and query 2/query 3
当我执行SP时,我在@val1 = 50
中有一个值,但它仍在if loop
内,我只想返回@val
,@val1
但我是获得5个值
exec usp_GetDefaultValue 'HQP','home','ConDefault','12345'
结果:
HQP:0 //查询1 HQP:50 //查询2 @val:0 @ val1:0任何人都可以帮助我
ALTER PROCEDURE [dbo].[usp_GetDefaultValue]
@Service varchar(20), @LOB varchar(10), @Scenario varchar(20), @Num varchar(10)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @val as int
DECLARE @val1 as int
DECLARE @Value AS NVARCHAR(MAX)
DECLARE @DefValue AS NVARCHAR(MAX)
set @Value = 'SELECT ' + @Service + ' from PDetail where LOB = ''' + @LOB + ''' and Scenario = ''' + @Scenario + ''' and Number = ''' + @Num + ''' ' -- query 1
set @DefValue = 'SELECT ' + @Service + ' from PDetail where LOB = ''' + @LOB + ''' and Scenario = ''none'' and Number =''none'' and pid = 1' -- query 2
exec @val = sp_executesql @Value
exec @val1 = sp_executesql @DefValue
if (@val1 = 0 or @val1 = null)
begin
set @DefValue = null
set @DefValue = 'SELECT ' + @Service + ' from PDetail where LOB = ''' + @LOB + ''' and Scenario = ''none'' and pid = 2' -- query 3
exec @val1 = sp_executesql @DefValue
end
select @val,@val1 -- want to return only two values
END
答案 0 :(得分:2)
我建议你改变
if (@val1 = 0 or @val1 = null)
到
if (@val1 IS NULL or @val1 = 0)
请记住,这是SQL,检查null的正确方法是使用IS NULL