يمكنك تعريف دوال PL/SQL لـ Publisher لتشغيلها عند تكوين اتصال بمصدر بيانات JDBC (دالة قبل المعالجة) أو إغلاقه (دالة بعد المعالجة).
يجب أن تُرجع الدالة قيمة منطقية. وهذه السمة مدعومة لقواعد بيانات أوراكل فقط.
يتيح هذان الحقلان للمسئول تعيين سمات سياق للمستخدم قبل إنشاء اتصال بقاعدة بيانات ثم إزالة السمات بعد قطع الاتصال بواسطة محرك الاستخراج.
يمكن استخدام متغير النظام :xdo_user_name كمتغير ربط لتمرير اسم مستخدم تسجيل الدخول إلى استدعاءات دالة PL/SQL. يتيح لك تعيين سياق مستخدم تسجيل الدخول بهذه الطريقة تأمين البيانات على مستوى مصدر البيانات (بدلاً من تأمينها على مستوى استعلام SQL).
على سبيل المثال، لنفترض استخدام عينة الدالة التالية:
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
لاستدعاء هذه الدالة في كل مرة يتم تكوين اتصال بقاعدة البيانات، أدخل ما يلي في حقل دالة قبل المعالجة: set_per_process_username(:xdo_user_name)
تتمثل عينة استخدام أخرى في إدراج صف في جدول LOGTAB في كل مرة يقوم المستخدم بالاتصال أو قطع الاتصال:
CREATE OR REPLACE FUNCTION BIP_LOG (user_name_in IN VARCHAR2, smode IN VARCHAR2) RETURN BOOLEAN AS BEGIN INSERT INTO LOGTAB VALUES(user_name_in, sysdate,smode); RETURN true; END BIP_LOG;
في حقل دالة قبل المعالجة، أدخل: BIP_LOG(:xdo_user_name)
بمجرد إنشاء اتصال بقاعدة البيانات، يتم تسجيله في جدول LOGTAB. تحدد قيمة SMODE النشاط في صورة دخول أو خروج. يؤدي استدعاء هذه الدالة كدالة بعد المعالجة إلى إرجاع نتائج مثل تلك المعروضة في الجدول التالي.