Форум: "Базы";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание полей в хранимой процедуре Найти похожие ветки
← →
Dizzzel (2008-05-16 10:06) [0]Здравствуйте уважаемые мастера!
Нужно составить отчет за определенный период времени. Интервал задается. Условие таково, что каждый день должен быть выведен в виде столбца. Подскажите пожалуйста, как можно в хранимой процедуре добавлять выходные значения без перекомпиляции. Говорят такое возмозможно через EXECUTE BLOCK, но ни одного более-менее внятного примера не нашел.
Другим способ построить отчет не предоставляется возможным.
Сервер БД FB 2.1
Зарание спасибо.
← →
DrPass © (2008-05-16 10:14) [1]
> Подскажите пожалуйста, как можно в хранимой процедуре добавлять
> выходные значения без перекомпиляции. Говорят такое возмозможно
> через EXECUTE BLOCK
Через EXECUTE BLOCK можно менять входные (грубо говоря) значения. Либо вообще отказаться от использования хранимых процедур, и динамически строить SQL.
А вообще, такая задача обычно легко решается не коверканьем хранимых процедур, а просто созданием кросс-отчета в генераторе отчетов. Ты ж, надеюсь, им пользуешься?
← →
Johnmen © (2008-05-16 10:38) [2]http://delphimaster.net/view/3-1210235833/
← →
Dizzel (2008-05-16 12:13) [3]
> Johnmen © (16.05.08 10:38) [2]
>
> http://delphimaster.net/view/3-1210235833/
PEAKTOP © (08.05.08 19:26) [4]
http://firebird.name/doku.php?id=execute_block
По данной ссылке есть пример :
execute block returns (result varchar(30))
AS
declare variable vtest integer;
begin
UPDATE rdb$functions fr
SET fr.rdb$function_name = fr.rdb$function_name
WHERE 1 = 1;
result = "Обновили "||row_count||" записей";
suspend;
UPDATE rdb$functions fr
SET fr.rdb$function_name = fr.rdb$function_name
WHERE fr.rdb$function_name = "test";
result = "Обновили "||row_count||" записей";
suspend;
FOR SELECT fr.rdb$function_type
FROM rdb$functions fr
WHERE fr.rdb$function_name LIKE "RDB$%"
INTO :vtest do
begin
end
result = "Получили "||row_count||" записей";
suspend;
end
Но при попытке выполнить его через IbExpert в SQL Editor-e или же включив в тело хранимой процедуры IbExpert ругается на первую строчку данного примера
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 9.
block.
В чем может быть дело?
← →
Сергей М. © (2008-05-16 12:30) [4]У меня не ругается.
Что я делаю неправильно ?
Да и не EXECUTE BLOCK тебе нужен, не решает он твоей задачи.
Обычны кросс-отчет т6ебе нужен, а не выкрутасы с EXECUTE BLOCK.
← →
Dizzel (2008-05-16 13:05) [5]
> Сергей М. © (16.05.08 12:30) [4]
А можно по шагам, что вы делаете? :)
А по кросс-отчетам можно по подробнее?
← →
Сергей М. © (2008-05-16 14:11) [6]
> можно по шагам
А тут и шагов никаких не надо - если токен неизвестен, то версия твоего ФБ-сервера меньше 2-й, с которой собссно и стала доступна эта фича. Он, сервер, просто не понимает что ты от него хочешь в предложении EXECUTE BLOCK, о чем честно и рапортует возвратом этой ошибки.
> по кросс-отчетам можно по подробнее?
В палитре компонентов есть стандартная закладка Decision Cube, в справке имеется назначение и описание компонентов с этой закладки.
Почитай для начала.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c