Como lidar com erros SQL com SQLSTATE

SQLSTATE especifica um grande número de condições anômalas em SQL. SQLSTATE é uma cadeia de cinco caracteres em que apenas as letras maiúsculas UMA através Z e os algarismos de 0 a 9 são caracteres válidos. A string de cinco caracteres é dividida em dois grupos: um código de classe de dois caracteres e um código de subclasse de três caracteres.

O código de classe contém um status após a conclusão de uma instrução SQL. Este estatuto pode indicar a conclusão com êxito da declaração, ou um de uma série de grandes tipos de condições de erro. O código de subclasse fornece detalhes adicionais sobre esta execução particular da declaração.

O padrão SQL define qualquer código de classe que começa com as letras UMA através H ou os numerais de 0 a 4, portanto, estes códigos de classe significam a mesma coisa em qualquer aplicação. códigos de classe que começam com as letras Eu através Z ou os numerais 5 a 9 são deixadas abertas para implementadores de definir porque a especificação SQL não pode antecipar todas as doenças que podem surgir em cada aplicação.

No entanto, implementadores deve usar esses códigos de classe fora do padrão tão pouco quanto possível para evitar problemas de migração de um DBMS para outro. Idealmente, implementadores devem utilizar os códigos padrão na maioria das vezes e os códigos fora do padrão somente sob as circunstâncias mais incomuns.

image0.jpg

Um código de classe 00 indica a conclusão bem-sucedida. código de classe 01 significa que a instrução foi executada com sucesso, mas produziu um aviso. código de classe 02 indica uma condição de ausência de dados. Qualquer SQLSTATE código de classe diferente 00, 01, ou 02 indica que a instrução não foi executada com sucesso.

Porque SQLSTATE atualizações após cada operação SQL, você pode verificá-la após cada instrução é executada. E se SQLSTATE contém 00000 (Conclusão), você pode prosseguir com a operação seguinte. Se ele contém qualquer outra coisa, você pode querer a ramificar-se da linha principal de seu código para lidar com a situação. O código e subclasse código de classe específica de que um SQLSTATE contém determinar qual das várias ações possíveis que você deve tomar.

Usar SQLSTATE em um programa de linguagem módulo, incluem uma referência a ele em suas definições de procedimento, como mostra o seguinte exemplo:

NUTRIENTES PROCEDIMENTO (SQLSTATE,: CHAR foodname (20),: calorias SMALLINT,: DECIMAL proteína (5,1),: DECIMAL gordura (5,1) ,: DECIMAL carbo (5,1)) INSERT INTO FOODS (FoodName, calorias , proteína, gordura, carboidrato) VALUES (: foodname,: calorias, proteínas:,: gordura,: carbo) -

No local apropriado em seu programa de linguagem procedural, você pode fazer os valores disponíveis para os parâmetros (talvez solicitando-los do usuário) e, em seguida, chamar o procedimento. A sintaxe desta operação varia de uma língua para outra, mas é algo como isto:

foodname = "Quiabo, cozidos" -calories = 29 -protein = 2,0 -fat = 0,3 -carbo = 6,0 -NUTRIENT (estado, foodname, calorias, proteínas, gorduras, carbo) -

O Estado de SQLSTATE é devolvido na variável Estado. Seu programa pode examinar esta variável e, em seguida, tomar as medidas adequadas com base no conteúdo da variável.

menu