Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
ВнизНеправильный результат в процедуре Найти похожие ветки
← →
korvin © (2004-12-03 16:59) [0]Проблема с входящим параметром. Смысл в том, чтобы сравнить введённую дату с полем 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
← →
DSKalugin © (2004-12-03 18:05) [1]and (OPLATA.OPLATA_DATA= тут двоеточие DATA_FIRST)
потому что параметры в запросах пишутся с двоеточием для отличия от названия полей.
Правильно так
and (OPLATA.OPLATA_DATA= : DATA_FIRST)
Это РАС
ДВА: проконтролируй использование двойных кавычек
← →
korvin © (2004-12-03 18:16) [2]Спасибо, с двоеточием действительно лучше :)
А насчёт кавычек - всё окей будет
← →
Johnmen © (2004-12-03 20:28) [3]А в чём ценность данной процедуры ?
← →
DrPass © (2004-12-03 21:00) [4]Вероятно, для самообразования
← →
korvin © (2004-12-03 23:25) [5]Я выложил только начальную часть процедуры. Вообще-то она выдаёт полный подсчитанный по каждому заказчику отчёт егооплаты всеми видами платежей, распределяя поле оплаты в базовой таблице по результирующим колонкам процедуры: Колонка оплаченной клиентом суммы по банку, колонка оплаченой суммы по кассе ...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c