Главная страница
    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.46 MB
Время: 0.009 c
1-38857
don_dampster
2004-02-02 12:28
2004.02.13
VBrun6 и ScriptControl


14-39050
DeMoN-777
2004-01-21 23:00
2004.02.13
Доки по азам MySQL


4-39145
diMAN
2003-12-10 19:49
2004.02.13
Локальная группа


1-38898
M!h
2004-02-04 15:57
2004.02.13
СОМ - технология


3-38699
Nikolai_S
2004-01-22 15:38
2004.02.13
Как через OLE DB приконнектиться к SQL Server по IP и порту?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский