Коды возврата SQL DB2
Коды возврата SQL используются ежедневно для диагностики ошибок программирования в результате SQL вызовов программами IBM Db2 . Важной особенностью программ IBM Db2 является обработка ошибок. Диагностика ошибок, содержащая код возврата SQL, хранится в поле SQLCODE в блоке SQLCA Db2.
SQLCODE больше не является частью стандарта SQL. Стандарт SQL заменил SQLCODE более подробным SQLSTATE .
SQLCA
[ редактировать ]Структура области связи SQL (SQLCA) используется в программе IBM Db2 для возврата обратной связи прикладной программе .
SQLКОД
[ редактировать ]Поле SQLCODE содержит код возврата SQL. Код может быть нулевым (0), отрицательным или положительным:
- 0 означает, что выполнение прошло успешно.
- Отрицательные значения указывают на неудачное выполнение с ошибкой.
Примером является −911 , что означает, что произошел таймаут с откатом . - Положительное значение означает успешное выполнение с предупреждением.
Примером может служить +100 , что означает, что соответствующие строки не найдены или курсор достиг конца таблицы.
Вот более полный список SQLCODE для DB2. Обратите внимание, что этот список не является исчерпывающим. Также обратите внимание, что некоторые SQLCODE могут встречаться только в определенных продуктах Db2; например, только в Db2 z/OS , только в Db2 LUW или только в Db2 для IBM i .
Ноль (Успешный)[ редактировать ] | |
0 | Успешный |
Отрицательные значения (ошибки)[ редактировать ] | |
-007 | Указанный «символ» не является допустимым символом в операторах SQL. |
-010 | Строковая константа, начинающаяся со строки, не завершается должным образом. |
-029 | Пункт INTO обязателен. |
-060 | НЕДЕЙСТВИТЕЛЬНЫЙ тип СПЕЦИФИКАЦИЯ: спецификация |
-084 | Недопустимый оператор SQL. |
-101 | Утверждение слишком длинное или слишком сложное. |
-102 | Строковая константа слишком длинная. |
-103 | Строковая константа слишком длинная. Максимум — 128 символов. |
-104 | В операторе SQL обнаружен недопустимый символ. |
-105 | Строковая константа слишком длинная. |
-117 | Количество значений в INSERT не соответствует количеству столбцов. |
-119 | Ошибка в предложении GROUP BY или HAVING. |
-122 | Столбец или выражение в списке выбора недопустимо. |
-156 | Неверный синтаксис рядом с ключевым словом. |
-180 | Неверные данные в дате/времени/временной метке. |
-181 | Неверные данные в дате/времени/временной метке. |
-188 | Переменная хоста в инструкции DESCRIBE не является допустимым строковым представлением имени. |
-199 | Незаконное использование указанного ключевого слова. |
-203 | ССЫЛКА НА КОЛОННУ Имя столбца НЕОДНОЗНАЧНО |
-204 | Объект не определен в Db2. |
-205 | Имя столбца отсутствует в таблице. |
-206 | Столбец не существует ни в одной таблице SELECT. |
-207 | Недопустимое имя столбца. |
-208 | ПОРЯДОК ПО ПРЕДЛОЖЕНИЮ НЕДЕЙСТВИТЕЛЬЕН, ПОСКОЛЬКУ КОЛОНКА имя-столбца НЕ ЯВЛЯЕТСЯ ЧАСТЬЮ ТАБЛИЦЫ РЕЗУЛЬТАТОВ |
-209 | Неоднозначное имя столбца |
-216 | Не одинаковое количество выражений с обеих сторон сравнения в SELECT. |
-224 | FETCH не может сделать НЕЧУВСТВИТЕЛЬНЫЙ курсор ЧУВСТВИТЕЛЬНЫМ. |
-229 | Языковой стандарт, указанный в инструкции SET LOCALE, не найден. |
-257 | Неявное преобразование типа данных не допускается. |
-289 | Db2 не хватает места в табличном пространстве |
-302 | ЗНАЧЕНИЕ ВХОДНОЙ ПЕРЕМЕННОЙ ИЛИ НОМЕР ПАРАМЕТРА номер позиции НЕДЕЙСТВИТЕЛЬНО ИЛИ СЛИШКОМ БОЛЬШОЕ ДЛЯ ЦЕЛЕВОГО СТОЛБЦА ИЛИ ЦЕЛЕВОГО ЗНАЧЕНИЯ |
-303 | ЗНАЧЕНИЕ НЕ МОЖЕТ БЫТЬ НАЗНАЧЕНО ВЫХОДНОЙ ПЕРЕМЕННОЙ ХОСТА НОМЕР позиции-номер, ПОТОМУ ЧТО ТИПЫ ДАННЫХ НЕ СРАВНЯЮТСЯ |
-305 | Нужен нулевой индикатор. |
-310 | Значение десятичной дроби равно нулю |
-311 | Варчар, вставить или обновить. -Поле LEN с неправильной длиной данных не установлено. |
-313 | Количество указанных переменных хоста не равно количеству маркеров параметров. |
-401 | Типы данных операндов операции несовместимы. |
-404 | Указанный оператор Sql содержит слишком длинную строку. |
-407 | ЗНАЧЕНИЕ ОБНОВЛЕНИЯ, ВСТАВКИ ИЛИ УСТАНОВКИ ИМЕЕТ НУЛЕВОЕ значение, НО Имя столбца ОБЪЕКТ СТОЛБЕЦ НЕ МОЖЕТ СОДЕРЖАТЬ НУЛЕВЫЕ ЗНАЧЕНИЯ |
-408 | Значение несовместимо с типом данных цели назначения. Имя цели — «<имя>». (***ОБС: Для любых случаев или решения CAST) |
-413 | Во время преобразования числового типа данных произошло переполнение. |
-414 | Предикат Like недействителен, поскольку первый операнд не является строкой. |
-415 | Соответствующие столбцы (номер столбца) операндов оператора множества несовместимы. |
-418 | Использование маркера параметра недопустимо. |
-420 | Значение строкового аргумента неприемлемо для функции «имя-функции». |
-421 | ОПЕРАНДЫ UNION ИЛИ UNION НЕ ИМЕЮТ ОДИНАКОВОЕ ЧИСЛО СТОЛБЦОВ. |
-433 | Данные слишком велики |
-438 | Приложение выдало ошибку с диагностическим текстом: текст |
-440 | Подпрограмма &1 в &2 не найдена с указанными параметрами. Функция или процедура с указанным именем и совместимыми аргументами не найдена.[1] |
-482 | Процедура не вернула локаторов. |
-501 | Курсор не открывается при FETCH. |
-502 | Открывающий курсор, который уже открыт. |
-503 | Необходимо указать обновляемый столбец. |
-504 | Имя курсора не объявлено. |
-510 | Таблицу, обозначенную курсором оператора Update или Delete, нельзя изменить. |
-530 | Ссылочная целостность, предотвращающая INSERT/UPDATE |
-532 | Ссылочная целостность (правило DELETE RESTRICT), предотвращающая DELETE. |
-536 | Ссылочная целостность (правило DELETE RESTRICT), предотвращающая DELETE. |
-545 | Проверьте ограничение, предотвращающее INSERT/UPDATE. |
-551 | Ошибка авторизации. |
-554 | Идентификатор авторизации или роль не могут ПРЕДОСТАВИТЬ привилегию самому себе. |
-601 | Вы попытались создать объект, который уже существует |
-602 | В индексе создания указано слишком много столбцов. |
-603 | уникальный индекс не может быть создан, поскольку таблица содержит строки, которые являются дубликатами по отношению к значениям идентифицированных столбцов и периодов |
-604 | определение типа данных указывает недопустимый атрибут длины, точности или масштаба. |
-607 | операция или опция операции не определена для этого объекта |
-610 | предупреждение: создание/изменение объекта поместило объект в ожидание |
-611 | можно указать только lockmax 0, если размер блокировки табличного пространства равен tablespace или table. |
-612 | идентификатор является повторяющимся именем |
-613 | первичный ключ, хэш-ключ или ограничение уникальности слишком длинный или содержит слишком много столбцов и точек. |
-614 | индекс не может быть создан или изменен, или длина столбца не может быть изменена, поскольку сумма внутренних длин столбцов для индекса превышает допустимый максимум |
-615 | тип операции не разрешен для используемого пакета |
-616 | obj-type1 имя-объекта1 невозможно удалить, поскольку на него ссылается объект-тип2 имя-объекта2 |
-617 | индекс типа 1 недопустим для таблицы |
-618 | операция операция не разрешена в системных базах данных |
-619 | операция запрещена, поскольку база данных не остановлена |
-620 | ключевое слово ключевое слово в инструкции stmt-type не разрешено для пространства типа пробел в базе данных типа базы данных |
-621 | дубликат dbid dbid был обнаружен и ранее присвоен имени базы данных |
-622 | для смешанных данных недопустимо, поскольку опция установки смешанных данных отсутствует. |
-623 | кластер недействителен для имени таблицы |
-624 | таблица имя_таблицы уже имеет первичный ключ или ограничение уникальности с указанными столбцами и периодами |
-625 | таблица имя_таблицы не имеет индекса для обеспечения уникальности первичного или уникального ключа |
-625 | предупреждение: определение таблицы изменено на неполное |
-626 | оператор изменения не является исполняемым, поскольку набор страниц не остановлен |
-627 | оператор alter недействителен, поскольку табличное пространство или индекс содержит наборы данных, управляемые пользователем. |
-628 | пункты являются взаимоисключающими |
-629 | set null не может быть указан, поскольку имя внешнего ключа не может содержать нулевые значения |
-630 | ошибка: спецификация WHERE NOT NULL недействительна для индексов типа 1. |
-631 | имя внешнего ключа слишком длинное или содержит слишком много столбцов |
-632 | таблица не может быть определена как зависимая от имени таблицы из-за ограничений правила DELETE |
-633 | правило DELETE должно быть DELETE-правилом |
-634 | правило DELETE не должно быть каскадным |
-635 | правила DELETE не могут быть разными или не могут быть установлены на ноль |
-636 | диапазоны, указанные для номера части раздела, недействительны |
-637 | повторяющееся ключевое слово или предложение с названием ключевого слова |
-638 | таблица имя_таблицы не может быть создана, поскольку отсутствует определение столбца |
-639 | столбец внешнего ключа, допускающий значение NULL, с правилом DELETE, имеющим значение null, не может быть столбцом ключа секционированного индекса |
-640 | Невозможно указать строку размера блокировки, поскольку таблица в этом табличном пространстве имеет индекс типа 1. |
-642 | слишком много столбцов в уникальных ограничениях |
-643 | проверочное ограничение или значение выражения для столбца индекса превышает максимально допустимую длину ключевого выражения |
-644 | недопустимое значение, указанное для ключевого слова или предложения, ключевого слова или предложения в операторе stmt-type |
-645 | WHERE NOT NULL игнорируется, поскольку ключ индекса не может содержать значения NULL. |
-646 | таблица имя-таблицы не может быть создана в указанном табличном пространстве имя-табличного-пространства, поскольку оно уже содержит таблицу |
-647 | имя буферного пула bp для неявного или явного табличного пространства или имя индексного пространства не активировано |
-650 | оператор изменения не может быть выполнен, причина-код авторских прав 2014 TheAmericanProgrammer.com Несанкционированное копирование запрещено |
-651 | описание таблицы превышает максимальный размер дескриптора объекта. |
-652 | нарушение процедуры редактирования или проверки, определенной при установке, имя_процесса |
-653 | таблица имя-таблицы в секционированном табличном пространстве имя-пространства недоступно, поскольку ее секционированный индекс не был создан |
-655 | недопустимая стогруппа создания или изменения, поскольку группа хранения будет иметь как конкретные, так и неопределенные идентификаторы томов. |
-658 | тип объекта не может быть удален с помощью оператора оператора |
-660 | индекс имя-индекса не может быть создан или изменен в секционированном табличном пространстве имя-tspace, поскольку не указаны ограничения по ключам |
-661 | тип-объекта имя-объекта невозможно создать в секционированном табличном пространстве имя-tspace, поскольку количество спецификаций разделов не равно количеству разделов табличного пространства |
-662 | многораздельный индекс не может быть создан в табличном пространстве или табличное пространство не может управляться индексом. табличное пространство имя-tspace, причина-код-причины |
-663 | количество ключевых предельных значений либо равно нулю, либо превышает количество столбцов в ключе индекса имя-индекса |
-664 | внутренняя длина полей предельного ключа для секционированного индекса превышает длину, установленную менеджером индекса |
-665 | раздел раздела оператора alter опущен или недействителен |
-666 | Объект stmt-verb не может быть выполнен, поскольку функция выполняется |
-667 | индекс кластеризации для многораздельного табличного пространства не может быть удален явно |
-668 | столбец невозможно добавить в таблицу, поскольку в таблице есть процедура редактирования, определенная с чувствительностью атрибута строки |
-669 | объект не может быть удален явно. причина-код причины |
-670 | длина записи таблицы превышает ограничение размера страницы |
-671 | атрибут буферного пула табличного пространства нельзя изменить указанным образом, поскольку это приведет к изменению размера страницы табличного пространства. |
-672 | Удаление операции не разрешено для таблицы имя_таблицы |
-676 | физические характеристики индекса несовместимы по отношению к указанному утверждению. заявление не удалось. причина-код причины |
-677 | недостаточно виртуальной памяти для расширения буферного пула |
-678 | константа, указанная для ключа ограничения индекса, должна соответствовать типу данных data-type соответствующего столбца имя-столбца |
-679 | имя объекта не может быть создано, поскольку объект ожидает сброса |
-680 | слишком много столбцов указано для таблицы, представления или табличной функции |
-681 | столбец имя-столбца нарушает процедуру установки определенного поля. rt: код возврата, rs: код причины, msg: токен сообщения |
-682 | поле процедуры имя_процедуры не удалось загрузить |
-683 | спецификация столбца, отдельного типа, функции или элемента данных процедуры содержит несовместимые положения |
-684 | длина начальной строки списка констант слишком длинная |
-685 | неверный тип поля, имя столбца |
-686 | столбец, определенный с помощью полевой процедуры, нельзя сравнивать с другим столбцом с другой полевой процедурой |
-687 | типы полей несравнимы |
-688 | неверные данные, возвращенные из процедуры поля, имя столбца, msgno |
-689 | слишком много столбцов определено для зависимой таблицы |
-690 | утверждение отклонено службой поддержки управления определением данных. причина-код причины |
-691 | требуемая таблица регистрации имя_таблицы не существует |
-692 | требуемый уникальный индекс имя-индекса для таблицы регистрации ddl имя-таблицы не существует |
-693 | имя столбца столбца в таблице регистрации ddl или имя индекса не определено должным образом |
-694 | оператор схемы не может быть выполнен, поскольку ожидается удаление таблицы регистрации ddl имя_таблицы |
-694 | оператор ddl не может быть выполнен, поскольку в таблице регистрации ddl ожидается удаление |
-695 | недопустимое значение seclabel, указанное для столбца метки безопасности таблицы имя_таблицы |
-696 | определение триггера имя-триггера включает недопустимое использование имени корреляции или имени имени таблицы переходов. код причины=код причины |
-697 | старые или новые имена корреляции не допускаются в триггере, определенном с помощью предложения foreach. Имена old_table или new_table не допускаются в триггере с предложением before. |
-747 | Таблица недоступна. |
-803 | Дублирование ключа при вставке или обновлении. |
-804 | Ошибка во входных параметрах оператора SQL. |
-805 | DBRM или пакет не найден в плане. |
-811 | В SELECT INTO получено более одной строки. |
-818 | План и программа: несовпадение временных меток. |
-902 | Указатель на основной блок управления (RDA/CT) имеет значение 0, требуется перепривязка. Это также может произойти, если один из томов БД все еще присутствует, но недоступен. |
-904 | Недоступный ресурс. Кто-то другой блокирует ваши данные. |
-911 | Тупик или тайм-аут. Откат выполнен. |
-913 | Тупик или тайм-аут. Никакого отката. |
-922 | Требуется авторизация. |
-924 | Внутренняя ошибка соединения Db2. |
-927 | Языковой интерфейс был вызван, но соединение не было установлено. |
-955 | Память сортировки не может быть выделена для обработки оператора. |
-964 | Пространство журнала транзакций исчерпано или временно увеличено количество активных транзакций. |
-970 | неправильные (также отсутствующие) разрешения для файловых систем Db2/файловых систем Db2, принадлежащих пользователю root. |
-998 | Произошла ошибка во время транзакции или эвристической обработки. |
-2310 | Утилита не смогла сформировать статистику |
-3508 | Ошибка загрузки при доступе к рабочему пространству. Ошибка доступа к файлу или пути типа «TEMP_FILE» во время загрузки или запроса загрузки. Временный каталог, в котором хранятся файлы сообщений в задании загрузки, не имеет необходимых разрешений. |
-7008 | Указанный объект недопустим для запрошенной операции. |
-10330 | Отказано в разрешении на изменение базы данных. Обратитесь к системному администратору. |
-30090 | Удаленная операция недействительна для среды выполнения приложения. |
Положительные значения (предупреждения)[ редактировать ] | |
+98 | Оператор динамического SQL заканчивается точкой с запятой. |
+100 | Строка не найдена или курсор закончился. |
+222 | Попытка получить строку с помощью инструкции DELETE. |
+223 | Попытка получить строку в инструкции UPDATE. |
+231 | FETCH после BEFORE или AFTER, но не в допустимой строке. |
+304 | Значение с типом данных (тип данных 1) не может быть присвоено переменной хоста, поскольку это значение находится за пределами диапазона переменной хоста в позиции (номер позиции) с типом данных (тип данных 2). |
+354 | Оператор выборки набора строк мог вернуть одну или несколько строк данных. однако также было обнаружено одно или несколько условий предупреждения. используйте оператор get Diagnostics для получения дополнительной информации о возникших условиях. |
+466 | Хранимая процедура, указанная в proc, завершилась нормально. Процедура вернула количество наборов результатов SQL-запроса, указанное в параметре num . |
+562 | Предоставление привилегии было проигнорировано, поскольку получатель уже имеет привилегию от лица, предоставляющего право. |
+802 | Нулевой индикатор был установлен на -2 в качестве арифметического значения. |
Ссылки
[ редактировать ]- «DB2 версии 9.1 для кодов z/OS» (PDF) . Сентябрь 2013.
- «Описание SQL-кода DB2 и решения» .
- «SQL-коды» . Сентябрь 2013.