Впервые за многие годы я занимался программированием T-SQL в SQL Server 2008 и забыл, насколько плохой язык на самом деле:
- Управление потоком (все начальные/конечные элементы) чувствует себя неуклюжим.
- Обработка исключений оставляет желать лучшего. Исключения не пузырьки так же, как на любом другом языке. Там нет повторного метания, если вы не закодируете его самостоятельно, а функция raiserror не написана правильно (это вызвало у меня некоторые головные боли!)
- Обработка строк плохо.
- Единственный тип последовательности - это таблица. Я должен был написать функцию для разделения строки на основе разделителя и должен был хранить ее в таблице, в которой были строковые части, а также значение, указывающее на положение в последовательности.
- Если вам нужно выполнить поиск в хранимой процедуре, то манипулирование результатами будет болезненным. Вы либо должны использовать курсоры, либо взломать цикл while с вложенным поиском, если результаты содержат какой-то столбец упорядочения
Я понимаю, что я мог бы кодировать свои хранимые процедуры с помощью С#, но для этого потребуется разрешить серверу разрешать функции CLR, что не является вариантом на моем рабочем месте.
Кто-нибудь знает, есть ли какие-либо альтернативы T-SQL в SQL Server, или если есть какие-то планы по внедрению чего-либо. Конечно, должна быть более современная альтернатива...
PS: Это не предназначено для начала пламенной войны, я действительно заинтересован в том, что это за варианты.