بتاريخ: 6 نوفمبر 200817 سنة comment_142449 انا عارف الدالة الي بتعمل ارقام عشوائية dbms_random.value بس ازاي احدد الصف المسترجع يعني لو عاوز ارجع الصف 5 فقط او الصف 20 بالنحديد انا عملت الكود ده بس منفعش بيقلي no data found declare next_row number; rec emp%rowtype; begin select trunc(dbms_random.value(1,14)) into next_row from dual; select * into rec from emp where rownum=next_row; dbms_output.put_line(rec.ename); end; ارجوااااااااا المساعدة تقديم بلاغ
بتاريخ: 7 نوفمبر 200817 سنة comment_142482 جرب هذا : SELECT EMPLOYEE_ID,EMPLOYEE_CODE,EMPLOYEE_NAME FROM (SELECT ROWNUM AS RN, EMPLOYEE.* FROM EMPLOYEE ORDER BY EMPLOYEE_ID) E WHERE RN = TRUNC(DBMS_RANDOM.VALUE(1,3),0) AND ROWNUM = 1 تقديم بلاغ
بتاريخ: 7 نوفمبر 200817 سنة comment_142497 أخى الكريم \ sasa87هل تريد أسترجاع صفوف معينة ولا عاوز تسترجع كل الصفوف بطريقة عشوائية ؟؟؟على أى حال أنا كتبتلك كوديين يتناسبان مع الغرضيين .الكود الأول :-لأسترجاع الصفوف بشكل عشوائى .... نفذ هذا الكود :- DECLARE TYPE rec_type IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; rec rec_type; CURSOR c IS SELECT * FROM emp ORDER BY DBMS_RANDOM.VALUE; BEGIN OPEN c; FETCH c BULK COLLECT INTO rec; CLOSE c; FOR i IN rec.FIRST .. rec.LAST LOOP DBMS_OUTPUT.put_line (rec (i).empno || ' ' || rec (i).ename); END LOOP; END; / الكود الثانى :-أما اذا كنت عاوز ترجع صفوف محدده - مثالاً من الصف الخامس الى الحادى عشر - فنفذ هذا الكود :- DECLARE TYPE rec_type IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; rec rec_type; CURSOR c IS SELECT * FROM emp WHERE ROWID IN (SELECT ROWID FROM emp WHERE ROWNUM <= 11 MINUS SELECT ROWID FROM emp WHERE ROWNUM < 5); BEGIN OPEN c; FETCH c BULK COLLECT INTO rec; CLOSE c; FOR i IN rec.FIRST .. rec.LAST LOOP DBMS_OUTPUT.put_line (rec (i).empno || ' ' || rec (i).ename); END LOOP; END; / -------------------أما أنك تريد أن تسترجع صف واحد فقط معين ؟؟؟نفذ هذا الكود ،،، و بعد التنفيذ أكتب رقم الصف الذى تريده ان يظهر :- DECLARE TYPE rec_type IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; rec rec_type; CURSOR c IS SELECT * FROM emp WHERE ROWID IN ( SELECT ROWID FROM emp WHERE ROWNUM <= &&row_number MINUS SELECT ROWID FROM emp WHERE ROWNUM < &row_number); BEGIN OPEN c; FETCH c BULK COLLECT INTO rec; CLOSE c; FOR i IN rec.FIRST .. rec.LAST LOOP DBMS_OUTPUT.put_line (rec (i).empno || ' ' || rec (i).ename); END LOOP; END; / و لو في اى شىء غامض فى الكود .... قولى و انا هشرحه .و بالتوفيق تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.