Oldingi maqolada dastlabki protsedurani yaratib, uni ishlashini ko‘rib chiqdik. Endi PL/SQL protsedurali dasturlash tilining ichiga kirib boramiz. Hozirgacha biz faqat yozuvlarni ekranga chiqarishni bilib oldik, endi o‘zgaruvchilar bilan ishlashni boshlaymiz.
O‘zgaruvchilar bu — biror qiymatni o‘zida saqlab turib, kerak paytda ishlatish uchun foydalaniladi. O‘zgaruvchilar beriladigan qiymatga qarab, xar hil tipda bo‘lishi mumkin. O‘zgaruvchilak DECLARE deb nomlangan blokda e’lon qilinadi va kod ichida chaqirilib, biror qiymat beriladi. Misol ko‘ramiz, 2 ta butun tipli o‘zgaruvchi e’lon qilib, ularga ma’lum bir qiymat beramiz va biror amaldan foydalanib, ularni ekranga chiqaramiz. Bu misolni ishlash uchun, mashhur SQL*PLUS muhitini ochib, ichiga quyidagilarni yozamiz.

SQL> SET SERVEROUTPUT ON -- Need first start
SQL> DECLARE
2 A INTEGER;
3 B INTEGER;
4 BEGIN
5 A := 3;
6 B := 5;
7 DBMS_OUTPUT.enable;
8 DBMS_OUTPUT.put_line(A+B);
9 END;
10 /

8
PL/SQL procedure successfully completed

Ko‘rib turganingizdek, A va B o‘zgaruvchi e’lon qilinib, 3 va 4 qiymatlar berilmoqda. Natija sifatida ularning yig‘indisi chiqarilmoqda.
YUqoridagi e’lon qilishda, qiymatni birdaniga berib ketish ham mumkin, ya’ni

DECLARE
A INTEGER := 3;
B INTEGER := 7;
BEGIN
.
.

Yana bir narsa, ekranga chiqarish tartibli va qoidali bo‘lishi uchun, albatta chiqadigan ma’lumotlarni matn ko‘rinishiga o‘tkazish tavsiya qilinadi:

DBMS_OUTPUT.enable;
DBMS_OUTPUT.put_line(TO_CHAR(A+B));

Agar, matn ko‘rinishdagi biror sonni son ko‘rinishidagilar bilan aralashtirib ishlatmoqchi bo‘lsangiz, matn ko‘rinishini son tipiga o‘zgartirish lozim, lekin natijani yana matn ko‘rinishiga o‘tkazish kerak.

SQL> DECLARE
2
3  A INTEGER := 3;
4  B INTEGER;
5  K VARCHAR2(2) := 12;
6  BEGIN
7  B := 5;
8          DBMS_OUTPUT.enable;
9          DBMS_OUTPUT.put_line(TO_CHAR(TO_NUMBER(K)*A+B));
10  END;
11  /

41
PL/SQL procedure successfully completed

Bu misolda ko‘rinib turibdiki, arifmetik amallar ketma-ketligi matematikada qanday bo‘lsa, bu yerda ham shunaqa(ko‘paytirish keyin qo‘shish amali).

VARCHAR(2) — bu yozuv tipi hisoblanadi, qavs ichidagi 2 soni esa, bu yozuv nechta simvoldan iboratligini bildiradi.

TO_CHAR — bu funksiya bo‘lib, natijani yana bir yozuv tipi char ga o‘tkazib beradi.

TO_NUMBER — bu ham funksiya hisoblanadi va natijani sonli tipga o‘zgartirib beradi(o‘zgartirishni iloji bo‘lsa).

Bir hil tiplar son tipiga tegishli bo‘lishi mumkin, lekin ular yozuv tipiga xos qilib e’lon qilinadi, bu degani bu qiymat yozuv tipiga tegishli. Undan tashqari yozuv tipi qo‘shtirnoq(«) yoki opostrf(‘) ichiga yozilishi mumkin, sizga matn ichida  qo‘shtirnoq kerak bo‘lib qolsa nima qilasiz. Shu savollarga javob topish uchun quyidagi misolni ko‘ramiz. E’lon qilishga va natijaga e’tibor bering. SQL*PLUS ni ochamiz va yozishni boshlaymiz:

SQL> DECLARE
2
3  A VARCHAR2(1) := ' ';
4  B VARCHAR2(128) := 'Hello World!!!';
5  C VARCHAR2(128) := 'How ''are'' you?';
6  D VARCHAR2(128) := 'Hello Bob - "ok"!';
7  E VARCHAR2(128) := '12345';
8  F VARCHAR2(128) := '01/01/1989';
9  G VARCHAR2(128) := '!@#$%^&*()_":;<,.?';
10  H VARCHAR2(128) := ''' ''';
11
12  I NUMBER := 12345;
13  J NUMBER := -12345;
14  K NUMBER := 12345.023745;
15  L NUMBER := 100.;
16  M NUMBER := 1.0237E2;
17  N NUMBER := 1.0237E-2;
18  O NUMBER := 0.34223;
19  P NUMBER := .321434;
20
21  BEGIN
22
23          DBMS_OUTPUT.enable;
24
25          DBMS_OUTPUT.put_line(A);
26          DBMS_OUTPUT.put_line(B);
27          DBMS_OUTPUT.put_line(C);
28          DBMS_OUTPUT.put_line(D);
29          DBMS_OUTPUT.put_line(E);
30          DBMS_OUTPUT.put_line(F);
31          DBMS_OUTPUT.put_line(G);
32          DBMS_OUTPUT.put_line(H);
33
34          DBMS_OUTPUT.put_line(TO_CHAR(I));
35          DBMS_OUTPUT.put_line(TO_CHAR(J));
36          DBMS_OUTPUT.put_line(TO_CHAR(K));
37          DBMS_OUTPUT.put_line(TO_CHAR(L));
38          DBMS_OUTPUT.put_line(TO_CHAR(M));
39          DBMS_OUTPUT.put_line(TO_CHAR(N));
40          DBMS_OUTPUT.put_line(TO_CHAR(O));
41          DBMS_OUTPUT.put_line(TO_CHAR(P));
42
43  END;
44  /

Hello World!!!
How ‘are’ you?
Hello Bob — «ok»!
12345
01/01/1989
!@#$%^&*()_»:;<,.?
‘ ‘
12345
-12345
12345,023745
100
102,37
,010237
,34223
,321434
 
PL/SQL procedure successfully completed

Keling bu yozuvlarni birma bir ko‘rib chiqaylik

A VARCHAR2(1) := ‘ ‘;                                                    — probel

B VARCHAR2(128) := ‘Hello World!!!’;                    — qator

C VARCHAR2(128) := ‘How »are» you?’;                  — ‘ simvolini chiqarish

D VARCHAR2(128) := ‘Hello Bob — «ok»!’;              —  » simvolini chiqarish

E VARCHAR2(128) := ‘12345’;                                     — bu son emas, yozuv

F VARCHAR2(128) := ’01/01/1989′;                          — bu sana emas, bu yozuv

G VARCHAR2(128) := ‘!@#$%^&*()_»:;<,.?’;      — xar hil simvollarni chiqarish

H VARCHAR2(128) := »’ »’;                                           — «‘ ‘» ko‘rinishdagi simvollarni chiqaradi(qo‘shtirnoq, probel, qo‘shtirnoq)

Endi sonlar haqida:

I NUMBER := 12345;                       —butun son

J NUMBER := -12345;     — inkor(minus(tarjimasini topolmadim)) son

K NUMBER := 12345.023745;      — kasr son

L NUMBER := 100.;                         — o aniqlikdagi son

M NUMBER := 1.0237E2;              — murakkab son

N NUMBER := 1.0237E-2;             — minus darajali son

O NUMBER := 0.34223; — 0 butunli son

P NUMBER := .321434;  — 0 butunni yozmasa ham bo‘ladi

Hozircha shu, agar chunarsiz bo‘lsa, xat yozing yoki kommentariya qoldiring.