אודות פונקציות יצירה וסגירה של חיבור

תוכל להגדיר פונקציות PL/SQL ש-Publisher יריץ בעת שהתחברות למקור נתונים JDBC נוצרת (פונקציה לפני עיבוד) או נסגרת (פונקציה אחרי עיבוד).

הפונקציה חייבת להחזיר ערך בוליאני. תכונה זו נתמכת במסדי נתונים של Oracle בלבד.

שני שדות אלו מאפשרים למנהלן להגדיר תכונות בהקשר משתמש לפני שמוקם חיבור למסד הנתונים ואז למחוק את התכונותלאחר שהחיבור נשבר על-ידי מנוע חילוץ הנתונים.

ניתן להשתמש במשתנה המערכת :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 מציין אם הפעילות היא כניסה או יציאה. קריאה לפונקציה זו בתור פונקציה אחרי עיבוד תחזיר גם היא תוצאות כמוצג בטבלה להלן.