الاجراءات الخارجية UDF في فايربيرد
#4
حقيقة في فايربيرد من النسخة 3 صار بالامكان تعريف الاجراءات الداخلية ايضا والتي هي غير متوفرة في مع عائلة الاصدارة 2

مثال على التعريف

كود :
CREATE FUNCTION ADD_INT (A INT, B INT DEFAULT 0) RETURNS INT AS BEGIN   RETURN A + B; END

بحال الرغبة في التعديل استخدم العبارة Alert

كود :
ALTER FUNCTION ADD_INT(A INT, B INT, C INT) RETURNS INT AS BEGIN   RETURN A + B + C; END

او استخدام create و alert معا اذا كان موجود يعدل واذا لم يكن موجود ينشئ

كود :
CREATE OR ALTER FUNCTION ADD_INT(A INT, B INT DEFAULT 0) RETURNS INT AS BEGIN   RETURN A + B; END

واعتقد العبارة ReCreate تفعل نفس الشئ

كود :
RECREATE FUNCTION ADD_INT(A INT, B INT DEFAULT 0) RETURNS INT AS BEGIN   RETURN A + B; EN


لحذف الاجراء

كود :
DROP FUNCTION ADD_INT;



طريقة الاستدعاء كأي اجراء او دالة عادية مضمنة مع الفايربيرد

كود :
SELECT ADD_INT(2, 3) AS R FROM RDB$DATABASE

وطالما صارت قابلة للاستدعاء بداخل جملة ال ـ SQL فهذا يعني بالامكان استخدامها كشرط


كود :
SELECT FirstName,LastName FROM Emp where ADD_INT(2,5)=Emp.Salarry

او ليكون الاستعلام اكثر منطقية و واقعي

كود :
SELECT FirstName,LastName FROM Emp where ADD_INT(Emp.Quantty,Emp.Price)=Emp.Salarry


وهذا يعني ان الدالة صارت جزء من جملة الاستعلام 
مما يعني انه سيتم تنفيذها على عدد الصفوف فاذا اجريت استعلام لجلب 1000 سجل فسيتم استدعاء هذا الاجراء 1000 مرة
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • أبو معاذ
الرد


الردود في هذا الموضوع
RE: الاجراءات الخارجية UDF في فايربيرد - بواسطة Delphi4Us - 30-07-2022, 10:59 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم