الانتقال إلى المحتوى
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

بتاريخ:

لنفرض انه لدينا حقل في جدول وفيه ارقام مثال:
1
2
4
8
9
15
كيف انشى بروسيجر يخرج لي الاعداد الغير موجودة في هذا الحقل بحيث يخرج عند اكبر عدد يعني يعطي الناتج التالي:
3
5
6
7
10
11
12
13
14

بتاريخ:

decLare

num1 number;
num2 number;
n number;
cont number;

begin SELECT max(num) into num1 from tab;
select min(num) into num2 from tab;
n=1;
while n<=num1
loop
select count(*) into cont from tab where num=n
 if cont<=0 then
   يعنى ان هذا هوالرقم الغير موجود في الجدول وبالتالي يتم عمل عرض له باي طريقة تحب.
 end if;
  n=n+1;
end loop;


جربها وصحح الاخطاء البرمجيه اذا وجدت .. وان شاء الله تحصل نتيجة

بتاريخ:

أتمنى ان تجد غايتك فى هذا الكود :-

CREATE TABLE t (ID NUMBER , NAME VARCHAR2(14));

----------------------------------------------------

INSERT INTO t
           (ID, NAME
           )
    VALUES (1, 'qq'
           );
INSERT INTO t
           (ID, NAME
           )
    VALUES (2, 'ww'
           );
INSERT INTO t
           (ID, NAME
           )
    VALUES (4, 'dfsd'
           );
INSERT INTO t
           (ID, NAME
           )
    VALUES (8, 'sdf'
           );
INSERT INTO t
           (ID, NAME
           )
    VALUES (9, 'oii'
           );
INSERT INTO t
           (ID, NAME
           )
    VALUES (15, 'nfgnd'
           );
COMMIT ;

----------------------------------------------------

CREATE OR REPLACE PROCEDURE missing_values (
  v_tab     VARCHAR2,
  v_pkey    VARCHAR2,
  v_where   VARCHAR2 DEFAULT NULL
)
IS
  v_cursor      INTEGER;
  v_cur1        INTEGER;
  v_val         NUMBER;
  v_ret         INTEGER;
  v_next_num    NUMBER          := 1;
  v_sql         VARCHAR2 (6000)
     :=    'SELECT a.'
        || v_pkey
        || '+'
        || v_next_num
        || ' FROM '
        || v_tab
        || ' a, '
        || v_tab
        || ' b
WHERE a.'
        || v_pkey
        || '+'
        || v_next_num
        || ' = b.'
        || v_pkey
        || ' (+)
AND b.'
        || v_pkey
        || ' IS NULL
AND a.'
        || v_pkey
        || ' <> (SELECT max(z.'
        || v_pkey
        || ') FROM '
        || v_tab
        || ' z)
'
        || v_where
        || ' ORDER BY '
        || 'a.'
        || v_pkey;
  v_new_sql     VARCHAR2 (8000);
  v_value       NUMBER;
  v_ignore      INTEGER;
  v_new_value   NUMBER;
BEGIN
  v_cursor := DBMS_SQL.open_cursor;
  DBMS_SQL.parse (v_cursor, v_sql, DBMS_SQL.native);
  DBMS_SQL.define_column (v_cursor, 1, v_value);
  DBMS_OUTPUT.put_line ('              ');
  DBMS_OUTPUT.put_line ('Missing Values');
  DBMS_OUTPUT.put_line ('--------------');
  DBMS_OUTPUT.put_line ('              ');
  v_ignore := DBMS_SQL.EXECUTE (v_cursor);

  LOOP
     v_ret := DBMS_SQL.fetch_rows (v_cursor);
     EXIT WHEN v_ret = 0;
     DBMS_SQL.COLUMN_VALUE (v_cursor, 1, v_value);
     v_next_num := 1;
     v_new_value := v_value - 1;

     LOOP
        v_next_num := v_next_num + 1;
        v_new_sql :=
              'SELECT a.'
           || v_pkey
           || '+'
           || v_next_num
           || '
FROM '
           || v_tab
           || ' a, '
           || v_tab
           || ' b
                               WHERE a.'
           || v_pkey
           || '+'
           || v_next_num
           || ' =
b.'
           || v_pkey
           || ' (+) AND b.'
           || v_pkey
           || ' IS NULL
                               AND a.'
           || v_pkey
           || ' <> (SELECT
max(z.'
           || v_pkey
           || ') FROM '
           || v_tab
           || ' z) AND a.'
           || v_pkey
           || ' =
'
           || v_new_value;
        v_cur1 := DBMS_SQL.open_cursor;
        DBMS_SQL.parse (v_cur1, v_new_sql, DBMS_SQL.native);
        v_ignore := DBMS_SQL.EXECUTE (v_cur1);
        v_ret := DBMS_SQL.fetch_rows (v_cur1);
        DBMS_SQL.close_cursor (v_cur1);

        IF v_ret = 0
        THEN
           IF v_next_num = 2
           THEN
              DBMS_OUTPUT.put_line (TO_CHAR (v_value));

              IF DBMS_SQL.is_open (v_cur1)
              THEN
                 DBMS_SQL.close_cursor (v_cur1);
              END IF;

              EXIT;
           END IF;

           DBMS_OUTPUT.put_line (   TO_CHAR (v_value)
                                 || '-'
                                 || TO_CHAR (v_new_value + v_next_num - 1)
                                );

           IF DBMS_SQL.is_open (v_cur1)
           THEN
              DBMS_SQL.close_cursor (v_cur1);
           END IF;

           EXIT;
        END IF;
     END LOOP;
  END LOOP;

  DBMS_SQL.close_cursor (v_cursor);
END;
/



ملف ال Missing_Numbers_Output.txt المرفق به شكل المخرجات ،
و ملف ال Missing_Numbers.txt هو الذى به الكود السابق ذكره فى ال Code Box

و بالتوفيق

Missing_Numbers.txt

Missing_Numbers_Output.txt

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

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

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

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

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

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.