Estoy trabajando en una gran base de código de SQL Server, parte de la cual ha estado en desarrollo desde al menos SQL 7 y posiblemente antes.¿Se documentó esta sintaxis de RAISERROR sin documentar y posteriormente se anuló?
lo largo de la base de código, el método de elevar un error es utilizar la siguiente sintaxis, que es, en lo que puedo decir, indocumentado
RAISERROR <error number> <error message>
El error number
puede ser cualquier valor mayor que 13.000; no debe existir una entrada correspondiente en la tabla sys.messages
. El error message
también puede ser arbitrario.
El siguiente ejemplo de código
raiserror 13000 'test error'
produce la siguiente salida
Msg 13000, Level 16, State 1, Line 1
test error
Este comportamiento es el mismo en SQL 2000, 2005 y 2008 (no he probado 2008 R2).
Vamos a intentar estandarizar en un método compatible, pero mi pregunta es de dónde vino este comportamiento en primer lugar.
Supongo que esto debe haber sido documentado, comportamiento soportado, pero las copias de libros en línea para SQL 7 y anteriores son difíciles de encontrar. ¿Alguien sabe cuándo esto fue compatible o cuándo fue desaprobado, si es que alguna vez?
Editar Para aclarar, de acuerdo con la documentation, la RAISERROR
sintaxis soportada es
RAISERROR ({ msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ])
[ WITH option [ ,...n ] ]
Y cualquier número de error de usuario que no se define en sys.messages
debe elevarse con un id mensaje de error de 50.000
De acuerdo, pero la sintaxis no está documentada, y de acuerdo con los documentos, cualquier error de usuario no definido en 'sys.messages' debe plantearse con un código de error de 50000 –