السلام عليكم ما الفرق بين Stored Procedure و User-defined function في Mysql. لاحظت أني أستطيع عمل نفس الوظيفة بهما لكن لم ألاحظ أي فروق فأتمنى أن تشرحوا لي الفرق بينهما وشكرا.
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
الإختلاف يكمن في أن 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 و User-defined function في MySQL هو أن Stored Procedure يمكنها تنفيذ عمليات DML و DDL، بينما User-defined function يمكنها فقط تنفيذ عمليات SELECT.
ولكن تتميز Stored Procedure ببعض الفروقات الأخرى مثل