recuperar salida del SP en ASP

19/05/2004 - 11:05 por Jomaweb | Informe spam
Hola a todos:

Simplificando mucho, este de abajo es mi procedimiento almacenado.
Se supone que lo ejecuto desde una página ASP con la orden siguiente:

set rs=con.execute(pa_eliminarcontrato 123)

Pero no logro que me devuelva el mensaje que yo he definido mediante:

mensaje=rs.fields(0)

El caso es que no quiero definirlo como parámetro de salida ni liarme
con el tema de definir parametros en el codigo ASP.

me dice que el campo no existe en la selección.

¿cómo lo recupero? ¿y si quiero recuperar los dos(mensaje y
codigoresulado)?



CREATE PROCEDURE pa_eliminacontrato @CONTRATO integer as

DECLARE @ROW INTEGER
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER


SELECT @ROW=COUNT(*) FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO


IF (@ROW=0)

SET @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO'
SET @CODIGORESULTADO=1

ELSECODIGO_CONTRATOSOCIO=@SOCIO

SET @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO
SET @CODIGORESULTADO=0

select @mensaje,@codigoresultado

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
19/05/2004 - 12:05 | Informe spam
Entiendo que no quieras liarte, pero te recomiendo que lo que estás
haciendo lo revises para devolver esos textos como parámetros de salida: es
mucho más eficiente y no necesariamente más complicado. De hecho, en la
ayuda tienes ejemplos de cómo recoger parámetros de salida.

De todos modos, yo modificaría ese procedimiento:

**************************************************
CREATE PROCEDURE dbo.pa_eliminacontrato @CONTRATO INTEGER AS
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER

IF EXISTS (SELECT 1 FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO)
SELECT @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO,
@CODIGORESULTADO=0
ELSE
SELECT @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO',
CODIGORESULTADO=1

SELECT @mensaje mensaje,@codigoresultado codigoresultado

**************************************************

Pero vamos, que yo lo que haría sería modificarlo para que fueran
parámetros de salida tanto @mensaje como @codigoresultado

Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:uhvS#
Hola a todos:

Simplificando mucho, este de abajo es mi procedimiento almacenado.
Se supone que lo ejecuto desde una página ASP con la orden siguiente:

set rs=con.execute(pa_eliminarcontrato 123)

Pero no logro que me devuelva el mensaje que yo he definido mediante:

mensaje=rs.fields(0)

El caso es que no quiero definirlo como parámetro de salida ni liarme
con el tema de definir parametros en el codigo ASP.

me dice que el campo no existe en la selección.

¿cómo lo recupero? ¿y si quiero recuperar los dos(mensaje y
codigoresulado)?



CREATE PROCEDURE pa_eliminacontrato @CONTRATO integer as

DECLARE @ROW INTEGER
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER


SELECT @ROW=COUNT(*) FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO


IF (@ROW=0)

SET @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO'
SET @CODIGORESULTADO=1

ELSECODIGO_CONTRATOSOCIO=@SOCIO

SET @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO
SET @CODIGORESULTADO=0

select @mensaje,@codigoresultado


Respuesta Responder a este mensaje
#2 Jomaweb
19/05/2004 - 12:22 | Informe spam
No, si eso ya lo sé. Ya sé que es más eficiente pero es un procedimiento que
solo se va a ejecutar una vez a la semana como mucho.

El problema es ¿cómo recuperar desde el ASP el recordset doble que me
devuelve el SP?

Eso es lo que no pillo

Gracias

haciendo lo revises para devolver esos textos como parámetros de salida:


es
mucho más eficiente y no necesariamente más complicado. De hecho, en la
ayuda tienes ejemplos de cómo recoger parámetros de salida.

De todos modos, yo modificaría ese procedimiento:

**************************************************
CREATE PROCEDURE dbo.pa_eliminacontrato @CONTRATO INTEGER AS
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER

IF EXISTS (SELECT 1 FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO)
SELECT @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO,
@CODIGORESULTADO=0
ELSE
SELECT @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO',
CODIGORESULTADO=1

SELECT @mensaje mensaje,@codigoresultado codigoresultado

**************************************************

Pero vamos, que yo lo que haría sería modificarlo para que fueran
parámetros de salida tanto @mensaje como @codigoresultado

Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:uhvS#
> Hola a todos:
>
> Simplificando mucho, este de abajo es mi procedimiento almacenado.
> Se supone que lo ejecuto desde una página ASP con la orden siguiente:
>
> set rs=con.execute(pa_eliminarcontrato 123)
>
> Pero no logro que me devuelva el mensaje que yo he definido mediante:
>
> mensaje=rs.fields(0)
>
> El caso es que no quiero definirlo como parámetro de salida ni liarme
> con el tema de definir parametros en el codigo ASP.
>
> me dice que el campo no existe en la selección.
>
> ¿cómo lo recupero? ¿y si quiero recuperar los dos(mensaje y
> codigoresulado)?
>
>
>
> CREATE PROCEDURE pa_eliminacontrato @CONTRATO integer as
>
> DECLARE @ROW INTEGER
> DECLARE @MENSAJE VARCHAR(100)
> DECLARE @CODIGORESULTADO INTEGER
>
>
> SELECT @ROW=COUNT(*) FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO
>
>
> IF (@ROW=0)
>
> SET @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO'
> SET @CODIGORESULTADO=1
>
> ELSECODIGO_CONTRATOSOCIO=@SOCIO
>
> SET @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO
> SET @CODIGORESULTADO=0
>
> select @mensaje,@codigoresultado
>
>


Respuesta Responder a este mensaje
#3 Tinoco
19/05/2004 - 14:12 | Informe spam
Hola.

No se si este sea tu problema, pero una recomendación es
utilizar [Set nocount on], al inicio del SP para que no te
afecte el recordset de retorno.

Espero te sirva.

Hermilson T.
MCDBA, MCSD
Colombia

Hola a todos:

Simplificando mucho, este de abajo es mi procedimiento


almacenado.
Se supone que lo ejecuto desde una página ASP con la


orden siguiente:

set rs=con.execute(pa_eliminarcontrato 123)

Pero no logro que me devuelva el mensaje que yo he


definido mediante:

mensaje=rs.fields(0)

El caso es que no quiero definirlo como parámetro de


salida ni liarme
con el tema de definir parametros en el codigo ASP.

me dice que el campo no existe en la selección.

¿cómo lo recupero? ¿y si quiero recuperar los dos


(mensaje y
codigoresulado)?



CREATE PROCEDURE pa_eliminacontrato @CONTRATO integer as

DECLARE @ROW INTEGER
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER


SELECT @ROW=COUNT(*) FROM contratos WHERE


CODIGO_CONTRATO=@CONTRATO


IF (@ROW=0)

SET @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO'
SET @CODIGORESULTADO=1

ELSECODIGO_CONTRATOSOCIO=@SOCIO

SET @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' +


@CONTRATO
SET @CODIGORESULTADO=0

select @mensaje,@codigoresultado
Respuesta Responder a este mensaje
#4 Javier Loria
19/05/2004 - 16:23 | Informe spam
Hola:
Opino igual que Carlos, pero lo que quieres hacer lo logras
== Set rs = rs.NextRecordset
== Ahora rs, tiene el segundo recordset.

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:
No, si eso ya lo sé. Ya sé que es más eficiente pero es un
procedimiento que solo se va a ejecutar una vez a la semana como
mucho.

El problema es ¿cómo recuperar desde el ASP el recordset doble que me
devuelve el SP?

Eso es lo que no pillo

Gracias

haciendo lo revises para devolver esos textos como parámetros de
salida: es mucho más eficiente y no necesariamente más complicado.
De hecho, en la ayuda tienes ejemplos de cómo recoger parámetros de
salida.

De todos modos, yo modificaría ese procedimiento:

**************************************************
CREATE PROCEDURE dbo.pa_eliminacontrato @CONTRATO INTEGER AS
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER

IF EXISTS (SELECT 1 FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO)
SELECT @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO,
@CODIGORESULTADO=0
ELSE
SELECT @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO',
CODIGORESULTADO=1

SELECT @mensaje mensaje,@codigoresultado codigoresultado

**************************************************

Pero vamos, que yo lo que haría sería modificarlo para que fueran
parámetros de salida tanto @mensaje como @codigoresultado

Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:uhvS#
Hola a todos:

Simplificando mucho, este de abajo es mi procedimiento almacenado.
Se supone que lo ejecuto desde una página ASP con la orden
siguiente:

set rs=con.execute(pa_eliminarcontrato 123)

Pero no logro que me devuelva el mensaje que yo he definido
mediante:

mensaje=rs.fields(0)

El caso es que no quiero definirlo como parámetro de salida ni
liarme con el tema de definir parametros en el codigo ASP.

me dice que el campo no existe en la selección.

¿cómo lo recupero? ¿y si quiero recuperar los dos(mensaje y
codigoresulado)?



CREATE PROCEDURE pa_eliminacontrato @CONTRATO integer as

DECLARE @ROW INTEGER
DECLARE @MENSAJE VARCHAR(100)
DECLARE @CODIGORESULTADO INTEGER


SELECT @ROW=COUNT(*) FROM contratos WHERE CODIGO_CONTRATO=@CONTRATO


IF (@ROW=0)

SET @MENSAJE='NO EXISTEN CONTRATOS CON DICHO NUMERO'
SET @CODIGORESULTADO=1

ELSECODIGO_CONTRATOSOCIO=@SOCIO

SET @MENSAJE= 'SE ELIMINARON LOS DATOS DEL SOCIO' + @CONTRATO
SET @CODIGORESULTADO=0

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