raiserror

27/06/2005 - 17:29 por guillermo | Informe spam
Tengo el siguiente trigger:

declare @st_codigo varchar(40),
@total_ubica cantidad,
@stock cantidad,
@stock_string varchar,
@total_ubica_string varchar

select @st_codigo=st_codigo from inserted

select @total_ubica=sum(ub_cantidad) from Ubicaciones
where st_codigo=@st_codigo

select @stock=st_stock from Stock
where st_codigo=@st_codigo

if @total_ubica>@stock
begin
SELECT @stock_string=CONVERT(varchar(20),@stock)
SELECT @total_ubica_string=CONVERT(varchar(20),@total_ubica)
RAISERROR (La suma es: %s y no debe superar %s ',16,
1,@total_ubica_string,@stock_string)
ROLLBACK TRANSACTION
end

El problema es que cuando se produce el error, es decir @total_ubica>@stock
lo cual lo detecta perfectamente, en el mensaje de error solo me aparece el
primer dígito de cada parámetro del raiserror. o sea el primer dígito de
@total_ubica_string y el primer dígito de @stock_string en lugar de aparecer
el número completo.
Alguien podría decirme que está pasando?
Desde ya muchas gracias

Guillermo

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
27/06/2005 - 17:45 | Informe spam
Guillermo,

Debes poner la longitud cuando declaras esas variables, de lo contrario sql
server las toma como longitud 1.

@stock_string varchar,
@total_ubica_string varchar




AMB


"guillermo" wrote:

Tengo el siguiente trigger:

declare @st_codigo varchar(40),
@total_ubica cantidad,
@stock cantidad,
@stock_string varchar,
@total_ubica_string varchar

select @st_codigo=st_codigo from inserted

select @total_ubica=sum(ub_cantidad) from Ubicaciones
where st_codigo=@st_codigo

select @stock=st_stock from Stock
where st_codigo=@st_codigo

if @total_ubica>@stock
begin
SELECT @stock_string=CONVERT(varchar(20),@stock)
SELECT @total_ubica_string=CONVERT(varchar(20),@total_ubica)
RAISERROR (La suma es: %s y no debe superar %s ',16,
1,@total_ubica_string,@stock_string)
ROLLBACK TRANSACTION
end

El problema es que cuando se produce el error, es decir @total_ubica>@stock
lo cual lo detecta perfectamente, en el mensaje de error solo me aparece el
primer dígito de cada parámetro del raiserror. o sea el primer dígito de
@total_ubica_string y el primer dígito de @stock_string en lugar de aparecer
el número completo.
Alguien podría decirme que está pasando?
Desde ya muchas gracias

Guillermo



Respuesta Responder a este mensaje
#2 guillermo
27/06/2005 - 18:08 | Informe spam
AAAaaaaaaaaaaaaaaaaaaa!!
Muchas gracias!!
Algunas veces se cometen errores demasiado tontos y estas tan a 1000 que ni
te das cuenta. Gracias de nuevo
Guillermo
"Alejandro Mesa" escribió en el
mensaje news:
Guillermo,

Debes poner la longitud cuando declaras esas variables, de lo contrario


sql
server las toma como longitud 1.

> @stock_string varchar,
> @total_ubica_string varchar


AMB


"guillermo" wrote:

> Tengo el siguiente trigger:
>
> declare @st_codigo varchar(40),
> @total_ubica cantidad,
> @stock cantidad,
> @stock_string varchar,
> @total_ubica_string varchar
>
> select @st_codigo=st_codigo from inserted
>
> select @total_ubica=sum(ub_cantidad) from Ubicaciones
> where st_codigo=@st_codigo
>
> select @stock=st_stock from Stock
> where st_codigo=@st_codigo
>
> if @total_ubica>@stock
> begin
> SELECT @stock_string=CONVERT(varchar(20),@stock)
> SELECT @total_ubica_string=CONVERT(varchar(20),@total_ubica)
> RAISERROR (La suma es: %s y no debe superar %s ',16,
> 1,@total_ubica_string,@stock_string)
> ROLLBACK TRANSACTION
> end
>
> El problema es que cuando se produce el error, es decir


@total_ubica>@stock
> lo cual lo detecta perfectamente, en el mensaje de error solo me aparece


el
> primer dígito de cada parámetro del raiserror. o sea el primer dígito de
> @total_ubica_string y el primer dígito de @stock_string en lugar de


aparecer
> el número completo.
> Alguien podría decirme que está pasando?
> Desde ya muchas gracias
>
> Guillermo
>
>
>
Respuesta Responder a este mensaje
#3 Alejandro Mesa
27/06/2005 - 18:23 | Informe spam
Algunas veces se cometen errores demasiado tontos y estas tan a 1000 que ni
te das cuenta.



Asi es, a mi tambien me ha pasado muchas veces.


AMB

"guillermo" wrote:

AAAaaaaaaaaaaaaaaaaaaa!!
Muchas gracias!!
Algunas veces se cometen errores demasiado tontos y estas tan a 1000 que ni
te das cuenta. Gracias de nuevo
Guillermo
"Alejandro Mesa" escribió en el
mensaje news:
> Guillermo,
>
> Debes poner la longitud cuando declaras esas variables, de lo contrario
sql
> server las toma como longitud 1.
>
> > @stock_string varchar,
> > @total_ubica_string varchar
>
>
> AMB
>
>
> "guillermo" wrote:
>
> > Tengo el siguiente trigger:
> >
> > declare @st_codigo varchar(40),
> > @total_ubica cantidad,
> > @stock cantidad,
> > @stock_string varchar,
> > @total_ubica_string varchar
> >
> > select @st_codigo=st_codigo from inserted
> >
> > select @total_ubica=sum(ub_cantidad) from Ubicaciones
> > where st_codigo=@st_codigo
> >
> > select @stock=st_stock from Stock
> > where st_codigo=@st_codigo
> >
> > if @total_ubica>@stock
> > begin
> > SELECT @stock_string=CONVERT(varchar(20),@stock)
> > SELECT @total_ubica_string=CONVERT(varchar(20),@total_ubica)
> > RAISERROR (La suma es: %s y no debe superar %s ',16,
> > 1,@total_ubica_string,@stock_string)
> > ROLLBACK TRANSACTION
> > end
> >
> > El problema es que cuando se produce el error, es decir
@total_ubica>@stock
> > lo cual lo detecta perfectamente, en el mensaje de error solo me aparece
el
> > primer dígito de cada parámetro del raiserror. o sea el primer dígito de
> > @total_ubica_string y el primer dígito de @stock_string en lugar de
aparecer
> > el número completo.
> > Alguien podría decirme que está pasando?
> > Desde ya muchas gracias
> >
> > Guillermo
> >
> >
> >



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida