بتاريخ: 4 مايو 201313 سنة comment_235761 السلام عليكم ورحمة الله أصدقائي اريد وضع متغير في جملة الكيرسول بعد where يحنوي على متغيرات وجمل شرطية لاكن كما تعلمون لايمكن وضع جمل شرطية قبل begin وفي نفس الوقة لايمكن وضع جملة الكيرسول بعد begin وإيكم الكود declare xsql varchar(200); if :cont.bra_name is null then xsql:= xsql||'and 1=1'; else xsql:='bra_name like''%'||:cont.bra_name||'%'''; end if; if :cont.bra_id is null then xsql:= xsql||'and 1=1'; else xsql:='bra_id ='||:bra_id; end if; cursor se is select bra_id,bra_name from brands where xsql; begin open se; loop fetch se into :brands.bra_id, :brands.bra_name, exit when se%notfound; next_record; end loop; close se; go_block('cont'); end; وبارك الله فيكم تقديم بلاغ
بتاريخ: 4 مايو 201313 سنة comment_235762 إستخدم REF_CURSOR أو Cursor with parameters لو الأمر غير واضح قول تقديم بلاغ
بتاريخ: 5 مايو 201313 سنة كاتب الموضوع comment_235774 الأمر غير واضح انا لسة صغير في اوريكل ارجو توضيح Cursor with parameters و REF_CURSOR بكود وبارك الله فيك تقديم بلاغ
بتاريخ: 5 مايو 201313 سنة comment_235789 طيب خيرا ان شاء الله Cursor with parameters هي عبارة عن Cursor جدا ولكن تعمل اعتمادا علي parameters طريقة تعريفها زي تعريف Cursor العادية مع اضافة الاقواس لتحديد الـ parameters CURSOR cursor_name(parameter_name datatype, parameter_name datatype, .....) IS select_statement; مثال: SET SERVEROUTPUT ON DECLARE CURSOR EmpForDeptCur (pDeptNo NUMBER) IS SELECT Employee_id, First_name || ' ' || Last_name FROM employees WHERE Department_id = pDeptNo; EmployeeNum NUMBER(3); EmployeeName VARCHAR2(100); BEGIN OPEN EmpForDeptCur (50); LOOP FETCH EmpForDeptCur INTO EmployeeNum, EmployeeName; DBMS_OUTPUT.PUT_LINE(EmployeeNum || ' ' || EmployeeName); EXIT WHEN EmpForDeptCur%NOTFOUND; END LOOP; CLOSE EmpForDeptCur; END; أما الـ REF_CURSOR فهي عبارة عن Cursor علي شكل Variable تستخدم لتكوين Result set اي مجموعة من الـ Rows الـ Cursor العادية تعرف الـ Select statement فيها ثم تستخدمها بينما Ref Cursor يتم تعرفها بشكل عام كمتغير ثم فتحها وتحديد الـ Select statement في نفس الوقت وهو ما تود بظبط فعله انت مثال: SET SERVEROUTPUT ON DECLARE TYPE EmpForDeptCur IS REF CURSOR; MyRefCurVar EmpForDeptCur; EmployeeNum NUMBER(3); EmployeeName VARCHAR2(100); BEGIN OPEN MyRefCurVar FOR SELECT Employee_id, First_name || ' ' || Last_name FROM Employees WHERE Department_id = 50; LOOP FETCH MyRefCurVar INTO EmployeeNum, EmployeeName; DBMS_OUTPUT.PUT_LINE(EmployeeNum || ' ' || EmployeeName); EXIT WHEN MyRefCurVar%NOTFOUND; END LOOP; CLOSE MyRefCurVar; END; تقديم بلاغ
بتاريخ: 6 مايو 201313 سنة كاتب الموضوع comment_235827 تعجز اصابعي عن كتابة كلمات الشكرلك اخي repotec بارك الله فيك وجزاك عنا الف خير تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.