Friday, January 4, 2013

PL/SQL da 'Subprogram'lar va 'Package'lar


Packageni tushunish uchun dastlab 'Subprograms' nima ekanini tushunish kerak. Subprograms - bu ma'lum bir PL/SQL bloklari bo'lib, ularni o'z nomlari mavjud bo'ladi. PL/SQL da ikki xil 'Subprograms' bo'ladi:
Functions(funktsiyalar)
Procedures(protseduralar)
Umumiy holda Protseduralar ma'lum bir amallarni bajaruvchi ketma-ket(lar) desak, funktsiyalar esa ma'lum bir xisob kitoblarni amalga oshirish uchun ishlatiladi.
Subprogrammalar quyidagi qismlardan (bloklar) iborat bo'ladi:
E'lon qilish qismi (declarative part)- o'zgaruvchilar, tiplar, constantlar, exceptionlarni e'lon qilish qismidir.
Yurgizdirish qismi (executable part) - o'zgaruvchilarga qiymat berish ifodalari, yurgizdirishlarni boshqarish (controlling executions) va oracledagi ma'lumotlarni boshqarish qismi.
Istisno holatlarni ushlash qismi (exception-handling part) - bu qismi ixtiyoriy. Masalan, Yurgizish qismida qandaydir sonni 0 ga bo'ldiz bu yerda 'exception-handling' qismi ishlaydi.
Oddiy qilib aytganda subprogram bu yoki funktsiya yoki procedure bo'ladi.
Endi 'Package', u bir nechta saqlanuvchi(stored) subprogrammalarni jamlanmasi. Package ikki qismdan iborat:
Spesifikatsiyasi(specification ) - bu 'public interface' hisoblanadi. Ya'ni bu degani yoziladigan stored proceduralar, functionlar, typelar hammasi boshqa ilovalardan(application) yurgizdirishga ruxsat beradi deganidir.                       'Package sepcification' yangi package yasayotganda yoziladi. Buni boshqacharoq nomalydigan bo'lsak Package API deb ham yuritish mumkin.
  Tanasi (body)  - bu qisimda, specificationda yozilgan hamma stored procedurelar/function/cursorlarning tanasi, ya'ni ammalarni bajarish qismi yoziladi.


Package specification



Bu yerda package nomi - personnel, unda 2ta functsiya bor, ular: get_fullname(id), va get_salary(id), bu yerda id ishchining IDsi.
Body qismida esa har ikkala funktsiyani qay tarzda bajarilishi to'liq ifodalaniladi: