الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في IF..THEN..ELSE في PL/SQL

مغلق
بدأه talal*c في 6 يناير 2003 · 4 رد · 741 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ,,,

أخواني أنا عندي سؤال في أوركل PL/SQL و هو عن الجملة IF..THEN..ELSE

حيث كنت قد عملت Trigger في الحدث Insert OR Delete OR Update

و أريد معرفة الحدث أي واحد منها فكتبت هذا الكود:

if inserting then
bla bla bla
elseif deleting then
bla bla bla
elseif updating then
bal bla bla
else
error
end if;

طبعاً bla bla bla ممكن تكون أي جملة و error أيضاً كذلك :)

مشكلتي في طريقة كتابة الـ IF..THEN..ELSE فقط .

مع تحياتي ,,, أخوكم / طلال.

#2

السلام عليكم

أخي طلال فقط قم بتغيير جملة ال elseif إلى elsif هذي هي المشكلة .

تحياتي للجميع;):rolleyes:

#3

السلام عليكم

شكرا اخي محمد

اريد ان اقدم مثال لزياده التوضيح

اخي talal*c ارجوا ان تطبق هذا المثال

قم بإنشاء الجدول التالي :-

CREATE TABLE BILLS
(
BILL_NUMBER NUMBER(6)CONSTRAINT PK_BILLS PRIMARY KEY,
C_NUMBER NUMBER(6),
APARTENTS_NO NUMBER(3),
BILL_DATE DATE NOT NULL,
RENT_COST NUMBER(7,3)NOT NULL,
CALL_COST NUMBER(7,3)NOT NULL,
SERVIES_COST NUMBER(7,3)NOT NULL
);

وايضا الجدول التالي :-

CREATE TABLE AUDITING_BILLS
(
APARTENTS_NO NUMBER(3),
BILL_NUMBER NUMBER(6),
C_NUMBER NUMBER(6),
C_USER VARCHAR2(20),
COMM VARCHAR2(20),
C_DATE DATE,
BILL_DATE1 DATE,
BILL_DATE2 DATE,
RENT_COST1 NUMBER(10),
RENT_COST2 NUMBER(10),
CALL_COST1 NUMBER(10),
CALL_COST2 NUMBER(10),
SERVIES_COST1 NUMBER(10),
SERVIES_COST2 NUMBER(10)
);

والان نريد ان ننشئ الTrigger الذي سيكون مثالنا فيه ... وهذا الTrigger

سيقوم بعمل Auditing لإي عمليه تحدث على جدول BILLS سواء العمليه

هي INSERT OR UPDATE OR DELETE .... وسيقوم هذا الTrigger بتسجيل

البيانات ونوع العمليه التى تمت في جدول AUDITING_BILLS ... والTrigger هو :

CREATE OR REPLACE TRIGGER AUDIT_BILLS
BEFORE INSERT OR UPDATE OR DELETE ON BILLS
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO AUDITING_BILLS VALUES(:NEW.APARTENTS_NO,:NEW.BILL_NUMBER,:NEW.C_NUMBER,
USER,'INSERT',SYSDATE,NULL,:NEW.BILL_DATE,NULL,:NEW.RENT_COST,NULL,:NEW.CALL_COST,NULL,
:NEW.SERVIES_COST);
ELSIF DELETING THEN
INSERT INTO AUDITING_BILLS VALUES(:OLD.APARTENTS_NO,:OLD.BILL_NUMBER,:OLD.C_NUMBER,
USER,'DELETE',SYSDATE,:OLD.BILL_DATE,NULL,:OLD.RENT_COST,NULL,:OLD.CALL_COST,NULL,
:OLD.SERVIES_COST,NULL);
ELSE
INSERT INTO AUDITING_BILLS VALUES(:NEW.APARTENTS_NO,:NEW.BILL_NUMBER,:NEW.C_NUMBER,
USER,'UPDATE',SYSDATE,:OLD.BILL_DATE,:NEW.BILL_DATE,:OLD.RENT_COST,:NEW.RENT_COST,
:OLD.CALL_COST,
:NEW.CALL_COST,:OLD.SERVIES_COST,:NEW.SERVIES_COST);
END IF;
END;
/

عمر باعقيل

كندا - مونتريال

baaqeel@msn.com

#4

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

شكراً جزيلاً أخي محمد و عمر (gift) (f) (f)

و الله ماني عارف وش اقول ؟! :o

أنا مبرمج سي و سي++ و باسكال و كنت اكتب else كما في هذه اللغات :D

و الله جلست 3 ايام احاول و اقرى كتاب اوركل مره و ثنتين و ثلاث و لكن لا فائده

أخي عمر:

شكراً لك, أنا أعرف كيف أكتب الـ Trigger و لكن لم احب ان اكتبه هنا لأنه جزء

من Assiment مطلوب منا في الجامعه و لم ارد طرحة قبل موعد التسليم :)

(f)

جزاكم الله ألف ألف ألف ألف خير أخواني و أنا داخل على اوركل و اتمنى ان

استفيد منكم كثيراً ;)

أخوكم / طلال.

#5

السلام عليكم ,,,

أخي عمر أرجو أن تطالع رسائلك الخاصه :)

أخوك / طلال.

هذا الموضوع مغلق.

مواضيع مشابهة