Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хранимая процедура [D6, IB6.x]


Противник войны ©   (2003-03-27 09:50:00) 

хочу сделать что то подобное, но в хранимой процедуре сервера это не предусмотренно

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)

делать временную таблицу с перебором делать не желательно
может кто нито подскажет как орагнизовать диапазон значений в выборке?<


zacho   (2003-03-28 22:31:00) [1]


> Sergey Masloff (28.03.03 22:15)

Может быть, я FB 1.5 еще не щупал, просто вспомнилось, что где-то читал про SELECT FROM STATEMENT, может просто приглючилось :-), а может это было в планах разработчиков или вишах юзеров, не помню :-) В общем, пусть автор исходного поста сам посмотрит, что там есть, если, конечно, ему это надо :) А с тобой полностью согласен - нефиг делать "временные таблицы", наверняка задачу можно решить другим способом.


Sergey Masloff   (2003-03-28 22:15:00) [2]

Fiend © (27.03.03 10:11)
>ну если в хранимой процедуре то на мой взгляд тока временная >таблица впоне приемлемый метод, и в случаеи ИБ наверное >единственный.
Использование временных таблиц в IB (и в любой СУБД версионного типа) чревато огромными неприятностями при интенсивной многопользовательской работе.

zacho ©
>Можешь посмотреть в сторону FB 1.5 - там есть SELECT FROM >STATEMENT
Есть execute varchar но селект из него делать нельзя.


zacho   (2003-03-28 21:00:00) [3]

Можешь посмотреть в сторону FB 1.5 - там есть SELECT FROM STATEMENT, EXECUTE STATEMENT (или EXECUTE VARCHAR ? Уже не помню, в общем посмотри сам)


Fiend   (2003-03-28 13:21:00) [4]

То Противник войны:
а временных таблиц и н надо на каждого юзера, для этого есть User который даёт логин пользователя.
Я надеюсь они все не под одним логином ходят?


Противник войны   (2003-03-27 10:37:00) [5]

да спасибо
с udf - это красиво


Соловьев   (2003-03-27 10:34:00) [6]

написать UDF, которая будет разбивать строку на составляющие и в цыкле проганять...


Противник войны   (2003-03-27 10:24:00) [7]

>Sergey13 ©
это строковое занечение, формируемое по желанию пользователя (ему предлягаеться список в chekbox и он выбирает то что ему необходимо для построения отчета)
временных таблиц тоже кучу не разведеш (если всем понадобиться одновременно этот отчет!!)


Sergey13   (2003-03-27 10:20:00) [8]

2Противник войны (27.03.03 10:14)
А что за данные в этом IN? Если это данные из реальных таблиц, то можно подзапрос вставить. Если это произвольные значения, то только временная таблица, ИМХО, и опять же подзапрос из нее.


Противник войны   (2003-03-27 10:14:00) [9]

по поводу выполения на клиенте да так и работало
но теперь вся логика и все запросы вынесены на сервер

а исключения - это плохое правило, и пребегать к нему не хочеться


Fiend   (2003-03-27 10:11:00) [10]

ну если в хранимой процедуре то на мой взгляд тока временная таблица впоне приемлемый метод, и в случаеи ИБ наверное единственный.
Хотя я не исключаю что можно сделать внутри процедуры динамический запрос, предварительно ею же и сформируленный. Однако сам такого в ИБ не делал, потому не берусь утверждать что так в нём можно.

Ну и ка кбы последжний вариант, если конечно можно обойтись без ХП, то может просто сформировать из клиента запрос (как строку) и выполнить его?


Противник войны   (2003-03-27 10:10:00) [11]

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

вот по этому и прощу совета как это наиболее рационально организовать
Строить циклический вызов процедуры из приложения с накоплением результата это самоубийство ресурсов сети


Соловьев   (2003-03-27 10:05:00) [12]


> (и еще прежде чем довать совет посмотрите как работает опретор
> IN)

нужно давать полное описание своей процедуры. Форум телепатов сейчас перенесли.

> в переменной :i_n формируеться строковое значение (там
> может быть и 1 вхождение "А" а может быть и N вхождений
> "А, В, С,

like


Сторонник мира   (2003-03-27 10:05:00) [13]

>>но в хранимой процедуре сервера это не предусмотренно

Макроподстановки вообщене предусмотрены !


Противник войны   (2003-03-27 10:02:00) [14]

нет
в переменной :i_n формируеться строковое значение (там может быть и 1 вхождение "А" а может быть и N вхождений "А, В, С, Д, Е, Ж")

(и еще прежде чем довать совет посмотрите как работает опретор IN)


Соловьев   (2003-03-27 09:58:00) [15]

или так:
<= and >=


Соловьев   (2003-03-27 09:55:00) [16]

=????


Наверх

Титульная страница Поиск, карта сайта Написать письмо