SQL存储过程不会进入IF和CASE条件

时间:2015-05-25 21:44:42

标签: sql sql-server sql-server-2008

我有一个存储过程,它有一个varchar输入参数。主体有几个IF条件,与此输入参数进行比较。尝试尽可能地,虽然一切似乎都很好,但它没有进入IF条件之一。知道为什么会这样吗?

CREATE PROCEDURE [dbo].[spGetSnapshot] 
@ScenarioEnum varchar(10),
@LabelerCodes varchar(200) = null,
@StatusFilter varchar(200) = null
AS
BEGIN
IF(@ScenarioEnum = 'ManufacturerAdjudicationSnapshot')
    PRINT 'Inside the if statement'
END
IF(@ScenarioEnum = 'Works')
    PRINT 'Inside the 2ND if statement'
END

3 个答案:

答案 0 :(得分:1)

这是因为输入参数的长度太小。 由于传递的参数的长度大于为参数保留的空间,因此输入将被截断为“Manuf' 将为ScenarioEnum参数保留的长度增加到适当的值,这将开始工作!

答案 1 :(得分:1)

ONBUILD ADD package.json /project/  
ONBUILD RUN //do some stuff 
ONBUILD ADD . /project

答案 2 :(得分:0)

只需删除一个END

CREATE PROCEDURE [dbo].[spGetSnapshot] 
@ScenarioEnum varchar(10),
@LabelerCodes varchar(200) = null,
@StatusFilter varchar(200) = null
AS
BEGIN
IF(@ScenarioEnum = 'ManufacturerAdjudicationSnapshot')
    PRINT 'Inside the if statement'
IF(@ScenarioEnum = 'Works')
    PRINT 'Inside the 2ND if statement'
END