الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Loop... يقوم بتعبئة ريكود واحد فقط وانا اريد ان يقوم بتعبئة كل البيانات

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته جميعا
اشكر الله سبحانه وتعالي  ثم اشكركم على المساعدة
 
اقوم بعمل شاشة لانشاء ارقام الجلوس فاقوم بتعبئة بيانات الطالب من الرقم و الاسم  والمستوى والتخصص وقمت بعمل تريجر لتعبئة ارقام الجلوس  والبيانات السابقة في جدول اخر
ولكن عند التنفيذ على التود السيكول تخرج كل البيانات تمام ولكن في الشاشة يحضر اول ريكورد فقط
فحاولت عمل loopاو ref_cursor
ولكن يعطي اخطاء
والكود مرفق ادناه
 
 

 
declare
  v_NUMBERS_SIT_ID_DET   number(10);
    v_USER_NUMBERS_SIT_ID_DET number(10);
    
  v_STUD_ID   number(10);
  v_USER_STUD_ID   number(10);
  v_SCHOOL_YEAR_ID   number(10);
  v_SCHOOL_ACT_YEAR_ID  number(10);
  v_SCHOOL_ACT_YEAR_DEPTID   number(10);

    cursor c_sn_seq is
    select NVL(max(NUMBERS_SIT_ID_DET),0)+1,NVL(max(USER_NUMBERS_SIT_ID_DET),0)+1
    from STD_NUMBERS_SIT_DETIAL;
    
    cursor c_data is

SELECT  a. stud_id,a.user_stud_id,a.school_year_id,a.school_act_year_id,a.school_act_year_deptid
      FROM std_study_level_students a
      where
      user_stud_id not in (select user_stud_id from std_outgoing)
    and SCHOOL_YEAR_ID= (select max (SCHOOL_YEAR_ID) from std_study_level_students)
  ORDER BY a.school_act_year_id,a.school_act_year_deptid desc,to_number(user_stud_id);
begin
    open c_sn_seq;
    fetch c_sn_seq into v_NUMBERS_SIT_ID_DET,v_USER_NUMBERS_SIT_ID_DET ;
--    close c_sn_seq;
    open c_data;
--    message(v_NUMBERS_SIT_ID_DET||'-'||v_USER_NUMBERS_SIT_ID_DET);
--    message(v_NUMBERS_SIT_ID_DET||'-'||v_USER_NUMBERS_SIT_ID_DET);
FOR employee_rec in c_data
   LOOP
    fetch c_data into v_STUD_ID  ,v_USER_STUD_ID   ,v_SCHOOL_YEAR_ID   ,v_SCHOOL_ACT_YEAR_ID  ,v_SCHOOL_ACT_YEAR_DEPTID  ;
--    close c_data;
--    message(:STD_NUMBERS_SIT.NUMBERS_SIT_ID);
--    message(v_USER_STUD_ID||'-'|| v_STUD_ID);

--for i in  c_data loop  
    insert into STD_NUMBERS_SIT_DETIAL(NUMBERS_SIT_ID_DET,
                                       USER_NUMBERS_SIT_ID_DET,
                                       NUMBERS_SIT_ID,
                                       USER_STUD_ID,
                                       STUD_ID,
                                       NUMBER_SIT,
                                       SCHOOL_YEAR_ID,
                                       UNVERSITY_YEAR,
                                       SCHOOL_ACT_YEAR_ID,
                                       USER_SCHOOL_ACT_YEAR_DEPTID,
                                       SEMESTER_ID )
         values
         (v_NUMBERS_SIT_ID_DET,
         v_USER_NUMBERS_SIT_ID_DET,
         :STD_NUMBERS_SIT.NUMBERS_SIT_ID,
             
         v_USER_STUD_ID,
             
         v_STUD_ID,
         std_sit_numbers(v_SCHOOL_ACT_YEAR_ID,v_SCHOOL_ACT_YEAR_DEPTID,:STD_NUMBERS_SIT.NUMBERS_SIT_ID),
         v_SCHOOL_YEAR_ID,
         :STD_NUMBERS_SIT.UNVERSITY_YEAR,
         v_SCHOOL_ACT_YEAR_ID,
         v_SCHOOL_ACT_YEAR_DEPTID,
         :STD_NUMBERS_SIT.SEMESTER_ID);
         next_record;
             end loop;
             close c_sn_seq;
            close c_data;
         
         commit;
         execute_query;
end;
بتاريخ:
  • كاتب الموضوع

ارجو الرد

بتاريخ:

ايش رسالة الخطا الي طلعتلك؟؟؟

بتاريخ:
  • كاتب الموضوع

ايش رسالة الخطا الي طلعتلك؟؟؟

اشكرك جزيلالالا على الرد

هو لا يعطي خطا

ولكنة يقوم بتعبئة ريكود واحد فقط وانا اريد ان يقوم بتعبئة كل البيانات

ويعمل الــloop

تم تعديل بواسطة AHMED BASHA

بتاريخ:
PROCEDURE search_rec IS
   v_day_weak   varchar(30);
   v_from_time	 number ;
   v_to_time	 number ;
   v_name varchar2(100);
        
  CURSOR CUR_EMP IS
      select t.day_weak , t.from_time,t.to_time , l.lab_code
      from labs_time t,labs l
where l.lab_id = t.lab_id 
    and date_code = :labs.date_Code
    and  day_weak =  :labs_time.day_Weak 
    and  not EXISTS( select 1 from labs x,labs_time p1
   where x.lab_id = p1.lab_id 
  and l.s_Date <>  :labs.s_date 
    );
 
BEGIN
 GO_BLOCK('search_labs_time');
CLEAR_BLOCK;
   OPEN CUR_EMP;
   FETCH CUR_EMP INTO  v_day_weak,v_from_time , v_to_time,v_name ;
   WHILE CUR_EMP%FOUND 
   LOOP
		CREATE_RECORD;
		:search_labs_time.day_weak  := v_day_weak ;
		:search_labs_time.from_time := v_from_time ;
		:search_labs_time.to_time   := v_to_time ;
		:search_labs_time.lab_code  := v_name ;
				FETCH CUR_EMP INTO v_day_weak, v_from_time ,v_to_time,v_name ;
  END LOOP;
   CLOSE CUR_EMP;
  EXCEPTION
WHEN OTHERS THEN
message('تم');
END;

cursor ده انا عملته لتعبئه بيانات لجدول  non database .... فممكن طريقته تفيدك 

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا وجاري دراستة وتطبيقة

بتاريخ:

السلام عليكم ورحمة الله

 

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

 

 

  غير مكان ال commit

داخل ال loop

بتاريخ:
  • كاتب الموضوع

اشكركم جميعا

 

ولكنة يقوم ايضا بتعبئة ريكورد واحد فقط

وعند الريكورد الثاني يقوم باعطاء الرسالة

Record must be deleted or enterd first

بتاريخ:

السلام عليكم

جرب الكود التالي:

 

DECLARE
   v_numbers_sit_id_det        NUMBER (10);
   v_user_numbers_sit_id_det   NUMBER (10);
   v_stud_id                   NUMBER (10);
   v_user_stud_id              NUMBER (10);
   v_school_year_id            NUMBER (10);
   v_school_act_year_id        NUMBER (10);
   v_school_act_year_deptid    NUMBER (10);


   CURSOR c_data
   IS
      SELECT   a.stud_id, a.user_stud_id, a.school_year_id,
               a.school_act_year_id, a.school_act_year_deptid
          FROM std_study_level_students a
         WHERE user_stud_id NOT IN (SELECT user_stud_id
                                      FROM std_outgoing)
           AND school_year_id = (SELECT MAX (school_year_id)
                                   FROM std_study_level_students)
      ORDER BY a.school_act_year_id,
               a.school_act_year_deptid DESC,
               TO_NUMBER (user_stud_id);
BEGIN
   GO_BLOCK ('BLK_2');
   FIRST_RECORD;


   FOR rec IN c
   LOOP
      BEGIN
         SELECT NVL (MAX (numbers_sit_id_det), 0) + 1,
                NVL (MAX (user_numbers_sit_id_det), 0) + 1
           INTO v_numbers_sit_id_det,
                v_user_numbers_sit_id_det
           FROM std_numbers_sit_detial;
      END;


      INSERT INTO std_numbers_sit_detial
                  (numbers_sit_id_det, user_numbers_sit_id_det,
                   numbers_sit_id, user_stud_id,
                   stud_id,
                   number_sit,
                   school_year_id, unversity_year,
                   school_act_year_id, user_school_act_year_deptid,
                   semester_id
                  )
           VALUES (v_numbers_sit_id_det, v_user_numbers_sit_id_det,
                   :std_numbers_sit.numbers_sit_id, v_user_stud_id,
                   v_stud_id,
                   std_sit_numbers (v_school_act_year_id,
                                    v_school_act_year_deptid,
                                    :std_numbers_sit.numbers_sit_id
                                   ),
                   v_school_year_id, :std_numbers_sit.unversity_year,
                   v_school_act_year_id, v_school_act_year_deptid,
                   :std_numbers_sit.semester_id
                  );


      NEXT_RECORD;
   END LOOP;


   COMMIT;
   EXECUTE_QUERY;
END;
بتاريخ:
  • كاتب الموضوع

والله العظيم انا في غاية الشكر

ما زالت الرسالة Record must be entered or deleted first

 

الفورم مرفق

std_Numbers_sit.rar

error.rar

بتاريخ:

جرب تعديل الكود كالتالي:

 

      BEGIN
         SELECT NVL (MAX (numbers_sit_id_det), 0) + 1,
                NVL (MAX (user_numbers_sit_id_det), 0) + 1
           INTO v_numbers_sit_id_det,
                v_user_numbers_sit_id_det
           FROM std_numbers_sit_detial
          WHERE stud_id = rec.stud_id;
      END;
بتاريخ:
  • كاتب الموضوع

ما زالت الرسالة Record must be entered or deleted first

ولكن عند ضغط okعلى الرسالة يرمي ريكورد في الجدول جديد

ولا يحضر بيانات

stud_id

user_stud_id,
                   school_act_year_id, user_school_act_year_deptid,

بتاريخ:
  • كاتب الموضوع

لماذا لم يتم فتح الكيرسور c_data

حتى يقوم باحضار بيانات

stud_id,

user_stud_id,

  school_act_year_id,

 

user_school_act_year_deptid

واين يتم وضعه في الاسكؤيبت

تم تعديل بواسطة AHMED BASHA

بتاريخ:
  • كاتب الموضوع

اشكركم جميعا وجزاكم الله خيرااا

 

قمت بتعديل الكود

 للموضح ادناه قام بتعبئة البيانات  primary _key بعدد الطلبة الموجودة

ولكن بيانات

stud_id,
user_stud_id,
  school_act_year_id, 

user_school_act_year_deptid

لم يتم تعبئتها حيث تاتي من الكيرسور  c_data

 

واين يتم وضعه c_data في الاسكؤيبت


DECLARE
v_numbers_sit_id_det NUMBER (10);
v_user_numbers_sit_id_det NUMBER (10);
v_stud_id NUMBER (10);
v_user_stud_id NUMBER (10);
v_school_year_id NUMBER (10);
v_school_act_year_id NUMBER (10);
v_school_act_year_deptid NUMBER (10);


CURSOR c_data
IS
SELECT a.stud_id, a.user_stud_id, a.school_year_id,
a.school_act_year_id, a.school_act_year_deptid
FROM std_study_level_students a
WHERE user_stud_id NOT IN (SELECT user_stud_id
FROM std_outgoing)
AND school_year_id = (SELECT MAX (school_year_id)
FROM std_study_level_students)
ORDER BY a.school_act_year_id,
a.school_act_year_deptid DESC,
TO_NUMBER (user_stud_id);
BEGIN
GO_BLOCK ('STD_NUMBERS_SIT_DETIAL');

FIRST_RECORD;
CLEAR_MESSAGE;
--open c_data;

-- fetch c_data into v_STUD_ID ,v_USER_STUD_ID ,v_SCHOOL_YEAR_ID ,v_SCHOOL_ACT_YEAR_ID ,v_SCHOOL_ACT_YEAR_DEPTID ;
FOR rec IN c_data

LOOP


BEGIN
SELECT NVL (MAX (numbers_sit_id_det), 0) + 1

INTO v_numbers_sit_id_det
FROM std_numbers_sit_detial;
--WHERE USER_NUMBERS_SIT_ID = rec.USER_NUMBERS_SIT_ID;

SELECT
NVL (MAX (user_numbers_sit_id_det), 0) + 1
INTO
v_user_numbers_sit_id_det
FROM std_numbers_sit_detial
WHERE NUMBERS_SIT_ID = :STD_NUMBERS_SIT.NUMBERS_SIT_ID;

END;
/*
INSERT INTO std_numbers_sit_detial
(numbers_sit_id_det,
user_numbers_sit_id_det,
numbers_sit_id,
user_stud_id,
stud_id,
number_sit,
school_year_id,
unversity_year,
school_act_year_id, user_school_act_year_deptid,
semester_id
)
VALUES (v_numbers_sit_id_det,
v_user_numbers_sit_id_det,
:std_numbers_sit.numbers_sit_id,
v_user_stud_id,
v_stud_id,
std_sit_numbers (v_school_act_year_id,v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id ),
v_school_year_id,
:std_numbers_sit.unversity_year,
v_school_act_year_id,
v_school_act_year_deptid,
:std_numbers_sit.semester_id
);
*/
:STD_NUMBERS_SIT_DETIAL.numbers_sit_id_det:=v_numbers_sit_id_det;
:STD_NUMBERS_SIT_DETIAL.user_numbers_sit_id_det:=v_user_numbers_sit_id_det;
:STD_NUMBERS_SIT_DETIAL.numbers_sit_id:=:std_numbers_sit.numbers_sit_id;
:STD_NUMBERS_SIT_DETIAL.user_stud_id:=v_user_stud_id;
:STD_NUMBERS_SIT_DETIAL.stud_id:=v_stud_id;
:STD_NUMBERS_SIT_DETIAL.school_act_year_id:=v_school_act_year_id;
:STD_NUMBERS_SIT_DETIAL.user_school_act_year_deptid:=v_school_act_year_deptid;
:STD_NUMBERS_SIT_DETIAL.semester_id:=:std_numbers_sit.semester_id;
:STD_NUMBERS_SIT_DETIAL.number_sit:=std_sit_numbers (v_school_act_year_id,v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id );
:STD_NUMBERS_SIT_DETIAL.school_year_id:=v_school_year_id;
:STD_NUMBERS_SIT_DETIAL.unversity_year:=:std_numbers_sit.unversity_year;


NEXT_RECORD;

--:system.message_level := 25;
Commit;
:system.message_level := 5;

END LOOP;

close c_data;


EXECUTE_QUERY;
END;

تم تعديل بواسطة ميسم الكرام

بتاريخ:
  • كاتب الموضوع

ارجو المساعدة

تم تعديل بواسطة AHMED BASHA

بتاريخ:
  • كاتب الموضوع

لماذا لم يتم احضار من الكيرسور  c_data

بتاريخ:
  • كاتب الموضوع

السلام عليكم ورحمة الله

 

شكرا للجميع

توصلت للحل

 

DECLARE
   v_numbers_sit_id_det        NUMBER (10);
   v_user_numbers_sit_id_det   NUMBER (10);
   v_stud_id                   NUMBER (10);
   v_user_stud_id              NUMBER (10);
   v_school_year_id            NUMBER (10);
   v_school_act_year_id        NUMBER (10);
   v_school_act_year_deptid    NUMBER (10);
   HD NUMBER:=0;


   CURSOR c_data
   IS
      SELECT   a.stud_id, a.user_stud_id, a.school_year_id,
               a.school_act_year_id, a.school_act_year_deptid
          FROM std_study_level_students a
         WHERE user_stud_id NOT IN (SELECT user_stud_id
                                      FROM std_outgoing)
           AND school_year_id = (SELECT MAX (school_year_id)
                                   FROM std_study_level_students)
      ORDER BY a.school_act_year_id,
               a.school_act_year_deptid DESC,
               TO_NUMBER (user_stud_id);
       
       
               
BEGIN
   GO_BLOCK ('STD_NUMBERS_SIT_DETIAL');
   
   FIRST_RECORD;
--CLEAR_MESSAGE;


BEGIN
       
     
       SELECT NVL (MAX (numbers_sit_id_det), 0)
               
           INTO v_numbers_sit_id_det
           FROM std_numbers_sit_detial;
          
         
          
         SELECT
                NVL (MAX (user_numbers_sit_id_det), 0)
           INTO
                v_user_numbers_sit_id_det
           FROM std_numbers_sit_detial
          WHERE NUMBERS_SIT_ID = :STD_NUMBERS_SIT.NUMBERS_SIT_ID;
      
       

 
      
END;
HD:=0;
   FOR rec IN c_data
   
   LOOP
   HD:=HD+1;
    
   
       --fetch c_data into v_STUD_ID  ,v_USER_STUD_ID   ,v_SCHOOL_YEAR_ID   ,v_SCHOOL_ACT_YEAR_ID  ,v_SCHOOL_ACT_YEAR_DEPTID  ;
/*
      INSERT INTO std_numbers_sit_detial
                  (numbers_sit_id_det,
                  user_numbers_sit_id_det,
                   numbers_sit_id,
                   user_stud_id,
                   stud_id,
                   number_sit,
                   school_year_id,
                    unversity_year,
                   school_act_year_id, user_school_act_year_deptid,
                   semester_id
                  )
           VALUES (v_numbers_sit_id_det,
                   v_user_numbers_sit_id_det,
                   :std_numbers_sit.numbers_sit_id,
                    v_user_stud_id,
                   v_stud_id,
                   std_sit_numbers (v_school_act_year_id,v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id  ),
                   v_school_year_id,
                    :std_numbers_sit.unversity_year,
                   v_school_act_year_id,
                   v_school_act_year_deptid,
                   :std_numbers_sit.semester_id
                  );
*/
:STD_NUMBERS_SIT_DETIAL.numbers_sit_id_det:=v_numbers_sit_id_det + HD;
:STD_NUMBERS_SIT_DETIAL.user_numbers_sit_id_det:=v_user_numbers_sit_id_det + HD;
:STD_NUMBERS_SIT_DETIAL.numbers_sit_id:=:std_numbers_sit.numbers_sit_id;
:STD_NUMBERS_SIT_DETIAL.user_stud_id:=rec.USER_STUD_ID;
:STD_NUMBERS_SIT_DETIAL.stud_id:=rec.stud_id;
:STD_NUMBERS_SIT_DETIAL.school_act_year_id:=rec.school_act_year_id;
:STD_NUMBERS_SIT_DETIAL.MOSTWA_NAME:=GET_STUD_MOSTWEAA(rec.school_act_year_id);
:STD_NUMBERS_SIT_DETIAL.user_school_act_year_deptid:=rec.school_act_year_deptid;
:STD_NUMBERS_SIT_DETIAL.DEPT_NAME:=GET_STUD_MOSTWEAA_DEPT(rec.school_act_year_id,rec.school_act_year_deptid);
:STD_NUMBERS_SIT_DETIAL.semester_id:=:std_numbers_sit.semester_id;
:STD_NUMBERS_SIT_DETIAL.number_sit:=v_user_numbers_sit_id_det + HD||'/'||rec.school_act_year_id||''||rec.school_act_year_deptid;---std_sit_numbers(rec.school_act_year_id,rec.school_act_year_deptid,:std_numbers_sit.numbers_sit_id  );
:STD_NUMBERS_SIT_DETIAL.school_year_id:=rec.school_year_id;
:STD_NUMBERS_SIT_DETIAL.unversity_year:=:std_numbers_sit.unversity_year;
:STD_NUMBERS_SIT_DETIAL.STUDENT_NAME:=get_full_name(rec.USER_STUD_ID);
SYNCHRONIZE;
 
     NEXT_RECORD;
 
     --:system.message_level := 25;

--:system.message_level := 5;
     
END LOOP;
FORMS_DDL('COMMIT');
close c_data;

 
   EXECUTE_QUERY;
   
END;
 

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.