Программирование >>  Программирование баз данных 

1 ... 170 171 172 [ 173 ] 174 175 176 ... 346


Следует отметить, чтю аналогичное ограничение обнаруживается и применительно к другим объектам SQL Server, например, не допускается удаление таблицы, если она является адресатом ссылки внешнего ключа, но в последнем случае обычно не наблюдается столь широкое влияние зависимостей между объектами в базе данных (ведь достаточно применить пользовательский тип данных даже в самом ограниченном объеме, чтобы практически исключить возможность беспрепятственно удалить его опредеяение); поэтому до сих пор автор не считал себя обязанным каждый раз указывать, в каком случае зависимость одного объекта от другого будет препятствовать удалению второго из них (к тому же такие ситуации были более очевидными).

Резюме

Изучение настоящей главы позволяет убедиться в том, насколько перспективными являются новые средства разработки приложений для СУБД SQL Server, поддерживаемые инфраструктурой .NET. Представленные здесь возможности открывают путь к созданию очень сложных приложений (или даже не столь сложных, но не осуществимых при использовании обычных программных конструкций). С другой стороны, непродуманное использование сборок, на которых основана инфраструктура .NET, для доступа к базе данных SQL Server может привести к нарушению работы всей системы. Поэтому автор обязан предупредить читателя. При использовании сборок соблюдайте предельную осторожность. Тщательно продумывайте всю структуру прр1ло-жения и анализируйте каждое действие, выполняемое с помощью сборки в базе данных, еще более внимательно, чем в обычных условиях применения инфраструктуры .NET. Учитывайте то, какая будет обнаруживаться задержка, если создаваемые процессы придется эксплуатировать в течение более продолжительного времени. Рассмотрите зависимости, которые будут создаваться при выполнении внешних вызовов, и определите, не приведет ли применение внешних процессов к нарушению безопасности. Следует учитывать, что после подключения к внешней системе безопасность приложения полностью зависит от безопасности этой системы.

Но сказанное выше не означает, что следует избегать использования сборок .NET исключительно из опасения возможных нарушений в работе пррыожения. Сборки занимают достойное место среди программных средств разработки и предоставляют нам возможности, которые мы не только можем, но и должны использовать (не говоря уже о том, что сами сборки представляют собой просто великолепные конструкции). Как всегда, разработчик обязан лишь определить, что ему действительно требуется, и не усложнять применяемое решение в большей степени, чем диктуется необходимостью. Причем следует учитывать, что решение, которое кажется на первый взгляд слишком сложным, в конечном итоге может оказаться более приемлемым, чем любое другое решение. Например, иногда с помощью хранимых процедур удается достичь того, что остается неосуществимым с помощью сценариев T-SQL. Зачастую разработчики избегают использования сборок, считая, что это приведет к усложнению системы, но в конечном итоге обнаруживают, что им пришлось применить сложную и запутанную хранимую процедуру T-SQL, состоящую из нескольких сотен строк, в то время как было бы достаточно создать краткую и удобную сборку, код которой, включая объявления, состоит из двух десятков строк.

Всегда взвешивайте и сопоставляйте все преимущества и недостатки применяемых методов.



Глава 15

Курсоры SQL

Такие операторы DML языка SQL, как SELECT, UPDATE и DELETE, которые рассматривались в предыдущих главах, предназначены для обработки одновременно целых множеств строк. С другой стороны, в процедурных языках чаще всего применяется построчная обработка данных. В действительности после поступления данных в клиентское приложение в виде результирующего набора, представляющего собой множество строк, обработка данных обычно происходит строка за строкой. Но такую построчную обработку данных можно организовать и с помощью средств языка SQL; для этого используются так называемые курсоры. Применение средств обработки в виде отдельных строк можно обеспечить даже в традиционных инструментальных средствах SQL Server на основе языковой поддержки CLR, при использовании в сценариях языка, отличного от SQL.

В настоящей главе рассматриваются следующие темы.

Общее определение понятия курсора.

Срок существования курсора.

Типы курсоров (чувствительность и обеспечение прокрутки).

Назначение курсоров.

Как будет показано в этой главе, при создании курсоров необходимо учитывать много факторов.

Но, по-видимому, важнее всего в первую очередь определить, является ли целесообразным их применение. В частности, необходимо убедиться в том, что в конкретной ситуации курсоры действительно позволят добиться повышения производительности системы. Тем не менее, как будет описано в данной главе, иногда не остается иного выбора, кроме использования курсоров.



Общее описание курсоров

Курсор- это программная конструкция, которая позволяет организовать построчную обработку набора данных. Необходимость в использовании курсоров возникает не так часто, как принято считать, но действительно встречаются такие ситуации, когда буквально невозможно получить требуемые результаты путем модификации или даже выборки данных с помощью реляционных операций, действие которых распространяется на все множество строк. Выборка строк, входящргх в состав результирующего набора, осуществляется на основании критериев (подобных заданным оператором SELECT), которые являются общими для всех строк набора, а после этого необходимо обеспечить последовательную обработк) строк набора.

Результирующий набор, который помещается в курсор, обладает следующими отличительными особенностями по сравнению с множеством строк, полученных с помощью обычного оператора SELECT.

Обработка данных с помощью курсора происходит в два этапа: вначале объявляется курсор, а затем выполняются предусмотренные в нем действия.

Курсор и связанный с ним результирующий набор имеют одинаковое имя, которое присваивается при объявлении курсора; доступ к указанным объектам осуществляется с указанием имени.

Результирующий набор в курсоре после его открытия остается открытым до тех пор, пока не будет закрыт.

Применительно к курсорам предусмотрен специальный набор команд, которые используются для перехода в наборе записей от одной строки к другой.

Безусловно, в СУБД SQL Server имеется собственная машина для работы с курсорами, но фактически предусмотрено еще несколько разных библиотек объектных модулей, указанных ниже, с помощью которых в SQL Server также могут создаваться курсоры.

Собственная клиентская библиотека SQL (используется в ADO.NET).

Библиотека OLE DB (используется в ADO).

Библиотека ODBC (используется в RDO, DAO, а также, в некоторых случаях, в OLE DB/ADO).

Библиотека DB-Lib (используется в VB-SQL).

Эти библиотеки, как правило, служат в клиентских приложени5гх для получения доступа к отдельным строкам. В каждой из нргх предусмотрен собственный синтаксис управления набором записей, а также, вообще говоря, управления курсором. Тем не менее все средства поддержки курсоров, предусмотренные в библиотеках объектных модулей, действуют в основном по одинаковому принципу, поэтому достаточно разобраться в том, как функционирует одна объектная модель поддержки курсоров, чтобы получить общее представление о том, как используются все прочие модели.

Каждый API-интерфейс доступа к данным (включая ADO.NET, ADO, ODBC, OLE DB и т.д.) возвращает данные в клиентское приложение или компонент курсора; в настоящее время это единственный способ обработки данных с помощью курсора в языках программирования, отличных от SQL. Кроме того, в этом состоит причина существенного различия между курсорами указанного типа и курсорами СУБД SQL Seruer. Курсоры



1 ... 170 171 172 [ 173 ] 174 175 176 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика