FOR loop жумласида сўровостилардан фойдаланиш мумкин:
DECLARE
bonus REAL;
BEGIN
FOR emp_rec IN (SELECT empno, sal, comm FROM emp) LOOP
bonus := (emp_rec.sal * 0.05) + (emp_rec.comm * 0.25);
INSERT INTO bonuses VALUES (emp_rec.empno, bonus);
END LOOP;
COMMIT;
END;
SELECT жумласида ифодаларни ҳамроҳ ном орқали белиглаш мумкин:
CURSOR c1 IS
SELECT empno, sal+NVL(comm,0), job FROM ...
Қуйидаги мисолда sal+NVL(comm,0) ифода wages ҳамроҳ ном орқали белигиланган:
CURSOR c1 IS
SELECT empno, sal+NVL(comm,0) wages, job FROM ...
Мурожаатда ҳамроҳ номидан фойдаланиш мумкин:
IF emp_rec.wages < 1000 THEN ...
FOR loop курсорига параметрларни узатиш мумкин:.
DECLARE
CURSOR emp_cursor(dnum NUMBER) IS
SELECT sal, comm FROM emp WHERE deptno = dnum;
total_wages NUMBER(11,2) := 0;
high_paid NUMBER(4) := 0;
higher_comm NUMBER(4) := 0;
BEGIN
/* итерациялар сони emp_cursor қайтарадиган қаторлар сонига тенг бўлиши лозим */
FOR emp_record IN emp_cursor(20) LOOP
emp_record.comm := NVL(emp_record.comm, 0);
total_wages := total_wages + emp_record.sal +
emp_record.comm;
IF emp_record.sal > 2000.00 THEN
high_paid := high_paid + 1;
END IF;
IF emp_record.comm > emp_record.sal THEN
higher_comm := higher_comm + 1;
END IF;
END LOOP;
INSERT INTO temp VALUES (high_paid, higher_comm,
'Total Wages: ' || TO_CHAR(total_wages));
COMMIT;
END;
Курсор ўзгарувчиларидан фойдаланиш
PL/SQL тилида курсор ўзгарувчиси мавжуд.
Курсор ўзгарувчиси нима?
Курсор ўзгарувчиси худди C ёки Паскал кўрсатгичларига ўхшаб бирор элементнинг ўрнига уни хотирадаги адресини сақлайди.
Do'stlaringiz bilan baham: |