Страница 1 из 1

Вызов процедуры из процедуры - объясните ?

Добавлено: 30 сен 2005, 10:19
arkiv
1)
select A_ID from Procedure1(6,0,69)
Запрос выдает в данном случае около 30 записей. (обрабатывает всего около 200)
внутри процедура обращается к таблице "XX" (всего около 200 записей)
время выполнения меньше секунды
2)
хочу
сделать следущее:
select A_ID from XX where A_ID in (select A_ID from Procedure1(6,0,69))

что тут не правильно ?
запрос выполняется в минутах !! 10-15мин.

в процедуре идет выборка всех A_ID таблицы соответствующим условию . тамже при разных условиях может использоваться рекурсия.
но я думаю что и это не главное.
так как в свободном полете Procedura1 Выполняется на Ура!,

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

все работает с одой и тойже таблицей...

FireBird 152

Добавлено: 30 сен 2005, 10:27
kdv
ну потому что where id in означает полный просмотр таблицы xx и на каждую ее запись вызов процедуры. То есть чтение происходит количество записей xx * число возвращаемых из процедуры.

Добавлено: 30 сен 2005, 10:50
arkiv
kdv писал(а):ну потому что where id in означает полный просмотр таблицы xx и на каждую ее запись вызов процедуры. То есть чтение происходит количество записей xx * число возвращаемых из процедуры.
А какие нибудь предложения по этому поводу можно получить ?
чтоб уйти от многократного вызова процедуры.
SOME - наверно также себя ведет ?

Добавлено: 30 сен 2005, 12:50
Merlin
Select XX.A_ID
From Procedure1(6,0,69), XX
Where XX.A_ID=Procedure1.A_ID

Добавлено: 30 сен 2005, 15:35
arkiv
Merlin писал(а):Select XX.A_ID
From Procedure1(6,0,69), XX
Where XX.A_ID=Procedure1.A_ID
Спасибо работает !. так красивей.

а я было уже сам чтото придумал:
for
select A_ID from Procedure1(6,0,69)
into A_ID
do
begin
select * from XX where AD_ID=A_ID
end
тоже работает..