roro2005 بتاريخ: 14 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 14 نوفمبر 2010 السلام عليكم جميعا اعضاء ومشرفي النتدىورحمة الله وبركاتهاين الخطا في هذا الكود declare dept_id dept.deptno%type; dept_name dept.dname%type:='Computer'; dept_loc dept.loc%type:='Baghdad'; begin select max(deptno) into dept_id from dept where deptno=dept_id; for i in 40..90 loop insert into dept values(nvl(dept_id+i,0),dept_name,dept_loc); end loop; end ; وتظهر رسسالة تم انتهاك القيد الفريداين الخطأولكم مني جزيل الشكراختكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ramadan1100 بتاريخ: 14 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 14 نوفمبر 2010 أعتقد الخطأ هنا values(nvl(dept_id+i,0),dept_name,dept_loc);الكود الصحيحvalues(nvl(dept_id,0)+i,dept_name,dept_loc);تقبل تحياتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 14 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 14 نوفمبر 2010 وعليكم السلام ورحمة الله وبركاته select max(deptno) into dept_id from dept where deptno=dept_id; شرط ال where ليس له معنى تمامافلو تم ازالة الشرط سيكون الكود صحيحلو تم تكملة الكود بعد ازالة شرط سينتج ايضا error سببه ان القيم المدخلة لرقم القسم أكبر من حجمها في ال structure الجدول الي هي 2 declare dept_id dept.deptno%type; dept_name dept.dname%type:='Computer'; dept_loc dept.loc%type:='Baghdad'; begin select max(deptno) into dept_id from dept ; --where deptno=dept_id; message(dept_id); for i in 1..40 loop insert into dept values(nvl(dept_id+i,0),dept_name,dept_loc); end loop; commit; end ; موفقة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
amjad ghanim بتاريخ: 25 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 25 نوفمبر 2010 ايضا المشكلة في جملة select انها قد ترجع اكثر من قيمة .لذا يجب ان تتضع شروط في جملة select حتى ترجع قيمة وحدهالحل الافضلهو ان تجعل جملة select ضمن cursor كالمثال التالي declare dept_id dept.deptno%type; dept_name dept.dname%type:='Computer'; dept_loc dept.loc%type:='Baghdad'; cursor c1 is select max(deptno) into dept_id from dept ; c1_rec c1%rowtype; begin message(dept_id); for i in 1..40 loop insert into dept values(nvl(dept_id+i,0),dept_name,dept_loc); end loop; commit; end ; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Sireen بتاريخ: 25 نوفمبر 2010 تقديم بلاغ مشاركة بتاريخ: 25 نوفمبر 2010 وعليكم السلام ورحمة الله وبركاته select max(deptno) into dept_id from dept where deptno=dept_id; شرط ال where ليس له معنى تمامافلو تم ازالة الشرط سيكون الكود صحيحلو تم تكملة الكود بعد ازالة شرط سينتج ايضا error سببه ان القيم المدخلة لرقم القسم أكبر من حجمها في ال structure الجدول الي هي 2 declare dept_id dept.deptno%type; dept_name dept.dname%type:='Computer'; dept_loc dept.loc%type:='Baghdad'; begin select max(deptno) into dept_id from dept ; --where deptno=dept_id; message(dept_id); for i in 1..40 loop insert into dept values(nvl(dept_id+i,0),dept_name,dept_loc); end loop; commit; end ; موفقة ال where معموله comment ممكن يكون في مشكله ب structure زي ما تفضلت اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miash80 بتاريخ: 8 ديسمبر 2010 تقديم بلاغ مشاركة بتاريخ: 8 ديسمبر 2010 الحل كما قال الاستاذ الفاضل مصطفىاولا هذه deptno=dept_id; ليس له معنى ولن ينفذ ابداثانيا for i in 40..90 loop الحقل deptno في الجدول معرف 2 وعند تنفيذ الــــ loop سيعترض لانه نهاية الــloop 90 واذا جمعنا 90 + 40 اخر قيمة للرقم القسم تكون النتيجة 130 يعني ثلاث خانات واحنا معرفين هذا الحقل خانتين فقط لذلك عدل قيمة نهاية لتكون مع مجموع اخر قيمة لهذا الحقل تساوي 99 يعني خانتينالكود الصحيح للــــ loop هو for i in 40..59 loop اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.