Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Исполнение процедуры в FB   Найти похожие ветки 

 
onix   (2004-01-21 14:48) [0]

Доброго времени суток.
Не укажите ли на неточность в следующем тексте.
CREATE PROCEDURE EP_COPYTIMETABLE (
GROUPS INTEGER
) AS

declare variable ID integer;
declare variable DISC integer;
declare variable DAY_ integer;
declare variable PAIR integer;
declare variable DATA date;
declare variable TEACHER integer;
declare variable TYPELESSON integer;

begin
for select ID,DISCIPLINE, DAYS, PAIRNUM, DATA
from EP_TIMETABLE
where GROUPS=:GROUPS and US_="T" and DAYS<8
into :ID, :DISC, :DAY_, :PAIR, :DATA
do
BEGIN
insert into EP_TIMETABLE
values (gen_id(timetable_id, 1), :GROUPS, :DISC, :DAY_+7, :PAIR, :DATA, "T");

select IDTEACHER, IDTYPELESSON from EP_TEACHERTIMETABLE
where IDTIMETABLE = :ID
into :TEACHER, :TYPELESSON;

insert into ep_teachertimetable
values (gen_id(teachertimetable_id, 1), :teacher, gen_id(timetable_id, 0), :typelesson);

SUSPEND;
END
end

Все работает только один раз при первом проходе. Хотя под отладчиком видно, что цикл работает, да и генераторы тоже увеличиваются. А вот значения не прописываются.

Удачи и процветания Дмитрий


 
Johnmen ©   (2004-01-21 14:54) [1]

По-моему, серьёзный подводный камень - модифицировать таблицу на основании полученных только что из нее данных. В данном случае, SELECT... и INSERT... в одной связке...


 
onix   (2004-01-21 15:47) [2]

>Johnmen © (21.01.04 14:54) [1]
Ну тогда посоветуйте пути решения проблемы


 
Desdechado ©   (2004-01-21 15:54) [3]

сначала объясните логику того, что вы делаете и зачем такие выверты...


 
Deniz ©   (2004-01-22 07:04) [4]

Еще, как маленькое дополнение, после insert into EP_TIMETABLE и до values указать явный список поле.
+ > Johnmen © (21.01.04 14:54) [1] SELECT... и INSERT... в одной связке..., точнее
for select ... from t into ... do
insert into t ...

не понятная конструкция, и что этим надо добиться, видно только, что добавляется почти идентичная запись, исключение 2 поля ID и DAYS. Или даже одно, ведь ID не информационное, а просто сурогатный ПК. Зачем?


 
onix   (2004-01-22 09:35) [5]

Есть расписание занятий для одной недели. Каждое занятие может проводить 1 и более преподов.
ID в timetable = idtimetable в teachertimetable

Нужно скопировать расписание этой недели в расписание второй недели с привязками преподов, поскольку в реале они почти совпадают, за исключением нескольких занятий. Ведь легче поправить, чем лупить по клавишам два раза одно и тоже.


 
Johnmen ©   (2004-01-22 09:48) [6]

>onix

Это начало разработки или конец ?


 
onix   (2004-01-22 18:09) [7]

>Johnmen © (22.01.04 09:48) [6]

Уже КОНЕЦ. Проблему удалось решить с помощью 2-х ХП, не очень нравиться, но работает. Проект переделал с MS SQL, там похожая конструкция работала нормально.


 
jack128 ©   (2004-01-22 19:07) [8]


> onix (22.01.04 18:09) [7]
Я думаю тебе стоит почитать про нормализацию..
Вообще если в базе очень много одинаковых данных(как у тебя -расписание предметов) - это уже повод призадуматься.
ИМХО, лудше бы сделать примерно так:
(сделано в предположении, что расписание предметов НЕ меняется, меняются только преподаватели)

table A
таблица расписание - содержит 7дней* кол-во групп записей
id, группа, предмет, день, аудитория и тд..

table B
таблица учители
id, ФИО, предмет

table C
связь между учителями и теми днями, в которые они ведут предметы
id, id учителя, id из таблицы расписания, дата занятия.
В этом случае для того, чтобы указать, что какой то препод ведет некий предмет, нужно только добавить запись в таблицу С.


 
P.N.P. ©   (2004-01-22 22:22) [9]

А может SUSPEND перенести?
...
END
SUSPEND;
end



Страницы: 1 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
8-38962
Dimarik
2003-10-13 12:54
2004.02.13
D7 + Gif


1-38910
Dik
2004-02-04 14:45
2004.02.13
Текстовый редактор


3-38736
Zn
2004-01-21 13:16
2004.02.13
Как отключить все активные DataSet?


14-39039
Романов Р.В.
2004-01-13 09:32
2004.02.13
Товарищи, используйте евроразетки для подключения ПК!


3-38687
3APA3A
2004-01-23 18:27
2004.02.13
Выборка, нечуствительная к регистру букв...