Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизХранимая процедура Найти похожие ветки
← →
Противник войны (2003-03-27 09:50) [0]хочу сделать что то подобное, но в хранимой процедуре сервера это не предусмотренно
for select z.kodl from zp z1, zu z2, nя n1
where z1.kod=z2.kod and
z2.kodn=n1.kodn and
n1.n in (:i_n)
делать временную таблицу с перебором делать не желательно
может кто нито подскажет как орагнизовать диапазон значений в выборке?<
← →
Соловьев (2003-03-27 09:55) [1]=????
← →
Соловьев (2003-03-27 09:58) [2]или так:
<= and >=
← →
Противник войны (2003-03-27 10:02) [3]нет
в переменной :i_n формируеться строковое значение (там может быть и 1 вхождение "А" а может быть и N вхождений "А, В, С, Д, Е, Ж")
(и еще прежде чем довать совет посмотрите как работает опретор IN)
← →
Соловьев (2003-03-27 10:05) [4]
> (и еще прежде чем довать совет посмотрите как работает опретор
> IN)
нужно давать полное описание своей процедуры. Форум телепатов сейчас перенесли.
> в переменной :i_n формируеться строковое значение (там
> может быть и 1 вхождение "А" а может быть и N вхождений
> "А, В, С,
like
← →
Сторонник мира (2003-03-27 10:05) [5]>>но в хранимой процедуре сервера это не предусмотренно
Макроподстановки вообще не предусмотрены !
← →
Противник войны (2003-03-27 10:10) [6]create procedure VSATISTICAPLATPONAZN (
i_god integer,
i_vidar integer,
i_n varchar(3000))
returns (
r_nach numeric(15,2),
r_opl numeric (15,2))
as
declare variable p_kodzempol integer;
begin
for select z.kodl from zp z1, zu z2, nя n1
where z1.kod=z2.kod and
z2.kodn=n1.kodn and
n1.n in (:i_n))
into :p_kodzempol
do
begin
....
end
end
вот по этому и прощу совета как это наиболее рационально организовать
Строить циклический вызов процедуры из приложения с накоплением результата это самоубийство ресурсов сети
← →
Fiend (2003-03-27 10:11) [7]ну если в хранимой процедуре то на мой взгляд тока временная таблица впоне приемлемый метод, и в случаеи ИБ наверное единственный.
Хотя я не исключаю что можно сделать внутри процедуры динамический запрос, предварительно ею же и сформируленный. Однако сам такого в ИБ не делал, потому не берусь утверждать что так в нём можно.
Ну и ка кбы последжний вариант, если конечно можно обойтись без ХП, то может просто сформировать из клиента запрос (как строку) и выполнить его?
← →
Противник войны (2003-03-27 10:14) [8]по поводу выполения на клиенте да так и работало
но теперь вся логика и все запросы вынесены на сервер
а исключения - это плохое правило, и пребегать к нему не хочеться
← →
Sergey13 (2003-03-27 10:20) [9]2Противник войны (27.03.03 10:14)
А что за данные в этом IN? Если это данные из реальных таблиц, то можно подзапрос вставить. Если это произвольные значения, то только временная таблица, ИМХО, и опять же подзапрос из нее.
← →
Противник войны (2003-03-27 10:24) [10]>Sergey13 ©
это строковое занечение, формируемое по желанию пользователя (ему предлягаеться список в chekbox и он выбирает то что ему необходимо для построения отчета)
временных таблиц тоже кучу не разведеш (если всем понадобиться одновременно этот отчет!!)
← →
Соловьев (2003-03-27 10:34) [11]написать UDF, которая будет разбивать строку на составляющие и в цыкле проганять...
← →
Противник войны (2003-03-27 10:37) [12]да спасибо
с udf - это красиво
← →
Fiend (2003-03-28 13:21) [13]То Противник войны:
а временных таблиц и н надо на каждого юзера, для этого есть User который даёт логин пользователя.
Я надеюсь они все не под одним логином ходят?
← →
zacho (2003-03-28 21:00) [14]Можешь посмотреть в сторону FB 1.5 - там есть SELECT FROM STATEMENT, EXECUTE STATEMENT (или EXECUTE VARCHAR ? Уже не помню, в общем посмотри сам)
← →
Sergey Masloff (2003-03-28 22:15) [15]Fiend © (27.03.03 10:11)
>ну если в хранимой процедуре то на мой взгляд тока временная >таблица впоне приемлемый метод, и в случаеи ИБ наверное >единственный.
Использование временных таблиц в IB (и в любой СУБД версионного типа) чревато огромными неприятностями при интенсивной многопользовательской работе.
zacho ©
>Можешь посмотреть в сторону FB 1.5 - там есть SELECT FROM >STATEMENT
Есть execute varchar но селект из него делать нельзя.
← →
zacho (2003-03-28 22:31) [16]
> Sergey Masloff (28.03.03 22:15)
Может быть, я FB 1.5 еще не щупал, просто вспомнилось, что где-то читал про SELECT FROM STATEMENT, может просто приглючилось :-), а может это было в планах разработчиков или вишах юзеров, не помню :-) В общем, пусть автор исходного поста сам посмотрит, что там есть, если, конечно, ему это надо :) А с тобой полностью согласен - нефиг делать "временные таблицы", наверняка задачу можно решить другим способом.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.028 c