ExcelStore

Пример выборки данных по студентам

Apr 28th, 2021
1,624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.00 KB | None | 0 0
  1.  
  2. DECLARE
  3.    SUBJ_NAME VARCHAR2(100);
  4.    GRUP_NAME VARCHAR2(100);
  5.    OCENKA VARCHAR2(100);
  6.    GR_NEW VARCHAR2(100);
  7.    GR_OLD VARCHAR2(100);
  8.    
  9.    CURSOR c_subj IS SELECT SUBJ_NAME FROM KMV_T3_SUBJECTS ORDER BY SUBJ_NAME;
  10.    CURSOR c_tot IS
  11.           SELECT
  12.             c.SUBJ_NAME, b.GRUP_NAME,
  13.             d.STUD_FAM ||' '|| SUBSTR(d.STUD_IMYA,1,1) ||'.'|| SUBSTR(d.STUD_OTCH,1,1) ||'.' AS STUD_NAME,
  14.             e.OCENKA
  15.           FROM
  16.             KMV_T3_STUDY a                                        
  17.             left join KMV_T3_GRUP b ON b.GRUP_ID = a.GRUP_ID
  18.             left join KMV_T3_SUBJECTS c ON c.SUBJ_ID = a.SUBJ_ID
  19.             left join KMV_T3_STUDENTS d ON d.GRUP_ID = b.GRUP_ID
  20.             left join KMV_T3_PROGRESS e ON e.STUD_ID = d.STUD_ID AND e.GRUP_ID = d.GRUP_ID AND e.SUBJ_ID = c.SUBJ_ID
  21.           ORDER BY
  22.             c.SUBJ_NAME, b.GRUP_NAME;
  23.            
  24. BEGIN
  25.   GR_OLD := '-';
  26.  
  27.   FOR x IN c_subj
  28.   LOOP
  29.       SUBJ_NAME := x.SUBJ_NAME;
  30.       DBMS_OUTPUT.put_line('Предмет - ' || SUBJ_NAME);
  31.      
  32.           FOR y IN c_tot
  33.           LOOP
  34.               IF SUBJ_NAME = y.SUBJ_NAME THEN
  35.                   GR_NEW := y.GRUP_NAME;
  36.  
  37.                   --выводим значение группы
  38.                   IF GR_NEW <> GR_OLD THEN
  39.                     DBMS_OUTPUT.put_line('Группа - ' || GR_NEW);
  40.                   END IF;
  41.                  
  42.                   --формируем значение оценки
  43.                   IF y.OCENKA IS NULL THEN
  44.                     OCENKA := 'Нет оценки';
  45.                   ELSE
  46.                     OCENKA := 'Оценка: ' || y.OCENKA;
  47.                   END IF;
  48.                  
  49.                   --выводим результат по совпадениям
  50.                   DBMS_OUTPUT.put_line(CHR(9) || y.STUD_NAME ||' | '|| OCENKA);
  51.  
  52.                   GR_OLD := GR_NEW;
  53.               END IF;
  54.           END LOOP;
  55.           DBMS_OUTPUT.put_line('');
  56.          
  57.   END LOOP;
  58. END;
  59.  
Advertisement
Add Comment
Please, Sign In to add comment