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

Вниз

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

Наверх




Память: 0.48 MB
Время: 0.037 c
14-1078348728
Style
2004-03-04 00:18
2004.03.28
Вот еще компонентик написал, оцените


14-1077967753
menart
2004-02-28 14:29
2004.03.28
Microsoft прекращает поддержку Windows98!


1-1078921135
fatal
2004-03-10 15:18
2004.03.28
Как лучше организовать выбор?


7-1072264252
nester
2003-12-24 14:10
2004.03.28
Как внедрить свой тулбар в оутлук?


1-1078548159
Android
2004-03-06 07:42
2004.03.28
TRxRichEdit