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

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


PANCHI

Recommended Posts

السلام عليكم


اعزائي خبراء 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

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

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

رابط هذا التعليق
شارك

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

تم تعديل بواسطة malik alwadi
رابط هذا التعليق
شارك

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

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

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

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

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

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

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


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

رابط هذا التعليق
شارك

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

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



يالتوفيق

رابط هذا التعليق
شارك

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

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

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

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

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

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية