Реферат: Новые возможности T-SQL в MS SQL Server 2005

SET @DynamicQuery = 'SELECT TOP ' + CAST (@N AS varchar) + ' * FROM Products'

EXECUTE(@DynamicQuery)

Разбиение данных на страницы с использованием оператора TOP

Наиболее простым способом использования оператора TOP для разбиения на страницы является использование смещения по колонке ID. Процедура принимает параметр – количество записей на странице и «последний» ID, полученный в предыдущем запросе. При этом, благодаря новым возможностям оператора TOP, можно варьировать количество записей на странице, используя такую простую процедуру.

SELECT TOP (@N) * FROM ИмяТаблицы WHERE КолонкаID > @ID

Более общий подход, не требующий сохранения «последнего» ID предыдущего запроса и формально не зависящий от значения ID выглядит так:

SELECT * FROM (SELECT TOP (@N * (@PageNum + 1)) * FROM ИмяТаблицы

ORDER BY КолонкаID) AS PTable

WHERE КолонкаID NOT IN (SELECT TOP (@N * @PageNum) КолонкаID FROM ИмяТаблицы

ORDER BY КолонкаID)

Следует обратить внимание читателя, что запрос будет выполнять свою задачу лишь при условии того, что колонка КолонкаID содержит уникальные значения. Таким образом, для обеспечения разбиения данных с помощью такой процедуры нужно иметь в таблице колонку IDENTITY.

Для того, чтобы подобная процедура работала в более ранних версиях SQL Server, необходимо использовать динамическое создание запроса:

DECLARE @Query nvarchar(200)

SET @Query = 'SELECT * FROM (SELECT TOP ' + CAST(@N * (@PageNum + 1) AS nvarchar) +

' * FROM ИмяТаблицы ORDER BY КолонкаID) AS P

WHERE КолонкаID NOT IN (SELECT TOP ' + CAST(@N * @PageNum AS nvarchar) +

'КолонкаID FROM ИмяТаблицы ORDER BY КолонкаID)'

EXECUTE(@Query)

Обработка ошибок в SQL

В связи с интеграцией SQL Server с платформой .NET, языки которой поддерживают гибкий механизм обработки исключений, разработчики SQL Server включили в T-SQL давно желанную SQL-программистами возможность обработки исключений. Текущая реализация в SQL Server 2005 позволяет обрабатывать некритические ошибки с помощью похожего на ставший уже стандартным синтаксис TRY … CATCH.

BEGIN TRY

-- «Опасный» запрос

END TRY

BEGIN CATCH

-- Обработкаошибки

END CATCH

Механизм обработки ошибок в T-SQL, конечно, не такой гибкий, как в .NET языках, но, тем не менее, позволяет сделать достаточно много, анализируя код ошибки, возвращаемый функцией @@ERROR. Например, если таблица Products задана так, что не позволяет хранить отрицательное значение в колонке Quantity:

CREATE TABLE [Products](

[ProductID] [int] IDENTITY(1,1) NOT NULL,

[BrandID] [int] NOT NULL,

К-во Просмотров: 555
Бесплатно скачать Реферат: Новые возможности T-SQL в MS SQL Server 2005