الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

عملية Wrapping

Featured Replies

بتاريخ:

تغطية مولد 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

وتحياتي لكـــــــــــــــــــم

بتاريخ:
  • كاتب الموضوع

اتمنى الأستفادة من المعلومات الجديدة ياشباب

بتاريخ:
  • كاتب الموضوع

شكر ا للأهتمام اخي عبد اللطيف

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.