sky information بتاريخ: 15 أبريل 2007 تقديم بلاغ مشاركة بتاريخ: 15 أبريل 2007 تغطية مولد 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وتحياتي لكـــــــــــــــــــم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sky information بتاريخ: 15 أبريل 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 أبريل 2007 اتمنى الأستفادة من المعلومات الجديدة ياشباب اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
عبداللطيف بتاريخ: 15 أبريل 2007 تقديم بلاغ مشاركة بتاريخ: 15 أبريل 2007 الف شكر اخي الكريم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sky information بتاريخ: 16 أبريل 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 16 أبريل 2007 شكر ا للأهتمام اخي عبد اللطيف اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.