Главная страница
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.015 c
1-10814
lord
2003-08-21 11:55
2003.09.04
вывод переменной s= CSCFlags=0 #0 MAXUses=4294967295 на екран


1-10762
Nick_Omsk
2003-08-22 16:09
2003.09.04
Как организовать LOG?


1-10732
DVP1
2003-08-20 11:35
2003.09.04
Как проверить, нажата ли Enter в TStringGride в ячейке...


3-10633
Riko
2003-08-05 11:01
2003.09.04
Как реализовать неперекрываемость данных?


4-11029
Stany
2003-07-06 09:47
2003.09.04
Как получить атрибуты форматирования и шрифта текста в RichEdit д