إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

أرجو المساعدة بخصوص هذا الخطأ


4 رد (ردود) على هذا الموضوع

#1 mohamed_abdelsalam

mohamed_abdelsalam

    مشترك

  • الأعضــاء
  • 129 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 25 September 2008 - 12:20 PM

السلام عليكم و رحمة الله
اولا كل عام وانتم بخير بمناسبة عيد الفطر المبارك وتقبل الله منا ومنكم صالح الاعمال
الموضوع ببسباطة اني عملت اجراء لحذف الصفوف المزدوجة على اساس عمودين في الجدولهما 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)
);

سبحان الله وبحمده.. سبحان الله العظيم

mohamed_3abs@hotmail.com
mohamed3absm@gmail.com

#2 hanyfreedom

hanyfreedom

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 25 September 2008 - 02:37 PM

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.o...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;


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

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

و بالتوفيق

ملفات مرفقة



#3 ORA-2008

ORA-2008

    مشترك

  • الأعضــاء
  • 192 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:FLY 4 EVER
    http://www.i3lani.co.cc

تاريخ المشاركة 25 September 2008 - 04:14 PM

مرحبا
هاي الكود اللي بيحذف كل المتكرر في الجدول: بالإعتماد على الجدول 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;

صورة

#4 hanyfreedom

hanyfreedom

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 25 September 2008 - 08:10 PM

شكراً يا أخ 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

و بالتوفيق

ملفات مرفقة



#5 mohamed_abdelsalam

mohamed_abdelsalam

    مشترك

  • الأعضــاء
  • 129 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 September 2008 - 07:02 AM

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

mohamed_3abs@hotmail.com
mohamed3absm@gmail.com