powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ХП с возвратом 1 записи: при вызове через exec returning_values нет вып-я после suspend'а
3 сообщений из 3, страница 1 из 1
ХП с возвратом 1 записи: при вызове через exec returning_values нет вып-я после suspend'а
    #38626315
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

DDL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> create or alter procedure p1 as begin end;
SQL> commit;
SQL> recreate table tlog(dts timestamp default 'now', text varchar(50));
SQL> commit;
SQL>
SQL> set term ^;
SQL> create or alter procedure p1 returns(n int) as
CON> begin
CON>   in autonomous transaction do
CON>   insert into tlog(text) values('p1 start');
CON>
CON>   select count(*) from rdb$types,rdb$types,(select 1 i from rdb$types rows 20) into n;
CON>
CON>   suspend;
CON>
CON>   in autonomous transaction do
CON>   insert into tlog(text) values('p1 finish, n='||:n);
CON>
CON> end
CON> ^ set term ;^
SQL> commit;

Test-1 :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> commit;
SQL> set term ^;
SQL> execute block as --returns(n int ) as
CON>   declare n int;
CON> begin
CON>   delete from tlog;
CON>    select n from p1  into n;
CON> end
CON> ^ set term ;^
SQL> commit;
SQL> select * from tlog;

                      DTS TEXT
========================= =====================
2014-04-25 21:57:26.5260  p1 start
2014-04-25 21:57:27.2090  p1 finish, n=1270080
(Ok, после suspend'a был выполнен второй insert в tlog)

Test-2 :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> commit;
SQL> set term ^;
SQL> execute block as
CON>   declare n int;
CON> begin
CON>   delete from tlog;
CON>   execute procedure p1  returning_values n; 
CON> end
CON> ^ set term ;^
SQL> commit;
SQL> select * from tlog;

                      DTS TEXT
========================= =======================
2014-04-25 21:57:42.4290  p1 start

При вызове через execute returning_values в таблице tlog будет только одна запись. Судя по всему, после suspend'a ничего больше не делается.

Это так и должно быть ?
...
Рейтинг: 0 / 0
ХП с возвратом 1 записи: при вызове через exec returning_values нет вып-я после suspend'а
    #38626318
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ХП с возвратом 1 записи: при вызове через exec returning_values нет вып-я после suspend'а
    #38626333
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЭто так и должно быть ?
Чёрным же по белому написано в документации, что в executeble procedures suspend работает
как exit.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ХП с возвратом 1 записи: при вызове через exec returning_values нет вып-я после suspend'а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]