2014-11-13 2 views
1

Мой блок IF..ELSE не работает BEGIN. Я могу понять, как мое выражение не является логическим по своей природе, но что вызывает этот провал?IF ELSE синтаксическая ошибка

IF (SUBSTRING(@PARIDIN,1,1) = 'P' 
BEGIN 
    SET @PARIDTEMP = SUBSTRING(LTRIM(RTRIM(@PARIDIN)),2,6)) 
END 
BEGIN 
    ELSE SET @PARIDTEMP = @PARIDIN 
END 
+1

ВСЕ ЦИФРЫ СООО МНОГО ВИДЕО! Но вы должны ** прекратить это ** прямо сейчас - это действительно трудно читать, на самом деле раздражает - и это считается ** SHOUTING ** для людей, которые грубы и неприятны. Пожалуйста, не делай этого. –

ответ

1

Вы не закрываете оцениваемое выражение.

Изменить

IF (SUBSTRING(@PARIDIN,1,1) = 'P' 

Для

IF (SUBSTRING(@PARIDIN,1,1) = 'P') 
2

У вас есть дополнительный набор скобок в странном месте .:

IF SUBSTRING(@PARIDIN,1,1) = 'P' -- one at the beginning of this line. 
BEGIN 
    SET @PARIDTEMP = SUBSTRING(LTRIM(RTRIM(@PARIDIN)),2,6) -- one at the end of this line. 
END 
ELSE 
BEGIN 
    SET @PARIDTEMP = @PARIDIN 
END 
+0

Из-за того, что сказал @Sean Lange, я переместил 'ELSE' вне блока' BEGIN' и 'END'. – ps2goat

0

Принимая весь чужое предложение фиксирующего состояния я нахожусь удивился, что никто не упомянул очень странные блоки BEGIN END. Они не имеют смысла и не уверены, что они даже будут работать. Поскольку у вас есть только один оператор для каждого, имеет смысл удалить их.

IF (SUBSTRING(@PARIDIN,1,1) = 'P') 
    SET @PARIDTEMP = SUBSTRING(LTRIM(RTRIM(@PARIDIN)),2,6)) 
ELSE 
    SET @PARIDTEMP = @PARIDIN 
+0

'BEGIN' и' END' не странны. Они там не просто так. Они позволяют выполнять несколько операторов внутри блоков 'IF' или' ELSE'. IMO, лучше иметь эту конструкцию, прежде чем другие изменят код, поэтому мы не получим неожиданных результатов (блок мысли и блока ELSE будет приводить к синтаксической ошибке без действительного блока 'IF' перед этим. см. неправильно помещенную 'ELSE' как проблему. – ps2goat

+0

Я полностью понимаю суть, я указывал, что структура того, как OP была у них, была довольно странной, а другая находилась внутри BEGIN. Извините, вы неправильно поняли мой комментарий, я должен был быть более ясно. –

+0

Спасибо, Шон, это было очень полезно – Anthony

Смежные вопросы