Raiserror

03/07/2006 - 18:04 por Carlos Gómez | Informe spam
SQLServer 2005 Express
He creado un par de mensajes de error de la siguiente forma:

EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='The customer %s is already in the data base'
@lang='us-english'
GO
EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='El cliente %s ya existe'
@lang='Español'
GO

La vista sys.messages muestra:
message_id language_id severity is_event_logged text
50001 1033 16 0 The cust...
50001 3082 16 0 El clien...

Pero cuando hago:
DECLARE @Nombre varchar(50)
SET @Nombre = 'Pedro'
IF exists (SELECT Id FROM Clientes WHERE Nombre = @Nombre)
RAISERROR (50001,16,1,@Nombre)

en el caso de que se cumpla la condición me da el error:
Mens. 2787, Nivel 16, Estado 2, Linea 4
Especificación de formato no valida: 's%, ya existe'

¿Que hago mal?



Desde Aguadulce - España
Carlos Gomez

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
03/07/2006 - 19:49 | Informe spam
Carlos,

Especificación de formato no valida: 's%, ya existe'



Fijate bien en el mensaje, al parecer usastes 's%' en vez de '%s'.


AMB


"Carlos Gómez" wrote:

SQLServer 2005 Express
He creado un par de mensajes de error de la siguiente forma:

EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='The customer %s is already in the data base'
@lang='us-english'
GO
EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='El cliente %s ya existe'
@lang='Español'
GO

La vista sys.messages muestra:
message_id language_id severity is_event_logged text
50001 1033 16 0 The cust...
50001 3082 16 0 El clien...

Pero cuando hago:
DECLARE @Nombre varchar(50)
SET @Nombre = 'Pedro'
IF exists (SELECT Id FROM Clientes WHERE Nombre = @Nombre)
RAISERROR (50001,16,1,@Nombre)

en el caso de que se cumpla la condición me da el error:
Mens. 2787, Nivel 16, Estado 2, Linea 4
Especificación de formato no valida: 's%, ya existe'

¿Que hago mal?



Desde Aguadulce - España
Carlos Gomez

Respuesta Responder a este mensaje
#2 Carlos Gómez
03/07/2006 - 19:51 | Informe spam
Alejandro Mesa wrote:

Carlos,

Especificación de formato no valida: 's%, ya existe'



Fijate bien en el mensaje, al parecer usastes 's%' en vez de '%s'.


AMB




No, me equivoque al escribir el correo, el error es:
Mens. 2787, Nivel 16, Estado 2, Linea 4
Especificación de formato no valida: 's, ya existe'
Desde Aguadulce - España
Carlos Gomez
Respuesta Responder a este mensaje
#3 Alejandro Mesa
03/07/2006 - 21:03 | Informe spam
Carlos,

En el mensaje que adicionas en Español, usa un numero seguido por "!" para
especificar los parametros.

Ejemplo:

use northwind
go

EXEC sp_addmessage @msgnum`001,
@severity,
@msgtext='The customer %s already exists.',
@lang='us_english'
GO

EXEC sp_addmessage @msgnum`001,
@severity,
@msgtext='El cliente %1! ya existe.',
@lang='spanish'
GO

set language 'spanish'
go

raiserror(60001, 16, 1, 'Carlos Gómez')
go

set language 'us_english'
go

exec sp_dropmessage 60001, 'spanish'
exec sp_dropmessage 60001, 'us_english'
go


AMB


"Carlos Gómez" wrote:

Alejandro Mesa wrote:

> Carlos,
>
>> Especificación de formato no valida: 's%, ya existe'
>
> Fijate bien en el mensaje, al parecer usastes 's%' en vez de '%s'.
>
>
> AMB
>

No, me equivoque al escribir el correo, el error es:
Mens. 2787, Nivel 16, Estado 2, Linea 4
Especificación de formato no valida: 's, ya existe'
Desde Aguadulce - España
Carlos Gomez

Respuesta Responder a este mensaje
#4 Antonio Soto
03/07/2006 - 21:05 | Informe spam
Hola Carlos,

Cuando agreges el mensaje en Español no utilices el parámetro por tipo, sino
por posición es decir:

EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='El cliente %1 ya existe'
@lang='Español'
GO

Saludos


Antonio Soto
Solid Quality Learning
http://www.sqlu.com
Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference.

"Carlos Gómez" escribió en el mensaje
news:u$
SQLServer 2005 Express
He creado un par de mensajes de error de la siguiente forma:

EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='The customer %s is already in the data base'
@lang='us-english'
GO
EXEC sp_addmessage @msgnumP001,
@severity,
@msgtext='El cliente %s ya existe'
@lang='Español'
GO

La vista sys.messages muestra:
message_id language_id severity is_event_logged text
50001 1033 16 0 The cust...
50001 3082 16 0 El clien...

Pero cuando hago:
DECLARE @Nombre varchar(50)
SET @Nombre = 'Pedro'
IF exists (SELECT Id FROM Clientes WHERE Nombre = @Nombre)
RAISERROR (50001,16,1,@Nombre)

en el caso de que se cumpla la condición me da el error:
Mens. 2787, Nivel 16, Estado 2, Linea 4
Especificación de formato no valida: 's%, ya existe'

¿Que hago mal?



Desde Aguadulce - España
Carlos Gomez
Respuesta Responder a este mensaje
#5 Carlos Gómez
04/07/2006 - 09:13 | Informe spam
Ok, ahora funciona perfectamente.

Muchas gracias

Desde Aguadulce - España
Carlos Gomez
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida