Коды возврата DB2 SQL - DB2 SQL return codes

Коды возврата SQL используются на повседневной основе для диагностики сбоев программирования в результате SQL звонки от DB2 компьютерные программы. Важная особенность DB2 программы - это обработка ошибок. Диагностика ошибок, содержащая код возврата SQL, хранится в поле SQLCODE внутри DB2 SLCA блокировать.

SQLCODE больше не является частью стандарта SQL. Стандарт SQL заменил SQLCODE на более подробный SQLSTATE.

SQLCA

Структура области связи SQL (SQLCA) используется в DB2 программа для возврата отзыва прикладная программа.

SQLCODE

Поле SQLCODE содержит код возврата SQL. Код может быть нулевым (0), отрицательным или положительным:

  • 0 означает, что выполнение было успешным.
  • Отрицательные значения указывают на неудачное выполнение с ошибкой.
    Например, -911, что означает, что истекло время ожидания откат.
  • Положительное значение означает успешное выполнение с предупреждением.
    Пример: +100, что означает, что совпадающие строки не найдены или курсор дошел до конца таблицы.

Вот более полный список SQLCODE для DB2. Обратите внимание, что этот список не является исчерпывающим. Также обратите внимание, что некоторые SQLCODE могут встречаться только в определенных продуктах DB2; например, только в DB2z / OS, только в DB2 LUW или только в DB2iSeries (AS400).

Ноль (успешно)

  0 Успешно

Отрицательные значения (ошибки)

-007Указанный «символ» не является допустимым символом в операторах SQL.
-010Строковая константа, начинающаяся со строки, не завершена должным образом.
-029INTO Требуется пункт.
-060НЕДЕЙСТВИТЕЛЬНЫЙ тип СПЕЦИФИКАЦИЯ: spec
-084Неприемлемый оператор SQL.
-101Заявление слишком длинное или слишком сложное.
-102Строковая константа слишком длинная.
-103Строковая константа слишком длинная. Максимум 128 символов.
-104В операторе SQL обнаружен недопустимый символ.
-105Строковая константа слишком длинная.
-117Количество значений в INSERT не соответствует количеству столбцов.
-122Столбец или выражение в списке выбора недопустимы
-156Недопустимый синтаксис рядом с ключевым словом.
-180Неверные данные в дате / времени / отметке времени.
-181Неверные данные в дате / времени / отметке времени.
-188Переменная хоста в операторе DESCRIBE не является допустимым строковым представлением имени.
-199Незаконное использование указанного ключевого слова.
-203ССЫЛКА НА COLUMN имя-столбца НЕОБХОДИМА
-204Объект не определен для DB2.
-205Имя столбца отсутствует в таблице.
-206Столбец не существует ни в одной таблице SELECT.
-207Недействительное имя столбца.
-208ORDER BY CLAUSE НЕ ДЕЙСТВУЕТ, ПОТОМУ ЧТО COLUMN имя-столбца НЕ ЯВЛЯЕТСЯ ЧАСТЬЮ ТАБЛИЦЫ
-209Неоднозначное имя столбца
-216Не одинаковое количество выражений на обеих сторонах сравнения в SELECT.
-224FETCH не может сделать INSENSITIVE ЧУВСТВИТЕЛЬНЫМ курсор.
-229Языковой стандарт, указанный в инструкции SET LOCALE, не найден.
-257Неявное преобразование в тип данных недопустимо.
-302ЗНАЧЕНИЕ ВХОДНОЙ ПЕРЕМЕННОЙ ИЛИ НОМЕР ПАРАМЕТРА Номер позиции НЕДЕЙСТВИТЕЛЬНО ИЛИ СЛИШКОМ БОЛЬШОЙ ДЛЯ ЦЕЛЕВОЙ КОЛОНКИ ИЛИ ЦЕЛЕВОГО ЗНАЧЕНИЯ
-303ЗНАЧЕНИЕ НЕ МОЖЕТ БЫТЬ НАЗНАЧЕНО ВЫХОДНОМУ НОМЕР ПЕРЕМЕННОЙ ХОСТА, номер позиции, ПОТОМУ ЧТО ТИПЫ ДАННЫХ НЕ СРАВНИМЫЕ
-305Нужен нулевой индикатор.
-311Варчар, вставить или обновить. -LEN поле с правильной длиной данных не установлено.
-313Количество указанных переменных хоста не равно количеству маркеров параметров.
-401Типы данных операндов операции несовместимы.
-404Указанный оператор Sql содержит слишком длинную строку.
-407ОБНОВЛЕНИЕ, ВСТАВИТЬ ИЛИ УСТАНОВИТЕ ЗНАЧЕНИЕ НУЖНО, НО СТОЛБЕЦ ОБЪЕКТА имя-столбца НЕ МОЖЕТ СОДЕРЖАТЬ НУЛЕВЫЕ ЗНАЧЕНИЯ
-408Значение несовместимо с типом данных цели назначения. Имя цели: «<имя>». (*** OBS: Para alguns casos o CAST resolve)
-418Использование маркера параметра недопустимо.
-420Значение строкового аргумента было неприемлемо для функции 'имя-функции'
-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Ошибка авторизации.
-554ID авторизации или роль не могут ПРЕДОСТАВЛЯТЬ себе привилегию.
-601Вы пытались создать объект, который уже существует
-602В индексе создания указано слишком много столбцов.
-603уникальный индекс не может быть создан, потому что таблица содержит строки, которые дублируют значения указанных столбцов и периодов
-604определение типа данных указывает недопустимый атрибут длины, точности или масштаба
-607операция или опция операция не определена для этого объекта
-610предупреждение: создание / изменение объекта поместило объект в ожидание
-611только lockmax 0 может быть указан, когда размер блокировки табличного пространства равен табличному пространству или таблице
-612идентификатор - это повторяющееся имя
-613первичный ключ, или хеш-ключ, или уникальное ограничение слишком длинное или имеет слишком много столбцов и точек
-614индекс не может быть создан или изменен, или длина столбца не может быть изменена, потому что сумма внутренних длин столбцов для индекса больше, чем допустимый максимум
-615тип операции не разрешен для используемого пакета
-616obj-type1 obj-name1 нельзя отбросить, потому что на него ссылается obj-type2 obj-name2
-617индекс типа 1 недействителен для таблицы
-618операция запрещена в системных базах данных
-619операция запрещена, поскольку база данных не остановлена
-620ключевое слово ключевое слово в инструкции stmt-type не разрешено для пространства-типа в базе данных типа базы данных
-621обнаружен дублирующийся dbid dbid, который ранее был назначен имени базы данных
-622для смешанных данных недопустима, потому что параметр установки смешанных данных не
-623кластер недопустим для имени-таблицы
-624таблица имя-таблицы уже имеет первичный ключ или уникальное ограничение с указанными столбцами и точками
-625таблица имя-таблицы не имеет индекса для обеспечения уникальности первичного или уникального ключа
-625предупреждение: определение таблицы было изменено на неполное
-626оператор alter не выполняется, потому что набор страниц не остановлен
-627оператор alter недопустим, поскольку табличное пространство или индекс имеет наборы данных, управляемые пользователем
-628пункты являются взаимоисключающими
-629set null не может быть указан, потому что имя внешнего ключа не может содержать нулевые значения
-630ошибка: спецификация WHERE NOT NULL недопустима для индексов типа 1
-631имя внешнего ключа слишком длинное или имеет слишком много столбцов
-632таблица не может быть определена как зависимая от table-name из-за ограничений правила DELETE
-633правило DELETE должно быть правилом DELETE
-634правило DELETE не должно быть каскадным
-635правила DELETE не могут быть разными или не могут быть установлены равными нулю
-636диапазоны, указанные для раздела part-num, недействительны
-637повторяющееся ключевое слово или предложение с ключевым словом
-638таблица имя-таблицы не может быть создана, потому что определение столбца отсутствует
-639Обнуляемый столбец внешнего ключа с правилом DELETE для установки null не может быть столбцом ключа секционированного индекса
-640Строка locksize не может быть указана, поскольку таблица в этом табличном пространстве имеет индекс типа 1
-642слишком много столбцов в уникальных ограничениях
-643ограничение проверки или значение выражения для столбца индекса превышает максимально допустимую длину ключевого выражения
-644неверное значение, указанное для ключевого слова или предложения ключевое слово или предложение в инструкции stmt-type
-645WHERE NOT NULL игнорируется, потому что индексный ключ не может содержать нулевые значения
-646таблица имя-таблицы не может быть создана в указанном табличном пространстве имя-табличного-пространства, поскольку оно уже содержит таблицу
-647bufferpool bp-name для неявного или явного табличного пространства или имя индексного пространства не было активировано
-650оператор alter не может быть выполнен, код причины авторское право 2014 TheAmericanProgrammer.com Несанкционированное копирование запрещено
-651описание таблицы превышает максимальный размер дескриптора объекта.
-652нарушение установленной установки процедура редактирования или проверки имя-процесса
-653таблица имя-таблицы в многораздельном табличном пространстве имя-пространства недоступно, поскольку ее многораздельный индекс не был создан
-655команда create или alter stogroup недействительна, потому что группа хранения будет иметь как определенные, так и неспецифические идентификаторы томов
-658объект-тип нельзя отбросить с помощью оператора
-660index имя-индекса не может быть создано или изменено в многораздельном табличном пространстве имя-пространства, поскольку не указаны ограничения на ключи
-661объект-тип имя-объекта не может быть создан в многораздельном табличном пространстве имя-пространства, поскольку количество спецификаций разделов не равно количеству разделов табличного пространства
-662многораздельный индекс нельзя создать в табличном пространстве, или табличное пространство не может управляться индексом. табличное пространство имя-пространства, код-причины
-663количество предельных значений ключа равно нулю или больше, чем количество столбцов в ключе индекса index-name
-664внутренняя длина полей ограничительного ключа для секционированного индекса превышает длину, установленную менеджером индекса
-665предложение раздела в операторе alter опущено или недействительно
-666Объект stmt-verb не может быть выполнен, потому что функция выполняется
-667индекс кластеризации для многораздельного табличного пространства нельзя отбросить явно
-668столбец не может быть добавлен в таблицу, поскольку в таблице есть процедура редактирования, определенная с учетом чувствительности атрибута строки
-669объект не может быть удален явно. причина-код причины
-670длина записи таблицы превышает ограничение на размер страницы
-671атрибут буферного пула табличного пространства нельзя изменить, как указано, потому что это изменит размер страницы табличного пространства
-672удаление операции запрещено для таблицы имя_таблицы
-676физические характеристики индекса несовместимы с указанным утверждением. заявление не удалось. причина-код причины
-677недостаточно виртуальной памяти для расширения буферного пула
-678константа, указанная для ключа ограничения индекса, должна соответствовать типу данных типа данных соответствующего столбца имя-столбца
-679имя объекта не может быть создано, потому что на объекте ожидается перетаскивание
-680указано слишком много столбцов для таблицы, представления или табличной функции
-681column имя-столбца с нарушением процедуры установки поля. rt: код-возврата, rs: код-причины, msg: токен-сообщения
-682поле процедуры имя-процедуры не может быть загружено
-683спецификация для столбца, отдельного типа, функции или элемента данных процедуры содержит несовместимые предложения
-684длина строки начала списка констант слишком велика
-685недопустимый тип поля, имя-столбца
-686столбец, определенный с помощью процедуры поля, не может сравниваться с другим столбцом с другой процедурой поля
-687несравненные типы полей
-688неверные данные, возвращенные из процедуры поля, имя-столбца, msgno
-689слишком много столбцов, определенных для зависимой таблицы
-690утверждение отклонено поддержкой контроля определения данных. причина-код причины
-691требуемая таблица регистрации имя-таблицы не существует
-692требуемый уникальный индекс имя-индекса для таблицы регистрации ddl имя-таблицы не существует
-693имя столбца столбца в таблице регистрации ddl или имя индекса не определены должным образом
-694оператор схемы не может быть выполнен, потому что в таблице регистрации ddl имя таблицы ожидает отбрасывание
-694Оператор ddl не может быть выполнен, потому что в таблице регистрации ddl ожидается удаление
-695указана недопустимая метка безопасности для столбца метки защиты в таблице имя-таблицы
-696определение триггера имя-триггера включает недопустимое использование имени корреляции или имени таблицы перехода. код причины = код причины
-697старые или новые имена корреляции не допускаются в триггере, определенном с помощью предложения for each statement. Имена old_table или new_table не допускаются в триггере с предложением before.
-747Таблица недоступна.
-803Повторяющийся ключ при вставке или обновлении.
-804Ошибка во входных параметрах для оператора SQL.
-805DBRM или пакет не найден в плане.
-811В SELECT INTO получено более одной строки.
-818План и программа: несовпадение отметок времени.
-904Недоступный ресурс. Кто-то другой блокирует ваши данные.
-911Тупик или тайм-аут. Откат сделан.
-913Тупик или тайм-аут. Отката нет.
-922Требуется авторизация.
-924Внутренняя ошибка соединения DB2.
-927Вызывается языковой интерфейс, но соединение не установлено.
-955Память сортировки не может быть выделена для обработки оператора.
-964Место в журнале транзакций исчерпано или временно увеличилось количество активных транзакций.
-998Ошибка произошла во время транзакции или эвристической обработки.
  
-7008Указанный объект недопустим для запрошенной операции.
-10330Отказано в разрешении на изменение базы данных. Обратитесь к системному администратору.
-30090Удаленная операция недопустима для среды выполнения приложения.

[1]

Положительные значения (предупреждения)

  +98Оператор динамического SQL заканчивается точкой с запятой
+100Строка не найдена или конец курсора.
+222Попытка получить строку в инструкции DELETE.
+223Попытка получить строку в операторе UPDATE.
+231FETCH после BEFORE или AFTER, но не в допустимой строке.
+304Значение с типом данных (тип данных 1) не может быть присвоено переменной хоста, потому что значение находится вне диапазона переменной хоста в позиции (номер позиции) с типом данных (тип данных 2)
+354Оператор выборки набора строк мог вернуть одну или несколько строк данных. однако также было обнаружено одно или несколько условий предупреждения. используйте оператор получения диагностики для получения дополнительных сведений об обнаруженных условиях
+562Предоставление привилегии было проигнорировано, поскольку получатель уже имеет привилегию от лица, предоставившего право.
+802Нулевой индикатор был установлен на -2 в качестве арифметического.

Рекомендации

  • "DB2 Версия 9.1 для кодов z / OS" (PDF). Сентябрь 2013.
  • "Описание и решения DB2 SQL CODE".
  • «Коды SQL». Сентябрь 2013.