PANCHI بتاريخ: 27 فبراير 2010 تقديم بلاغ مشاركة بتاريخ: 27 فبراير 2010 السلام عليكم اعزائي خبراء 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جزاكم الله خير................................. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mostfa_future بتاريخ: 27 فبراير 2010 تقديم بلاغ مشاركة بتاريخ: 27 فبراير 2010 ارجو توضيح سوالك ولا انت بتشرح الكود اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
malik alwadi بتاريخ: 28 فبراير 2010 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2010 (معدل) السلام عليكمارجو توضيح الهدف من هذا الــ Cursorوما هي قيمة المتغير :V_PRNUM تم تعديل 28 فبراير 2010 بواسطة malik alwadi اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
PANCHI بتاريخ: 28 فبراير 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2010 الموضوع هو اني اريد ادخال سجلات الي جدول PRSTATUS حسب ماهو موضح في جملة LOOP وهذه السجلات تحتوي على قيم مأخوذة من المتغيرات التي تم تعريفها في جزء DECLARE ويتم تكرار هذه القيم في سجلات بعدد دوران جملة LOOP وهذا الموضوع لاخلاف فيهيعمل بشكل جيد ماعدا القيمة الموجودة في المتغير V_PRNUM: اريدها ان تكون قيمة مختلفة في كل سجلسؤالي هو : هل استطيع ان اجعل المتغير V_PRNUM: يحمل قيمة مختلفة في كل دورة من LOOP مثلا الدورة الأولى يحملقيمة مدخلة من المستخدم لنفرض '38969' والدورة الثانية لجملة LOOP يحمل قيمة اخرى مدخلة من المستخدم وهكذا الى ان تنتهي جملة LOOP وبهذا يكون لدي عدد من السجلات المدخلة متشابهة القيم ماعدا قيمة العمود PRNUM الذي يأخذ قيمته من المتغير V_PRNUM: ........اتمنى ان اكون قد وفقت في توضيح المسألة . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
malik alwadi بتاريخ: 28 فبراير 2010 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2010 السلام عليكم يمكن حل المسألة من خلال إدخال جملة Update الى الـ Cursor تعمل على زيادة قيمة الحقل بمقدار واحد في كل مرة مثل Update PRSTATUS Set PRNUM = PRNUM +1; Where Ur Primary Key ---------- يالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
PANCHI بتاريخ: 28 فبراير 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2010 شكرا اخي مالك على تعاونك معي والفكرة حلوة كثير بس في حالة اذا الحقل متسلسل وانا عندي الحقل عبارة عن قيم مدخلة اي ارقام مختلفة ارجوا ان لا اكون ازعجتكمع شكري وتقديري لك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.