بتاريخ: 14 نوفمبر 201015 سنة comment_203679 السلام عليكم جميعا اعضاء ومشرفي النتدىورحمة الله وبركاتهاين الخطا في هذا الكود 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 ; وتظهر رسسالة تم انتهاك القيد الفريداين الخطأولكم مني جزيل الشكراختكم تقديم بلاغ
بتاريخ: 14 نوفمبر 201015 سنة comment_203682 أعتقد الخطأ هنا values(nvl(dept_id+i,0),dept_name,dept_loc);الكود الصحيحvalues(nvl(dept_id,0)+i,dept_name,dept_loc);تقبل تحياتي تقديم بلاغ
بتاريخ: 14 نوفمبر 201015 سنة comment_203685 وعليكم السلام ورحمة الله وبركاته 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 ; موفقة تقديم بلاغ
بتاريخ: 25 نوفمبر 201015 سنة comment_204192 ايضا المشكلة في جملة 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 ; تقديم بلاغ
بتاريخ: 25 نوفمبر 201015 سنة comment_204198 وعليكم السلام ورحمة الله وبركاته 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 زي ما تفضلت تقديم بلاغ
بتاريخ: 8 ديسمبر 201015 سنة comment_204901 الحل كما قال الاستاذ الفاضل مصطفىاولا هذه 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 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.