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

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

صورة
- - - - -

ماهو الخطاء في إنشاء Trigger


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

#1 Mn_902

Mn_902

    مشترك

  • الأعضــاء
  • 156 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 10 April 2007 - 11:20 PM

CREATE OR REPLACE TRIGGER CPIS_ADMIN.MAX_PRIMARY
AFTER INSERT OR UPDATE
OF ID_EMPL
,START_DT
,EFF_ON_EMP
,LTR_DT
,SER_NO
ON CPIS_ADMIN.TEST1 
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
tmpVar VARCHAR2(24);
BEGIN
tmpVar := 0;
TmpVar := TEST1.ID_EMPL || TEST1.START_DT || TEST1.EFF_ON_EMP || TEST1.LTR_DT || TEST1.SER_NO;
:NEW.MAX_PRIMARY_KEY := tmpVar;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END MAX_PRIMARY;

اريد ان اسند القيمة للحقل MAX_PRIAMRY_KEY

يعطيني خطاء في TEST1.ID_EMPL يقول انه خطاء في CONTEXT

وشكرا لكم

#2 هانى سند

هانى سند

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 11 April 2007 - 12:22 AM

أخي الكريم

يجب عليك عند الاشارة الي أسماء الأعمدة في جدول في تريجر علي الداتا بيز
ان تقوم بوضع الQUALIFIER
:NEW.COLUMN_NAME OR  :OLD.COLUMN_NAME

و هذا التصحيح

CREATE OR REPLACE TRIGGER CPIS_ADMIN.MAX_PRIMARY
AFTER INSERT OR UPDATE
OF ID_EMPL
,START_DT
,EFF_ON_EMP
,LTR_DT
,SER_NO
ON CPIS_ADMIN.TEST1 
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
tmpVar VARCHAR2(1024);
BEGIN
tmpVar := 0;
TmpVar := :NEW.ID_EMPL || :NEW.START_DT || :NEW.EFF_ON_EMP || :NEW.LTR_DT || :NEW.SER_NO;
:NEW.MAX_PRIMARY_KEY := tmpVar;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END MAX_PRIMARY;


لقد قمت أيضا بزيادة حجم المتغير لأني أعتقد ان القيمة التي تضعها فيه اكبر من ذلك الحجم الموجود

بالتوفيق

#3 Mn_902

Mn_902

    مشترك

  • الأعضــاء
  • 156 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 April 2007 - 10:55 PM

مشكوووووووووور

نجحت العملية

ومانستغني عنك

بارك الله فيك