나는 무엇이 진행되고 있는지 잘 알고 있지만, 동료 SQL Server Traveler로부터 아이디어를 얻고 싶었습니다. (실제로 어떤 일이 일어나고 있는지는 분명하지만 흥미로운 토론을하게 만듭니다.)BEGIN 및 END가 누락 되었습니까?
이 배트맨을 수수께끼로 여깁니다. 이것으로 무엇이 일어나나요?
CREATE PROCEDURE ToBeDropped
AS
BEGIN
PRINT 'Drop me!';
END
DROP PROCEDURE ToBeDropped;
어떻게됩니까? 내 첫 번째 생각은 절차가 생성 된 후 즉시 삭제 된 것입니다. Wrongo! 그리고 이전에 문제에 대해 이미 알지 못했다면 아마 같은 생각을했습니다 ... 인정하십시오!
SSMS에서 조회 결과를 텍스트로 전환하려면 Ctrl-T를 누르십시오. 그런 다음 다음을 실행 (또는 스크립트 새로운 절차 ToBeDropped 수) :
EXECUTE ToBeDropped;
다시 실행 스크립트에 위의 sys.sql_modules 쿼리 또는 시도 개체 :
SELECT m.[definition]
FROM sys.sql_modules AS m INNER JOIN sys.objects AS obj
ON m.object_id = obj.object_id
WHERE obj.name = 'ToBeDropped';
다음 절차를 실행합니다. 더 이상 존재하지 않기 때문에 그럴 수 없습니다.
흠 ... 여기 무슨 일 이니? 분명히 암시가 시작하고 잠시 절차에 END가, 다음과 같은 : 내가 암시 적 행동의 큰 팬이 아니다
CREATE PROCEDURE ToBeDropped
AS
BEGIN
BEGIN
PRINT 'Drop me!';
END
DROP PROCEDURE ToBeDropped;
END ;
: 다음과 같이 더 나은 외모를 포맷
CREATE PROCEDURE ToBeDropped
AS
BEGIN
BEGIN
PRINT 'Drop me!';
END
DROP PROCEDURE ToBeDropped;
END;
. 나는 명백한 것을 선호한다. TSQL은 더 많이 "진짜"가되는 방향으로 이동하고 있습니다. TSQL에서 현재 사용 가능하거나 잠재적으로 사용할 수있는 세미콜론 및 모든 CLR 기능을 참조하십시오. 적어도 하나의 BEGIN과 END 쌍을 가져야한다는 CREATE PROCEDURE 본문을보고 싶습니다. BEGIN의 별칭/동의어이며 END의 별칭/동의어입니다. 우리는 TSQL을 선회하는 데 한 걸음 더 다가 섰습니다. C#.
생각하십니까? 의견? 감사!
이것은 토론의 장소가 아닙니다. 이것은 Q & A 사이트입니다. http://stackoverflow.com/faq#dontask –
을 참조하십시오. http://blog.stackoverflow.com/2011/07/its의 관점에서이 질문을 다시 작성하면이 질문에 "충분히 만족할 수 있습니다"라고 표시 될 수 있습니다. -ok-to-ask-and-answer-your-questions-questions/ – sarnold