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

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

صورة
- - - - -

ارجو المساعدة في انشاء Cursor


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

#1 PANCHI

PANCHI

    عضو

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

تاريخ المشاركة 27 February 2010 - 06:37 PM

السلام عليكم


اعزائي خبراء PL/SQL

لدي CURSOR يقوم بإدخال قيم محددة الي حقول في جدول معين وممكن ان يكون ادخال البيانات مكون من 3 سجلات او اكثر وبنفس

القيم المدخلة ماعدا حقل واحد يجب ان تتغير فيه القيمة في كل سجل, قمت بإستخدام PROMPT لهذا الحقل إلا انه يأخذ القيمة المدخلة الأولى ويكررها

في باقي السجلات مثل باقي القيم اي ان الPROMPT لايظهر الا مرة واحدة في البداية .. والفكرة اني اريد هذا ال PROMPT يظهر عند ادخال كل سجل جديد

وهذا هو ال CURSORارجو ممن لديه الفكرة ان يدلني على الحل وجزاكم الله خير



DECLARE
V_PRNUM PRSTATUS.PRNUM %TYPE :=:V_PRNUM;
V_CHANGEDATE PRSTATUS.CHANGEDATE%TYPE:=SYSDATE;
V_STATUS PRSTATUS.STATUS % TYPE;
V_CHANGEBY PRSTATUS.CHANGEBY%TYPE:='BBBB';
V_MEMO PRSTATUS.MEMO%TYPE:='SSSSSSSSSS';
V_SITEID PRSTATUS.SITEID%TYPE;
V_ORG PRSTATUS.ORGID%TYPE :='OM';
V_COUNTER NUMBER :=0;
PR_COUNT NUMBER :=3;
CURSOR C1 IS
SELECT STATUS,SITEID INTO V_STATUS,V_SITEID FROM PR
WHERE PRNUM=:V_PRNUM AND SITEID=:V_SITEID;
BEGIN open C1;
LOOP
FETCH C1 INTO V_STATUS,V_SITEID; INSERT INTO PRSTATUS(PRNUM,CHANGEDATE,STATUS,CHANGEBY,MEMO,SITEID,ORGID) VALUES(:V_PRNUM,V_CHANGEDATE,V_STATUS,V_CHANGEBY,V_MEMO,V_SITEID,V_ORG);
V_COUNTER :=V_COUNTER+1;
exit when V_COUNTER >= PR_COUNT;
end loop;
CLOSE C1;
end;
/


حيث ان :V_PRNUM هو الحقل المفترض ان يكون مختلف القيمة في كل سطر مثلا السجل الأول 38692 والسجل الثاني 38896 والثالث 38963

على ان تكون باقي الحقول في كل السجلات بنفس القيم كما هو موضح في CURSOR

جزاكم الله خير

.................................

#2 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 28 February 2010 - 01:17 AM

ارجو توضيح سوالك ولا انت بتشرح الكود

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة


#3 malik alwadi

malik alwadi

    عضو نشط

  • الأعضــاء
  • 371 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Internet Browsing

تاريخ المشاركة 28 February 2010 - 08:38 AM

السلام عليكم
ارجو توضيح الهدف من هذا الــ Cursor
وما هي قيمة المتغير :V_PRNUM

تم التعديل بواسطة malik alwadi, 28 February 2010 - 08:38 AM.

لا الله الا انت سبحانك اني كنت من الظالمين


#4 PANCHI

PANCHI

    عضو

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

تاريخ المشاركة 28 February 2010 - 11:41 AM

الموضوع هو اني اريد ادخال سجلات الي جدول PRSTATUS حسب ماهو موضح في جملة LOOP وهذه السجلات تحتوي على قيم

مأخوذة من المتغيرات التي تم تعريفها في جزء DECLARE ويتم تكرار هذه القيم في سجلات بعدد دوران جملة LOOP وهذا الموضوع لاخلاف فيه

يعمل بشكل جيد ماعدا القيمة الموجودة في المتغير V_PRNUM: اريدها ان تكون قيمة مختلفة في كل سجل

سؤالي هو : هل استطيع ان اجعل المتغير V_PRNUM: يحمل قيمة مختلفة في كل دورة من LOOP مثلا الدورة الأولى يحمل

قيمة مدخلة من المستخدم لنفرض '38969' والدورة الثانية لجملة LOOP يحمل قيمة اخرى مدخلة من المستخدم وهكذا الى ان

تنتهي جملة LOOP وبهذا يكون لدي عدد من السجلات المدخلة متشابهة القيم ماعدا قيمة العمود PRNUM الذي يأخذ قيمته من

المتغير V_PRNUM: ........


اتمنى ان اكون قد وفقت في توضيح المسألة .

#5 malik alwadi

malik alwadi

    عضو نشط

  • الأعضــاء
  • 371 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Internet Browsing

تاريخ المشاركة 28 February 2010 - 01:35 PM

السلام عليكم
يمكن حل المسألة من خلال إدخال جملة Update الى الـ Cursor
تعمل على زيادة قيمة الحقل بمقدار واحد في كل مرة مثل

Update PRSTATUS
  Set PRNUM = PRNUM +1;
  Where  Ur Primary Key ----------

يالتوفيق

لا الله الا انت سبحانك اني كنت من الظالمين


#6 PANCHI

PANCHI

    عضو

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

تاريخ المشاركة 28 February 2010 - 02:05 PM

شكرا اخي مالك على تعاونك معي

والفكرة حلوة كثير بس في حالة اذا الحقل متسلسل

وانا عندي الحقل عبارة عن قيم مدخلة اي ارقام مختلفة

ارجوا ان لا اكون ازعجتك

مع شكري وتقديري لك