بتاريخ: 5 أغسطس 200718 سنة comment_106624 بسم الله الرحمن الرحيمالسلام عليكم ورحمة الله وبركاته ،ال 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 بنفسك ............مع تحياتى ،محمد ناصف تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.