Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Охарактеризуйте BLOB и их назначение.




При реализации на языке SQL сложных алгоритмов, которые могут потребоваться более одного раза, сразу встает вопрос о сохранении разработанного кода для дальнейшего применения. Эту задачу можно было бы реализовать с помощью хранимых процедур, однако их архитектура не позволяет использовать процедуры непосредственно в выражениях, т.к. они требуют промежуточного присвоения возвращенного значения переменной, которая затем и указывается в выражении. Естественно, подобный метод применения программного кода не слишком удобен. Многие разработчики уже давно хотели иметь возможность вызова разработанных алгоритмов непосредственно в выражениях.

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

В SQL имеются следующие классы функций пользователя:

- Scalar – функции возвращают обычное скалярное значение, каждая может включать множество команд, объединяемых в один блок с помощью конструкции BEGIN...END;

- Inline – функции содержат всего одну команду SELECT и возвращают пользователю набор данных в виде значения типа данных TABLE;

- Multi-statement – функции также возвращают пользователю значение типа данных TABLE, содержащее набор данных, однако в теле функции находится множество команд SQL (INSERT, UPDATE и т.д.). Именно с их помощью и формируется набор данных, который должен быть возвращен после выполнения функции.

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

Охарактеризуйте функции пользователя (UDF).

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

UDF подобны хранимым процедурам. Т.е. UDF может содержать как операторы управления ходом выполнения программы, так и операторы DML.

Отличие UDF от хранимых процедур состоит в следующем:

  • UDF не поддерживает выходных параметров.
  • UDF не может использоваться для получения результатов “FOR XML”. Результат “FOR XML” может быть в хранимой процедуре.
  • Ошибки Transact-SQL, которые вызывают отмену оператора с последующим переходом к следующему оператору в модуле (триггере или хранимой процедуре), внутри функции обрабатываются иначе. В функциях ошибки Transact-SQL прерывают выполнение функции. Это, в свою очередь, приводит к отмене оператора, который вызвал функцию.

Однако UDF представляет зачастую лучший выбор для приложений SQL, поскольку вы можете вызвать UDF в операторе SQL.

Опишите процесс объявление внешней функции в СУБД (MySQL).

 

CREATE FUNCTION <имя функции> ([<имя параметра><тип данных> [(<размер>)] [AS LOCATOR], … ]) [RETURNS <тип данных>[(<размер>)]
[AS LOCATOR]][CAST FROM <тип данных>[(<размер>)] [AS LOCATOR]] [LANGUAGE {ADA|C|FORTRAN|NUMPS|PASCAL|PL1}] [SPECIFIC<специальное имя>]
[NO SQL] [[NOT DETERMINISTIC]
[RETURN NULL ON INPUT|CALL ON NULL INPUT] [STATIC DISPATCH]
EXTERNAL [NAME <имя внешней функции>] [PARAMETER STYLE{SQL|GENERAL}] [TRANSFORM GROUP <имя группы>]

<имя параметра> — не является обязательным, поскольку параметры сопоставляются ссылками в программе в порядке появления. Первый параметр в списке приписывается первому доступному адресату, второй – второму и т.д.
AS LOCATOR – используется при объявлении функции, обрабатывающей поля типа BLOB, CLOB, ARRAY, например, фильтры.
CAST FROM <тип данных>[(<размер>)] [AS LOCATOR] – позволяет изменить тип данных “на ходу”.
[PARAMETER STYLE {SQL|GENERAL}] – определяет способ работы с NULL-значениями. Если SQL, то параметры, например индикаторы, передаются автоматически. Иначе нет.
NO SQL – показывает, что функция не содержит SQL-операторов.
SPECIFIC <специальное имя> – используется с пользовательскими типами данных.
STATIC DISPATCH – возвращает статические значения определенного пользователем типа данных или ARRAY.
• Если входной параметр допускает значение NULL (базовый язык не может обрабатывать NULL-значения), то можно указывать RETURN NULL ON INPUT и функция даже не вызывается, а ответ выдается немедленно. CALL ON NULL INPUT, используемый по умолчанию, предполагает получение благоприятно результата.
TRANSFORM GRO Характеристики транзакций описываются в терминах ACID (Atomicity, Consistency, Isolation, Durability – неделимость, согласованность, изолированность, устойчивость).

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

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

· Транзакция всегда изолированна, поскольку ее результаты самодостаточны. Они не зависят от предыдущих или последующих транзакций – это свойство называется сериализуемостью и означает, что транзакции в последовательности независимы.

· Транзакция устойчива. После своего завершения она сохраняется в системе, которую ничто не может вернуть в исходное (до начала транзакции) состояние, т.е. происходит фиксация транзакции, означающая, что ее действие постоянно даже при сбое системы. При этом подразумевается некая форма хранения информации в постоянной памяти как часть транзакции.

 UP <имя группы> – обеспечивает преобразование значений пользовательских типов данных в HOST-переменные и обратно.










Последнее изменение этой страницы: 2018-05-10; просмотров: 260.

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