Основы (асослар)
Download 0.95 Mb.
|
PL-SQL Маъруза матни
Номлаш қоидалариЎзгармаслар, ўзгарувчилар, курсорлар, курсор ўзгарувчилари, процедуралар, функциялар ва пакетлар каби барча PL/SQL дастури бирликлари ягона номлаш қоидаларига бўйсунадилар. Номлаш содда, мураккаб, узоқланган ёки мураккаб ва узоқланган бўлиши мумкин: raise_salary(...); -- содда emp_actions.raise_salary(...); -- мураккаб raise_salary@newyork(...); -- узоқланган emp_actions.raise_salary@newyork(...); -- мураккаб ва узоқланга SQL командаларида локал ва формал ўзгарувчилар жадвал номидан устунлик қилади (агарда улар бир хил номланган бўлса); Мисол 1.
... URDATE emp SET bonus = 500 WHERE --нотўғри! END LOOP; цикл ўзгарувчиси деб тушунилади. Мисол 2. P ROCEDURE calc_bonus (emp NUMBER, bonus OUT REAL ) IS avg_sal REAL; Нотўғри! BEGIN SELECT AVG (sal) INTO avg_sal FROM emp WHERE ... END; формал параметр деб қабул қилади. Бу ҳолатда жадвал номини фойдаланувчи номини кўрсатиш орқали аниқлаш мумкин: Мисол 3. P ROCEDURE calc_bonus (emp.NUMBER, bonus OUT REAL ) IS Arg_sal REAL; ... Тўғри! BEGIN SELECT AVG (sal) INTO avg_sal FROM scott.emp WHERE ... END; Жадвал устунларининг номи локал ва формал ўзгарувчилар номидан устунлик қилади ( агарда улар бир хил номланган бўлса); Мисол 1. DECLARE
BEGIN DELETE FROM emp WHERE ename = ename; ... END; Ушбу процедура бажарилганда EMP жадвалининг ҳамма қаторлари ўчирилади. Бу ноқулай вазиятдан чиқиш учун еки бошқа ўзгарувчи киритиш лозим: DECLARE My-ename CHAR (10); ... ё ин ки блок меткасини ишлатиш лозим: main DECLARE Ename CHAR ( 10): = ‘KING’; BEGIN DELETE FROM emp WHERE ename = main.ename; ... END; ёки қисмдастур номини фойдаланиш мумкин: PROCEDURE calc_bonus (empno NUMBER, bonus out REAL ) IS avg_sal REAL; name CHAR (10); job CHAR (1S): = ‘SALESMAN’ BEGIN SELECT AVG (sal) INTO avg_sal FROM emp WHERE job = cals_bonus.job; /* локал ўзгарувчига мурожаат */ SELECT ename INTO name FROM emp WHERE empno = cals_bonus.empno: -- параметрга мурожаат END; Download 0.95 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling