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

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

صورة
- - - - -

عندي مشكلة في Trigger


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

#1 مستحيل

مستحيل

    عضو

  • الأعضــاء
  • 49 مشاركة

تاريخ المشاركة 01 May 2009 - 02:06 AM

السلام عليكم ورحمة الله وبركاته

طبعا انا كنت ابرمج بلغة فيجوال بيسك 6 وبعدها فيجوال بيسك دوت نت بس من تجربتي بالاعمال والسوق لقيت ان الاوراكل مهمة ومطلوبة اكثر من قبل الشركات والوظائف اكثرها لاصحاب الاوراكل

طبعا موقعي هو :::::::::::::::: جدة - السعودية

بديت اتعلم الاوراكل من فترة لحالي - سلف ستادي << يقاله يعرف انجليزي

<< الرجال بيقص قصة حياته ؟

المهم اخواني اخواتي ماطول عليكم بدخل بالموضوع

تعلمت SQL ومشيت فيها بسرعة ودخلت في PL/SQL ومشيت فيها بعد تمام بس واجهتني مشكلة وانا ادرس الـــ Trigger

طبعا البرنامج التالي كتبته على SQL*PLUS وهو كالتالي

============== الكود ==============
CREATE OR REPLACE TRIGGER check_sal
AFTER INSERT OR UPDATE OF sal, job ON emp
FOR EACH ROW
WHEN (new.sal !='PRESIDENT')
DECLARE
v_minsal check_sal_emp.minsal%type;
v_maxsal check_sal_emp.maxsal%type;
BEGIN SELECT MINSAL, MAXSAL
INTO v_minsal,v_maxsal FROM check_sal_emp
WHERE JOB = :new.job;
IF (:new.sal < :old.sal) then
RAISE_APPLICATION_ERROR(-20230,'SALARY HAS BEEN DECREASED');
ELSIF (:new.sal < v_minsal or :new.sal > v_maxsal) then
RAISE_APPLICATION_ERROR(-20225,'SALARY OUT OF RANGE');
ELSIF (:new.sal > :old.sal * 1.1) then
RAISE_APPLICATION_ERROR(-20235,'SALARY INCREASED MORE THEN 10%');
END IF;
END;

=================== تم انشاء الـ Trigger بنجاح ===============

الان المشكلة عندما اقوم بتعدل الراتب في الجدول emp

=============== تعديل الراتب sal في الجدول emp ==============

UPDATE emp
SET sal = 500
;

طبعا جربت بطريقة ثانية


UPDATE emp
SET sal = 500
WHERE empno = 7499
;

====================

يطلع لي خطأ يقول

ERROR at line 1 :
ORA-01722 : invalid number
===================

حاولت فيه مادري ليش يطلع الخطأ ومادري وش غلطي

ارجو من الخبراء مساعدتي في حل المشكلة وماهي غلطتي في البرنامج هذا ؟

مع فائق الشكر === للعلم هذي اول مشاركة لي واول موضوع :rolleyes:

اخوكم مستحيل

#2 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,559 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 01 May 2009 - 02:20 AM

السلام عليكم

WHEN (new.sal !='PRESIDENT')


ما هو نوع المتغير sal هل هو رقمى او حرفي

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#3 مستحيل

مستحيل

    عضو

  • الأعضــاء
  • 49 مشاركة

تاريخ المشاركة 04 May 2009 - 11:52 PM

اي والله كيف غابت عني هذي

sal نوع رقمي مو حرفي

يعطيك الف عافية استاذي امجد

ان شاء الله ما وقع بالخطأ هذا مرة ثانية :rolleyes:

بس الحين خلاص عرفت invalid number يعني عدم تطابق الـ data type


مستحيل انسى غلاك

#4 labhan

labhan

    عضو

  • الأعضــاء
  • 20 مشاركة

تاريخ المشاركة 09 May 2009 - 03:01 PM

mmken teb3atly el script bta3 el tabel dah
check_sal_emp
3shan a3raf asa3dak