2-Amaliy mashg’ulot. Pl / sql obzori



Download 66,29 Kb.
bet3/4
Sana17.08.2021
Hajmi66,29 Kb.
#149934
1   2   3   4
Bog'liq
2-amaliy mashgulot

Kursorlar

PL/SQL tilida muhim tushunchalardan biri kursor tushunchasi hisoblanadi. Kursor tanlashda birorta fikserlangan sondagi satrni o’z ichiga olgan nomlangan so’rovdir.

Mohiyati jihatdan kursor darcha(oyna) bo’lib, u orqali foydalanuvchi ma’lumotlar bazasi axborotlariga murojaat qiladi. Kursor xususiy holda dastur o’zgaruvchilariga aniq qiymat tayinlash uchun ishlatilishi mumkin. PL/SQL ma’lumotlar bilan manipulyatsiya qiluvchi barcha SQL ifodalarga oshkormas holda kursor e’lon qiladi. Sessiya uchun yetarli sondagi kursorlarni fayl parametrlarida OPEN-CURSOR initsializatsiya parametri bilan o’rnatiladi.

CREATE TABLE Tab1(At1 number, At2 varchar2(10));

Insert into Tab1 Value(1,’A’)

Insert into Tab1 values(2,’b’)

Insert into Tab1 values(3,’C’)

3 ko’rinishdagi kursor mavjud:

1. Oshkormas.

2. Oshkor.

3. FOR siklli kursor.

Oshkormas kursor avtomatik ravishda SELECT … INTO ko’rinishdagi operatorni bajarishda yaratiladi. Bajarish jarayonida kursor ochiladi. Shundan so’ng undagi ma’lumotlar olinadi va u yopiladi.

Bu barcha qadamlar server tomonidan bitta qadam bilan bajariladi.

Agar oshkormas kursor bittadan ortiq satr chiqarsa , unda oldindan aniqlangan TO_MANY_ROWS vaziyati vujudga keladi.



Misol

SQL> DECLARE



  1. arg1 number;

  2. arg2 VARCHAR2(1);

  3. begin

  4. select At1, At2 INTO arg1, arg2

  5. FROM Tab1where At1=1;

  6. DBMS_OUTPUT.PUT_LINE(TO_CHAR(arg1)||’’||arg2);

  7. END;

  8. /

FOR kursorni sikl doirasida mishlatish imkonini beradi. Odatda u har bir qaytariluvchi satrni qayta ishlaganda foydalaniladi. Kusor dasturni DECLARE bo’limida Cursor kalit so’zi yordamida e’lon qilinadi.

SQL> DECLARE


  1. Cursor Cur1 LS select At1,At2, FROM Tab1;

  2. V VARCHAR2(4000);

  3. Begin

  4. FOR rec IN Cur1 LOOP

  5. V1:=LTRIM(V1||’’rec.At2);

  6. END LOOP;

  7. DBMS_OUTPUT>PUT_LINE(V1)

  8. END;

  9. /

Kursordagi ma’lumotlarni joylashtiruvchi o’zgaruvchilar to’plamini aniqlashni eng oson yo’li kursor tipiga asoslangan o’zgaruvchini RECORD toifasiga (yozuviga) tegishli deb e’lon qilishdir. U holda select ifoda o’zgarsa unda uning maydoni ham o’zgaradi.

SQL> DECLARE



  1. cursor cur1 is select * FROM Tab1;

  2. Rec cur1 % ROWTYPE;

  3. Begin

  4. OPEN cur1;

  5. FOR I IN 1…3 LOOP

  6. FETCH cur1 INTO rec;

  7. Dbms_output.put_line(to_char(rec.At1)||rec.At21);

  8. END LOOP;

  9. END;

  10. /

%TYPE atributi o’zgaruvchi, konstanta yoki ustunni ma’lumot toifasini aniqlashga mo’ljallangan. Bu atribut odatda MBsi ustuni tipi bilan bog’liq bo’lgan o’zgaruvchilarni tavsiflashda ishlatiladi.

ROWTYPE atributi odatda o’zgaruvchi yozuv e’lon qilinganda ishlatiladi. Bu o’zgaruvchi yozuv jadval yoki tasavvurni yoki kursordan olinayotgan yozuvni structurasiga o’xshash structuraga ega bo’lishi kerak.

SQL> DECLARE


2 cust_rec customer%rowtype;
3 BEGIN
4 cust_rec.cust_no := 234;
5 cust_rec.lastname := 'Anderson';
6 cust_rec.firstname := 'Dave';
7 INSERT INTO customer
8 VALUES cust_rec;
9 END;
10 /

PL/SQL procedure successfully completed.


Protseduralar, funksiyalar va paketlar

Protsedura- bu aniq funksiyani bajarishga mo’ljallangan birgalikda ishlatiladigan SQL va PL/SQL tillarining operatorlar to’plamidan iborat dastur. Funksiya ham protsedura kabi operatorlar to’plami bo’lib, protseduradan doim chaqiruvchi dasturga qiymat qaytarish bilan farq qiladi. PL/SQL da yagona maqsadga tayinlanib bog’langan protsedura va funksiyalar, o’zgaruvchilar va SQL operatorlaridan iborat paketlarga birlashtiriladi. Protsedura vafunksiyalarning asosiy xususiyati shundan iboratki protsedura va funksiyalar MB si obyekytlari bo’lib keladi, ya’ni ularni tavsifi ma’lumot lug’atida saqlanadi.

PL/SQLda standart funksiyalar kabi qism programmalar ishlatiladi. PL/SQL da yagona maqsadga tayanilib bog’langan protseduralar , funksiyalar, o’zgaruvchilar, paketlarga birlashtiriladi. Funksiyalar va’lumot baza obyektlari bo’lib keladi. Ya’ni ularni tavsifi ma’lumotlar lug’atida saqlanadi. Ularni kodi esa fayl tizimida emas bevosita ma’lumotlar bazasida saqlanadi.

Funksiyalar bajariluvchi kodi ma’lumotlar bazasida kmpilyatsiya qilingan shaklda saqlanadi. Shuning uchun birorta ilova bilan ishlaganda amallarni bajarishni funksiya ko’rinishida rasmiylashtirish maqsadga muvofiqdir.

Funksiyalar ma’lumot baza obyektlari bo’lganligi uchun ular CREATE komandasi bilan yaratiladi. DROP komandasi bilan o’chirib tashlanadi.

Funksiyalarni yaratishda ma’lumot obyekti nomlari parametrni toifalari va ro’yxati va PL/SQL tilida kodlangan dasturni ishlash mantiqi berilgan bo’lishi kerak.

Yangi funksiyani nomini aniqlagandan so’ng uning toifasini va parametrlarini ko’rinishini berish kerak. Har bir parametr uchun odatda uni ko’rinishi ko’rsatiladi.

Ko’rinishlar quyidagi kalit so’zlar bilan ifodalanadi:

IN, OUT, INOUT.

IN ko’rinishidagi parametr qiymati dasturga murojaat qilmaganda aniqlanadi va shu dasturni o’zgartirmaydi. IN parametrni qiymatini dastur tanasida o’zgartirish xatolik haqida axborot chiqarishga olib keladi.

OUT prametri dasturni ishlash jarayonida parametr qiymatini o’zgartirish mumkinligini anglatadi. Ya’ni OUT ko’rinishidagi parametr u qaytaruvchi parametr hisoblanadi.

INOUT shunday parametrki, uni chaqirishda qiymat berilib tayinlanadi va u dastur qismida o’zgartirilishi mumkin.

Oracle da funksiyani aniqlash operatori quyidagi ko’rinishga kelgan.

CREATE [ OR REPLACE ] FUNKTION funksiya_nomi { parametr_nomi [{ IN/OUT/INOUT}] ma’lumotlar_toifasi [,..]}] RETURN ma’lumotlar_toifasi { IS/AS} PL/SQL da_dastur.

Misol:

Funksiya parametrlarida berilgan. Ko’rsatilgan intervalga tushuvchi sanalarga mos atribut qiymatlarini yig’indisini hisoblash funksiyasini yarating.

TAB1

Create Table Tab1 (AT1 number, AT2 DATE);



INSERT INTO TAB1 values(5, SYSDATE);

INSERT INTO TAB2 values (6, SYSDATE);


Dasturi

SQL>CREATE OR REPLACE FUNKTION

FUNKTION SUM REC INT

2 (arg 1 IN number, arg2 IN DATE) RETURN NUMBER

3 AS Sum var number:=0;

4 begin


5 Select Sum (at1) INTO Sumvar FROM Tab1;

6 Where AT2 BETWEEA Arg1 and A rg2;

7 RETURN SUMVAR;

8 END;


9 /
SQL>begin;

2 DBMS_OUTPUT.PUT_LINE (SumRecInt (SYSDATE- 1/2, SYSDATE +1/2));

3 END;

4 /
DROP va funksiyalar DROP buyrug’I yordamida yo’qotiladi.



Funksiyalar, o’zgaruvchilar va toifalar umumiy mazmun bo’yicha birlashtirilib, yagono ma’lumot baza obyekti ko’rinishida rasmiylashtiriladi va uni dastur paketi deb ataladi. PL/SQL tilining paketlarining xususiyati shundan iboratki, uning interfeys va bajaruvchi qismlari alohida kompilyatsiya qilinadi va saqlanadi.

CREATE OR REPLACE PACKAGE custpack AS


TYPE cust_info_t IS RECORD
cust_no NUMBER,
first_purchase DATE := SYSDATE);
END;
/

Function returns a record

CREATE OR REPLACE FUNCTION create_cust


RETURN custpack.cust_info_t
IS
cust_rec custpack.cust_info_t;
BEGIN
SELECT s1.NEXTVAL INTO cust_rec.cust_no FROM dual;
RETURN(cust_rec);
END;
/

Example continues. . .

Package

Package esa stored procedure larni bir «papka»ga birlashtirib turadi. Bu bilan dasturchiga dasturni tushunishga yordam beradi. Masalan: Foydalanuvchi ro'yhatdan o'tishi, profilini tahrirlashi, parolini o'zgartirishi, parolni tiklashi kabi amallar bir «oila»ga tegishli amallar bo'lib, ullarni bitta package ga joylashtirish mumkin. Packagelar ikki qismdan SPEC va BODY qismidan tashkil topadi. Spec qismida tashqaridan chaqirilishi lozim bo'lgan stored procseduralar e'lon qilinsa body qismida o'sha proceduralarning o'zi yoziladi.


Masalan:
Tablitsa

create table Users

(

  User_Name  Varchar2(20),



  Fio        Varchar2(50),

  Password   Varchar2(50)

)

tablespace USERS



  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64K



    minextents 1

    maxextents unlimited

  );

Packagening SPEC'i



Create Package REGISTER Is

  Function Add_User (p_User_Name In Users.User_Name%Type,

                     p_Fio In Users.Fio%Type,

                     p_Password In Users.Password%Type,

                     Out_Message Out Varchar2) Return Number;

End;



Download 66,29 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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