Реферат: Новые возможности 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
|