Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Ошибка в хранимой sqlcode=-1822  [new]
hansclaus
Member

Откуда:
Сообщений: 6
Добрый день!
Пишу хранимую процедуру на pl/sql. Процедура просто переписывает данные из одной таблицы в другую. Сначала удаляю данные, за како-нить период, из целевой таблицы, ставлю commit. Потом открываю курсор выборки из таблицы источника и тут же записываю их в целевую таблицу, commit. После этого вызываю другую процедуру, которая просто записывает в отдельную таблицу данные по записи - кол-во перенесенных строк, время и т.д., commit. Все данные переписываются, но после второго commit'а выдает ошибку sqlcode=-1822.
Подскажите, пожалуйста, что это может быть и как решить эту проблему?

P.S. Если при выборке ставлю ограничение в 999 строк, то все работает без ошибок, если 1000 и больше то ошибка.

P.P.S. Версия IMB DB2 9.7
3 авг 16, 15:39    [19493803]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
knudsen
Member

Откуда: Москва
Сообщений: 311
hansclaus,

может не хватает места в какой-то временной области памяти (типа больше 32к), попробуйте COMMIT поставить так, чтобы частями записывало... http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.messages.sql.doc/doc/msql01822n.html
3 авг 16, 16:05    [19493985]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
hansclaus
Member

Откуда:
Сообщений: 6
Нет там всего 1188 записей, и оно их записывает, а валит при обращении к другой процедуре, для записи результата переноса.
3 авг 16, 16:12    [19494026]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
knudsen
Member

Откуда: Москва
Сообщений: 311
hansclaus,

а курсоры все закрыты при обращении ко второй процедуре?
3 авг 16, 16:31    [19494164]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
hansclaus
Member

Откуда:
Сообщений: 6
Второй commit закрывает курсор, если закрываю курсор перед этим commit'ом возникает ошибка:
The cursor specified in a FETCH statement or CLOSE statement is not open or a cursor variable in a cursor scalar function reference is not open.. SQLCODE=-501
3 авг 16, 16:36    [19494205]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
knudsen
Member

Откуда: Москва
Сообщений: 311
hansclaus,

посмотреть бы на процедурку... так сложненько.
3 авг 16, 16:48    [19494293]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4876
hansclaus,

Commit закрывает курсор, определённый без опции with hold.
3 авг 16, 17:06    [19494384]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в хранимой sqlcode=-1822  [new]
hansclaus
Member

Откуда:
Сообщений: 6
knudsen,

Спасибо за помощь.

Проблема оказалась очень неожиданной!
Во вторую процедуру я передаю текстовый параметр, который в той процедуре записываю в базу. Тип параметра varchar(80), я залез там за 80 и получилось переполнение. Теперь обрезаю его CAST'ом и все норм.
3 авг 16, 17:06    [19494385]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить