السلام عليكم ورحمة الله وبركاته
أخواني الأعزاء تكلمنا فيما سبق عن Implicit Cursor وذكر وظائفه وبعض الأمثله عليه على الرابط :
http://arabteam.nicmatic.com/vb/showthread...3?threadid=3405
واليوم نتكلم عن بعض الأمثله للنوع الثاني Explicit Cursor وقد شرحنا ايضا هذا النوع في الوصله السابقه وللأهميه يرجى قراءت الدرس السابق قبل الدخول في هذا الدرس .
[C][F=Navy] ** إنشـاء Explicit Cursor ** [/F][/C]
DECLARE
CURSOR emp_cursor IS
SELECT empno,ename from emp;
بلأمكان ان تنشأ عدة كيرسرات معا
CURSOR dept_cursor IS
SELECT * FROM dept
WHERE deptno =10;
BEGIN
..
..واذا اردت ان تضع بعض المتغيرات قيجب ان تضعها قبل Cursor مثال :
DECLARE
v_ename emp.ename%TYPE;
v_empno emp.empno%TYPE;
CURSOR emp_cursor IS
SELECT empno,ename FROM emp;
BEGIN
..
..[C][F=Navy]فتح الـ Cursor[/F][/C]
OPEN cursor_name;
[C][F=Navy]FETCH cursor_name[/F][/C]
لجلب قيم الصف الحالي وو ضعه في متغيرات لأخراجه
FETCH cursor_name INTO (variable1,........)
مثال :
DECLARE
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
CURSOR emp_cursor IS
SELECT empno, enmae
FROM emp;
BEGIN
OPEN emp_cursor;
FOR i IN 1..10 LOOP
FETCH emp_cursor INTO v_empno, v_ename
..
..
END LOOP;
END;[C][F=Navy]إغـلاق الـ Cursor[/F][/C]
CLOSE cursor_name; في المثال السابق لم يغلق الـ Cursor ولأغلاقه .. .. END LOOP; CLOSE emp_cursor; END;
سوف اكمل باقي الشرح اليوم ان شاء الله .
والله من وراء القصد
ابو عبدالآله