powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / -255 (Not in transaction) из курсора в хранимой процедуре
7 сообщений из 7, страница 1 из 1
-255 (Not in transaction) из курсора в хранимой процедуре
    #35353959
Самиздат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здравствуйте, не могу понять почему возникает эта ошибка (-255)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create procedure "informix".test()
-- ...код...
foreach cur for select tmp_discount_rate.amount, tmp_discount_rate.param, tmp_discount_rate.credMonths
			into amount, param, credMonths
			from tmp_discount_rate

			let persResult =  0 ;
			let persBuf = param /  100  /  360  *  30 ;
			let iPayPerMonth = amount;
			let iPersPerMonth = amount * persBuf;
			let persResult = persResult + iPersPerMonth;

			for i =  2  to credMonths step  1 
				let iPayPerMonth = iPayPerMonth / credMonths;
				let iPersPerMonth = (amount - iPayPerMonth) * persBuf;
				let persResult = persResult + iPersPerMonth;
			end for;
			
			update tmp_discount_rate set
				tmp_discount_rate.persPerMonth = persResult
			where current of cur;
		end foreach

собственно, сама ошибка возникает на команде update когда в предикате используется казатель курсовра where current of cur , если меняем предикат (или просто убираем), процедура отрабатывает без ошибок.

таблица tmp_discount_rate создавалась так:
Код: plaintext
create temp table tmp_discount_rate(.....) with no log

помогите пожалуйста разобраться с этой проблемой.

IDS 10U
...
Рейтинг: 0 / 0
-255 (Not in transaction) из курсора в хранимой процедуре
    #35354072
Самиздат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, никаких идей?

... with no log , как-то влияет на это?
сам проверить не могу, и так же, не "опасно" ли это для журнала транзакций - логировать манипуляции с временными таблицами?
...
Рейтинг: 0 / 0
-255 (Not in transaction) из курсора в хранимой процедуре
    #35354251
Самиздат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя бы просто скажите куда копать...
...
Рейтинг: 0 / 0
-255 (Not in transaction) из курсора в хранимой процедуре
    #35354255
Самиздат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пляски с with no log никаких изменений не дали, в логих никаких ошибок и прочее
...
Рейтинг: 0 / 0
-255 (Not in transaction) из курсора в хранимой процедуре
    #35354260
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня работает where current of внутри транзакции
...
Рейтинг: 0 / 0
-255 (Not in transaction) из курсора в хранимой процедуре
    #35354262
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а мне кажется надо select делать for update
...
Рейтинг: 0 / 0
-255 (Not in transaction) из курсора в хранимой процедуре
    #35354300
Самиздат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кароче, решается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
BEGIN WORK;
foreach cur for select tmp_discount_rate.amount, tmp_discount_rate.param, tmp_discount_rate.credMonths
			into amount, param, credMonths
			from tmp_discount_rate
-- bla-bla-bla
end foreach
COMMIT WORK;

почему - на каком-то IBM-форуме нашёл описание бага сервера для HOLD cursor...
нужно всегда явно начинать и закрывать транзакцию... ыыыы
кстати, работает если таблица и с и без with no log

мелоч, но не приятно ;(
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / -255 (Not in transaction) из курсора в хранимой процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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