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

Store Procedure.. para pensarlo

Estas en el tema de Store Procedure.. para pensarlo en el foro de SQL Server en Foros del Web. hola a todos...tengo una duda de como hacer este store procedure ... necesito un store procedure q devuelva el detalle de una o mas facturas ...
  #1 (permalink)  
Antiguo 30/01/2007, 15:36
Avatar de Pierre  
Fecha de Ingreso: diciembre-2006
Mensajes: 140
Antigüedad: 17 años, 4 meses
Puntos: 4
Pregunta Store Procedure.. para pensarlo

hola a todos...tengo una duda de como hacer este store procedure ...
necesito un store procedure q devuelva el detalle de una o mas facturas ingresadas en el store procedure..

Ejm: exec sp_listaDet '000001,000002,000003'

Y de esa manera se puede ingresar una o mas facturas...el numero de factura es un nvarchar(6) asi como se muestran en el ejemplo...espero respuestas..


Gracias.....
  #2 (permalink)  
Antiguo 30/01/2007, 15:58
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: Store Procedure.. para pensarlo

Que tal Pierre.

En el siguiente post hay algo al respecto, que seguro te será de mucha utilidad.

http://www.forosdelweb.com/f87/particionar-cadenas-dentro-del-stored-procedure-456770/

Si tienes dudas nos las comentas.

Saludos y suerte!
  #3 (permalink)  
Antiguo 30/01/2007, 16:11
Avatar de Pierre  
Fecha de Ingreso: diciembre-2006
Mensajes: 140
Antigüedad: 17 años, 4 meses
Puntos: 4
Re: Store Procedure.. para pensarlo

oie daniel00 muchas gracias por la aportacion.. ahora solo me falta hacerle el select para los detalles, pero no se si al hacer un select solo obtendre el ultimo, porq tengo que mostrar el detalle para todas las facturas q ingresen... no se si puedes ayudarme con eso.. desde ya muchas gracias
  #4 (permalink)  
Antiguo 30/01/2007, 16:22
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: Store Procedure.. para pensarlo

Que tal Pierre.

Puedes hacer una tabla temporal e ir dejando los resultados en cada ciclo:

Código:
....
CREATE Table #tmpDetalleFactura ( Campo1 TipoCampo, campo2 TipoCampo,..    ..CampoN TipoCampo)
....
WHILE  LEN(@lstCadena)> 0
BEGIN
...
...
            SET @lstDato  = ltrim(rtrim(@lstDato )) 
            INSERT INTO #tmpDetalleFactura( Campo1, Campo2, Campo3, .. .. CampoN
            SELECT Campo1, Campo2, Campo3, .. .. CampoN
            FROM TablaDetalleFactura
            WHERE IdFacura = @lstDato
END
-- Agregar Info.
--Al final sólo haces un select a tu tabla temporal:
  SELECT Campo1, Campo2, Campo3, .. .. CampoN
  FROM #tmpDetalleFactura

-- Y la eliminas para no dejar evidencia 
DROP TABLE #tmpDetalleFactura

Última edición por daniel00; 30/01/2007 a las 16:28 Razón: Agregar Info.
  #5 (permalink)  
Antiguo 30/01/2007, 16:39
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: Store Procedure.. para pensarlo

Oye Pierre.

Quizá una manera alterna de hacerlo, sea lo siguiente:

Le envías como parametro la siguiente cadena, tendrías que cambiar la manera de enviar el parametro):

Código:
exec sp_listaDet '''000001'',''000002'',''000003'''
Y dentro del SP, haces una consulta como la siguiente:

Código:
         DECLARE @strSQL varchar(255)

         SET @strSQL  = ' SELECT IdFactura, Campo2, Campo3, .. .. CampoN  '
         SET @strSQL  = @strSQL  + '  FROM TablaDetalleFactura '
         SET @strSQL  = @strSQL  + '  WHERE IdFacura in ( '  + @strListaDetalle + ')'
         -- strListaDetalle  es el parametro de entrada
         EXEC ( @strSQL  )
Saludos y suerte!

Última edición por daniel00; 30/01/2007 a las 16:46
  #6 (permalink)  
Antiguo 30/01/2007, 18:21
Avatar de Pierre  
Fecha de Ingreso: diciembre-2006
Mensajes: 140
Antigüedad: 17 años, 4 meses
Puntos: 4
Re: Store Procedure.. para pensarlo

Muchas gracias daniel00 t pasast.. me parece mas eficaz la segunda forma... pero igual usare la primera.. gracias d nuevo. Saludos. Muchas graciaaaaaaaaaaaasssssssssss!!!
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 18:30.