un SP solo devuelve un valor?

17/05/2004 - 14:10 por Jomaweb | Informe spam
hola

¿los valores de retorno de un procedimiento almacenado siempre se cortan a
un caracter?

lo digo porque con este SP:

CREATE PROCEDURE pa_eliminacontrato @socio integer, @mensaje varchar output
as
IF @ROW=0
set @mensaje= 'NO EXISTEN RECIBOS ASOCIADOS AL CONTRATO '
ELSE
set @mensaje= 'SE VA A BORRAR UN REGISTRO'

print @mensaje


el print me devuelve "S"
Es como si solo me devolviera el primer valor. Y eso que está declarado como
VARCHAR

¿cómo hago para que me lo devuelva entero?

Preguntas similare

Leer las respuestas

#1 Tinoco
17/05/2004 - 14:27 | Informe spam
Hola.

Utiliza una declaración como esta:

declare @vc as varchar(100)

Hermilson
MCDBA, MCSD

hola

¿los valores de retorno de un procedimiento almacenado


siempre se cortan a
un caracter?

lo digo porque con este SP:

CREATE PROCEDURE pa_eliminacontrato @socio integer,


@mensaje varchar output
as
IF @ROW=0
set @mensaje= 'NO EXISTEN RECIBOS ASOCIADOS AL


CONTRATO '
ELSE
set @mensaje= 'SE VA A BORRAR UN REGISTRO'

print @mensaje


el print me devuelve "S"
Es como si solo me devolviera el primer valor. Y eso que


está declarado como
VARCHAR

¿cómo hago para que me lo devuelva entero?
Respuesta Responder a este mensaje
#2 Javier Loria
17/05/2004 - 15:18 | Informe spam
Hola:
Ocurre porque el tamano default de un varchar o char que no se
especifica el largo es 1. Por ende mensaje es un VARCHAR(1). Define el
largo adecuado y veras el mensaje completo.
Por otra parte y no se si es por el ejemplo pero si vas a usar el
mensaje para imprimir no lo declares como parametro, definelo como variable
(Sacalo del parentisis y le pones DECLARE antes). Si lo vas a pasar
entonces el codigo esta OK..
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jomaweb escribio:
hola

¿los valores de retorno de un procedimiento almacenado siempre se
cortan a un caracter?

lo digo porque con este SP:

CREATE PROCEDURE pa_eliminacontrato @socio integer, @mensaje varchar
output as
IF @ROW=0
set @mensaje= 'NO EXISTEN RECIBOS ASOCIADOS AL CONTRATO '
ELSE
set @mensaje= 'SE VA A BORRAR UN REGISTRO'

print @mensaje


el print me devuelve "S"
Es como si solo me devolviera el primer valor. Y eso que está
declarado como VARCHAR

¿cómo hago para que me lo devuelva entero?
Respuesta Responder a este mensaje
#3 Jomaweb
17/05/2004 - 15:32 | Informe spam
Pues quería usar el mensaje para imprimirlo en una página ASP. ¿mejor como
variable?

Por otra parte y no se si es por el ejemplo pero si vas a usar el
mensaje para imprimir no lo declares como parametro, definelo como


variable
(Sacalo del parentisis y le pones DECLARE antes). Si lo vas a pasar
entonces el codigo esta OK..
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jomaweb escribio:
> hola
>
> ¿los valores de retorno de un procedimiento almacenado siempre se
> cortan a un caracter?
>
> lo digo porque con este SP:
>
> CREATE PROCEDURE pa_eliminacontrato @socio integer, @mensaje varchar
> output as
> IF @ROW=0
> set @mensaje= 'NO EXISTEN RECIBOS ASOCIADOS AL CONTRATO '
> ELSE
> set @mensaje= 'SE VA A BORRAR UN REGISTRO'
>
> print @mensaje
>
>
> el print me devuelve "S"
> Es como si solo me devolviera el primer valor. Y eso que está
> declarado como VARCHAR
>
> ¿cómo hago para que me lo devuelva entero?


Respuesta Responder a este mensaje
#4 Javier Loria
17/05/2004 - 15:45 | Informe spam
Hola:
No en este caso no lo uses como variable, tu codigo esta bien y como
estas usando OUTPUT ya es de salida.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jomaweb escribio:
Pues quería usar el mensaje para imprimirlo en una página ASP.
¿mejor como variable?

Por otra parte y no se si es por el ejemplo pero si vas a usar el
mensaje para imprimir no lo declares como parametro, definelo como
variable (Sacalo del parentisis y le pones DECLARE antes). Si lo
vas a pasar entonces el codigo esta OK..
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jomaweb escribio:
hola

¿los valores de retorno de un procedimiento almacenado siempre se
cortan a un caracter?

lo digo porque con este SP:

CREATE PROCEDURE pa_eliminacontrato @socio integer, @mensaje varchar
output as
IF @ROW=0
set @mensaje= 'NO EXISTEN RECIBOS ASOCIADOS AL CONTRATO '
ELSE
set @mensaje= 'SE VA A BORRAR UN REGISTRO'

print @mensaje


el print me devuelve "S"
Es como si solo me devolviera el primer valor. Y eso que está
declarado como VARCHAR

¿cómo hago para que me lo devuelva entero?
Respuesta Responder a este mensaje
#5 Gustavo Larriera [MVP SQL]
17/05/2004 - 15:47 | Informe spam
Te has olvidado de declarar el tamaño del tipo de datos VARCHAR. Prueba
VARCHAR(n) donde 'n' es la cantidad de caracteres a almacenar en el string.

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Jomaweb" wrote in message
news:u%
hola

¿los valores de retorno de un procedimiento almacenado siempre se cortan a
un caracter?

lo digo porque con este SP:

CREATE PROCEDURE pa_eliminacontrato @socio integer, @mensaje varchar


output
as
IF @ROW=0
set @mensaje= 'NO EXISTEN RECIBOS ASOCIADOS AL CONTRATO '
ELSE
set @mensaje= 'SE VA A BORRAR UN REGISTRO'

print @mensaje


el print me devuelve "S"
Es como si solo me devolviera el primer valor. Y eso que está declarado


como
VARCHAR

¿cómo hago para que me lo devuelva entero?


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida