logo

وظائف PostgreSQL

في هذا القسم، سوف نفهم عمل وظائف PostgreSQL، إنشاء وظيفة الأمر، وانظر المثال في الوقت الحقيقي أمر PostgreSQL CREATE FUNCTION باستخدام أدوات PostgreSQL المختلفة مثل pgadmin4 و شل SQL (PSQL).

وانظر مثال استدعاء أ وظيفة محددة من قبل المستخدم مثل التدوين الموضعي المسمى التدوين، التدوين المختلط.

ما هي وظيفة PostgreSQL؟

وظيفة PostgreSQL أو الإجراء المخزن هي مجموعة من أوامر SQL والأوامر الإجرائية مثل الإعلانات، المهام، الحلقات، تدفق التحكم وما إلى ذلك المخزنة على خادم قاعدة البيانات ويمكن مشاركتها باستخدام واجهة SQL . ومن المعروف أيضا باسم إجراءات PostgreSQL المخزنة .

يمكننا إنشاء وظائف PostgreSQL بلغات الخدمة، على سبيل المثال، SQL , بل/بجسكل , ج , بايثون إلخ.

فهي تمكننا من تنفيذ العمليات التي تتطلب بشكل عام أوامر مختلفة ورحلات ذهابًا وإيابًا في وظيفة داخل قاعدة البيانات.

ما هو أمر PostgreSQL CREATE Function؟

في PostgreSQL، إذا أردنا تحديد وظيفة جديدة محددة من قبل المستخدم، فيمكننا استخدام الأمر إنشاء وظيفة يأمر.

بناء جملة أمر PostgreSQL CREATE Function

بناء الجملة ل أمر إنشاء وظيفة PostgreSQL على النحو التالي:

 CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype LANGUAGE plpgsql AS $variable_name$ DECLARE declaration; [...] -- variable declaration BEGIN [...] -- logic RETURN variable_name END; $$ 

في بناء الجملة أعلاه، استخدمنا المعلمات التالية، كما هو مبين في الجدول أدناه:

كيفية التحقق من حجم الشاشة
حدود وصف
اسم وظيفة
  • ال اسم وظيفة يتم استخدام المعلمة لتحديد اسم الوظيفة.
  • يتم كتابة اسم الوظيفة بعد إنشاء وظيفة الكلمة الرئيسية.
[أو استبدال]
  • يمكننا استخدام أو استبدال الكلمة الأساسية إذا أردنا تغيير الوظيفة الحالية.
  • وهي معلمة اختيارية.
وظيفة
  • بعد استخدام أو استبدال الكلمة الأساسية، يمكننا تحديد وظيفة قائمة المعلمات التي يتم تغطيتها بين قوسين بعد اسم وظيفة.
  • ويمكن أن تحتوي الدالة على صفر أو عدة معلمات.
يعود
  • يمكننا تحديد نوع البيانات بعد يعود الكلمة الأساسية التي سنعود إليها من الوظيفة.
  • يمكن أن يكون نوعًا أساسيًا أو مركبًا أو مجالًا أو مرجعًا لنوع عمود الجدول.
اللغة plpgsql
  • يتم استخدامه لتحديد اسم اللغة الإجرائية التي يتم بها تنفيذ الوظيفة.
  • وليس فقط , يدعم PostgreSQL اللغات الإجرائية المختلفة.
Function_body
  • ال function_body يحتوي على الأجزاء القابلة للتنفيذ من المنطق.

مثال على أمر إنشاء وظيفة PostgreSQL

دعونا نرى مثالاً مختلفًا لفهم عمل وظيفة إنشاء PostgreSQL يأمر.

نحن نأخذ سيارة الجدول من جافاتبوينت قاعدة البيانات، التي تم إنشاؤها في البرنامج التعليمي PostgreSQL.

إنشاء وظيفة جديدة

في الأمر أدناه، نقوم بإنشاء وظيفة جديدة، والتي تحسب سيارات لمن سعر السيارة بين ال السعر_من والسعر_إلى حدود:

 Create function get_car_Price(Price_from int, Price_to int) returns int language plpgsql as $$ Declare Car_count integer; Begin select count(*) into Car_count from Car where Car_price between Price_from and Price_to; return Car_count; End; $$; 

ال get_car_Price وتنقسم الوظيفة إلى قسمين رئيسيين، وهما رأس ونص الوظيفة .

لقد استخدمنا المعلمات التالية في رأس قسم:

  • في المقام الأول، نحدد اسم الوظيفة كما get_car_Price()، والذي هو مكتوب بعد إنشاء وظيفة
  • بعد ذلك، get_car_Price() تحتوي الدالة على معلمتين السعر يبدأ من و السعر_إلى، وجود نوع بيانات صحيح.
  • ثم، get_car_Price() تقوم الدالة باسترداد عدد صحيح محدد بواسطة شرط الإرجاع int.
  • وفي النهاية، استخدمنا اللغة الوظيفية كما com.plpgsql .

لقد استخدمنا المعلمات التالية في هيئة الوظيفة قسم:

  • لقد استخدمنا سلسلة مقتبسة بالدولار توضيح ثابت في قسم الوظيفة، والذي يبدأ بـ $$ وينتهي ب $$ .
  • ما بين أثنين $$ علامة، يمكننا وضع كتلة، والتي تغطي الإعلان و منطق الوظيفة .
  • في كتلة الإعلان، أعلنا عن متغير يسمى عدد السيارات، الذي يخزن السيارات المختارة من سيارة
  • في جسم قسم الكتلة، استخدمنا اختر في أمر لتحديد سعر السيارات التي تتراوح قيمها بين السعر_من والسعر_إلى وإعطاء الإخراج إلى عدد السيارات
  • في نهاية الكتلة، استخدمنا يعود أمر للحصول على

إنشاء وظيفة في PostgreSQL

في PostgreSQL، يمكننا إنشاء دالة بطريقتين:

    PostgreSQL إنشاء وظيفة باستخدام pgAdmin PostgreSQL إنشاء وظيفة باستخدام SQL Shell

PostgreSQL إنشاء وظيفة باستخدام pgAdmin

سنتبع العملية التالية لإنشاء وظيفة فيها مشرف الصفحة:

الخطوة 1

أولا، سوف نقوم بفتح الإصدار الأحدث pgAdmin في نظامنا المحلي، وسوف نذهب إلى شجرة الكائنات ونتصل بـ جافاتبوينت نموذج قاعدة البيانات التي نريد إنشاء وظيفة فيها.

الخطوة 2

تحويل int إلى سلسلة

بعد ذلك سوف نقوم بفتح أداة الاستعلام بالضغط على تتبع أداة الاستعلام قسم الأدوات، كما يمكننا أن نرى في لقطة الشاشة أدناه:

وظيفة بواتغريسكل2

الخطوه 3

لإنشاء get_car_Price1() الدالة، سوف نستخدم الكود أعلاه في أداة الاستعلام وانقر على ينفذ زر.

بعد تنفيذ الأمر أعلاه، سوف نحصل على نافذة الرسالة أدناه التي تعرض هذه الوظيفة get_car_Price1() كان مخلوق بنجاح في قاعدة بيانات مماثلة.

وظيفة بواتغريسكل

ويمكننا تحديد الوظيفة get_car_Price() في ال المهام القائمة كما نرى في الصورة التالية:

وظيفة بواتغريسكل

ملاحظة: إذا لم نتمكن من تحديد اسم الوظيفة، فيمكننا النقر بزر الماوس الأيمن فوق عقدة الوظائف وتحديد عنصر القائمة تحديث... لإحياء قائمة الوظائف:

وظيفة بواتغريسكل

إنشاء دالة باستخدام SQL Shell (psql)

سنتبع العملية التالية لإنشاء جدول psql :

الخطوة 1

  • في البداية سوف نقوم بفتح psql في نظامنا المحلي، وسوف نتصل بقاعدة البيانات حيث نريد إنشاء وظيفة.
  • سوف نقوم بإنشاء جدول في javatpoint قاعدة البيانات، التي قمنا بإنشائها سابقًا في البرنامج التعليمي لـ PostgreSQL.

الخطوة 2

  • لربط قاعدة البيانات، سوف نقوم بإدخال الأمر أدناه:
 c javatpoint 

انتاج |

بعد تنفيذ الأمر أعلاه، سنحصل على الإخراج التالي:

وظيفة بواتغريسكل

ملاحظة: إذا أدخلنا أمرًا مشابهًا كما هو مذكور أعلاه لإنشاء دالة، في psql، فسوف يُصدر الخطأ أدناه وهو: الدالة get_car_price موجودة بالفعل بنفس أنواع الوسائط.

وظيفة بواتغريسكل

ولذلك، لحل هذا الخطأ، نقوم بإنشاء وظيفة جديدة باسم get_car_Price1 () في الخطوة التالية.

الخطوه 3

شريط أدوات الوصول السريع للكلمة

سوف نقوم بإدخال الأمر أدناه لإنشاء وظيفة مثل get_car_Price1 () في ال javatpoint قاعدة البيانات.

 javatpoint=# Create function get_car_Price1(Price_from int, Price_to int) javatpoint-# returns int javatpoint-# language plpgsql javatpoint-# as javatpoint-# $$ javatpoint$# Declare javatpoint$# Car_count integer; javatpoint$# Begin javatpoint$# select count(*) javatpoint$# into Car_count javatpoint$# from Car javatpoint$# where car_price between Price_from and Price_to; javatpoint$# return Price_count; javatpoint$# End; javatpoint$# $$; 

انتاج |

سوف نحصل على الإخراج التالي عند تنفيذ الأمر أعلاه، والذي يعرض أن get_car_Price_count1() تم إنشاء الوظيفة بنجاح.

وظيفة بواتغريسكل

الخطوة 4

يمكننا استخدام الأمر أدناه لسرد كافة الوظائف المحددة من قبل المستخدم في قاعدة البيانات الموجودة.

 javatpoint=# df 

انتاج |

بعد تنفيذ الأمر أعلاه، سنحصل على الإخراج أدناه:

وظيفة بواتغريسكل

كيفية استدعاء وظيفة محددة من قبل المستخدم

في PostgreSQL، يمكننا استدعاء الوظيفة المعرفة من قبل المستخدم بثلاث طرق، وهي كما يلي:

    التدوين الموضعي التدوين المسمى التدوين المختلط

استدعاء دالة باستخدام التدوين الموضعي

إذا أردنا وصف الوسائط بترتيب مماثل كمعلمات، فيمكننا استدعاء دالة باستخدام التابع التدوين الموضعي يساعد.

هيكل جافا

دعونا نرى مثالا عينة لفهم التدوين الموضعي العمل على استدعاء وظيفة معينة.

في المثال أدناه، get_car_price() الحجج هي 26000 و 70000 ، وهو ما يعادل السعر يبدأ من و السعر_إلى حدود.

 Select get_car_Price(26000,70000); 

انتاج |

سوف نحصل على الإخراج التالي عند تنفيذ الأمر أعلاه، والذي يسترد تلك الصفوف الأربعة التي car_price يتراوح ما بين من 26000 إلى 70000

وظيفة بواتغريسكل

عندما لا تحتوي الدالة على أي معلمات تقريبًا، يمكننا استدعاء دالة بمساعدة الدالة التدوين الموضعي .

إذا كانت الدالة تحتوي على عدة معلمات، فيمكننا استخدام الدالة تدوين اسمه لاستدعاء وظيفة معينة بسبب استخدام تدوين اسمه سيجعل استدعاء الوظيفة أكثر قابلية للفهم.

استدعاء دالة باستخدام التدوين المسمى

في المثال أدناه، نعرض طريقة عمل استدعاء get_car_Price() وظيفة باستخدام التدوين المسمى:

 select get_car_Price( Price_from => 26000, Price_to => 70000 ); 

انتاج |

سنحصل على الإخراج التالي عند تنفيذ الأمر أعلاه، والذي يعرض أربعة صفوف بناءً على النطاق أعلاه car_price .

وظيفة بواتغريسكل

في التدوين المذكور سابقا، استخدمنا => لتمييز الحجة الاسم والقيمة .

يسمح PostgreSQL بالصيغة الأقدم التي تم إنشاؤها على := ل التوافق ، كما نرى في الأمر التالي:

 select get_car_Price( Price_from := 26000, Price_to := 70000 ); 

انتاج |

بعد تنفيذ الأمر أعلاه، سنحصل على نتيجة مماثلة مقارنة بنتيجة الأمر أعلاه حيث نستخدم ' =>' بدلاً من ':=' .

وظيفة بواتغريسكل

استدعاء دالة باستخدام التدوين المختلط

وهي التجمع الموضعية والمسماة التدوينات.

دعونا نرى مثالا نموذجيا لفهم عمل استدعاء دالة باستخدام التدوين المختلط.

في ال تدوين مختلط ، لا يمكننا استخدام المعلمات المسماة قبل المعلمات الموضعية .

على سبيل المثال:

في الأمر أدناه، سوف نستخدم فكرة مسماة ل السعر يبدأ من المعلمة كما السعر_من=>26000, بينما بالنسبة ل السعر_إلى المعلمة، لقد استخدمنا الفكرة الموضعية مثل 70000 ، كما نرى في الأمر أدناه:

حالة بوابة -s
 select get_car_Price(Price_from=>26000,70000); 

انتاج |

بعد تنفيذ الأمر أعلاه، يُظهر PostgreSQL خطأً يفيد بأن الملف لا يمكن للحجة الموضعية أن تتبع الوسيطة المسماة .

وظيفة بواتغريسكل

لحل الخطأ أعلاه، نحن نستخدم التدوين الموضعي والمسمى ل get_car_price() وظيفة حيث 26000 يستخدم لتمثيل التدوين الموضعي؛ على الجانب الآخر، السعر_إلى=>70000 يستخدم لتمثيل تدوين اسمه :

 select get_car_Price(26000,Price_to=>70000); 

انتاج |

بعد تنفيذ الأمر أعلاه، سوف نحصل على الإخراج أدناه، والذي يعيد تلك السيارات التي car_price من 26000 الى 70000

وظيفة بواتغريسكل

ملخص

في ال وظيفة PostgreSQL القسم، تعلمنا المواضيع التالية:

  • لقد استخدمنا إنشاء وظيفة أمر لإنشاء وظيفة محددة من قبل المستخدم لجدول معين.
  • لقد فهمنا عملية استدعاء وظيفة محددة من قبل المستخدم بمساعدة رموز مختلفة مثل الموضعية والمسماة والمختلطة.