Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Create procedure izm_prof(men integer,now integer)




RETURNS(TAB_NO CHAR(5),FAM VARCHAR(30),K_P INTEGER,NOW_P INTEGER)AS

BEGIN

FOR

SELECT TAB_NO,FAM,K_P

FROM DAN

INTO:TAB_NO,FAM,K_P

DO

BEGIN

IF(K_P=MEN)THEN

BEGIN

NOW_P=NOW;

UPDATE DAN

SET K_P=:NOW_P

WHERE TAB_NO=:TAB_NO;

SUSPEND;

END

END

END^

SET TERM;^

Вызов процедуры

SELECT*

FROM IZM_PROF(12,5);

Удаление процедуры:

DROP PROCEDURE <имя процедуры>;

· Вызов хранимых процедур.

Приложения могут вызывать хранимые процедуры из SGL, DSGL, ISGL.

Существуют два типа хранимых процедур: процедуры-выборки (selectable procedures) и исполняемые процедуры (executable procedures). Отличие в работе этих двух видов ХП заключается в том, что процедуры-выборки обычно возвращают множество наборов выходных параметров, сгруппированных построчно, которые имеют вид набора данных, а исполняемые процедуры могут либо вообще не возвращать параметры, либо возвращать только один набор выходных параметров, перечисленных в Returns. Процедуры-выборки вызываются в запросах SELECT, а исполняемые процедуры - с помощью команды EXECUTE PROCEDURE.

· SELECT - процедуры, которые приложения может использовать вместо таблицы или вьюера в операторе SELECT; результатом исполнения оператора SELECT над такой процедурой будет обычная таблица данных, какая получается, например, когда в SELECT стоит символ*. Например, если имеется SELECT - процедура с именем SP, то ее вызов на исполнение выглядеть так:

SELECT *

FROM IZM_PROF(12,5);

Если воспользоваться запросом

EXECUTE PROCEDURE UV_D (1.1);

то произойдет изменение и вывод только первой строки:

KOD_D SUMA_D N_SUMA_D

======== ======== ========

300 2500 2750

Вызов процедуры UV_MZ_D

SELECT *

FROM UV_MZ_D (2600);

произведет изменения только двух строк таблицы DOLJN, в которых поле SUMA_D меньше 2600, и выведет таблицу из этих строк.

KOD_D SUMA_D N_SUMA_D

======== ======== ========

300 2500 2600

307 2000 2600

//Поиск повторений //MS Access

SELECT данные.фамилия, данные.имя, данные.отчество

FROM данные

WHERE (((данные.фамилия) In (SELECT [фамилия] FROM [данные] As Tmp GROUP BY [фамилия] HAVING Count(*)>1)))

ORDER BY данные.фамилия;

 

Поиск повторений для данные

фамилия имя отчество
ИВАНОВ Иван Иванович
ИВАНОВ Иван Иванович
ФРОЛОВА Анастасия Дмитриевна
ФРОЛОВА Мария Александровна

 

· Удаление хранимой процедуры.

Удаление хранимой процедуры выполняется с помощью оператора DROP PROCEDURE. Синтаксис оператора удаления таков:

DROP PROCEDURE name;

Здесь name – имя хранимой процедуры.

Хранимые процедуры — основное средство программирования серверной логики. Они представляют собой откомпилированный модуль, написанный на языке Transact-SQL. В коде хранимой процедуры можно использовать не только операции выборки и модификации данных, но и логику ветвления, переменные, вызовы других процедур и некоторые другие средства, характерные для языков программирования высокого уровня. Код процедуры синтаксически анализируется при компиляции, а оптимизированный план выполнения создается при первом вызове процедуры. В отличие от запросов, хранимые процедуры имеют возможность возвращать несколько наборов записей, а также значения.

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

Хранимые процедуры используются в проектах Access везде, где могут использоваться предложения SQL. Они могут служить: в качестве источников записей в формах, отчетах, активных страницах; в качестве источников строк для полей со списком.

Однако нужно помнить, что хранимые процедуры возвращают необновляемый набор записей. Хранимая процедура может содержать одну инструкцию SQL, и в этом случае для ее создания можно использовать графический режим Конструктора запросов. Если же она состоит из нескольких инструкций SQL, тогда она создается и изменяется в редакторе SQL.

В первом случае чтобы создать процедуру проще всего щелкнуть по ярлыку Создание сохраненной процедуры в режиме конструктора (Create stored procedure in designer). При этом открывается стандартное окно Конструктора запросов, в котором можно создать инструкцию SQL, составляющие тело процедуры. Так же как и представление, хранимая процедура в данном случае может иметь ряд дополнительных свойств. Чтобы отобразить или изменить эти свойства, необходимо открыть окно свойств. На вкладке Сохраненная процедура (Stored Procedure) содержится перечень свойств, которые аналогичны свойствам представления. А на второй вкладке можно посмотреть и изменить параметры процедуры.

Откройте процедуру в режиме Конструктора. Нажмите кнопку Свойства (Properties) на панели инструментов, чтобы отобразить диалоговое окно Свойства (Properties). Раскройте вкладку Параметры сохраненной процедуры.

На вкладке отображается таблица со списком параметров процедуры. Каждый параметр обязательно должен иметь имя и тип данных. Кроме того, для него может быть указано значение по умолчанию. Обратим внимание, что имя каждого параметра начинается со значка @. Но имя параметра не может быть изменено на этой вкладке, так же как нельзя добавить новый параметр. Это делается только в бланке запроса в окне Конструктора или прямо в инструкции SQL.

Для того чтобы создать хранимую процедуру, состоящую из нескольких инструкций SQL, нужно открыть список запросов в окне проекта и нажать кнопку Создать (New). В диалоговом окне Новый запрос (New Query) следует выбрать элемент Ввод сохраненной процедуры (Create Text Stored Procedure).

Нужно изменить имя процедуры в первой строке шаблона и ввести текст процедуры в соответствии с правилами языка Transact-SQL.

Если в теле процедуры нужно ввести инструкцию SQL SELECT, то можно воспользоваться для этого Конструктором запросов. Установите курсор на строке редактора, в которой должна быть введена инструкция SELECT и нажмите кнопку Вставить SQL (Insert SQL) на панели инструментов. Появится окно Конструктора запросов. После того как запрос будет создан, нужно закрыть это окно, подтвердив сохранение изменений инструкции SQL.

Пример использования хранимой процедуры в качестве источника записей вы увидите, если откроете отчет "2". В качестве источника записей в этом отчете используется одноименная хранимая процедура. В свойстве Входные параметры (Input Parameters) этого отчета описаны два параметра: @Beginning_date И @Ending_date.

При запуске отчета эти параметры будут запрашиваться так же, как и при использовании запроса с параметрами в базе данных Access.

SELECT данные.фамилия, данные.имя, данные.отчество, данные.образование

FROM данные LEFT JOIN оклады ON данные.[код оклада] = оклады.[код оклада]

WHERE (((оклады.[код оклада]) Is Null));

 

'данные' без подчиненных в 'оклады'

фамилия имя отчество образование
СИДОРЧУК Валентина Викторовна  

 


Триггеры

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

Существует три основных SQL-операции, применимые к данным, - INSERT/DELETE/UPDATE. А поскольку срабатывание триггера может происходить "до" (BEFORE)и "после"(AFTER) операции, то получается шесть возможных видов триггеров на таблицу - до и после каждой из трех возможных SQL-операций.

Триггер может быть активный (ACTIVE) и неактивный (INACTIVE).

· Польза от применения триггеров.

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

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

- Автоматическая регистрация изменений в таблицах. Приложение может регистрировать с помощью триггера изменения в таблице.

- Автоматическая регистрация изменений в базе данных с помощью обработчиков событий в триггерах.

· Примеры триггеров.

Триггер (англ. trigger «собачка, защёлка, спусковой крючок»):

в русском языке первоначально — термин из области радиосхем, позже электронной техники: пусковая схема, схема с несколькими устойчивыми состояниями, см. триггер (электроника); в последнее время заимствовались и другие значения английского оригинала:

спусковой крючок пистолета, арбалета и т. п., кнопка на джойстике, находящаяся под указательным пальцем; в более широком смысле: некая причина возникновения события вообще условия, при наступлении которых должно происходить предписанное действие Триггеры являются особой разновидностью хранимых процедур, которые активизируются не по прямому вызову пользователя, а при наступлении определенного события в базе данных, а именно — вставки, удаления или модификации записи в таблице. Триггеры привязаны к конкретной таблице. Каждая таблица может иметь до трех триггеров — по одному на каждый вид операции с данными (INSERT, UPDATE, DELETE). Но один триггер может также обрабатывать и два и все три события.

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

Триггер срабатывает после удаления строки из таблицы DAN и записывает удаленную строку в таблицу UD_DAN.

SET TERM^;

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...