تعديل الدالة ALTER FUNCTION في SQL
يستخدم هذا الأمر لتعديل تعريف دالة مُعرَّفة مسبقًا عبر الأمر 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.