"Alexandr Kochmin" ...
>
> и еще решил попробовать новый EB
> execute block
> returns (
> id integer)
> as
> declare variable id1 integer;
> begin
id = 0;
> for select id from p1 into :id1 do
> id=id+1;
> suspend;
> end
>
> и тут хоть есть -- перед suspend хоть нету, но возвращаются записи.
> А я то хотел съэмулировать count
Ни фига не возвращается
> Однако если убрать совсем suspend вместе с комментарием, то возвращается ID=1
> и все!
NULL у тебя должен вернуться
> вообще фигня какая-то с этим execute block или я чего-то не прочитал.
Ышы фигню у себя ;)
> Но в RN вроде ничего не написано про такие особенности.
Ибо их нет ;)
> ну и заодно, ibexpert не понимает execure block хотя я ему задал в
> регистрационной информации, что сервер FB2
> но это уже не сюда да и к теме не относится.
IBE понимает EB уже хрен знает сколько лет :)
--
Хорсун Влад
PS
1.
SELECT COUNT(*) FROM ORDERS
COUNT = 1080000
FB 2.0.1 Execute time = 1s 142ms
FB 2.1.0 Execute time = 1s 221ms
2.
CREATE PROCEDURE P1
RETURNS (ID INT)
AS
BEGIN
FOR SELECT O_ID FROM ORDERS INTO :ID
DO SUSPEND;
END
SELECT COUNT(*) FROM P1
COUNT = 1080000
FB 2.0.1 Execute time = 4s 427ms
FB 2.1.0 Execute time = 3s 485ms
3.
EXECUTE BLOCK RETURNS (ID INT)
AS
DECLARE O_ID INT;
BEGIN
ID = 0;
FOR SELECT O_ID FROM ORDERS INTO :O_ID
DO ID = ID + 1;
SUSPEND;
END
ID = 1080000
FB 2.0.1 Execute time = 1s 973ms
FB 2.1.0 Execute time = 2s 273ms