Основы (асослар)


Сўровостилардан фойдаланиш



Download 0,95 Mb.
bet26/58
Sana10.07.2022
Hajmi0,95 Mb.
#771988
1   ...   22   23   24   25   26   27   28   29   ...   58
Bog'liq
PL-SQL Маъруза матни (2)

Сўровостилардан фойдаланиш


Курсорларда сўровостилардан фойдаланиш мумкин:
Мисол 1.
DECLARE
CURSOR c1 IS SELECT empno, ename FROM emp
WHERE deptno IN (SELECT deptno FROM dept
WHERE loc <> 'CHICAGO');

Мисол 2.
DECLARE


CURSOR c1 IS SELECT t1.deptno, dname, "STAFF"
FROM dept t1, (SELECT deptno, COUNT(*) "STAFF"
FROM emp GROUP BY deptno) t2
WHERE t1.deptno = t2.deptno AND "STAFF" >= 5;

Мисол 3.
DECLARE


CURSOR c1 IS SELECT deptno, ename, sal FROM emp t
WHERE sal > (SELECT AVG(sal) FROM emp WHERE t.deptno = deptno)
ORDER BY deptno;

Ошкормас курсорлар


Oracle ҳар бир SQL жумласини бажариш учун ошкормас тарзда курсор очади. Аммо OPEN, FETCH, ва CLOSE жумлалари ёрдамида SQL курсорларини бошқариб бўлмайди.

Курсорларни пакетларда бирлаштириш


Пакетда курсор аниқланиши ва танасини алоҳида ажратишингиз мумкин. Пакетдаги курсорнинг аниқланиши синтаксиси қуйидагича:
CURSOR курсор_номи [(параметр[,параметр]...)] RETURN қайтариш_тури;

Курсор аниқланишида %ROWTYPE фойдалани мумкин:


CREATE PACKAGE emp_actions AS
/* Курсор аниқланиш соҳасини эълон қилиш */
CURSOR c1 RETURN emp%ROWTYPE;
...
END emp_actions;

CREATE PACKAGE BODY emp_actions AS


/* Курсор танасини эълон қилиш */
CURSOR c1 RETURN emp%ROWTYPE IS
SELECT * FROM emp
WHERE sal > 3000;
...
END emp_actions;

Келажакда курсор аниқланишини ўзгартирмасдан туриб уни танасини ўзгартиришингиз мумкин:


CREATE PACKAGE BODY emp_actions AS
/* Курсор танасини эълон қилиш */
CURSOR c1 RETURN emp%ROWTYPE IS
SELECT * FROM emp
WHERE deptno = 20; -- янги WHERE жумласи ...
END emp_actions;


FOR Loops курсоридан фойдаланиш


Кўп ҳолларда курсорни ошкор тарзда эълон қилишда OPEN, FETCH ва CLOSE жумлалари ўрнига FOR Loop курсоридан фойдаланишингиз мумкин. FOR loop цикл индексини %ROWTYPE ёзув кўринишида ошкормас тарзда эълон қилиб, курсорни очади, қаторларни кетма-кет суғуриб ёзувга олади ва барча қаторлар олингандан сўнг курсорни ёпади:
DECLARE
result temp.col1%TYPE;
CURSOR c1 IS
SELECT n1, n2, n3 FROM data_table WHERE exper_num = 1;
BEGIN
FOR c1_rec IN c1 LOOP
/* ҳисоблайди ва натижаларни сақлайди*/
result := c1_rec.n2 / (c1_rec.n1 + c1_rec.n3);
INSERT INTO temp VALUES (result, NULL, NULL);
END LOOP;
COMMIT;
END;

ёзув фақат циклнинг ичида аниқланган холос ва унинг майдонларига циклдан ташқарида мурожаат қилиб бўлмайди:


FOR c1_rec IN c1 LOOP
...
END LOOP;
result := c1_rec.n2 + 3; -- қоидага хилоф



Download 0,95 Mb.

Do'stlaringiz bilan baham:
1   ...   22   23   24   25   26   27   28   29   ...   58




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish