Autor Tema: Errores SQL y ADO - Para tener en cuenta  (Leído 2927 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Errores SQL y ADO - Para tener en cuenta
« en: Noviembre 07, 2014, 09:58:39 am »
Hola gente, el otro día estaba probando una rutina que usaba un ADO COMMAND, para ejecutar un Store Procedure de un SQL Server, este Store hacia unos INSERT en la base; como los valores que estaba insertando ya existian en la tabla (y tiene un indice tipo UNIQUE) yo sabia que me tenía que dar Error, mas precisamente el Error 2627, violacion de clave duplicada.

Ejecuto el Command, me interrumpe la rutina de On Error.... cuando leo el error era:

NumError: 0, Descripcion "104"

no entendia que estaba pasando.  >:(

Entonces recorro la coleccion de Errores de ADO:

Código: (VB) [Seleccionar]
For each oErr in CNN.ERRORS
     'leer error: NativeError, SQLState, Description
Next

Veo que en realidad tenia 3 errores, y el que me interesaba era el 2do error, no el primero.

Moraleja  :D
Con esto se demuestra que no siempre se puede leer un error de ADO, simplemente con un On Error; Err.num; Err.desc

Yendo un poco mas a fondo, siguiendo el codigo del store procedure, resulta que el error 0, descripcion "104", en realidad era un PRINT '104' que estaba haciendo dentro del store procedure.

Para tener en cuenta: ADO y SQL devuelven como error los print, y los msg de informacion. Pasa que estos no generan una interrupcion tipo On Error, peeero si llega a existir un error, este va a interrumpir en el On Error, y ahi veremos los print como me pasó a mi.

Agrego algo mas, los PRINT y Msg de informacion ( por ej: "Se termino la instuccion) vienen indicados con SQLSTATE: "01000"

Bueno no aburro mas.