Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / -255 (Not in transaction) из курсора в хранимой процедуре / 7 сообщений из 7, страница 1 из 1
04.06.2008, 13:30
    #35353959
Самиздат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
здравствуйте, не могу понять почему возникает эта ошибка (-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
04.06.2008, 14:00
    #35354072
Самиздат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
Народ, никаких идей?

... with no log , как-то влияет на это?
сам проверить не могу, и так же, не "опасно" ли это для журнала транзакций - логировать манипуляции с временными таблицами?
...
Рейтинг: 0 / 0
04.06.2008, 14:57
    #35354251
Самиздат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
хотя бы просто скажите куда копать...
...
Рейтинг: 0 / 0
04.06.2008, 14:58
    #35354255
Самиздат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
пляски с with no log никаких изменений не дали, в логих никаких ошибок и прочее
...
Рейтинг: 0 / 0
04.06.2008, 14:59
    #35354260
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
у меня работает where current of внутри транзакции
...
Рейтинг: 0 / 0
04.06.2008, 15:00
    #35354262
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
а мне кажется надо select делать for update
...
Рейтинг: 0 / 0
04.06.2008, 15:15
    #35354300
Самиздат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-255 (Not in transaction) из курсора в хранимой процедуре
Кароче, решается так:
Код: 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
Форумы / Informix [игнор отключен] [закрыт для гостей] / -255 (Not in transaction) из курсора в хранимой процедуре / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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