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

Вниз

Динамическое создание полей в хранимой процедуре   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1225360325
Mozgan
2008-10-30 12:52
2008.12.07
Событие активной формы


1-1194952417
OlegM
2007-11-13 14:13
2008.12.07
Как отключить правую кнопку мыши в программе


1-1202989267
lead-in
2008-02-14 14:41
2008.12.07
TSFDS


15-1223143297
Cyrax
2008-10-04 22:01
2008.12.07
Устанавливают ли срок службы на сотовые телефоны ?


15-1223022581
Vlad Oshin
2008-10-03 12:29
2008.12.07
Разыскивается документация/статьи по компонентам DevExpress