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

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

صورة
- - - - -

استفسارات عن الفنكشنز والبروسيجرز


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

#1 msb2012

msb2012

    عضو

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

تاريخ المشاركة 27 September 2010 - 07:59 PM

1-ما الفرق بين الاكتشوال و الفورمال باراميترز؟ مع امثله لو سمحت


2-كيف اعمل كول او انفوك للفنكشن او البروسيجر؟؟ اتمنى شراح دقيق مع امثله لانني لم افهمها

#2 awadalkerad

awadalkerad

    عضو

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

تاريخ المشاركة 17 October 2010 - 09:50 AM

السلام عليكم ورحمة الله وبركاته
بالنسبة للسؤال الأول
البارامترات التي توضع عند كتابة البروسسيجر أو الفنكشن تسمى الفورمال باراميترز formal parametersمثال


create or replace procedure exampl_proc (p_id Number) IS
v_ename archar2(20);
BEGIN
select ename into v_ename from employees where employee_id = p_id;
dbms_output.put_line('employee id ' ||p_id|| 'employee Name: ' ||v_ename);
END

في هذا المثال البسيط p_id هي الفورمال باراميتر
أما الأكشوال اراميترز فهي التي تستخدم عند استدعاء ال بروسيجر او الفنكشن مثال

Execut exampl_proc(200)

ال 200 هي الأكشوال ويمكن أن تكون متغير أو ثوابت ...
ملاحظة : كل فورمال باراميتر يجب أن يقابله أكشوال باراميتر
فورمال و أكشوال هي عبارة عن تسميات فقط لاغير.

أما بالنسبة للسؤال الثاني
فهناك عدة طرق لاستدعاء بروسيجر أو فنكشن

1. باستخدام تعليمة EXECUTE ثم اسم البروسيجر والباراميترات إن وجدت كما في الثال السابق وتسخدم هذه التعليمة ضمن ال sql*plus أو sql developer

2. استدعاء البروسيجر ضمن بروسيجر أخر ويتم ذلك بكتابة اسم البروسيجر و باراميتراته إن وجدت وبدون كتابة EXECUTE فقط اسم البروسيجر
3. استدعاء البروسيجر ضمن ananymous Block ويتم ذلك مثل استدعاء بروسيجر ضمن بروسيجر أخر مثال


Begin
exampl_proc(300);


بالنسبة للفنكشن فهو مثل البروسيجر تقريبا إلا أنه يجب أن يرجع قيمة عند إنتهاءه لذلك يجب مراعاة هذه النقطة كتخزين القيمة المعادة في متحول أو طباعتها أو أو ...
مثال:


Declare
v_salary employees.salary%type;
begin
v_salary = Calculate_salary_Function(&employee_id);
dbms_output.put_line(&employee_id ||' earns ' ||v_salry);
End

في هذا المثال أفترضت وجود فنكشن يأخذ رقم الموظف و يرجع قيمة راتبه ومن ثم خزنت القيمة المعادة في متحول v_salary وطبعتها.
أرجو أن يكون الشرح واضح
أي استفسار تكرم :)

#3 ramy_orcl

ramy_orcl

    عضو نشط

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

تاريخ المشاركة 26 October 2010 - 10:55 AM

جزاك الله عنا كل خير اخى فى الله
خيركم من تعلم علم وعلمه
قال تعالى("وقل اعملوا فسيرى الله عملكم ورسوله و المؤمنون" ) صدق الله العظيم.

قال عليه الصلاة و السلام" :( اذا مات ابن ادم انقطع عمله الا من ثلاث، صدقة جارية أو علم ينتفع به أو ولد صالح يدعوا له ) صدق رسول الله صلى الله عليه وسلم.


اللهم ثبت قلبي ولساني على الصلاة وذكرك يارب يا عزيز يا غفار.
Ramy.orcl@Gamil.com
من موضوعاتى :
تحليل برنامج مبيعات ومشتريات ومخازن كام
شرح كيفية نقل بيانت من اكسيل الى قاعدة البيانات بواسطة برنامج Toad بالصور
مدونتي الخاصة ارجو زيارتها والاستفادة منها http://prosystem4.blogspot.com/

#4 awadalkerad

awadalkerad

    عضو

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

تاريخ المشاركة 27 October 2010 - 01:31 PM

وإياكم أخي ramy_orcl