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

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

صورة
- - - - -

Procedure &function


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

#1 waziry

waziry

    مشترك

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

تاريخ المشاركة 19 October 2008 - 10:20 PM

السلام عليكم ورحمه الله

انا اعرفال procedure و function
ولكــــــــــــــن

متى أستخدم ال procedure ,ومتى استخدم function ، ومالفرق بينهم

وخصوصا ان الاثنين يرجعون قيمه

وجزاكم الله خير

#2 hanyfreedom

hanyfreedom

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

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 20 October 2008 - 01:12 AM

وخصوصا ان الاثنين يرجعون قيمه

ال Function لازم ترجع قيمة لكن ال procedure ممكن اه و ممكن لأ ..... دا على حسب ما اذا كنت هتظهر ناتج الاجراء بال DBMS_OUTPUT.PUT_LINE أو انك عاوز الاجراء يتم تنفيذه بلا أظهار للنتائج .

انظر لهذه الأكواد :-


CREATE OR REPLACE PROCEDURE oug_p (ID NUMBER)
IS
tax NUMBER;
BEGIN SELECT salary * .2
INTO tax FROM employees
WHERE employee_id = ID;
END;
/
------------------------------
EXEC oug_p(122)
--- the Result here without output.
-------------------------------
CREATE OR REPLACE PROCEDURE oug_p (ID NUMBER)
IS
tax NUMBER;
BEGIN SELECT salary * .2
INTO tax FROM employees
WHERE employee_id = ID;

DBMS_OUTPUT.put_line ('The TAX Value is : ' || tax);
END;
/
------------------------------------
EXEC oug_p(122)
--- the Result here with output.


و بخصوص ال Function فهى تستخدم مع الوضع فى الاعتبار انها ستخرج قيمة ... أنظر لهذه الأكواد :-

CREATE OR REPLACE FUNCTION oug_f (ID NUMBER)
RETURN NUMBER
IS
tax NUMBER;
BEGIN SELECT salary * .2
INTO tax FROM employees
WHERE employee_id = ID;

RETURN tax;
END;
/
--------------------------------
EXEC DBMS_OUTPUT.put_line (oug_f (122))
--OR
EXEC DBMS_OUTPUT.put_line ('The TAX Value is : '||oug_f (122))
--OR
SELECT last_name, salary, oug_f (employee_id) AS "Tax" FROM employees;


لاحظ انه لا يمكن تنفيذ ال Procedure فى الكود الاخير لأنه كان سيخرج خطاء ORA-00904 .... كهذا :-

SQL> SELECT salary , oug_p(employee_id) AS "Tax" from employees; SELECT salary , oug_p(employee_id) AS "Tax" from employees
*
ERROR at line 1:
ORA-00904: "OUG_P": invalid identifier


أتمنى تكون الفكرة وصلت و بالتوفيق

#3 waziry

waziry

    مشترك

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

تاريخ المشاركة 20 October 2008 - 01:44 PM

جزاكم الله خير الاخ الحبيب هانى

بس ليه طلب عند حاضرتك

كنت اريد لو سمحت فورمه مثل فورمه الكيرسر ، تكون مبنيه على بروسيجر ، وفورمه مبنية على فانكشن ، لان ماشاء الله عليك شرحك مميز فعلا

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