Undetectable errors in Transact SQL
Alex_Malinin
Дата: 20.10.2000 18:42:20
Думаю, что многие уже заметили, что MSSQL Server позволяет написать процедуру в которой есть
- вызов несуществующей процедуры
- вызов существующей процедуры, но с неправильным количеством параметров
- вызов процедуры с выходным параметром, после которого Вы забыли написать OUT.
У меня вопрос - как с этим бороться?
Vasily
Дата: 23.10.2000 08:30:55
В процессе написания любой процедуры есть стадия отладки, вот на этой стадии все эти баги и надо отлавливать...
Ну или уж тогда отслеживать @@error != 0 и генерить raiserror после этого.
AnatolyS
Дата: 23.10.2000 08:33:46
Никак
Причина: Компиляция процедуры происходит при первом запуске.
Данная концепция позволяет использовать в тексте sp не только отсутсвующие sp,
но и другие объекты - таблицы и view.
С одной стороны гибко, с другой - не совсем удобно.
Alex Malinin
Дата: 23.10.2000 09:28:32
Могу предложить радикальное решение всех вышеозначенных проблем:
MSSQLSemanticAnalyzer производит сканирование текстов всех процедур и триггеров и находит все вышеописанные коллизии.
Посмотреть можно на http://www.mssqlproducts.com
SergSuper
Дата: 23.10.2000 13:39:32
Не решение, а сплошные залепухи.
Например в скрипте он создает таблицы с префиксом MSSQLSA_, а пытается читать из таблиц с префиксом mssqlsa_. Когда я исправил это в скрипте, всё равно ничего не увидел, только ошибки, что нет каких-то объектов.
Не верю я что сей продукт сможет следить за чужими ошибками, ему б со своими разобраться...
Alex Malinin
Дата: 23.10.2000 18:29:37
To SergSuper.
Уважаемый Serg. Видимо Ваш MSSQL Server был установлен с опцией Case Sensitive и теперь к таблицам и полям можно обратиться только с учетом регистра.
Так как писателем этой программы являюсь я, то я уже привел в соответсвие все регистры и просил бы Вас повторить попытку, так как мне переставлять свой MS SQL Server не хочется.
Если Ваша попытка закончится успешно и Вы об этом сообщите в этой конференции, то обязуюсь немедленно выслать Вам полностью рабочую версию бесплатно.
С уважением, автор программы - Алексей Малинин. Если опять возникнут проблемы, то прошу Вас сначала уведомить об этом меня по e-mail: a_malinin@mssqlproducts.com
Спасибо.
SergSuper
Дата: 24.10.2000 06:23:17
от уважаемого
моя повторная попытка окончилась неудачно(ошибки всё лезут), о чем я и сообщаю в этой конференции, предварительно уведомив по e-mail
Alex Malinin
Дата: 24.10.2000 07:53:35
Уважаемый Серж.
Посыпаю голову пеплом. Действительно на сервере с установленным флагом Case Sensitive возникают ошибки. Сегодня вечером все будет тип-топ.
Меня извиняет то, что MSSQL - это первая база в моей практике, которая позволяет устанавливать такой режим. Хотелось бы кстати услышать - а какой кайф (кроме геморроя как в данном случае) от этой опции могут иметь пользователи/программисты?
Серж! Скажите эта опция была сознтельно выбрана при установке? И если ДА, то с какой целью?
Спасибо за помощь.
Алексей.
Alex Malinin
Дата: 24.10.2000 15:09:40
Ошибок больше нет. Только что исправил и закачал на сайт.
Алексей.