Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Левое внешнее объединение 2х хранимых процедур [D7, IB6.x]


Avreliy ©   (2003-08-12 18:13:00) 

Здравствуйте мастера!
Не могу понять, что неправильно в следующем коде:(отрывок ХП)
--------------------------------------------------
..
BEGIN
DELETE FROM DEPP;
Temp = GEN_ID(DEPNO_GEN, -GEN_ID(DEPNO_GEN, 0));
INSERT INTO DEPP(EMPLOYEENO, POST, SURNAME, SUMM, QTY, TOTALSUMM)
SELECT SP1.EMPLOYEENO, SP1.POST, SP1.SURNAME, SP1.SUMM,
SP1.QTY, SP2.TOTALSUMM
FROM SP_DEPP_DATE_ALL(:DEP, :DAT) SP1 LEFT OUTER JOIN
SP_DEPP_DATE_TOTALSUMM(:DEP, :DAT) SP2 ON SP1.EMPLOYEENO = SP2.EMPLOYEENO;
END^

--------------------------------------------------
Не хочет возвращать данные. Но вот, если левое внешнее объединение заменить внутренним, то всё работает.
--------------------------------------------------
..
BEGIN
DELETE FROM DEPP;
Temp = GEN_ID(DEPNO_GEN, -GEN_ID(DEPNO_GEN, 0));
INSERT INTO DEPP(EMPLOYEENO, POST, SURNAME, SUMM, QTY, TOTALSUMM)
SELECT SP1.EMPLOYEENO, SP1.POST, SP1.SURNAME, SP1.SUMM,
SP1.QTY, SP2.TOTALSUMM
FROM SP_DEPP_DATE_ALL(:DEP, :DAT) SP1, SP_DEPP_DATE_TOTALSUMM(:DEP, :DAT) SP2
WHERE SP1.EMPLOYEENO = SP2.EMPLOYEENO;
END^

--------------------------------------------------
В то же время запрос
--------------------------------------------------

SELECT SP1.EMPLOYEENO, SP1.POST, SP1.SURNAME, SP1.SUMM,
SP1.QTY, SP2.TOTALSUMM
FROM SP_DEPP_DATE_ALL(:DEP, :DAT) SP1 LEFT OUTER JOIN
SP_DEPP_DATE_TOTALSUMM(:DEP, :DAT) SP2 ON SP1.EMPLOYEENO = SP2.EMPLOYEENO;

--------------------------------------------------
работает правильно.


Praco   (2003-08-13 09:03:00) [1]

http://www.ibase.ru/devinfo/dontdoit.htm
Посмотри п.14
Может это твой случай?


kaif   (2003-08-13 00:13:00) [2]

Извиняюсь, проглядел... Сам запрос работает. Это уже хуже. А что значит не хочет возвращать данные? Ошибку генерит или просто ничего не инсертит?


kaif   (2003-08-13 00:09:00) [3]

А отдельно select-запрос (без insert-а) работает?
Или дает ошибку no current record for fetch operation?
Вообще объединения процедур иногда работают неправильно. Особенно левые. Можно попытаться изменить и текст самих процедур. Иногда это помогает. Например, у меня бывали проблемы с union внутри процедур.


Desdechado   (2003-08-12 19:52:00) [4]

попробуй явное приведение типов


Наверх

Титульная страница Поиск, карта сайта Написать письмо