Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almacenado

Estas en el tema de DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almacenado en el foro de SQL Server en Foros del Web. Hola a todos. Antes de nada gracias por vuestra ayuda. Vereis tengo una consulta en mi base de datos en la que quiero recoger varios ...
  #1 (permalink)  
Antiguo 24/06/2008, 09:01
 
Fecha de Ingreso: noviembre-2007
Mensajes: 23
Antigüedad: 16 años, 5 meses
Puntos: 0
DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almacenado

Hola a todos.

Antes de nada gracias por vuestra ayuda.

Vereis tengo una consulta en mi base de datos en la que quiero recoger varios datos. Todos se pueden recoger con un SELECT menos uno que hay que calcularlo. Tengo un procediemiento almacenado que lo calcula, mi duda es como puedo hacer para que uno de los campos que devuelva ese select sea el precio calculado.

Gracias.
  #2 (permalink)  
Antiguo 24/06/2008, 09:19
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Pues hay varias formas dependiendo del resultado final.
  1. El resultado de tu SP lo guardas en una variable, y esta la pones como una columna mas en tu consulta.
  2. Puedes convertir tu SP en una funcion y llamar dentro de tu consulta.
  3. Puedes usar el codigo de tu SP como una subconsulta, si cada registro del resultado depende de tu SP.
Si no es ninguna de esta opciones, pon parte de tu codigo.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 24/06/2008, 09:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 23
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

La primera no me vale sseguro. La segunda es que veo puedo ver más viable.

La cuestion es la siguiente. Mi consulta es:

SELECT DISTINCT TarifaVenta.Codigo, TarifaVenta.CodigoContrato, CodigoProveedor, TipoHabitaciones.Codigo, TipoHabitaciones.Descripcion, TiposPension.Codigo AS CodigoPension, TiposPension.orden, TiposPension.Descripcion AS TipoPension, ''0,00'' AS Precio FROM TarifaVenta INNER JOIN Contratos ON TarifaVenta.CodigoContrato = Contratos.Codigo INNER JOIN TipoHabitaciones ON Contratos.CodigoTipoHabitacion = TipoHabitaciones.Codigo INNER JOIN DetalleTarifaVenta ON TarifaVenta.Codigo = DetalleTarifaVenta.CodigoTarifaVenta INNER JOIN TiposPension ON DetalleTarifaVenta.CodigoTipoPension = TiposPension.Codigo INNER JOIN Proveedores ON Contratos.CodigoProveedor = Proveedores.Codigo INNER JOIN Cupo ON Cupo.CodigoContrato = Contratos.Codigo

La cuestion es donde pone '0,00'' AS Precio conseguir que ahí me ponga el precio.

El procedimiento almacenado es:
CalculaImportePension CodigoHotel, CodigoContrato, CodigoPension, FechaEntrada, FechaSalida, Adultos, Individual, Pax3, Pax4, N1E1, N1E2, N2E1, N2E2

Puedo hacer que lo ejecute y ponga el resultado? Hay que tener en cuenta que hay que pasarle el CodigoPension que es uno de los campos que vienen en la consulta.
  #4 (permalink)  
Antiguo 24/06/2008, 10:36
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Entonces no cabe duda que tiene que ser una funcion.
Supongo que todos los parametros de tu SP los tienes en tu consulta.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 24/06/2008, 10:45
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Cita:
Iniciado por flaviovich Ver Mensaje
Entonces no cabe duda que tiene que ser una funcion.
Supongo que todos los parametros de tu SP los tienes en tu consulta.
y algo menos recomendado aunque es otra solución sería llamar al sp e insertarlo en una tabla temporal y de partiendo de allí haces tus consultas
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #6 (permalink)  
Antiguo 25/06/2008, 03:43
 
Fecha de Ingreso: noviembre-2007
Mensajes: 23
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Si, los parametros del SP son precisamente lo que pido en esa consulta.

Como sería el tema de la funcion y como sería el tema de la tabla temporal. Es que aquí creo que ya mis conocimientos no alcanzan para tanto nivel.

Y antes de nada gracias por cuestra ayuda.
  #7 (permalink)  
Antiguo 25/06/2008, 08:31
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Actualmente tu SP debe estar asi:
Código:
alter procedure dbo.CalculaImportePension
(
/*Todos tus parametros*/
)
as
begin
/*Todo tu script*/
select Precio from...
end
Lo que debes hacer es, lograr que tu SP se convierta en una funcion, asi:
Código:
alter function dbo.CalculaImportePension
(
/*Todos tus parametros*/
)
returns money
as
begin
declare @precio money
/*Todo tu script*/
select @precio=Precio from...
return @precio
end
Y en tu consulta lo llamas asi:
Código:
SELECT DISTINCT TarifaVenta.Codigo, ..., dbo.CalculaImportePension(/*Todos los parametros necesarios*/)
from...
Espero haberte ayudado.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 25/06/2008, 09:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 23
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Voy a probar, no sabia que se podian hacer funciones en SQL Server, muchas gracias, acabas de abrir un mundo nuevo para mi. A ver si me pongo a ello y os comento como salió.

Gracias de veras.
  #9 (permalink)  
Antiguo 08/07/2008, 08:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 23
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: DUDA: Hacer una consulta que uno de los campos sea un Procedimiento Almace

Perdonadme por tardar tanto en responder.

Veamos, he hecho la función y funciona a la perfeccion. Lo que pasa es que ahora tengo un pequeño problemilla. Se llama TimeOut!

Vereis ya se que la consulta no está bien hecha (de hecho no la programé yo), pero por ahora no puedo ponerme a cambiarla.

La cuestion es que es una consulta cilópea que es algo fuera de lo común. Y consulta en municipios todos los hoteles segun unas restricciones bastante complejas. Y la consulta tiene alrededor de unas mil lineas. El problema es que en busquedas grandes, como por ejemplo toda una provincia tarda 1 minuto o minuto y algo. Y claro, al web me da timeout.

En breves tendré que cambiarlo porque una consulta SQL de 1k lineas es algo que no puede estar bien. Pero por ahora tengo que intentar que funcione de esta manera.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:42.