الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيف عرض صفوف من جدول بشكل عشوائي

Featured Replies

بتاريخ:

انا عارف الدالة الي بتعمل ارقام عشوائية 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;


ارجوااااااااا المساعدة

بتاريخ:

جرب هذا :

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

بتاريخ:
  • كاتب الموضوع

الكود في غلط؟؟؟؟؟؟؟؟؟؟؟؟

بتاريخ:

أخى الكريم \ 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;
/





و لو في اى شىء غامض فى الكود .... قولى و انا هشرحه .

و بالتوفيق

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.