ЗАПЧАСТИ кестесіндегі насос құны 475,000. Берілген атаудағы қосалкы бөлшектің
құнын сəйкес көрсетілген % азайту үшін процедура құру.
CREATE PROC ПРОЦЕДУРА3
@t VARCHAR(10), @p FLOAT
AS
UPDATE ЗАПЧАСТИ SET цена=цена*(1-@p)
WHERE название=@t
Процедураға назар аударатын қолданылатын командалар:
EXEC ПРОЦЕДУРА3 @t='насос',@p=0.05 или
EXEC ПРОЦЕДУРА3 ‘насос’,0.05
(1 row(s) affected)
Насос құны көрсетілген құннан 5% азайды, 451,25 болды.
Жаңа сатып алушы жайлы ақпаратты қосу үшін процедура құру:
/*Жаңа сатып алушы жайлы ақпаратты қосуға арналған процедура*/
CREATE PROC Добавление_покупателя
@название_фирмы VARCHAR (20),
@ном_покупателя INTEGER,
@лимит_кредита MONEY,
@продавец INTEGER,
@объем_продаж MONEY,
@город_магазин VARCHAR(15)
AS
BEGIN
/*ПОКУПАТЕЛИ кестесіне жаңа жол қосу*/
INSERT INTO ПОКУПАТЕЛИ (номер_покупателя,
название, продал, кредит)
VALUES (@ном_покупателя,@название_фирмы,
@продавец, @лимит_кредита)
/*ПРОДАВЦЫ кестесінде жазбаны жаңарту*/
UPDATE ПРОДАВЦЫ
SET продажа=продажа+@объем_продаж
WHERE номер_продавца=@продавец
/*МАГАЗИНЫ кестесінде жазбаны жаңарту*/
UPDATE МАГАЗИНЫ
SET продажа_объем=продажа_объем+@объем_продаж
WHERE город=@город_магазин
/*Транзакцияны аяқтау*/
COMMIT TRANSACTION
END
Тапсырмаларды орындауға қажетті əдістемелік нұсқаулар:
Оқулық материалды жəне түсіну кезінде негізгі түсініктемелерді ұғу жəне материалды
бекіту арқылы жүргізілу керек. Тақырып бойынша терминдердің сөздігін құрастыр.
12 Курсорлар
Сұрақтар:
1. Курсор дегеніміз не?
2. Оның түрлерін ата.
3. Курсорды басқару қалай жүргізіледі?
4. Курсордың қандай типтері бар?
5. Тізбекті курсордың айналмалы курсордан қандай айырмашылығы бар?
Тапсырмалар:
1. Курсорды құру немесе жариялау.
2. Курсорды ашу.
3. Курсордан іріктеу жəне деректер жолын оның көмегімен өзгерту.
4. Курсорды жабу.
5. Курсорды босату.
Курсорды басқару келесі командаларды орындағанда жүзеге асады:
DECLARE – курсорды құру немесе жариялау;
OPEN – курсорды ашу, яғни оны деректермен толтыру;
FETCH – курсордан деректерді іріктеу жəне курсор көмегімен деректер жолын өзгерту;
CLOSE – курсорды жабу;
DEALLOCATE – курсорды босату, яғни курсорды объект ретінде жою.
Курсорды жариялау:
DECLARE ABC CURSOR SCROLL FOR
SELECT * FROM ЗАПЧАСТИ
Курсорды жариялау жəне ашу:
DECLARE ABD CURSOR GLOBAL SCROLL FOR
SELECT * FROM ЗАПЧАСТИ
OPEN ABD
Курсордан деректерді іріктеу:
FETCH FROM GLOBAL ABD
Толық нəтижелі жиынтықта ағымдыдан кейн тұрған жол үнсіз келісім бойынша
қайтарылады.
Егер де LAST кілтті сөзін көрсетсек, онда курсордың ақырғы жолы қайтарылады жəне
ол ағымды жол болады:
FETCH LAST FROM GLOBAL ABD
Курсорды жариялауға айнымалыны қолдану:
DECLARE @MyCursor CURSOR
SET @MyCursor=CURSOR LOCAL SCROLL FOR
SELECT * FROM ЗАПЧАСТИ
Курсорды қайтадан меншіктеу үшін айнымалыны қолдану:
DECLARE @MyCursor CURSOR
SET @MyCursor=ABC
«Автошина» қосалқы бөлшектер тізімін шығару үшін курсорды құру:
DECLARE @firm VARCHAR (3),
@p VARCHAR (20)
PRINT 'СПИСОК ЗАПЧАСТЕЙ'
DECLARE prod_cursor CURSOR LOCAL FOR
SELECT шифр_изг
FROM ЗАПЧАСТИ
WHERE название='автошина'
ORDER BY шифр_изг
OPEN prod_cursor
FETCH NEXT FROM prod_cursor INTO @firm
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @p='шифр_изг '+ @firm
PRINT @p
-- келесі қосалқы бөлшекке көшу --
FETCH NEXT FROM prod_cursor INTO @firm
END
CLOSE prod_cursor
DEALLOCATE prod_cursor
Нəтиже:
Курсорды босату:
DEALLOCATE ABC
The command(s) completed successfully.
13 Триггерлер
Сұрақтар:
1. Триггер дегеніміз не?
2. Триггердің қандай типтері бар?
3. Триггер қалай программаланады?
4. Триггер қалай жойылады?
5. Қандай триггер үнсіз келісім бойынша құрылады?
Тапсырмалар:
1. Триггерді құру.
2. Триггер типтері.
3. Триггерді программалау
Триггерді құру:
CREATE TRIGGER ТРИГГЕР1
ON ПРОДАВЦЫ
FOR DELETE, INSERT, UPDATE
WITH APPEND
AS
BEGIN
PRINT 'ЗАПРЕЩЕНО'
END
Триггерді жою:
DROP TRIGGER ТРИГГЕР
Мəнге шектеу қоюды жүзеге асыру үшін триггерді құру жəне қолдану:
CREATE TRIGGER ТРИГГЕР_ins
ON ЗАКАЗЫ FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF NOT EXISTS (SELECT *
FROM inserted
WHERE -inserted.количество<=ALL
(SELECT ЗАПЧАСТИ.нал_количество
FROM ЗАПЧАСТИ, ЗАКАЗЫ
WHERE ЗАПЧАСТИ.шифр_запчасти=ЗАКАЗЫ.запчасть))
BEGIN
ROLLBACK TRAN
PRINT 'ЗАПРЕЩЕНО'
END
END
Құрылатын триггер кестеге командасы орындалуына келесідей назар аударады: егер
ЗАПЧАСТИ кестесінде нал_количества шамасы сатылатын тауар санынан аз болса, онда
ЗАКАЗЫ кестесіне қою командасын болдырмау қажет. Көрсетілген триггер бір жазбаны ғана
өңдеуге келтірілген.
Тапсырмаларды орындауға қажетті əдістемелік нұсқаулар:
Оқулық материалды жəне түсіну кезінде негізгі түсініктемелерді ұғу жəне материалды
бекіту арқылы жүргізілу керек. Тақырып бойынша терминдердің сөздігін құрастыр.
14 Транзакциялар жəне тосқауылдар
Сұрақтар:
1. Транзакция дегенді қалай түсінесің, оның қасиеттері қандай?
2. Тосқауыл қою дегеніміз не? Қандай типтері бар?
3. Транзакциялар мен тосқауылдар қоюды басқару қалай жүргізіледі?
4. Изоляция деңгейлерін атап бер.
Тапсырмалар:
1. Транзакцияларды басқару.
2. Транзакция түрлері.
3. Тосқауылды басқару
Транзакцияларды басқаруда қолданылатын үш команда бар:
1. COMMIT - өзгерістерді сақтау үшін;
2. ROLLBACK - өзгерістерді қабылдамау;
3. SAVEPOINT - қайтарымның ерекше нүктелерін құру.
Сақтау нүктесін қолдану:
BEGIN TRAN
SAVE TRANSACTION point1
point1 нүктесінде ЗАПЧАСТИ кестесінің алғашқы күйі сақталады.
DELETE FROM ПОКУПАТЕЛИ
WHERE номер_покупателя=8101
SAVE TRANSACTION point2
Достарыңызбен бөлісу: |