m_nasef بتاريخ: 7 أغسطس 2007 تقديم بلاغ مشاركة بتاريخ: 7 أغسطس 2007 بسم الله الرحمن الرحيمالسلام عليكم ورحمة الله وبركاته ،ال package التالية تحتوى على دالتين :- الأولى : rev_txt تعكس النص المدخل فقط (بكل ما تحتويه من مسافات)الثانية : rev_txt_no_spaces تنظف النص من اية مسافات حتى ولو كان هناك اكثر من مسافة بين الكلمتين (تعتمد على while .... loop ) create or replace package str_pkg as function rev_txt (i_txt varchar2) return varchar2; function rev_txt_no_spaces (i_txt varchar2) return varchar2; end; / اما بالنسبة لل backage body ففيها ثلاث دوال ....الأولى : clean_spaces فهى تعتمد على while .... loop حيث instr(v_txt, ' ') ترجع رقم اكبر من صفر اذا كان هناك اية مسافات وهكذا حتى تزول المسافات .........وبالنسبة للدالة reverse_txt تشرح نفسها ....فهناك مصفوفتين : الأولى نضع فيها حروف الجملة حرف .. حرف .. ثم نعكسها فى مصفوفة اخرى .....والدالة rev_txt تقوم بعمل دمج بين الدوال السابقة ........ create or replace package body str_pkg as function clean_spaces (i_txt varchar2) return varchar2 is v_txt varchar2(200); begin v_txt := lower(i_txt); while instr(v_txt, ' ') > 0 loop v_txt := replace(v_txt, ' '); end loop; return v_txt; end; function reverse_txt (i_txt varchar2) return varchar2 is type chararray_typ is table of varchar2(1) index by binary_integer; chararray chararray_typ; type revchararray_typ is table of varchar2(1) index by binary_integer; revchararray revchararray_typ; v_revtxt varchar2(200); v_len integer := length(i_txt); begin for i in 1..v_len loop chararray(i) := substr(i_txt, i, 1); end loop; for i in 1..v_len loop revchararray(i) := chararray(v_len-i+1); end loop; for i in 1..v_len loop v_revtxt := v_revtxt || revchararray(i); end loop; return v_revtxt; end; function rev_txt (i_txt varchar2, v_option integer default 1) return varchar2 is v_txt varchar2(200); begin if v_option = 1 then v_txt := reverse_txt( i_txt ); elsif v_option = 2 then v_txt := reverse_txt( clean_spaces( i_txt ) ); end if; return v_txt; end; end; / وجرب ال package بنفسك ............مع تحياتى ،محمد ناصف - مصر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
-=|mOOdY|=- بتاريخ: 7 أغسطس 2007 تقديم بلاغ مشاركة بتاريخ: 7 أغسطس 2007 يعطيك العافيك اخ محمد وجزاك الله كل خيربانتظار الجديد منك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.