بتاريخ: 24 سبتمبر 200916 سنة comment_170527 السلام عليكم ورحمة الله وبركاتةانا عندى 3 جداول من ضمنهم جدولين مربوطين ببعض والثالث منفصل وقمت بعمل بروسيدجر للقيام بعملية حساب احمالى مرتب الموطفين و وضعهم فى الجدول الثالث عند تنفيذ الامر يقوم بحساب فرد واحد فقط (# تعنى انها مفتاح رئيسى) tables-----table employeeesemp_id#emp_namebasic_salary commision_percent--------------------- table monthly_salesmonth#year#emp_id#total_sales------------------ table salaryemp_id#month#year#basic_salarycommision_amounttotal_salaryاحتساب قيمة العمولة = اجمالى المبيعات الشهرية * نسبة عمولة الموظفاجمالى راتب الشهر = الرتب الاساسى + قيمة العمولة وقمت بكتابة الكود التالى ولم يقم بحساب الا فرد واحد فقط-----------------------------------------------create or replace procedure total_salary is v_emp_id varchar2(10) ; v_basic_salary number(7,3); v_commision_percent number (7,3); v_total_sales number (9,3); v_commision_amount number(9,3); v_total_salary number (7,3); v_month number (2) ; v_year number (4); ------------------------------ cursor employees is select emp_id ,basic_salary , commision_percent from employees ;------------------------------- cursor monthly_sales is select month,year,total_sales from monthly_sales where emp_id = v_emp_id ;---------------------------------begin open employees ; loop fetch employees into v_emp_id ,v_basic_salary,v_commision_percent ; exit when employees%notfound ; end loop ; close employees ;------------------------------- open monthly_sales ; loop fetch monthly_sales into v_month,v_year ,v_total_sales ; exit when monthly_sales%notfound ; end loop ; close monthly_sales ;-------------------------------------- v_commision_amount := (v_total_sales * v_commision_percent)/100 ; v_total_salary := v_basic_salary + v_commision_amount;------------------------------------ insert into salary (emp_id,month,year,commision_amount,total_salary,basic_salary) values (v_emp_id,v_month,v_year,v_commision_amount,v_total_salary,v_basic_salary);end total_salary ; تقديم بلاغ
بتاريخ: 24 سبتمبر 200916 سنة comment_170537 هذا الكود يحتسب للموظف الأخير بالجدول فقطيجب اتباع الطريفة التاليةcreate or replace procedure total_salary iscursor employees isselect emp_id ,basic_salary , commision_percentfrom employees ;cursor monthly_sales (v_emp_id varchar2) isselect month,year,total_salesfrom monthly_saleswhere emp_id = v_emp_id ;BEGINfor e1 in cursor_employees loopfor e2 in monthly_sales (e1.emp_id) loopinsert into salary(emp_id,month,year,commision_amount,total_salary,basic_salary)values(e1.emp_id,e2.month,e2.year,(e1.total_sales * e2.commision_percent)/100,e1.basic_salary + (e1.total_sales * e2.commision_percent)/100,e1.basic_salary);end loop;end loop;commit;end total_salary تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.