إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مشكلة في كود للتعديل على قيمة عمود حسب طوله


5 رد (ردود) على هذا الموضوع

#1 new_world

new_world

    عضو

  • الأعضــاء
  • 28 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 April 2009 - 10:37 AM

السلام عليكم
عندي عمود للصنف في جدول المخازن هذا العمود المفروض يتكون من 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;

تم التعديل بواسطة new_world, 30 April 2009 - 10:37 AM.


#2 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 April 2009 - 11:32 AM

أخي الكريم ماهو نوع ذلك العمود لو كان من النوع number فطبعا مشهينفع لان لو النوع number لايقبل الصفر جهة اليسار يمكنك تحويله إلى varchar2
ورد علينا

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#3 new_world

new_world

    عضو

  • الأعضــاء
  • 28 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 April 2009 - 11:47 AM

شكراً للأخ مصطفى هذا هو نوعه
INV_ITEM                      VARCHAR2(25 BYTE) NOT NULL,


#4 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 April 2009 - 12:02 PM

أخي الكريم
اضبط حلك على هذا المثال مع تعديل في كودك
فرضا عندي جدول اسمه 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;

جرب وادعيلي

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#5 new_world

new_world

    عضو

  • الأعضــاء
  • 28 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 April 2009 - 12:37 PM

جزاك الله خيراً أخي مصطفى
الكود الخاص بك كان ينقصه فقط شرط 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;

تم التعديل بواسطة new_world, 30 April 2009 - 12:38 PM.


#6 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 April 2009 - 12:46 PM

تعليق بسيط
يوجد متغير عندك ليس له فائدة
V_ITEM INVENTORIES.INV_ITEM%TYPE;

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين