Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-1196066866
tytus
2007-11-26 11:47
2008.12.07
как заставить Indy 10 передавать тело письма по русски ?


2-1224695992
Сергей Кокоулин
2008-10-22 21:19
2008.12.07
Определение доступных COM портов?


3-1210766792
MishaLuk
2008-05-14 16:06
2008.12.07
убрать монопольный доступ


6-1196064124
botaniQ
2007-11-26 11:02
2008.12.07
Select в WebBrowser


2-1225112211
X-Type
2008-10-27 15:56
2008.12.07
COM (Initialize)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский