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

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

Неправильный результат в процедуре [D6, IB6.x]


korvin ©   (2004-12-03 16:59:00) 

Проблема с входящим параметром. Смысл в том, чтобы сравнить введённую дату с полем OPLATA_DATA, но результат выдыёт совершенно дикий (неверно берёт значение даты). Если искомое значение подставить в скрипт процедуры "вручную" вместо OPLATA.OPLATA_DATA=DATA_FIRSTсделать   OPLATA.OPLATA_DATA='01.12.2004'то всё работает как надо.
С хранимыми процедурами я новичёк ... подскажите, в чём мой прощёт?
Куски текста процедуры прилагаю:

ALTER PROCEDURE "P_OPLATA"
( "DATA_FIRST" DATE)

RETURNS
( "KLIENT_FULLNAME" VARCHAR(70),
 "KLIENT_KOD" VARCHAR(4),
 "OPLATA_SUM" NUMERIC(8, 2))
 
AS
begin
 for select KLIENT.KLIENT_FULLNAME,
        KLIENT.KLIENT_KOD,
        sum(OPLATA.OPLATA_SUMA)
     from KLIENT, OPLATA
     where (KLIENT.KLIENT_KOD=OPLATA.KLIENT_KOD)
          and (OPLATA.OPLATA_DATA=DATA_FIRST)
  group by KLIENT.KLIENT_FULLNAME, KLIENT.KLIENT_KOD
   into  :KLIENT_FULLNAME,
         :KLIENT_KOD,
         :OPLATA_SUM
   do suspend;
end


korvin   (2004-12-03 23:25:00) [1]

Я выложил только начальную часть процедуры. Вообще-то она выдаёт полный подсчитанный по каждому заказчику отчёт егооплаты всеми видами платежей, распределяя поле оплаты в базовой таблице по результирующим колонкам процедуры: Колонка оплаченной клиентом суммы по банку, колонка оплаченой суммы по кассе ...


DrPass   (2004-12-03 21:00:00) [2]

Вероятно, для самообразования


Johnmen   (2004-12-03 20:28:00) [3]

А в чём ценность данной процедуры ?


korvin   (2004-12-03 18:16:00) [4]

Спасибо, с двоеточием действительно лучше :)
А насчёт кавычек - всё окей будет


DSKalugin   (2004-12-03 18:05:00) [5]

and (OPLATA.OPLATA_DATA= тут двоеточиеDATA_FIRST)
потому что параметры в запросах пишутся с двоеточием для отличия от названия полей.
Правильно так
and (OPLATA.OPLATA_DATA= :DATA_FIRST)

Это РАС
ДВА: проконтролируй использование двойных кавычек


Наверх

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