لغات البرمجة

لغة SQL/PSM: نظرة شاملة

SQL/PSM (SQL/Persistent Stored Modules) هو معيار ISO يحدد بشكل رئيسي امتدادًا للSQL يتضمن لغة إجرائية للاستخدام في الإجراءات المخزنة. تم نشره في البداية في عام 1996 كامتداد لـ SQL-92 (ISO/IEC 9075-4:1996)، والذي يُطلق عليه أحيانًا PSM-96 أو حتى SQL-92/PSM. لاحقًا تم دمج SQL/PSM في المعيار المتعدد الأجزاء SQL:1999، وهو جزء 4 من هذا المعيار، وظل جزءًا منه منذ ذلك الحين، معظمه في SQL:2016. جزء 4 من SQL:1999 كان يغطي أقل مما كان يغطيه الأصلي PSM-96 لأن البيانات الSQL لتعريف الإجراءات، وإدارتها، واستدعائها تم دمجها في جزء 2 SQL/Foundation، مما ترك فقط اللغة الإجرائية نفسها كـ SQL/PSM. مرافق SQL/PSM لا تزال اختيارية فيما يتعلق بالمعيار الـ SQL؛ معظمها مجمع في الميزات P001-P008. يقوم SQL/PSM بتوحيد بناء الجملة والدلالة لتدفق التحكم، ومعالجة الاستثناءات (التي تُسمى “معالجة الحالة” في SQL/PSM)، والمتغيرات المحلية، وتعيين التعبيرات للمتغيرات والمعلمات، واستخدام الأجراءات للمؤشرات. كما يحدد أيضًا مخطط معلومات (البيانات الوصفية) للإجراءات المخزنة. SQL/PSM هي لغة واحدة يمكن فيها تحديد طرق لأنواع البيانات المهيكلة SQL:1999. اللغة الأخرى هي Java، من خلال SQL/JRT. لغة IBM’s SQL PL (المستخدمة في DB2) ولغة Mimer SQL’s PSM كانتا أول منتجين يقومان بتنفيذ SQL/PSM. عمليًا، هذين المنتجين، وربما أيضًا لغة البرمجة الإجرائية لـ MySQL/MariaDB، هما الأقرب إلى معيار SQL/PSM. تشبه SQL/PSM لغة PL/SQL، بالإضافة إلى PL/pgSQL، لذا فهي لغات مشابهة. مع PostgreSQL v9، تم دعم بعض ميزات SQL/PSM، مثل التحميل الزائد للوظائف والإجراءات التي يتم استدعاؤها بواسطة SQL. تقوم إضافة PostgreSQL بتنفيذ SQL/PSM (جنبًا إلى جنب مع لغتها الإجرائية الخاصة)، على الرغم من أنها ليست جزءًا من المنتج الأساسي. تم تطوير وظيفة RDF في OpenLink Virtuoso بالكامل من خلال SQL/PSM، بالإضافة إلى أنواع بيانات مخصصة (مثل ANY لمعالجة كائنات العلاقات URI و Literal)، وفهرسة معقدة، وخيارات تخزين مادي مرنة (حسب العمود أو حسب الصف).