SQL Server - Section1 - User-Defined Functions (UDFs)

User-Defined Functions (UDFs) في SQL Server

في SQL Server، يمكنك إنشاء دوال خاصة بك تُعرف باسم User-Defined Functions (أو اختصارًا: UDF).

🔹 تُستخدم الدوال لتغليف منطق معين يمكن إعادة استخدامه داخل الاستعلامات مثل SELECT أو WHERE أو حتى داخل JOIN.


✅ أنواع User-Defined Functions

  • Scalar Function: تُرجع قيمة واحدة (مثل int أو varchar)
  • Table-Valued Function: تُرجع جدول (يمكن التعامل معه مثل أي جدول عادي في الاستعلامات)

🧮 مثال: Scalar Function

دالة تُرجع قيمة الضريبة بنسبة 10% من قيمة السعر:


CREATE FUNCTION dbo.GetTax (@Price decimal(10,2))
RETURNS decimal(10,2)
AS
BEGIN
    RETURN @Price * 0.10
END;

✅ يمكنك استخدامها كالتالي:


SELECT ProductName, Price, dbo.GetTax(Price) AS Tax
FROM Products;

📋 مثال: Table-Valued Function

دالة تُرجع المنتجات الأعلى من سعر معين:


CREATE FUNCTION dbo.GetExpensiveProducts (@MinPrice decimal(10,2))
RETURNS TABLE
AS
RETURN
(
    SELECT ProductID, ProductName, Price
    FROM Products
    WHERE Price > @MinPrice
);

✅ يمكن استخدامها هكذا:


SELECT * FROM dbo.GetExpensiveProducts(50);

📝 ملاحظات مهمة

  • تبدأ أسماء الدوال دائمًا بـ dbo. كافتراضي.
  • لا يُسمح في بعض الدوال بتعديل البيانات (مثل INSERT أو UPDATE داخل Scalar Functions).
  • يمكنك استخدام ALTER FUNCTION لتعديل دالة موجودة، أو DROP FUNCTION لحذفها.

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework