[PowerBuilder] Referência para os valores do SQLCode

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:

Valor Descrição
Comando (statement) executado com sucesso.
-1 Indica que um erro ou exceção ocorreu. Utilize a propriedade SqlErrText para ver a mensagem de erro.
100 O 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. 🙂

 

 

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, PowerBuilder and tagged , , , , .