بتاريخ: 30 أبريل 200916 سنة comment_155319 السلام عليكمعندي عمود للصنف في جدول المخازن هذا العمود المفروض يتكون من 9 أرقام فأنا أعمل كود يفحص الحقل إذا وجده 8 أرقام يضع صفر على اليسار لكن هذا الكود لم يظبط معي مع أن التنفيذ تم بدون أخطاءأرجو المساعدة من الإخوة DECLARE V_ITEM INVENTORIES.INV_ITEM%TYPE; BEGIN FOR ITEM_CUR IN (SELECT * FROM INVENTORIES) LOOP IF length(V_ITEM) = 8 then UPDATE INVENTORIES SET INV_ITEM =0||V_ITEM; END IF; END LOOP; END; تم تعديل 30 أبريل 200916 سنة بواسطة new_world تقديم بلاغ
بتاريخ: 30 أبريل 200916 سنة comment_155323 أخي الكريم ماهو نوع ذلك العمود لو كان من النوع number فطبعا مشهينفع لان لو النوع number لايقبل الصفر جهة اليسار يمكنك تحويله إلى varchar2 ورد علينا تقديم بلاغ
بتاريخ: 30 أبريل 200916 سنة كاتب الموضوع comment_155325 شكراً للأخ مصطفى هذا هو نوعه INV_ITEM VARCHAR2(25 BYTE) NOT NULL, تقديم بلاغ
بتاريخ: 30 أبريل 200916 سنة comment_155327 أخي الكريم اضبط حلك على هذا المثال مع تعديل في كودكفرضا عندي جدول اسمه ee على سبيل المثال create table ee (id varchar2(10), name varchar2(50)); قم بعمل هذا الكود كالتالي DECLARE BEGIN FOR i IN (SELECT id FROM ee) LOOP IF length(i.id) = 8 then UPDATE ee SET id =0||i.id; END IF; END LOOP; END; جرب وادعيلي تقديم بلاغ
بتاريخ: 30 أبريل 200916 سنة كاتب الموضوع comment_155332 جزاك الله خيراً أخي مصطفى الكود الخاص بك كان ينقصه فقط شرط WHERE لكي يتم التعديل على كل حقل وهذا هو الكود النهائي وهو يعمل تمام ولله الحمد DECLARE V_ITEM INVENTORIES.INV_ITEM%TYPE; BEGIN FOR ITEM_CUR IN (SELECT * FROM INVENTORIES) LOOP IF length(ITEM_CUR.INV_ITEM) = 8 then UPDATE INVENTORIES SET INV_ITEM =0||ITEM_CUR.INV_ITEM where INV_ITEM=ITEM_CUR.INV_ITEM; END IF; END LOOP; END; تم تعديل 30 أبريل 200916 سنة بواسطة new_world تقديم بلاغ
بتاريخ: 30 أبريل 200916 سنة comment_155333 تعليق بسيطيوجد متغير عندك ليس له فائدة V_ITEM INVENTORIES.INV_ITEM%TYPE; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.