Pergunta

Como sabemos em muitas documentações é mencionado que o terceiro elemento do array Host SQLCA.SQLERRD ou seja sqlca.sqlerrd[2] contém o número cumulativo de linhas processadas pela instrução SQL até o momento (em termos de Pro*C).

Alguém sabe do significado dos outros elementos, ou seja, [0],[1] e o que eles significam?

Foi útil?

Solução

De acordo com documentação de tratamento de erros, eles não fazem nada;eles estão reservados para uso futuro, embora comece a parecer improvável que algum dia sejam utilizados. sqlerrd é declarado como long[6], se apenas [2] e [4] parecem ser usados, sendo o último o deslocamento na instrução SQL para um erro de análise.

É interessante que eles não usem [0], [1] ou [3];me pergunto se eles foram usados ​​para outra coisa em uma versão anterior. Este antigo link do Informix tem uma estrutura semelhante com significados semelhantes para [2] e [4], então pode dar uma dica sobre para que eles esperavam usar os outros;mas pode ser uma coincidência sem sentido...

PostgreSQL parece ter a mesma estrutura, como faz DB2, e servidor SQL tem algo que parece relacionado.Está começando a parecer suspeitamente um padrão...embora seja um ao qual a Oracle adere apenas parcialmente.

Outras dicas

Do "Guia Informix para SQL" (fevereiro de 1998):

('Primeiro', 'Segundo', etc.porque nem todas as linguagens indexam matrizes começando com 0.)

Primeiro - Após uma instrução PREPARE bem-sucedida para uma instrução SELECT, UPDATE, INSERT ou DELETE, ou após um cursor de seleção ser aberto, este campo contém o número estimado de linhas afetadas.

Segundo - Quando SQLCODE contém um código de erro, este campo contém zero ou um código de erro adicional, denominado código de erro ISAM, que explica a causa do erro principal.Após uma operação de inserção bem-sucedida de uma única linha, este campo contém o valor de qualquer valor SERIAL gerado para essa linha.

Terceiro - Após uma operação bem-sucedida de inserção, atualização ou exclusão de múltiplas linhas, este campo contém o número de linhas que foram processadas.Após uma operação de inserção, atualização ou exclusão de múltiplas linhas que termina com um erro, esse campo contém o número de linhas que foram processadas com êxito antes do erro ser detectado.

Quarto - Após uma instrução PREPARE bem-sucedida para uma instrução SELECT, UPDATE, INSERT ou DELETE, ou após um cursor de seleção ter sido aberto, este campo contém a soma ponderada estimada de acessos ao disco e o total de linhas processadas.

Quinto - Após um erro de sintaxe em uma instrução PREPARE, EXECUTE IMMEDIATE, DECLARE ou SQL estática, este campo contém o deslocamento no texto da instrução onde o erro foi detectado.

Sexto - Após uma busca bem-sucedida de uma linha selecionada ou uma operação de inserção, atualização ou exclusão bem-sucedida, este campo contém o rowid (endereço físico) da última linha que foi processada.Se esse valor rowid corresponde a uma linha que o servidor de banco de dados retorna ao usuário depende de como o servidor de banco de dados processa uma consulta, particularmente para instruções SELECT.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top