تعديل الدالة ALTER FUNCTION في SQL

من موسوعة حسوب
< SQL
مراجعة 15:42، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يستخدم هذا الأمر لتعديل تعريف دالة مُعرَّفة مسبقًا عبر الأمر CREATE FUNCTION، وله الصيغ الآتية:

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name;

لإعادة تسمية الدالة name (والتي معاملاتها محددة بالنوع argmode والاسم argname ونوع البيانات argtype) باسم جديد new_name.

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_USER | SESSION_USER };

لنقل ملكية الدالة name (والتي معاملاتها محددة بالنوع argmode والاسم argname ونوع البيانات argtype) إلى مالك جديد new_owner أو المستخدم الحالي CURRENT_USER. أما لتغيير مهمة الدالة (بنيتها الداخلية body) فيُستخدم الأمر بالشكل:

ALTER FUNCTION name   ( [ [ argmode ] [ argname ] argtype [, ...] ] )  
RETURNS return_data_type  
    [ AS ]  
    BEGIN   
        function_body   
        RETURN scalar_expression  
    END  
;

إذ يمكن تعديل أيّ من الخصائص الواردة بتعريف الدالة كما هو الحال عند إنشائها عبر الأمر CREATE FUNCTION.

أمثلة

لإعادة تسمية الدالة sqrt لتصبح باسم square_root، يستخدم الأمر:

ALTER FUNCTION sqrt(integer) RENAME TO square_root;

لتعديل الدالة get_count المُنشأة مسبقًا لتعيد عدد السجلات التي يكون فيها معدل الطالب أكبر من 2 بدلًا من العدد الإجمالي، يستخدم الأمر:

ALTER FUNCTION get_count (OUT num INTEGER) AS
SELECT COUNT(*) INTO num FROM students
WHERE GPA>2;

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم لا نعم نعم نعم

يقتصر هذا الأمر في محرك Oracle على إعادة ترجمة recompile الدالة من خلال الكلمة المفتاحية COMPILE.

مصادر