ما الفرق بين Stored Procedure و User-defined function

السلام عليكم ما الفرق بين Stored Procedure و User-defined function في Mysql. لاحظت أني أستطيع عمل نفس الوظيفة بهما لكن لم ألاحظ أي فروق فأتمنى أن تشرحوا لي الفرق بينهما وشكرا.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

Mustafa_Suleiman أضف ردا

الإختلاف يكمن في أن Stored Procedure عبارة عن مجموعة من SQL statements يتم تنفيذها كوحدة واحدة، بينما User-defined function هي عبارة عن دالة يتم تنفيذها كوحدة واحدة وتعيد قيمة واحدة.

وفيما يلي بعض الاختلافات الرئيسية بين Stored Procedure و User-defined function:

Stored Procedure:

الهدف: تنفيذ مجموعة من SQL statements

العودة: اختياري

الاستدعاء: يتم استدعاؤه كوحدة مستقلة

الأداء: أفضل أداء

الأمان: أفضل أمان

مثال على Stored Procedure:

CREATE PROCEDURE `my_stored_procedure`()
BEGIN
  SELECT * FROM `customers`;
END;

User-defined function

الهدف: حساب قيمة واحدة

العودة: إلزامي

الاستدعاء: يمكن استدعاؤه من خلال SQL statement

الأداء: أداء أقل

الأمان: أقل أمان

مثال على User-defined function:

CREATE FUNCTION `my_function`(x INT) RETURNS INT
BEGIN
  RETURN x * 2;
END;

وعند اختيار Stored Procedure أو User-defined function، يجب مراعاة العوامل التالية:

  • إذا كنت بحاجة إلى تنفيذ مجموعة من SQL statements، فاختر Stored Procedure، أما في حال كنت بحاجة إلى حساب قيمة واحدة، فاختر User-defined function.
  • عند الحاجة إلى أداء أفضل، فاختر Stored Procedure.
  • عند الحاجة إلى أمان أفضل، فاختر Stored Procedure.

الفرق الرئيسي بين Stored Procedure و User-defined function في MySQL هو أن Stored Procedure يمكنها تنفيذ عمليات DML و DDL، بينما User-defined function يمكنها فقط تنفيذ عمليات SELECT.

ولكن تتميز Stored Procedure ببعض الفروقات الأخرى مثل

  • يمكن أن ترجع قيمة أو لا ترجع قيمة
  • يمكن استدعاؤها من أي مكان في MySQL
  • أكثر أمانًا من User-defined function
  • عادةً ما يكون أكثر كفاءة من User-defined function

أما بالنسبة ل User-defined function

  • يجب أن ترجع قيمة
  • يمكن استدعاؤها فقط من داخل SQL statement
  • أقل أمانًا من Stored Procedure
  • عادةً ما يكون أقل كفاءة من Stored Procedure