[PowerBuilder] Referência para os valores do SQLCode

[PowerBuilder] Referência para os valores do SQLCode

Overview

Bem-vindo ao mundo do PowerBuilder, onde o valor da propriedade SQLCode rege nossa interação com o banco de dados! Neste post, vamos mergulhar nos diferentes valores que o SQLCode pode assumir e o que eles realmente significam para o seu trabalho. Desde o sucesso até a detecção de erros e exceções, entender esses valores é essencial. Prepare-se para uma jornada esclarecedora através dos códigos de estado do SQLCode, com exemplos práticos que vão iluminar seu caminho.

Quem tem a sorte de trabalhar com PowerBuilder está constantemente verificando o valor da propriedade SQLCode. Neste post estão as referências para os valores que ele pode conter.

Após a utilização de algum comando de banco, o SQLCode sempre estará com um dos valores abaixo:

ValorDescrição
Comando (statement) executado com sucesso.
-1Indica que um erro ou exceção ocorreu. Utilize a propriedade SqlErrText para ver a mensagem de erro.
100O comando (statement) funcionou, mas não foram encontrados resultados. Este valor aparece apenas para update, delete ou insert.

Vale lembrar que o PowerBuilder possui valores padrões para as variáveis, ou seja, se algo de errado ocorrer, mas ele não receber um retorno do banco de dados, o SQLCode estará com o valor zero (que é o padrão do PB para variáveis numéricas).

Ok, isso pode ter ficado confuso… um exemplo:

datawindow l_dw

l_dw = create datawindow

l_dw.SetTrans(sqlca)
l_dw.Retrieve()

if l_dw.SqlCode = 0 then
   MessageBox("Hey!", "Parece que funcionou mas, na verdade, deu ruim.", Information!)
end if

No fonte acima, eu criei uma Datawindow, apontei ela para usar o SQLCA (função SetTrans) e já executei um Retrieve, mas não define o dataobject, ou seja, o SQLCA não sabe o que tem que fazer, então ele não faz nada e continua com os seus valores padrões. Isso quer dizer que a verificação de erro (SQLCA.SQLCode = 0) vai resultar em um falso positivo.

O objeto transaction ainda possui a propriedade SQLDBCode, que assim como o SqlErrText, são dependentes do SGBD utilizado e possuem os valores informados pelo banco da dados. Em versões mais antigas do PB, estas propriedades não eram populadas quando uma função da datawindow resultava em erro. Se você ainda estiver utilizando alguma versão anterior a 8… você provavelmente tem problemas maiores. 🙂