суббота, 22 мая 2010 г.

T-SQL 2008. Приятные мелочи :)

Как известно, в SQL Server 2008 добавилось много замечательных улучшений языка T-SQL.

Прежде всего, это передача табличных переменных в процедуры и функции, оператор MERGE, новые типы данных.
Но также, есть новшества из разряда «мелочь, а приятно»:

1. Можно инициализировать переменные при их объявлении.

DECLARE @M INT = 10

2. Появились операции +=, —=,/=,%=, &=, |=, and ^= , позволяющие писать более компактный и красивый код.

3. Вставка нескольких значений в одной инструкции INSERT. При вставке нескольких значений в таблицу, нет необходимости писать несколько инструкций INSERT – VALUE или SELECT – UNION.

Пример использования :

-- Задача по получению значений столбца в одну строку

CREATE TABLE #Table
(
Col VARCHAR(10)
)

INSERT INTO #Table(Col)
VALUES ('AAA'), ('BBB'), ('CCC'), ('DDD'), ('EEE')

/*
раньше вместо этого приходилось писать несколько раз INSERT… VALUE или SELECT … UNION
*/

DECLARE @Str VARCHAR(2000) = '' -- сразу инициализируем переменную

SELECT @Str += Col + ',' FROM #Table -- при помощи += получаем более
-- компактный код
PRINT @Str

DROP TABLE #Table

4 комментария:

Unknown комментирует...

Или я что-то путаю, или сортировка по функции агрегирования появилась раньше 2008-го...

Сергей Харыбин комментирует...

Точно. В 2005 уже была, поправлю.

Unknown комментирует...

Мне негде сейчас проверить, но, по-моему, было и в 2000-м :)

Сергей Харыбин комментирует...

Так пусть же эта тайна умрет вместе с 2000 :)))