بتاريخ: 15 أبريل 200718 سنة comment_97100 تغطية مولد pl/sql الدينامكي وهي ما تعرف بـ (WRAP dynamically generated PL/SQL)هذا الموضوع موجود في المنتدى لاكن هنا أخر التطورات في 10g قد تلاحظ حينما تريد الاستعلام عن النص المكون لبعض procedures, packages ,functions من خلال العرض USER_SOURCE أنه في بعض الحالات مشفر ولا يمكن معرفة ما يحتويه النص هذا هو الموضوع الذي سنتكلم عنه ..................................مثال لكي يكون الموضوع أشد وضوحا:قم بالاتصال بالمستخدم SYSTEM ثم نفذ التالي SELECT TEXT FROM USER_SOURCE WHERE NAME LIKE 'DBMS_REPCAT_AUTH'; بعد تنفيذك الكود تابع >>>>>>>>>>>>>>>>>>>>>>>>>>>هذه package تم تغطية محتواها من قبل الاوراكل حتى لا يتم كشف ما تحتويه .عموما في الإصدار (Oracle 10g Release 2) تم إضافة (An overloaded function and procedure) إلى الحزمة DBMS_DDL Function(wrap: وهي الوظيفة المزيدة التحميل تسترجع مصدر كودpl/sql المغطى حينما تزود بالمصدر الأصلي .Procedure(create_wrapped :وهو الإجراء الذي يغطي النص الأصلي مستخدمه كمدخل وهو اسرع من استخدام wrap.طريقة عمل كلا من :wrapنستخدم هذه الوظيفة مع (Execute immediate) لإنشاء الكود المغطى هذا المثال يوضح DECLARE v_procedure VARCHAR2(32767); BEGIN v_procedure := 'CREATE OR REPLACE PROCEDURE get_empl ' ||'IS ' ||' ' ||' cursor C1 is' ||' select ename,sal' ||' from emp;' ||' ' ||'BEGIN ' ||' for i in C1 loop' ||' dbms_output.put_line(i.ename);' ||' dbms_output.put_line(i.sal);' ||' END LOOP;' || 'END;'; [color=#FF0000]EXECUTE IMMEDIATE DBMS_DDL.WRAP(v_procedure);[/color] END; بعد ذلك نفذ هذا الكود select text from user_source where name=upper('get_empl'); Create_wrapped DBMS_DDL.CREATE_WRAPPED يعمل بنفس الطريقة لاكن اختلاف بسيط DECLARE v_procedure VARCHAR2(32767); BEGIN v_procedure := 'CREATE OR REPLACE PROCEDURE get_empl ' ||'IS ' ||' ' ||' cursor C1 is' ||' select ename,sal' ||' from emp;' ||' ' ||'BEGIN ' ||' for i in C1 loop' ||' dbms_output.put_line(i.ename);' ||' dbms_output.put_line(i.sal);' ||' END LOOP;' || 'END;'; [color=#FF0000]SYS.DBMS_DDL.CREATE_WRAPPED(v_procedure);[/color] END; لايوجد سوى اختلاف بسيط حيث هنا لادعي لاستعمال EXECUTE IMMEDIATEوتحياتي لكـــــــــــــــــــم تقديم بلاغ
بتاريخ: 15 أبريل 200718 سنة كاتب الموضوع comment_97114 اتمنى الأستفادة من المعلومات الجديدة ياشباب تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.