Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Interbase: как создать представление(вид) из хр. процедуры?   Найти похожие ветки 

 
Dron   (2004-02-26 15:23) [0]

Здравствуйте. Можно ли создать каким-либо способом в хранимой процедуре вид? Проблема в том, что мне нужен вид, созданный по определенным входным параметрам, а эти параметры можно получить только из входных параметров хп. Получается замкнутый круг - мне нужен вид, созданный по данным за определенный промежуток времени, но при создании вида я эти параметры передать не могу. Надеюсь обьяснил как мог. Какие предложения?


 
Zacho ©   (2004-02-26 15:25) [1]

Нельзя. В ХП и триггерах операторы DDL не доступны. Лучше сделай обычнуй селективную ХП вместо view.


 
stud ©   (2004-02-26 15:26) [2]

чего-то ты недоговариваещ))))
зачем вид? если ХП на выходе выдаст то что ты хочеш


 
Johnmen ©   (2004-02-26 15:26) [3]

>Какие предложения?

Зачем виды то ? Просто запрос, пусть и сложный...


 
Dron   (2004-02-26 15:38) [4]

В виде у меня обьединяются выборки из 3 таблиц - полная каша. Например

CREATE VIEW FORM18A_VIEW(
   V18A_DESCR,
   V18A_DATE_TIME,
   V18A_TIME_UNAVAL,
   V18A_LINKS,
   V18A_MESS_OUT,
   V18A_MESS_REP_OUT,
   V18A_OCT_OUT,
   V18A_MESS_INC,
   V18A_OCT_INC)
AS
select
links_names.descr,
links_data.date_time,
count(links_data.link_num),
sum(links_data.mess_out),
sum(links_data.mess_rep_out),
sum(links_data.oct_out),
sum(links_data.mess_inc),
sum(links_data.oct_inc),
links_time_unaval.time_unaval
from links_names,links_data,links_time_unaval
where
/**/
group by
links_names.descr,links_data.date_time,links_time_unaval.time_unaval;

А затем в хп я работаю как с обычной таблицей. Примерно так

begin
 select
 FORM18A_VIEW.v18a_descr,
 "Макс",
 max(FORM18A_VIEW.v18a_links),
 max(FORM18A_VIEW.v18a_mess_out),
 max(FORM18A_VIEW.v18a_mess_rep_out),
 "-",
 max(FORM18A_VIEW.v18a_oct_out)/450,
 max(FORM18A_VIEW.v18a_oct_out)/(450*max(FORM18A_VIEW.v18a_links)*65536),
 max(FORM18A_VIEW.v18a_mess_inc),
 max(FORM18A_VIEW.v18a_oct_inc)/450,
 max(FORM18A_VIEW.v18a_oct_inc)/(450*max(FORM18A_VIEW.v18a_links)*65536),
 "-",
 max(FORM18A_VIEW.v18a_time_unaval),
 "-"
 from FORM18A_VIEW
   where
   FORM18A_VIEW.v18a_date_time between :my_date and :my_date_end and
   form18a_view.v18a_descr = :descrr
 group by form18a_view.v18a_descr
 into
 :descr,:par,:kolvo,:mess_o,:rep,:emp1,:bit_c_o,:erlang_o,
 :mess_i,:bit_c_i,:erlang_i,:emp2,:time_puch,:emp3;
 suspend;

Что плохо: вид создается в данном случае по всем данным которые есть в 3 таблицах, а в хп я делаю выборку за опред. промежуток. Нужно каким-то образом сделать вид именно за тот промежуток, за который идет выборка в хп (зачем мне в виде лишние данные?).
Извиняюсь за своё кривое обьяснение.


 
AlexA ©   (2004-02-26 15:56) [5]

Что я не понял... :)
Я так будет не проще Select * from My_HP(:my_date, :my_date_end, ::descrr)


 
Desdechado ©   (2004-02-26 19:00) [6]

процедурой можно перелопатить БД как хочешь, вдоль и поперек
задай параметры и мучай БД

а динамическое создание вьюх - дурной тон, т.к. количество изменений метаданных в IB ограничено, да и конфликты совместного доступа никто не отменял.
ну и на последок, как было сказано, изменение метаданных в хост-языке ХП недоступно



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
1-1078680567
$tranger
2004-03-07 20:29
2004.03.28
Создание пункта в меню


9-1061360288
Flyer
2003-08-20 10:18
2004.03.28
Проблема с PixelCheck


9-1049571866
DJ GRAFIKI
2003-04-05 23:44
2004.03.28
Подскажите как установить заголовочные файлы directx 9 на Делфи 7


1-1078601071
DIS
2004-03-06 22:24
2004.03.28
WebBrowser


1-1078484177
PiratA
2004-03-05 13:56
2004.03.28
Динамическое создание компонент...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский