none
Que variable me devuelve el error ocurrido en una transaccion sql server RRS feed

  • Pregunta

  • Tengo la siguiente transaccion...

    BEGIN TRY
      BEGIN TRANSACTION
       -- Query
      COMMIT
      RETURN 0
     END TRY
     BEGIN CATCH
      IF(@@TRANCOUNT > 0)
       ROLLBACK
       RAISERROR('Mensaje', 16, 1)
     END CATCH

    Como pueden ver si hay un error yo doy un mensaje "creado por mi" al usuario de que nos e pudo ejecutar el query. Quiero que en lugar de dar un mensaje creado por mi que sea el mensaje que da sql de error... Cual sera la variable o algo que me devuelva dicho error?

    Gracias

    sábado, 19 de marzo de 2011 20:36

Respuestas

  • En el ámbito de un bloque CATCH, se pueden utilizar las siguientes funciones del sistema para obtener información acerca del error que provocó la ejecución del bloque CATCH:

    ERROR_NUMBER() devuelve el número del error.

    ERROR_SEVERITY() devuelve la gravedad.

    ERROR_STATE() devuelve el número de estado del error.

    ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador donde se produjo el error.

    ERROR_LINE() devuelve el número de línea de la rutina que provocó el error.

    ERROR_MESSAGE() devuelve el texto completo del mensaje de error. Este texto incluye los valores suministrados para los parámetros reemplazables, como longitudes, nombres de objetos u horas.

    Estas funciones devuelven NULL si se las llama desde fuera del ámbito del bloque CATCH. Con ellas se puede recuperar información sobre los errores desde cualquier lugar dentro del ámbito del bloque CATCH.

    http://msdn.microsoft.com/es-es/library/ms175976.aspx


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    • Propuesto como respuesta HunchbackMVP domingo, 20 de marzo de 2011 0:46
    • Marcado como respuesta Pro2e miércoles, 23 de marzo de 2011 3:52
    domingo, 20 de marzo de 2011 0:44

Todas las respuestas

  • En el ámbito de un bloque CATCH, se pueden utilizar las siguientes funciones del sistema para obtener información acerca del error que provocó la ejecución del bloque CATCH:

    ERROR_NUMBER() devuelve el número del error.

    ERROR_SEVERITY() devuelve la gravedad.

    ERROR_STATE() devuelve el número de estado del error.

    ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador donde se produjo el error.

    ERROR_LINE() devuelve el número de línea de la rutina que provocó el error.

    ERROR_MESSAGE() devuelve el texto completo del mensaje de error. Este texto incluye los valores suministrados para los parámetros reemplazables, como longitudes, nombres de objetos u horas.

    Estas funciones devuelven NULL si se las llama desde fuera del ámbito del bloque CATCH. Con ellas se puede recuperar información sobre los errores desde cualquier lugar dentro del ámbito del bloque CATCH.

    http://msdn.microsoft.com/es-es/library/ms175976.aspx


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    • Propuesto como respuesta HunchbackMVP domingo, 20 de marzo de 2011 0:46
    • Marcado como respuesta Pro2e miércoles, 23 de marzo de 2011 3:52
    domingo, 20 de marzo de 2011 0:44
  • En el ámbito de un bloque CATCH, se pueden utilizar las siguientes funciones del sistema para obtener información acerca del error que provocó la ejecución del bloque CATCH:

    ERROR_NUMBER() devuelve el número del error.

    ERROR_SEVERITY() devuelve la gravedad.

    ERROR_STATE() devuelve el número de estado del error.

    ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador donde se produjo el error.

    ERROR_LINE() devuelve el número de línea de la rutina que provocó el error.

    ERROR_MESSAGE() devuelve el texto completo del mensaje de error. Este texto incluye los valores suministrados para los parámetros reemplazables, como longitudes, nombres de objetos u horas.

    Estas funciones devuelven NULL si se las llama desde fuera del ámbito del bloque CATCH. Con ellas se puede recuperar información sobre los errores desde cualquier lugar dentro del ámbito del bloque CATCH.

    http://msdn.microsoft.com/es-es/library/ms175976.aspx


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    Hola amigo muchisimas gracias eso era lo que buscaba.
    miércoles, 23 de marzo de 2011 3:46