Основы (асослар)
Курсор ўзгарувчиларини бошқариш
Download 0.95 Mb.
|
PL-SQL Маъруза матни
Курсор ўзгарувчиларини бошқаришOPEN-FOR, FETCH, ва CLOSE жумлалари орқали курсор ўзгарувчисини бошқариш мумкин. Курсор ўзгарувчисини очишOPEN-FOR жумласи ўзгарувчисини кўп-қаторли сўров билан боғлайди, сўровни бажаради ва натижавий тўпламни аниқлайди. Унинг синтаксиси қуйидагича: OPEN {курсор_ўзгарувчиси_номи | :host_ курсор_ўзгарувчиси_номи } FOR select_жумласи; Масалан: IF NOT emp_cv%ISOPEN THEN /* Курсор ўзгарувчисини очиш */ OPEN emp_cv FOR SELECT * FROM emp; END IF; Курсор ўзгарувчиси формал параметр сифатида: CREATE PACKAGE emp_data AS ... TYPE EmpCurTyp IS REF CURSOR RETURN emp%ROWTYPE; PROCEDURE open_emp_cv (emp_cv IN OUT EmpCurTyp); END emp_data; CREATE PACKAGE BODY emp_data AS ... PROCEDURE open_emp_cv (emp_cv IN OUT EmpCurTyp) IS BEGIN OPEN emp_cv FOR SELECT * FROM emp; END open_emp_cv; END emp_data; Курсор ўзгарувчиларини очиш учун алоҳида-сақланадиган процедуралардан ҳам фойдаланиш мумкин: CREATE PACKAGE cv_types AS TYPE GenericCurTyp IS REF CURSOR; TYPE EmpCurTyp IS REF CURSOR RETURN emp%ROWTYPE; TYPE DeptCurTyp IS REF CURSOR RETURN dept%ROWTYPE; ... END cv_types; Пакетда аниқланган курсордан фойдаланиш: CREATE PROCEDURE open_emp_cv (emp_cv IN OUT cv_types.EmpCurTyp) AS BEGIN OPEN emp_cv FOR SELECT * FROM emp; END open_emp_cv; Шартга қараб курсорни очиш: CREATE PACKAGE emp_data AS TYPE GenericCurTyp IS REF CURSOR; TYPE EmpCurTyp IS REF CURSOR RETURN emp%ROWTYPE; PROCEDURE open_emp_cv (emp_cv IN OUT EmpCurTyp, choice NUMBER); END emp_data; CREATE PACKAGE BODY emp_data AS PROCEDURE open_emp_cv ( emp_cv IN OUT EmpCurTyp, choice NUMBER) IS BEGIN IF choice = 1 THEN OPEN emp_cv FOR SELECT * FROM emp WHERE comm IS NOT NULL; ELSIF choice = 2 THEN OPEN emp_cv FOR SELECT * FROM emp WHERE sal > 2500; ELSIF choice = 3 THEN OPEN emp_cv FOR SELECT * FROM emp WHERE deptno = 20; END IF; END open_emp_cv; END emp_data; Қулайроқ бўлиши учун курсор ўзгарувчисини ҳар хил турни қайтарувчи сўровларни бажарувчи процедурага узатишингиз мумкин: CREATE PACKAGE BODY emp_data AS PROCEDURE open_cv ( generic_cv IN OUT GenericCurTyp, choice NUMBER) IS BEGIN IF choice = 1 THEN OPEN generic_cv FOR SELECT * FROM emp; ELSIF choice = 2 THEN OPEN generic_cv FOR SELECT * FROM dept; ELSIF choice = 3 THEN OPEN generic_cv FOR SELECT * FROM salgrade; END IF; END open_cv; END emp_data; Download 0.95 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling