Códigos de retorno SQL do DB2 - DB2 SQL return codes

Os códigos de retorno SQL são usados ​​diariamente para o diagnóstico de falhas de programação como resultado de chamadas SQL por programas de computador do DB2 . Um recurso importante dos programas do DB2 é o processamento de erros. O diagnóstico de erro contendo o código de retorno SQL é mantido no campo SQLCODE dentro do bloco SQLCA do DB2 .

SQLCODE não faz mais parte do padrão SQL. O padrão SQL substituiu SQLCODE pelo SQLSTATE mais detalhado .

SQLCA

A estrutura da área de comunicações SQL (SQLCA) é usada dentro do programa DB2 para retornar feedback para o programa de aplicativo .

SQLCODE

O campo SQLCODE contém o código de retorno SQL. O código pode ser zero (0), negativo ou positivo:

  • 0 significa que a execução foi bem-sucedida.
  • Valores negativos indicam uma execução malsucedida com um erro.
    Um exemplo é -911, o que significa que ocorreu um tempo limite com uma reversão .
  • Um valor positivo significa uma execução bem-sucedida com um aviso.
    Um exemplo é +100, o que significa que nenhuma linha correspondente foi encontrada ou que o cursor atingiu o final da tabela.

Aqui está uma lista mais abrangente dos SQLCODEs para DB2. Observe que esta lista não é exaustiva. Observe também que alguns SQLCODEs podem ocorrer apenas em produtos DB2 específicos; por exemplo, apenas no DB2  z / OS , apenas no DB2 LUW ou apenas no DB2 para IBM i .

Zero (bem sucedido)

  0    Successful

Valores negativos (erros)

-007 O 'caractere' especificado não é um caractere válido nas instruções SQL.
-010 A constante string que começa com string não é finalizada corretamente.
-029 Cláusula INTO necessária.
-060 ESPECIFICAÇÃO do tipo INVÁLIDO: especificação
-084 Instrução SQL inaceitável.
-101 A declaração é muito longa ou muito complexa.
-102 A constante da string é muito longa.
-103 A constante da string é muito longa. O máximo é 128 caracteres.
-104 Símbolo ilegal encontrado na instrução SQL.
-105 A constante da string é muito longa.
-117 O número de valores no INSERT não corresponde ao número de colunas.
-119 Erro na cláusula GROUP BY ou HAVING.
-122 Coluna ou expressão na lista de seleção não é válida
-156 Sintaxe inválida próxima à palavra-chave.
-180 Dados inválidos em data / hora / carimbo de data / hora.
-181 Dados inválidos em data / hora / carimbo de data / hora.
-188 A variável de host em uma instrução DESCRIBE não é uma representação de string válida de um nome.
-199 Uso ilegal da palavra-chave especificada.
-203 UMA REFERÊNCIA À COLUNA nome-da-coluna É AMBÍGUA
-204 Objeto não definido para o DB2.
-205 O nome da coluna não está na tabela.
-206 A coluna não existe em nenhuma tabela do SELECT.
-207 Nome de coluna inválido.
-208 A ORDEM POR CLÁUSULA É INVÁLIDA PORQUE A COLUNA nome-da-coluna NÃO FAZ PARTE DA TABELA DE RESULTADOS
-209 Nome de coluna ambíguo
-216 Não é o mesmo número de expressões em ambos os lados da comparação em um SELECT.
-224 FETCH não pode tornar um cursor INSENSITIVE SENSITIVE.
-229 A localidade especificada em uma instrução SET LOCALE não foi encontrada.
-257 A conversão implícita no tipo de dados não é permitida.
-289 O DB2 está ficando sem espaço no espaço de tabela
-302 O VALOR DA VARIÁVEL DE ENTRADA OU NÚMERO DE PARÂMETRO posição-número É INVÁLIDO OU MUITO GRANDE PARA A COLUNA ALVO OU O VALOR ALVO
-303 NÃO PODE SER ATRIBUÍDO UM VALOR AO NÚMERO VARIÁVEL DO HOST DE SAÍDA, posição-número, PORQUE OS TIPOS DE DADOS NÃO SÃO COMPARÁVEIS
-305 Indicador nulo necessário.
-310 O valor de um decimal é nulo
-311 Varchar, inserir ou atualizar. Campo -LEN com o comprimento de dados correto não definido.
-313 O número de variáveis ​​de host especificado não é igual ao número de marcadores de parâmetro.
-401 Os tipos de dados dos operandos de uma operação não são compatíveis.
-404 A instrução Sql especificada contém uma string muito longa.
-407 UMA ATUALIZAÇÃO, INSERÇÃO OU VALOR DEFINIDO É NULO, MAS A COLUNA DO OBJETO nome-da-coluna NÃO PODE CONTER VALORES NULOS
-408 Um valor não é compatível com o tipo de dados de seu destino de atribuição. O nome do destino é "<name>". (*** OBS: Para alguns casos o CAST resolve)
-413 O estouro ocorreu durante a conversão de tipo de dados numéricos.
-414 Um predicado like é inválido porque o primeiro operando não é uma string.
-415 As colunas correspondentes, número-coluna, dos operandos de um operador de conjunto não são compatíveis.
-418 O uso do marcador de parâmetro não é válido.
-420 O valor de um argumento de string não era aceitável para a função 'nome-da-função'
-421 OS OPERANDOS DE UMA UNIÃO OU UNIÃO TODOS NÃO TÊM O MESMO NÚMERO DE COLUNAS
-433 Os dados são muito grandes
-438 O aplicativo gerou um erro com o texto de diagnóstico: texto
-440 Rotina & 1 em & 2 não encontrada com os parâmetros especificados. Uma função ou procedimento com o nome especificado e argumentos compatíveis não foi encontrado. [1]
-482 O procedimento não retornou localizadores.
-501 Cursor não abre em FETCH.
-502 Abrindo o cursor que já está aberto.
-503 A coluna de atualização precisa ser especificada.
-504 Nome do cursor não declarado.
-510 A tabela designada pelo cursor da instrução Update ou Delete não pode ser modificada.
-530 Integridade referencial impedindo o INSERT / UPDATE
-532 Integridade referencial (regra DELETE RESTRICT) impedindo o DELETE.
-536 Integridade referencial (regra DELETE RESTRICT) impedindo o DELETE.
-545 Verifique a restrição que impede o INSERT / UPDATE.
-551 Falha de autorização.
-554 Um ID de autorização ou uma função não pode GRANT um privilégio para si mesmo.
-601 Você tentou criar um objeto que já existe
-602 Muitas colunas especificadas em um índice de criação.
-603 um índice único não pode ser criado porque a tabela contém linhas que são duplicadas em relação aos valores das colunas e períodos identificados
-604 uma definição de tipo de dados especifica um comprimento inválido, precisão ou atributo de escala
-607 operação ou operação de opção não está definida para este objeto
-610 aviso: uma criação / alteração no objeto colocou o objeto em pendente
-611 apenas lockmax 0 pode ser especificado quando o tamanho do bloqueio do espaço de tabela é espaço de tabela ou tabela
-612 identificador é um nome duplicado
-613 a chave primária ou uma chave hash ou uma restrição única é muito longa ou tem muitas colunas e pontos
-614 o índice não pode ser criado ou alterado, ou o comprimento de uma coluna não pode ser alterado porque a soma dos comprimentos internos das colunas para o índice é maior que o máximo permitido
-615 tipo de operação não é permitido em um pacote em uso
-616 obj-type1 obj-name1 não pode ser descartado porque é referenciado por obj-type2 obj-name2
-617 um índice tipo 1 não é válido para a tabela
-618 operação operação não é permitida em bancos de dados do sistema
-619 operação não permitida porque o banco de dados não está parado
-620 palavra-chave palavra-chave na instrução do tipo stmt não é permitida para um espaço do tipo espaço no banco de dados do tipo banco de dados
-621 dbid dbid duplicado foi detectado e previamente atribuído ao nome do banco de dados
-622 para dados mistos é inválido porque a opção de instalação de dados mistos não é
-623 cluster não é válido para nome-da-tabela
-624 a tabela nome-da-tabela já tem uma chave primária ou restrição única com colunas e períodos especificados
-625 a tabela nome-da-tabela não tem um índice para impor a exclusividade da chave primária ou única
-625 aviso: a definição da tabela foi alterada para incompleta
-626 a instrução alter não é executável porque o conjunto de páginas não é interrompido
-627 a instrução alter é inválida porque o espaço de tabela ou índice possui conjuntos de dados gerenciados pelo usuário
-628 as cláusulas são mutuamente exclusivas
-629 conjunto nulo não pode ser especificado porque o nome da chave estrangeira não pode conter valores nulos
-630 erro: a especificação WHERE NOT NULL é inválida para índices do tipo 1
-631 o nome da chave estrangeira é muito longo ou tem muitas colunas
-632 a tabela não pode ser definida como dependente do nome da tabela devido às restrições da regra DELETE
-633 a regra DELETE deve ser regra DELETE
-634 a regra DELETE não deve ser em cascata
-635 as regras DELETE não podem ser diferentes ou não podem ser definidas como nulas
-636 os intervalos especificados para part-núm. da partição não são válidos
-637 duplicar palavra-chave-nome-palavra-chave ou cláusula
-638 a tabela nome-da-tabela não pode ser criada porque a definição da coluna está faltando
-639 uma coluna anulável de uma chave estrangeira com uma regra DELETE de conjunto nulo não pode ser uma coluna da chave de um índice particionado
-640 a linha de tamanho de bloqueio não pode ser especificada porque a tabela neste espaço de tabela tem índice do tipo 1
-642 muitas colunas em restrições únicas
-643 uma restrição de verificação ou o valor de uma expressão para uma coluna de um índice excede a expressão de chave de comprimento máximo permitido
-644 valor inválido especificado para a palavra-chave ou cláusula keyword-or-clause na instrução stmt-type
-645 WHERE NOT NULL é ignorado porque a chave do índice não pode conter valores nulos
-646 a tabela nome-da-tabela não pode ser criada no espaço de tabela especificado nome-do-espaço-da-tabela porque já contém uma tabela
-647 bufferpool bp-name para tablespace implícito ou explícito ou nome do indexspace não foi ativado
-650 a declaração de alteração não pode ser executada, motivo do código de razão copyright 2014 TheAmericanProgrammer.com Cópia não autorizada proibida
-651 a descrição da tabela excede o tamanho máximo do descritor de objeto.
-652 violação da edição definida da instalação ou procedimento de validação proc-name
-653 tabela nome-da-tabela no espaço de tabela particionado nome-do-espaço não está disponível porque seu índice particionado não foi criado
-655 o create ou alter stogroup é inválido porque o grupo de armazenamento teria ids de volume específicos e não específicos
-658 um tipo de objeto não pode ser eliminado usando a instrução de instrução
-660 índice index-name não pode ser criado ou alterado no espaço de tabela particionado tspace-name porque os limites de chave não são especificados
-661 o tipo de objeto nome-do-objeto não pode ser criado no espaço de tabela particionado nome-do-espaço porque o número de especificações de partição não é igual ao número de partições do espaço de tabela
-662 um índice particionado não pode ser criado em um espaço de tabela ou um espaço de tabela não pode ser controlado por índice. espaço de tabela nome-tspace, motivo código-motivo
-663 o número de valores-limite da chave é zero ou maior que o número de colunas na chave do índice nome-do-índice
-664 o comprimento interno dos campos limit-key para o índice particionado excede o comprimento imposto pelo gerenciador de índice
-665 a cláusula de partição de uma instrução alter é omitida ou inválida
-666 O objeto stmt-verbo não pode ser executado porque a função está em andamento
-667 o índice de cluster para um espaço de tabela particionado não pode ser eliminado explicitamente
-668 a coluna não pode ser adicionada à tabela porque a tabela tem um procedimento de edição definido com a sensibilidade do atributo de linha
-669 o objeto não pode ser eliminado explicitamente. razão código-razão
-670 o comprimento do registro da tabela excede o limite de tamanho da página
-671 o atributo bufferpool do espaço de tabela não pode ser alterado conforme especificado porque isso mudaria o tamanho da página do espaço de tabela
-672 queda de operação não permitida na tabela nome_tabela
-676 as características físicas do índice são incompatíveis com a declaração especificada. a declaração falhou. razão código-razão
-677 armazenamento virtual insuficiente para expansão do bufferpool
-678 a constante especificada para a chave de limite de índice deve estar em conformidade com o tipo de dados tipo de dados da coluna correspondente nome-da-coluna
-679 o nome do objeto não pode ser criado porque um drop está pendente no objeto
-680 muitas colunas especificadas para uma tabela, visão ou função de tabela
-681 coluna nome-da-coluna em violação do procedimento de campo definido pela instalação. rt: código de retorno, rs: código da razão, msg: token de mensagem
-682 procedimento de campo nome-do-procedimento não pôde ser carregado
-683 a especificação para coluna, tipo distinto, função ou item de dados de procedimento contém cláusulas incompatíveis
-684 o comprimento da string inicial da lista constante é muito longo
-685 tipo de campo inválido, nome-da-coluna
-686 coluna definida com um procedimento de campo não pode ser comparada com outra coluna com procedimento de campo diferente
-687 tipos de campo incomparáveis
-688 dados incorretos retornados do procedimento de campo, nome da coluna, msgno
-689 muitas colunas definidas para uma tabela dependente
-690 a instrução é rejeitada pelo suporte de controle de definição de dados. razão código-razão
-691 a tabela de registro necessária nome-da-tabela não existe
-692 o índice exclusivo necessário index-name para a tabela de registro ddl table-name não existe
-693 a coluna nome-da-coluna na tabela de registro ddl ou nome do índice não está definido corretamente
-694 a instrução do esquema não pode ser executada porque uma eliminação está pendente na tabela de registro ddl nome-da-tabela
-694 a instrução ddl não pode ser executada porque uma queda está pendente na tabela de registro ddl
-695 Seclabel de valor inválido especificado para coluna de rótulo de segurança da tabela nome-da-tabela
-696 a definição de trigger-nome-do-gatilho inclui um uso inválido do nome de correlação ou nome do nome da tabela de transição. código de razão = código de razão
-697 nomes de correlação novos ou antigos não são permitidos em um acionador definido com a cláusula de cada instrução. nomes old_table ou new_table não são permitidos em um gatilho com a cláusula before.
-747 A mesa não está disponível.
-803 Chave duplicada ao inserir ou atualizar.
-804 Erro nos parâmetros de entrada da instrução SQL.
-805 DBRM ou pacote não encontrado no plano.
-811 Mais de uma linha recuperada em SELECT INTO.
-818 Plano e programa: incompatibilidade de carimbo de data / hora.
-904 Recurso indisponível. Alguém está bloqueando seus dados.
-911 Impasse ou tempo limite. A reversão foi feita.
-913 Impasse ou tempo limite. Sem reversão.
-922 Autorização necessária.
-924 Erro interno de conexão do DB2.
-927 A interface de idioma foi chamada, mas nenhuma conexão foi estabelecida.
-955 A memória de classificação não pode ser alocada para processar a instrução.
-964 O espaço de log de transações está esgotado ou aumento temporário no número de transações ativas.
-998 Ocorreu um erro durante a transação ou processamento heurístico.
   
-2310 O utilitário não conseguiu gerar estatísticas
-3508 Carregar Erro ao acessar o espaço temporário. Erro ao acessar um arquivo ou caminho do tipo "TEMP_FILE" durante o carregamento ou consulta de carregamento. O diretório temporário onde os arquivos msg em um trabalho de carregamento são armazenados não tem as permissões necessárias.
-7008 O objeto especificado não é válido para a operação solicitada.
-10330 Permissão negada para alterar o banco de dados. Entre em contato com o administrador do sistema.
-30090 Operação remota inválida para o ambiente de execução do aplicativo.

Valores positivos (avisos)

  +98 Uma instrução SQL dinâmica termina com um ponto e vírgula
+100 Linha não encontrada ou fim do cursor.
+222 Tentando buscar uma linha em uma instrução DELETE.
+223 Tentando buscar uma linha em uma instrução UPDATE.
+231 FETCH após um BEFORE ou AFTER, mas não em uma linha válida.
+304 Um valor com tipo de dados (tipo de dados 1) não pode ser atribuído a uma variável de host porque o valor não está dentro do intervalo da variável de host em posição (número de posição) com tipo de dados (tipo de dados 2)
+354 Uma instrução de busca de conjunto de linhas pode ter retornado uma ou mais linhas de dados. no entanto, uma ou mais condições de aviso também foram encontradas. use a instrução get diagnostics para obter mais informações sobre as condições que foram encontradas
+562 A concessão de um privilégio foi ignorada porque o outorgado já possui o privilégio do outorgante.
+802 O indicador nulo foi definido como -2 como uma aritmética.

Referências

  • "DB2 Versão 9.1 para códigos z / OS" (PDF) . Setembro de 2013.
  • "Descrição e soluções do CÓDIGO SQL do DB2" .
  • "Códigos SQL" . Setembro de 2013.