Главная страница
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.056 c
1-1078469102
Alex_DM
2004-03-05 09:45
2004.03.28
Вызов модального окна. Возможно ли это?


7-1073569477
Яша
2004-01-08 16:44
2004.03.28
чтение файла по секторам


1-1078829595
Rauf
2004-03-09 13:53
2004.03.28
Wide аналог StrPos???


11-1056772152
Vladimir Kladov
2003-06-28 07:49
2004.03.28
Версия 1.78


14-1077799448
Polevi
2004-02-26 15:44
2004.03.28
Интерфейс пользователя