بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
بناء على طلب من أخي العزيز أبو سعد.
قمت بشرح طريقه إنشاء ال FUNCTION بشي من التفصيل فأرجو من الله أن يعجبكم
في البداية يجب أن نعرف:
1- ماهو ال FUNCTION: هو PL/SQL Block تستطيع إعطائه متغير أو أكثر ويقوم بأسترجع متغير واحد فقط.
2- إنشاء ال FUNCTION:
CREATE [OR REPLACE] FUNCTION function_name ( argument1 IN datatype1, argument2 IN datatype2, ……) RETURN datatype IS PL/SQL Block;
3- الشرح:
1- إذا كان هناك FUNCTION منشئه سابقا ولها نفس الاسم وتريد حذف ال FUNCTION السابقة واستبدالها بالجديدة نستخدم OR REPLACE
2- نقصد بال function_name هي اسم FUNCTION.
3- نقصد بال argument هي اسم المتغير الذي تريد إنشائه.
4- نقصد بال IN أن هذى المتغير سوف ترسل قيمته من خارج ال FUNCTION.
5- نقصد بال datatype هو نوع المتغير الذي نريد تعريفه.
6-نقصد بال RETURN datatype هو نوع المتغير الذي سوف يتم استرجاعه.
7- نقصد بال PL/SQL Block هو ال Body لل FUNCTION.
============
4- مثال على ال FUNCTION.:
SQL> CREATE OR REPLACE FUNCTION get_sal
(v_id IN NUMBER)
RETURN NUMBER
IS
v_salary NUMBER :=0;
BEGIN
SELECT sal
INTO v_salary
FROM EMP
WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
/5- عمل المثال :
يقوم هذى ال FUNCTION بأسترجع الراتب لموظف معين .
6- تنفيذ المثال:
في البداية نقوم بتعريف متغير لكي نخزن فيه الراتب ولكي نتمكن من طباعته :
SQL> VARIABLE g_salary NUMBER
ثم نقوم بتنفيذ ال FUNCTION مع تحيد رقم الموظف ومكان تخزين الراتب:
SQL>EXECUTE :g_salary := get_sal ( 7934 )
ثم نقوم بطباعه المتغير الذي أسمينه g_salary ويحتوي على قيمه الراتب للموظف رقم 7934:
SQL>PRINT g_salary
7- مثال آخر:
SQL>CREATE OR REPLACE FUNCTION dollars_of_rs
RETURN NUMBER
IS
v_dollars_of_rs NUMBER :=3.75;
BEGIN
RETURN (v_dollars_of_rs);
END dollars_of_rs;
/8- عمل المثال :
يقوم هذى ال FUNCTION بإرجاع قيمه الريال السعودي بالنسبة للدولار.
9- تنفيذ المثال:
في البداية نقوم بتعريف متغير لكي نخزن قيمه الريال ولكي نتمكن من طباعته:
SQL> VARIABLE g_rs NUMBER
ثم نقوم بتنفيذ ال FUNCTION مع تحديد مكان تخزين قيمه الريال:
SQL>EXECUTE :g_rs := dollars_of_rs ;
ثم نقوم بطباعه المتغير الذي أسمينه g_rs :
SQL>PRINT g_rs
10- مثال آخر:
SQL>CREATE OR REPLACE FUNCTION dollars_to_rs
(v_dollars IN NUMBER)
RETURN NUMBER
IS
v_ rs NUMBER :=0;
BEGIN
v_ rs := v_dollars * 3.75;
RETURN (v_rs);
END dollars_to_rs;
/11- عمل المثال :
يقوم هذى ال FUNCTION بإرجاع قيمه الريال السعودي بالنسبة للدولار ولكن يختلف عن السابق بأنه يجب أن ترسل له عدد الدولارات لكي يقوم بحساب كم ريال تساوي.
12- تنفيذ المثال:
في البداية نقوم بتعريف متغير لكي نخزن قيمه الريال ولكي نتمكن من طباعته:
SQL> VARIABLE g_rs NUMBER
ثم نقوم بتنفيذ ال FUNCTION مع تحديد مكان تخزين قيمه الريال:
SQL>EXECUTE :g_rs := dollars_to_rs ( 1000 ) ;
ثم نقوم بطباعه المتغير الذي أسمينه g_rs :
SQL>PRINT g_rs
13- حذف ال FUNCTION:
SQL> DROP FUNCTION function_name;
15- مثال:
SQL> DROP FUNCTION get_sal;
هذى ما استطعت شرحه من ال FUNCTION.
أرجو من الله القدير أن يكون حاز على رضى الله ثم رضاكم
ولقد وضعت نسخه من الشرح بصيغه bdf لمن اراد الاحتفاض به
وأرجو منكم الدعاء لي بالتوفيق في الدنيا والآخرة
وأي استفسار أنا بالخدمة
هذى والله اعلم
تحياتي الخالصة لك
أخوكم
شبيـــــه الريح