6-modul · 7-dars: PL/pgSQL asoslari
Daraja: O'rta
PL/pgSQL asoslari. PostgreSQL bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi PL/pgSQL asoslari tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya PL/pgSQL PostgreSQL ichida o'zgaruvchi, shart, sikl va xato ushlash bilan ishlaydigan protsedurali tildir. Bir nechta SQL qadamini serverga yaqin bajarishda qulay, lekin oddiy to'plamli SQLni keraksiz siklga aylantirish sekinlashtirishi mumkin. DECLARE o'zgaruvchilarni, BEGIN ... END bajariladigan qismni belgilaydi. Dollar quoting, masalan $$ ... $$, matn ichidagi qo'shtirnoqlarni ko'p escape qilmaslik uchun delimiterdir; nested bloklarda $body$ kabi boshqa nom tanlanadi. DO anonim blokni bir marta bajaradi; u qayta ishlatiladigan nomlangan funksiya emas. %ROWTYPE ma'lum jadval qatori tuzilishini, RECORD esa so'rov natijasiga qarab shakllanadigan qatorni bildiradi. CONSTANT qiymati e'lon vaqtida belgilanadi. IF/ELSIF/ELSE va CASE shartlarni ifodalaydi; LOOP, WHILE, FOR va FOREACH takrorlash uchun bor. SELECT ... INTO natijani o'zgaruvchiga yozadi; bir nechta yoki umuman qator chiqmasligi uchun kerakli qoidani tanlang. Server ichidagi biznes kod ham versiyalanishi va test qilinishi kerak.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/6-module%28database%29.md) [Rasmiy qo‘llanma](https://www.postgresql.org/docs/current/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
DO $$
DECLARE jami integer := 0;
BEGIN
FOR i IN 1..3 LOOP jami := jami + i; END LOOP;
RAISE NOTICE 'Jami: %', jami;
END $$;
Keng tarqalgan xatolar
- Million qatorni bittalab LOOP qilishdan oldin bitta UPDATE yoki agregat bilan yechilishini tekshiring.
Mashqlar
- 1 dan 10 gacha juft sonlarni hisoblaydigan blokni FOR va to'plamli SELECT bilan ikki usulda yozing.
- Bir xil vazifani LOOP bilan va bitta UPDATE bilan yozib, EXPLAIN ANALYZE orqali solishtiring.
Teglar: pdp, modul-06, nazariya