![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Большой запрос в interbase 6.0 [D6, IB6.x]
Васек1 © (2005-03-01 17:03:00)Уважаемые мастера, подскажите плиз начинающему. Написал большую сторед процедуру (1282 строки) и она не работает. Если комментирую любой из кусков то работает, те такое впечатление что пролблема в длинне процедуры.
А может его как то оптимизировать можно?
запрос такого типа:
CREATE PROCEDURE STP_GET_EMPLOYEE_ACCOUNTS (
EMPLOYEEID INTEGER)
RETURNS (
ACCOUNTID INTEGER)
AS
DECLARE VARIABLE ISREP VARCHAR(1);
DECLARE VARIABLE ISSPEC VARCHAR(1);
begin
(isRep <> 'Y' and
isSpec <> 'Y' and) then
for
select a.accountID
from ..........
into :accountID
do suspend;
union
else if
(isRep <> 'Y' and
isSpec = 'Y' and) then
for
select a.accountID
from ......
into :accountID
do suspend;
.....................
end
Васек1 (2005-03-02 13:16:00) [1]Спасибо большое за ответы. Мне кажется самый лучьший вариант из всего выше изложенного будет вынести исполняемый код в несколько других процедур и вызывать их из первой в зависимости от условия. Еще раз большое спасибо.
Desdechado (2005-03-01 20:47:00) [2]2 DSKalugin
Может, человек хочет всю бизнес-логику на сервер вынести. Такое поощрять надо.
DSKalugin (2005-03-01 19:27:00) [3]все это можно решить без использования ХП на стороне клиента обычными запросами
Desdechado (2005-03-01 17:22:00) [4]передать "вариант" как параметр извне
Васек1 (2005-03-01 17:12:00) [5]спасибо огромное за ответ, а если попробовать оптимизтровать без case можно как то ? Те в запросе идет полный перебор всех вариантов
(isRep <> 'Y' and ..... and isSpec = 'Y' and)
Desdechado (2005-03-01 17:08:00) [6]длина откомпилированного кода процедуры (со всемы вызываемыми) не может превышать 64 кб
раздели на 2