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

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

صورة
- - - - -

الفرق بين trigger و function


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

#1 brothers

brothers

    عضو

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

تاريخ المشاركة 15 May 2006 - 02:14 PM

السلام عليكم ورحمة الله وبركاته
اود يا زملائى الكرام ان اعرف ما الفرق بين trigger و function وخصوصا متى استخدم هذا ومتى استخدم تلك ؟
ومتى استخدم procedure ومتى استخدم function؟
حيث اننى اعرف ان function بتقوم ب return a value ولكنى اريد ان اعرف الفرق بينهما فى الغرض منهما وليس فى syntax الخاص بهما
يا ريت لو فى مثال لهذه الحالات ولكن بعد الشرح حيث شرح الفرق بينهم اهم من المثال
وجزاكم الله كل خير

#2 MuDesOR

MuDesOR

    عضو

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

تاريخ المشاركة 15 May 2006 - 07:12 PM

مبدئيا باختصار شديد:
Procedurce
Function
تقبل بارامتر وتنفذ بناء على طلب المستخدم لها Explicity

Trigger
تنفذ بشكل تلقائي وهي مرتبطة بجدول معين Implicity

#3 blackpanther9090

blackpanther9090

    عضو

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

تاريخ المشاركة 16 May 2006 - 11:21 AM

aslam walikom
i just wanna add few words about functions and procedures
functions has to have a return value and this return can be used in the main prog but a procedure may or may not have a return
and also we can call the function from a select query but the procedure cant be called from a select query
I HOPE IF I WERE WRONG I WILL FIND SOMEBODY TO CORRECT ME AND THANKS FOR THIS GREAT WEBSITE

#4 dubainet

dubainet

    عضو

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

تاريخ المشاركة 17 May 2006 - 11:37 PM

السلام عليكم ..

Trigger
يعمل تلقائياً بحيث أنك اذا عملت update على table .. هذا على سبيل المثال .. فان الـ trigger الذي قمت بكتابته .. ينفذ اوامراً تلقائياً ..

(بالاحمر هي اوامر تلقائية يقوم بها الداتابيس في حال تم تفعيل الـ trigger )
مثال1:
كتبت trigger وقلت فيه : اذا حدث اي delete على الـ table الاول .. ادخل القيم المحذوفة في الـ table الثاني ..

مثال 2:
كتبت trigger وقلت فيه: اذا تم تطبيق جملة insert على الـ table الفلاني .. وكانت القيمة التي ادخلتها اكثر من 100 .. ادخل القيمة المدخلة مضروبة في 5 .. وذلك في الـ colomn الثاني ..


Function
تطبقه على مجموعة من الـ data لتحصل على قيم اخرى (واحيانا مشابهه) .. اي تطبق عليها بعد العمليات الحسابة واعادة الصياغة وما الى شابه ..

مثال1:
select count(*) from table1

select sum(salary) from table2

select salary from table2 where avg(salary) > 1000


مثال 2: يستخدم ايضاً في القيم ..
declare
x varchar2(15);
y number := 222;
begin
x := to_char(y);
end;

sum و count و avg و to_char جميعها functions .. تطبق على قيمة لتخرج لك قيمة اخرى ..


Procedure
بعض الاوامر التي تريد تطبيقها جملة واحدة او ايضا تطبيق عمليات حسابية وما شابه .. ومثل ما ذكروا لاخوان قبلي .. لا يمكنك وضعها في select statement .. وممكن ان تجعل لها مدخلات ومخرجات ..

مثال1:
نعمل procedure يقوم بجمع قيم العمود الاول بقيم العمود الثاني .. ويضعه في العمود الثالث ..
ولتفعيله .. التالي:
begin
procedure_name;
end;

أو:
exec procedure_name

مثال2:
نعمل واحداً يقوم باستقبال قيمة (لنقل اسم) .. فيعمل على طبع تاريخ ميلاد الشخص وعنوانه على الشاشة ويحسب عمره ويطبعه ايضاً ..
exec procedure_name(Ahmad);


هذا باختصار ..
اذا تطلب الموضوع توضيحا اكثر .. ترى ما يردك الا لسانك ..

مع التحية .. ;)

#5 hobaa

hobaa

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

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

تاريخ المشاركة 04 June 2006 - 12:11 PM

trigger

هو عباره عن مجموعه من الاوامر تنطلق او تنفذ عند حدوث حدث معين مثل
on logon
on logout
befor insert
befor delete

اما ال procdure

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

ويمكن ان تعيد قيمه (ليس شرط ).

function

هى مثل الاجراء ولكن لبد من ان تعيد قيمه (شرط اساسى ).

اتمنى ان يكون الشرح سهل وبسيط

ايهاب وجدى


Oracle Developer

Oracle DBA
Oracle Instructor

Egypto-Soft



#6 rrehabb

rrehabb

    مشترك

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

تاريخ المشاركة 04 June 2006 - 11:45 PM

trigger&function/trigger&procedure
يوجد فرق اساسى بين استخدام الprocedure&function
وهو اننا بستخدم الfunction فى حالة ان الكود الى انا كتباه عشان يحسب عملية حسابية مثلا او يرجع لى true or false
procedure بستخدمه عشان اقوم بمهمة زى مثلا مهمة ادخال او تعديل فى احد الجداول
والاحتياج الاساسى للfunction او procedure كان عشان عدم تكرار الكود بمعنى ان المهمة الى بيقوم بيها جزء من الكود الى انا بكتبه بتتكرر معايا كتير فى البرنامج بتاعى فبدل ما اكتبه فى كل مرة لاء انا اعمله procedure او function (على حسب الجزء ده مناسب ليه ايه )عشان يتم استدعائها فى كل مكان احتاجها فيه وانت ممكن تتخيل طبعا ده ممكن يوفر لك وقت اد ايه وكتابة وكمان البرنامج بتاعك يكون فيه سهولة فى الmaintenance
ال trigger لا مجال للمقارنه بينه وبين الfunction ,procedure
اللهم الا حاجه واحده ان ال trigger مكان ممكن يتحدد بيه امته يتم الكود ده سواء كان function او procedure