2014-11-13 1 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

모두 대문자입니다. 그러나 당신은 ** 그만 두어야합니다 ** 지금은 읽는 것이 정말 어렵고, 실제로 성가신 일입니다. ** 무례하고 반갑지 않은 사람들에게 ** 보급됩니다. 제발 하지마. –

답변

1

평가중인 표현식을 닫지 않습니다.

변경

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

당신은 내가 조건을 고정으로 모두 다른 사람의 제안을 복용 이상한 장소 :

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 
2

으로 놀란 사람은 매우 이상한 BEGIN END 블록을 언급하지 않았습니다. 그들은 이해할 수 없으며 그들이 일할 지 확신하지 못합니다. 각각에 대해 하나의 진술 만 가지고 있기 때문에 그것을 제거하는 것이 더 합리적입니다.

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

@Sean Lange가 언급 한 것 때문에'BEGIN'과'END' 블록 밖에서'ELSE'를 옮겼습니다. – ps2goat

0

괄호의 추가 세트가

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

'BEGIN'과'END'는 이상하지 않습니다. 그들은 이유가 있습니다. 그것들은'IF' 나'ELSE' 블록 안에 여러 문장을 실행할 수있게합니다. IMO, 다른 사람이 코드를 수정하기 전에이 구문을 사용하는 것이 낫습니다. 그래서 예기치 않은 결과가 발생하지 않게됩니다. (생각하고 'ELSE' 블록은 유효한'IF '블록이 없으면 구문 오류가 발생합니다.) 문제가있는 것으로 잘못 표시된 'ELSE'를 보아라. – ps2goat

+0

나는 OP가 그들에게 아주 이상했다는 구조의 구조를 말하고 있었다. 그 밖의 것이 BEGIN 내부에 있었다. 나는 내 의견을 오해해서 미안해했다. –

+0

숀 감사합니다. 실제로 도움이되었습니다. – Anthony