Автор Тема: Анонимный блок в SQL  (Прочитано 1510 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн xskull

  • Коллежский регистратор
  • *
  • Сообщений: 1
  • Репутация: 0
Анонимный блок в SQL
« : јРЩ 19, 2008, 02:00:56 pm »
Суть проблемы такая: у меня есть 2 таблицы - таблица сотрудников SOTR (столбцы номер сотрудника - nom_sotr, номер отдела - nom_otd, ФИО - fio, зарплата - zarpl) и таблица детей - DETI (столбцы номер сотрудника - nom_sotr, имя ребенка - name_child, возраст - voz, школа - school). У одного сотрудника может быть несколько детей.
Мне нужно создать анонимный блок, выводящий данные детей сотрудников, если у сотрудника зарплата превышает среднюю зарплату предприятия.

На данный момент у меня получилось следующее:

Код: (SQL) [Выделить]
declare
cursor cur1(z number) is select * from SOTR where zarpl>z order by zarpl;
dat_cur1 cur1%rowtype;

cursor cur2(n_s number) is select * from DETI where n_s=nom_sotr;
dat_cur2 cur2%rowtype;
a real;

begin
    select avg(zarpl) into a from SOTR;
    open cur1(a);
loop
    fetch cur1 into dat_cur1;
    exit when cur1%notfound;

    open cur2(dat_cur1.nom_sotr);
loop
    fetch cur2 into dat_cur2;
    exit when cur2%notfound;

     if dat_cur1.nom_sotr=dat_cur2.nom_sotr then
     dbms_output.put_line(rpad(dat_cur2.nom_sotr,5,' ')||rpad(dat_cur2.name_child,15,' ')||rpad(dat_cur2.voz,15,' ')||rpad(dat_cur2.school,25,' '));
     end_if;

end loop;
    close cur2;

end loop;
close cur1;

end;


Скажите, пожалуйста, будет ли работать этот код? Или надо что-то изменить?