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

Procedure

Featured Replies

بتاريخ:

السلام عليكم اخواني في هذا المنتدى ارجو المساعدة في انجاز عملي فقد كونت بروسيجر لكنه لم يكتمل طبعا انا عندي جدول لسمه ماستر فاريد عمل بروسيجر يحدث على هذا الجدول وبالتحديد الclass_code

 

 

SQL> desc master;
 C?C??                                     IC???    C????
 ----------------------------------------- -------- -------------
 ID                                        NOT NULL NUMBER(6)
 F_NAME                                    NOT NULL VARCHAR2(12)
 S_NAME                                    NOT NULL VARCHAR2(12)
 T_NAME                                    NOT NULL VARCHAR2(12)
 L_NAME                                             VARCHAR2(12)
 NATIONAL_NO                                        NUMBER(12)
 ENLIST_DATE                                        DATE
 CLASS_CODE                                         NUMBER(2)
 ADDRESS_CODE                                       NUMBER(2)
 JOB_GRADE_CODE                                     NUMBER(2)
 DEPARTMENT_CODE                                    NUMBER(2)
 VAC_ID                                             NUMBER(6)
 ALLOWANC_ID                                        NUMBER
 EDUCATION_CODE                                     NUMBER(2)
 MISTAKES_ID                                        NUMBER
اما البروسيجر
create or replace procedure suzan (id_emp in number) as
id_emp   number; 
cursor  c1 is select id from master where id=id_emp;
begin
 open c1
 loop
 fetch c1 into id_emp;
 exist when c1%notfound;
 end loop;
 close c1;
if
    select months_between
     (sysdate,(select enlist_date from master where id=id_emp))/12 from dual
>5 then 
update master 
set master.class_code=9
end if;
end suzan;
/
 

 

فيا اخواني اللي يعرف الخطأ لايبخل علي بالجواب وجزاكم الله خير 

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:

السلام علكيم

جرب هذا الكود:

 

 

 

CREATE OR REPLACE PROCEDURE suzan (id_emp IN NUMBER)
AS
   CURSOR c1
   IS
      SELECT ID,
             enlist_date
        FROM MASTER
       WHERE ID = id_emp;
BEGIN
   FOR rec IN c1
   LOOP
      IF MONTHS_BETWEEN (SYSDATE, rec.enlist_date) / 12 > 5
      THEN
         UPDATE MASTER
            SET MASTER.class_code = 9
          WHERE ID = rec.ID;
      END IF;
   END LOOP;
END suzan;
/
 
بتاريخ:

الكود بتاعك :

 

exist when ........

 

انت كاتبها غلط

اكتب

exit

بتاريخ:

Create or replace procedure suzan(id_emp in number) as
	cursor c1 is select enlist_date
			from master
			where id = id_emp;
	dt date;
begin
	open c1;
	fetch c1 into dt;
	if c1%found and months_between(sysdate, dt) > 5;
		update master
		set class_code = 9
		where id = id_emp;
	end if;
	close c1;
end;

 

أولاً لا تستطيع تعريف id_emp مرةً أخرى داخل ال code

ثانياً لا داعٍ لل loop لأنه عادةً رقم الموظف id يكون unique لا يتكرر و لا يوجد موظفان يحملان الرقم نفسه، و لكن إن كان هناك أكثر من موظف يحمل نفس الرقم فقد كتبت لك ال code التالي يحوي ال loop. 

ثالثاً لا داعٍ للقسمة على 12 لأن عدد الأشهر بين تاريخ الجهاز و enlist_date سيكون دائماً بين 0 و 11 فالقسمة على 12 ستجعله أقل من 1 في جميع الأحوال

هذا هو ال code مع loop

 

 

Create or replace procedure suzan(id_emp in number) as
	cursor c1 is select enlist_date
			from master
			where id = id_emp;
	dt date;
begin
	open c1;
	loop
		fetch c1 into dt;
		exit when c1%notfound;

		if months_between(sysdate, dt) > 5 then
			update master
			set class_code = 9
			where id = id_emp;
		end if;
	end loop;
	close c1;
end; 
 

 

 

 

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

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

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

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

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

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.