حقيقة في فايربيرد من النسخة 3 صار بالامكان تعريف الاجراءات الداخلية ايضا والتي هي غير متوفرة في مع عائلة الاصدارة 2
مثال على التعريف
بحال الرغبة في التعديل استخدم العبارة Alert
او استخدام create و alert معا اذا كان موجود يعدل واذا لم يكن موجود ينشئ
واعتقد العبارة ReCreate تفعل نفس الشئ
لحذف الاجراء
طريقة الاستدعاء كأي اجراء او دالة عادية مضمنة مع الفايربيرد
وطالما صارت قابلة للاستدعاء بداخل جملة ال ـ SQL فهذا يعني بالامكان استخدامها كشرط
او ليكون الاستعلام اكثر منطقية و واقعي
وهذا يعني ان الدالة صارت جزء من جملة الاستعلام
مما يعني انه سيتم تنفيذها على عدد الصفوف فاذا اجريت استعلام لجلب 1000 سجل فسيتم استدعاء هذا الاجراء 1000 مرة
مثال على التعريف
كود :
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 مرة
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)