Я довольно уверен, что происходит, но хотел получить некоторые идеи от моих коллег по SQL Server Travelers (на самом деле довольно очевидно, что происходит, но я думаю, что это интересное обсуждение).Отсутствует BEGIN и END?
Загадка мне этот Бэтмен ... что с этим?
CREATE PROCEDURE ToBeDropped
AS
BEGIN
PRINT 'Drop me!';
END
DROP PROCEDURE ToBeDropped;
Что происходит? Моя первая мысль заключалась в том, что процедура была создана, а затем сразу же отброшена. Wrongo! И вы, вероятно, думали так же, если вы уже не знали об этом, прежде чем ... признать это!
В SSMS нажмите Ctrl-T, чтобы переключить результаты запроса в текст. Затем выполните следующие действия (или вы могли бы сценарий новой процедура ToBeDropped):
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';
Следующих запустить процедуру:
EXECUTE ToBeDropped;
В перепробеге запрос выше sys.sql_modules или попытку сценарий объект. Вы не можете, потому что его больше нет.
Хммм ... Что здесь происходит? Очевидно, что существует неявное Начинайте и заканчивайте с процедурой, в то время, похожее на следующее:
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 движется в направлении становления более «реальным» - см. Точку с запятой и все функции CLR, которые теперь доступны или потенциально доступны в TSQL. Я бы хотел, чтобы тело CREATE PROCEDURE должно было иметь как минимум 1 пар BEGIN и END - heck make {быть псевдонимом/синонимом для BEGIN и} псевдоним/синоним для END - и мы будем на один шаг ближе к повороту TSQL в C#.
Мысли? Мнения? Благодаря!
Это не дискуссионный сайт. Это сайт вопросов и ответов. См. Http://stackoverflow.com/faq#dontask –
Этот вопрос может быть «лучше, чтобы остаться», если вы перепишите его с точки зрения http://blog.stackoverflow.com/2011/07/its -ok-to-ask-and-answer-your-own-questions/ – sarnold