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

Вниз

Левое внешнее объединение 2х хранимых процедур   Найти похожие ветки 

 
Avreliy   (2003-08-12 18:13) [0]

Здравствуйте мастера!
Не могу понять, что неправильно в следующем коде:(отрывок ХП)
--------------------------------------------------
..
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;

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


 
Desdechado ©   (2003-08-12 19:52) [1]

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


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

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


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

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


 
Praco ©   (2003-08-13 09:03) [4]

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



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

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

Наверх




Память: 0.47 MB
Время: 0.029 c
14-10951
SergP
2003-08-15 19:53
2003.09.04
Asynchronous socket error 10054


3-10544
TuZ
2003-08-12 10:15
2003.09.04
Уникальный номер зависящий от даты


7-11007
AndrewK
2003-06-23 13:25
2003.09.04
Как организовать процесс...


14-10893
Soft
2003-08-18 17:11
2003.09.04
Против лома нет приема, даже ИИ:)


3-10603
Optim
2003-08-13 18:13
2003.09.04
Трабл с FireBird