بتاريخ: 29 أكتوبر 200817 سنة comment_141865 لنفرض انه لدينا حقل في جدول وفيه ارقام مثال: 1248915كيف انشى بروسيجر يخرج لي الاعداد الغير موجودة في هذا الحقل بحيث يخرج عند اكبر عدد يعني يعطي الناتج التالي: 35671011121314 تقديم بلاغ
بتاريخ: 3 نوفمبر 200817 سنة comment_142171 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; جربها وصحح الاخطاء البرمجيه اذا وجدت .. وان شاء الله تحصل نتيجة تقديم بلاغ
بتاريخ: 5 نوفمبر 200817 سنة comment_142396 أتمنى ان تجد غايتك فى هذا الكود :- 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 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.