RAISERROR의 철자가 잘못된 이유는 무엇입니까? 아니면 그렇지 않습니까?
RAISERROR
철자 가없는 이유는 무엇 RAISEERROR
입니까? 두 번째 E는 어디에 있습니까? 고대 키워드 길이 제한인지 이해할 수 있었지만 9 자 제한이 될 것이라고는 생각하지 못했습니다.
RAIS 또는 RROR는 "오류 발생"이 오 독일 뿐인 전문 용어입니까? 그것의 (즉시) 기원이 다른 언어입니까?
Google을 검색했지만 주제에 대해 많이 찾지 못했습니다.
흥미 롭습니다. 솔직히 그 사실을 알아 차린 적이 없습니다.
나는 그것이 결코 수정되지 않은 초기 감독이라고 생각하지만, 호환성을 위해 잘못된 철자를 남겨두고 나중에 RAISEERROR에 대한 지원이 추가되지 않았다는 사실에 조금 놀랐습니다.
업데이트 : 분명히, 그것이 무엇이어야하는지에 대해 약간의 내부 혼란 이 있습니다 . MSFT가 응답하지 않았지만 이 연결 요청을 확인하십시오 .
Jens Suessmeyer의 MSDN 블로그에 대한 답변은 다음과 같습니다.
"왜 Raiserror에"e "가 하나 밖에 없는지 자문 해 본 적이 있습니까? 그것은 두 개의 동일한 문자가 하나의 문자로 축소되었던 예전 Sybase 시절의 것입니다. :-)"
나는이 게시물을 우연히 발견 한 이유와 동일한 질문을했습니다. 내가 볼 수 있듯이 실제로 차이가 있으며 철자 만 두 경우의 차이가 아닙니다. 이 두 기능은 사용법 때문에 동일하지 않습니다.
링크 및 색상
- RAISERROR -MSDN 링크가 있으며 SSMS에서 청록색 / 파란색으로 표시됩니다.
- RAISEERROR-지금 찾을 수있는 MSDN 링크가 없으며 SSMS에서 마젠타 색으로 표시됩니다.
신용이 필요한 신용- 위의 질문에 대한 의견에서 Sahuagin 사용자가 이미 색상 관찰을 제기했습니다 .
SQL Server 2012를 사용하고 있습니까?
계속 진행하기 전에 SQL Server 2012 이상을 사용하는 경우 RAISERRROR을 사용하지 마십시오. THROW를 사용해야합니다 .
그렇다면 차이점은 무엇입니까?
하나의 인라인 문에서 RAISERROR (파란색)를 사용할 수있는 반면, 다른 코드 블록 내부에 포함되는 것에 의존하는 RAISEERROR (마젠타)를 사용할 수 있습니다. 반환 된 오류를 기반으로합니다. 정확한 구문 오류는 다음과 같습니다.
'RAISEERROR'근처에 잘못된 구문이 있습니다. CONVERSATION, DIALOG, DISTRIBUTED 또는 TRANSACTION이 필요합니다.
RAISERROR 예 (One E-파란색)
DECLARE @foo varchar(200)
SET @foo = ''
IF NULLIF(@foo, '') IS NULL
BEGIN
-- To fix this line, remove one "E" to read RAISERROR
RAISEERROR('Not enough Vespene Gas!', 16, 1);
RETURN -- This is required otherwise execution will continue!
END
-- You need the RETURN above or this will execute
SELECT Critical_TSqlLine = 1;
이제 위 코드에서 "E"하나만 제거하면 제대로 작동합니다. 실행 결과를 제공하지 않았지만 SSMS를 열고 드롭하고 실행하면 작동 할 것이라고 보장합니다.
RAISEERROR Example (Two Es - magenta)
I spent entirely too much time trying to figure out how to use this version of the function and I cannot provide an example where this will actually work. I looked into using CONVERSATION, DIALOG, DISTRIBUTED or TRANSACTION and I couldn't get the syntax to work. Long story short, don't concern yourself with this version just use the single E version. For those of you using SQL Server 2012, this shouldn't concern you anymore anyhow.
why is there still a TIMESTAMP
data type? support for old versions. Someone Sybase person long ago decided to make it RAISERROR and not RAISEERROR, when Microsoft made a deal with Sybase they continued the trend.
RAISERROR 대 RAISEERROR를 읽는 것이 실제로 더 쉽다는 점에서 의도적이라고 생각합니다. (다른 예는 sp_helprotect도 참조), 특히 대소 문자 구분이없는 경우.
이것은 Sybase의 역사로 거슬러 올라갑니다.
참고 URL : https://stackoverflow.com/questions/2821082/why-is-raiserror-misspelled-or-is-it-not
'Program Tip' 카테고리의 다른 글
C ++ 11의 모든 / 대부분의 setter 함수를 범용 참조를 허용하는 함수 템플릿으로 작성해야합니까? (0) | 2020.11.25 |
---|---|
jQuery 객체 병합 (0) | 2020.11.25 |
Colspan이 Angular 2에서 알려진 기본 속성이 아닌 이유는 무엇입니까? (0) | 2020.11.24 |
"int * p = + s;"는 무엇입니까? (0) | 2020.11.24 |
새로운 기능이없는 C ++ 개체 (0) | 2020.11.24 |