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


Download 0.95 Mb.
bet25/58
Sana28.12.2022
Hajmi0.95 Mb.
#1011518
1   ...   21   22   23   24   25   26   27   28   ...   58
Bog'liq
PL-SQL Маъруза матни

Курсорни очиш


Курсор очиш учун OPEN командасидан фойдаланиш лозим:
DECLARE
CURSOR c1 IS SELECT ename, job FROM emp WHERE sal < 3000;
...
BEGIN
OPEN c1;
...
END;


Курсор параметрларини узатиш


OPEN жумласи орқали курсорга параметрларни узатиш мумкин:
DECLARE
emp_name emp.ename%TYPE;
salary emp.sal%TYPE;
CURSOR c1 (name VARCHAR2, salary NUMBER) IS SELECT ...

OPEN c1(emp_name, 3000);


OPEN c1('ATTLEY', 1500);
OPEN c1(emp_name, salary);


Курсордан қаторларни олиш


FETCH жумласи орқали курсор қаторларини битта-битта суғуриб олиш мумкин:
FETCH c1 INTO my_empno, my_ename, my_deptno;
ёки

LOOP
FETCH c1 INTO my_record;


EXIT WHEN c1%NOTFOUND;
-- process data record
END LOOP;

Сўровдаги ҳар бир ўзгарувчи курсор очилганда ҳисобланади. Қуйидаги мисолда ҳар бир SALARY қиймати 2 га кўпайтириб олинади:


DECLARE
my_sal emp.sal%TYPE;
my_job emp.job%TYPE;
factor INTEGER := 2;
CURSOR c1 IS SELECT factor*sal FROM emp WHERE job = my_job;
BEGIN
...
OPEN c1; -- бу ерда factor 2-га тенг
LOOP
FETCH c1 INTO my_sal;
EXIT WHEN c1%NOTFOUND;
factor := factor + 1; --FETCH таъсири йўқ END LOOP;
END;

Курсор қийматини ўзгартириш учун қатор INTO жумлалларидан фойдаланиш мумкин:


DECLARE
CURSOR c1 IS SELECT ename FROM emp;
name1 emp.ename%TYPE;
name2 emp.ename%TYPE;
name3 emp.ename%TYPE;
BEGIN
OPEN c1;
FETCH c1 INTO name1; -- биринчи қатор олинади
FETCH c1 INTO name2; -- иккинчи қатор олинади FETCH c1 INTO name3; -- учинчи қатор олинади ...
CLOSE c1;
END;


Курсорни ёпиш


Курсорни ёпиш учун CLOSE жумласидан фойдаланиш лозим:
CLOSE c1;



Download 0.95 Mb.

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




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