Foros del Web » Programando para Internet » ASP Clásico »

ASP 3.0 Retornar valor de una funcion SQL

Estas en el tema de ASP 3.0 Retornar valor de una funcion SQL en el foro de ASP Clásico en Foros del Web. Buenas, Nesesito retornar un valor de una funcion de SQL Server. Funcion: FUNCTION fn_producto (@id_producto INT) returns NVARCHAR(1000) AS BEGIN DECLARE @v_nombre NVARCHAR(1000) SELECT @v_nombre ...
  #1 (permalink)  
Antiguo 29/03/2012, 09:38
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
ASP 3.0 Retornar valor de una funcion SQL

Buenas,

Nesesito retornar un valor de una funcion de SQL Server.
Funcion:

FUNCTION fn_producto
(@id_producto INT)
returns NVARCHAR(1000)
AS
BEGIN
DECLARE @v_nombre NVARCHAR(1000)

SELECT @v_nombre = nombre
FROM productos
WHERE id_producto = @id_producto

RETURN @v_nombre
END


Codigo ASP:
1)
Probando de esta forma me da error de Type mismatch. en la linea del parámetro RETURN.


Set objComando=Server.CreateObject("ADODB.Command")

With objComando
.ActiveConnection = coneccion
.CommandText = "fn_producto"
.CommandType = 4
.Parameters.Append .CreateParameter("RETURN", adVarChar, adParamReturnValue,Null) 'Error: Type mismatch
.Parameters.Append .CreateParameter("@id_producto", adInteger, adParamInput, 11, 1)

.Execute,,adExecuteNoRecords

Ret = Trim(.Parameters("RETURN"))

End With

2) De esta forma me devuelve el paramentro de entrada (1)

Set objComando=Server.CreateObject("ADODB.Command")

With objComando
.ActiveConnection = coneccion
.CommandText = "fn_producto"
.CommandType = 4
.Parameters.Append .CreateParameter("@id_producto", adInteger, adParamInput, 11, 1)

.Execute,,adExecuteNoRecords

Ret = Trim(.Parameters(0))

End With

Alguna idea ???
Gracias!!
  #2 (permalink)  
Antiguo 29/03/2012, 10:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
Respuesta: ASP 3.0 Retornar valor de una funcion SQL

Tienes que especificarlo como adParamOutput y pasarle la longitud del campo, en este caso lo puse como 50.

.Parameters.Append .CreateParameter("nombreParametro", adVarChar, adParamOutput,50)

Y despues para recuperarlo:

valor = objComando.Parameters("nombreParametro")

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 29/03/2012, 11:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ASP 3.0 Retornar valor de una funcion SQL

Gracias por la respuesta, pero de esta forma tendría que modificar la función agregando un parámetro OUTPUT

Original:

FUNCTION fn_producto
(@id_producto INT)
returns NVARCHAR(1000)


Modificada:

FUNCTION fn_producto
(@id_producto INT,
@v_nombre NVARCHAR OUTPUT)


La idea es no modificarla, hay manera de no trabajar con los parámetros OUTPUT solo con returns?
Cuando se utiliza y como funciona adParamReturnValue?
Saludos

Última edición por emarketing; 29/03/2012 a las 11:56
  #4 (permalink)  
Antiguo 29/03/2012, 13:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ASP 3.0 Retornar valor de una funcion SQL

Fue mi error.
Con la primera opcion funciona, pero indicando el tamaño de la variable (no importa si coincide o no con la de la funcion)
Eso si el parámetro "return" o somo se llame tiene que ir primero como parámetro (0)


.Parameters.Append .CreateParameter("RETURN", adVarChar, adParamReturnValue,Null) 'Incorrecto
.Parameters.Append .CreateParameter("RETURN", adVarChar, adParamReturnValue,10) 'Correcto

Salutes

Etiquetas: asp, funcion, retornar, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:35.