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

بتاريخ:

السلام عليكم و رحمة الله
اولا كل عام وانتم بخير بمناسبة عيد الفطر المبارك وتقبل الله منا ومنكم صالح الاعمال
الموضوع ببسباطة اني عملت اجراء لحذف الصفوف المزدوجة على اساس عمودين في الجدولهما c1,c2
والاجراء مظبوط من غير اخطاء بس اثناء تشغيل الاجراء يطلع الخطأ ده

ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "HR.REMOVE_DUOBLE", line 12
ORA-06512: at line 1



والكود نفسه

create or replace procedure remove_duoble
 is
 max_row number;
 co1 varchar(2);
 co2 varchar(2);
 co22 varchar(2);
 co11 varchar(2);
  begin select max(rownum)  into max_row from split_table;
     for counter in 1..max_row loop
          select 1,2  
          into co1,co2 from split_table 
          where rownum=counter;
          for inner_counter in counter+1..max_row loop
              select 1,2 into co11,co22 from split_table 
              where rownum=counter;
               if (co1=co11) and (co2=co22)  then
                      delete from split_table where rownum=inner_counter;
                end if;
           end loop;
     end loop;
end;



والجدول المستخدم داخل الكود split_table

create table split_table
(
c1 varchar2(1),
c2 varchar2(1),
c3 varchar2(1),
c4 varchar2(1),
c5 varchar2(1),
c6 varchar2(1),
c7 varchar2(1),
c8 varchar2(1)
);

بتاريخ:

ORA-01403 no data found




Cause: In a host language program, all records have been fetched. The return code from the fetch was +4, indicating that all records have been returned from the SQL query.

Action: Terminate processing for the SELECT statement



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

الاول كنت مفروض انك تدينا البيانات اللى عندك فى الجدول علشان نقدر نطبق عليها ، هيكلة الجدول مش كفاية .... و طبعاً انت هتعطينا البيانات فى هيئة جمل insert ، قم بتحميل الملف المرفق لمعرفة كيفية عمل ذلك .

و الى ان تقوم بذلك ,,,,, قم بقراءة هذه الوصلة ..... ستفيدك فيما تريده ( اللى على حسب اللى فهمته منك انك عاوز تمسح الصفوف المتكرره )
http://www.araboug.org/ib/index.php?showtopic=26531

و كمشاركة زيادة منى قم بعمل هذه الاكواد لزيادة الوضوح لكيفية معرفة الصفوف المتكرره :-

create table t1 ( id number , N varchar2(11));

insert into t1 values (1,'as');
insert into t1 values (1,'as');
insert into t1 values (1,'as');
insert into t1 values (1,'as');
insert into t1 values (2,'db');
insert into t1 values (2,'db');
insert into t1 values (2,'db');
insert into t1 values (2,'db');

commit; 

Select ID, N
      , count(*) as Occurrences
from T1 HAVING count(*) > 1
group by ID, N;



و بكده تكون شوفت الصفوف المتكرره و تعرف كمان عدد التكرار.
لكن لو هتمسح فشوف الرابط اللى انا اتدهولك.

و انا منتظر ردك فى حال اذا مازالت المشكلة مستمرة.

و بالتوفيق

Export_Table_Data.zip

بتاريخ:

مرحبا
هاي الكود اللي بيحذف كل المتكرر في الجدول: بالإعتماد على الجدول T1 اللي عملو الأخ hanyFreedom

delete from t1 where id in (Select ID
                                           from T1 having count(*)>1 -- there is more than one record from this id in table...
                                           group by ID);
commit;

بتاريخ:

شكراً يا أخ ORA-2008 على هذا الكود ..... و هو فعلاً بيحذف كل المتكرر فى الجدول ...... بارك الله فيك انت فعلاً شاب مجتهد.

و فى حال أذا أراد أخونا mohamed_abdelsalam أن يحذف الصفوف المتكرره و يبقى على صف واحد من هذه الصفوف ، حتى لا يحدث خلل فى التسلسل الرقمى للعمود ... فأنا أنصح بأستخدام ال ROWID .... وسوف اعرض هنا الكود بالكامل من اول تكوين الجدول و مليئه بالبيانات و حتى معرفة المتكرر و مسحه مع ابقاء صف واحد منه .

CREATE TABLE t1 ( ID NUMBER , n VARCHAR2(11));
--------------------------------------------------------------------------------
INSERT INTO T1 ( ID, N ) VALUES ( 1, 'as'); 
INSERT INTO T1 ( ID, N ) VALUES ( 1, 'as'); 
INSERT INTO T1 ( ID, N ) VALUES ( 1, 'as'); 
INSERT INTO T1 ( ID, N ) VALUES ( 1, 'as'); 
INSERT INTO T1 ( ID, N ) VALUES ( 2, 'db'); 
INSERT INTO T1 ( ID, N ) VALUES ( 2, 'db'); 
INSERT INTO T1 ( ID, N ) VALUES ( 2, 'db'); 
INSERT INTO T1 ( ID, N ) VALUES ( 2, 'db'); 
INSERT INTO T1 ( ID, N ) VALUES ( 3, 'ghg'); 
INSERT INTO T1 ( ID, N ) VALUES ( 3, 'ghg'); 
INSERT INTO T1 ( ID, N ) VALUES ( 4, 'jhg'); 
INSERT INTO T1 ( ID, N ) VALUES ( 5, 'ikjy'); 
INSERT INTO T1 ( ID, N ) VALUES ( 6, 'uiy'); 
INSERT INTO T1 ( ID, N ) VALUES ( 7, 'hnh'); 
INSERT INTO T1 ( ID, N ) VALUES ( 7, 'hnh'); 
INSERT INTO T1 ( ID, N ) VALUES ( 7, 'hnh'); 
--------------------------------------------------------------------------------
COMMIT ;
--------------------------------------------------------------------------------
SELECT   ID, n, COUNT (*) AS occurrences
   FROM hr.t1 HAVING COUNT (*) > 1
GROUP BY ID, n;
--------------------------------------------------------------------------------
DELETE FROM t1 WHERE ROWID NOT IN (SELECT   MAX (ROWID)
                             FROM t1 GROUP BY ID);
--------------------------------------------------------------------------------
---------------------------END-----------------------------------------------
--------------------------------------------------------------------------------



و يمكن ألقاء نظرة على الملف المرفق لمعرفة شكل ال OUTPUT

مع ملاحظة ان هذا الكود تم نسخه من الرابط الذى قمت بوضعه فى مشاركتى السابقة .... و الذى كتبه هو الأخ Slamonty

و بالتوفيق

dup_val_output.txt

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

انا متشكر جدا يا جماعة علي هذه الاضافات الجميلة شكرا ا/هاني وشكرا ا/ORA-2008
الاكواد شغالة تمام

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

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

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

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

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

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.