إنشاء إجراء مخزّن في قاعدة بيانات Azure لـ PostgreSQL

مكتمل

إن إنشاء إجراء مخزن لمهمة معينة له العديد من المزايا، بما في ذلك توسيع وظائف Azure لقاعدة بيانات PostgreSQL. استخدم إجراء مخزناً عندما تريد:

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

بينما تدعم قاعدة بيانات Azure ل PostgreSQL لغات برمجة متعددة، فإن SQL هي اللغة الأصلية ل PostgreSQL وتعمل بشكل أفضل مع المحسن.

يتم إنشاء إجراء مخزن باستخدام الكلمات الرئيسية CREATE PROCEDURE. بدلاً من ذلك، استخدم CREATE OR REPLACE PROCEDURE لإنشاء إجراء جديد أو استبدال إجراء بنفس الاسم.

قم بتضمين اسم مخطط لإنشاء الإجراء في مخطط معين. وإلا، تم إنشاؤه في المخطط الحالي. يجب أن يكون اسم الإجراء فريداً داخل المخطط، بما في ذلك أنواع وسيطات الإدخال. ومع ذلك، يمكنك التحميل الزائد لأسماء الإجراءات عن طريق إعطاء نفس الاسم لإجراءات أو دالة مع أنواع وسيطات مختلفة.

المستخدم الذي يقوم بإنشاء الإجراء هو مالك الإجراء. يجب عليك أيضاً تحديد اللغة.

تأخذ الإجراءات المعلمات التالية:

  • name - قم بتضمين اسم المخطط اختيارياً.
  • argmode - وضع الوسيطة. يمكن أن يكون IN أو INOUT أو VARIADIC. الافتراضي هو IN. OUT غير مدعوم؛ استخدم INOUT بدلاً من ذلك. VARDIADIC هو عدد غير محدد من وسيطات الإدخال من نفس النوع، ويجب أن تكون وسيطات الإدخال الأخيرة.
  • argname - اسم الوسيطة.
  • argtype - نوع بيانات الوسيطة.
  • default_expr - تعبير افتراضي (من نفس النوع) لاستخدامه إذا لم يتم تحديد المعلمة. يجب أن تحتوي معلمات الإدخال التي تتبع معلمة بقيمة افتراضية أيضاً على قيم افتراضية.
  • lang_name - اللغة المستخدمة لكتابة الإجراء. يمكن أن يكون sql أو c أو داخليا أو اسم لغة إجرائية معرفة من قبل المستخدم، على سبيل المثال، plpgsql.

في المثال التالي، يتم إنشاء إجراء مخزن يسمى myprocedure، والذي يأخذ معلمات الإدخال a وb. IN هو الافتراضي للمعلمات، لذلك ليس علينا تحديدها بشكل صريح كمعلمات إدخال. عند استدعاء الإجراء المخزن، يتم إدراج القيم المعينة لهذه المعلمات في mytable.

CREATE PROCEDURE myprocedure (a integer, b integer)
    LANGUAGE SQL
    AS $$
        INSERT INTO mytable VALUES (a, b);
    $$;

يتم استخدام الرمز $$ لبدء سلسلة وإنهائها. يمكنك أيضاً استخدام علامات اقتباس مفردة، ولكن يمكن أن يسبب مشاكل مع لغات البرمجة الأخرى لذلك $$ هو المفضل.