Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2010
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Recorrer una tabla dentro de un Procedure en MSSQL

Hola a todos.

Sabria alguno como se puede hacer un WHILE de una tabla dentro de un procedure MSSQL.

saludos y gracias.
Responder Con Cita
  #2  
Antiguo 02-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Estaría bien que explicaras qué quieres hacer dentro de ese recorrido.

Por ejempo, este recorre la tabla y "pinta" el código (si lo lanzas desde el Query Analizer)
Código SQL [-]
CREATE PROCEDURE [sp_recorrido] AS

DECLARE    @Codigo INT

-- Recorrido y visualización del código
SET @Codigo=0
DECLARE ElCursor CURSOR STATIC LOCAL FORWARD_ONLY FOR
                    SELECT CodTabla                    
                    FROM MiTabla

OPEN ElCursor FETCH NEXT FROM ElCursor INTO @Codigo
        WHILE (@@FETCH_STATUS = 0) BEGIN
                
            print @Codigo
            FETCH NEXT FROM ElCursor INTO @Condigo
        END
CLOSE ElCursor
DEALLOCATE ElCursor
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 02-06-2010
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Gracias Neftali

Tienes razón debería haber indicado lo que quería hacer, pues es recorrer una tabla de libros que hay en una lista para buscar si hay existencias en otra tabla.

Algo parecido a esto, ya se que no esta bien a pesar de haber aplicado lo que me digiste en tu respuesta pero es que en TRANSACT-SQL estoy muy verde.

Por cierto sabes de algun libro o tutorial sobre TRANSACT-SQL.

Código SQL [-]
ALTER PROCEDURE dbo.PROC_BUSCAR_HOJILLAS
@CENTRO int, 
@PEDIDO int, 
@TOTAL int OUT
AS
DECLARE @PRETOTAL INT, @ISBN varchar(20)
SET @PRETOTAL=0
SET @ISBN='' 

DECLARE ElCursor CURSOR STATIC LOCAL FORWARD_ONLY FOR
  SELECT PEDUSMD_ISBN FROM dbo.PEDIDOS_USMARCD 
  WHERE CENTRO_CODIGO=@CENTRO AND PEDUSMD_CODIGO=@PEDIDO

OPEN ElCursor FETCH NEXT FROM ElCursor INTO @ISBN
  WHILE (@@FETCH_STATUS = 0) 
    BEGIN
    SELECT
    SUM(ARTICULOS_EXIS_INI_FIRME) AS EXIS_INI_FIRME,
    SUM(ARTICULOS_EXIS_INI_DEPOSITO) AS EXIS_INI_DEPOSITO,
    SUM(ARTICULOS_EXIS_ACT_FIRME) AS EXIS_ACT_FIRME,
    SUM(ARTICULOS_EXIS_ACT_DEPOSITO) AS EXIS_ACT_DEPOSITO,
    SUM(ARTICULOS_UNIDAD_PEND_RECIBIR) AS UNIDAD_PEND_RECIBIR,
    SUM(ARTICULOS_UNIDAD_PEND_SERVIR) AS UNIDAD_PEND_SERVIR,
    SUM(ARTICULOS_UNIDAD_EXAMEN) AS UNIDAD_EXAMEN
    FROM dbo.ALMACEN_STOCK
    WHERE ARTICULOS_CODIGO IN (SELECT ARTICULOS_CODIGO FROM dbo.ARTICULOS WHERE ARTICULOS_REFERENCIA_PROVEEDOR=@ISBN                
    IF ((EXIS_ACT_FIRME + EXIS_ACT_DEPOSITO)- UNIDAD_EXAMEN - EXIS_INI_DEPOSITO) > 0 THEN
      BEGIN
      @PRETOTAL = @PRETOTAL+1
      END      
    FETCH NEXT FROM ElCursor INTO @ISBN
    END
CLOSE ElCursor
DEALLOCATE ElCursor

@TOTAL = @PRETOTAL
GO

Saludos y muchas gracias por tu respuesta.
Responder Con Cita
  #4  
Antiguo 02-06-2010
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Ya lo tengo solucionado.

Código SQL [-]
CREATE PROCEDURE dbo.PROC_BUSCAR_HOJILLAS
@CENTRO int, 
@PEDIDO int, 
@TOTAL int OUT
AS
DECLARE @PRETOTAL INT, @ISBN varchar(20),
@EXIS_INI_DEPOSITO INT, @EXIS_ACT_FIRME INT, @EXIS_ACT_DEPOSITO INT, @UNIDAD_EXAMEN INT
SET @PRETOTAL=0
SET @ISBN='' 

DECLARE ElCursor CURSOR STATIC LOCAL FORWARD_ONLY FOR
  SELECT PEDUSMD_ISBN FROM dbo.PEDIDOS_USMARCD 
  WHERE CENTRO_CODIGO=@CENTRO AND PEDUSMD_CODIGO=@PEDIDO

OPEN ElCursor FETCH NEXT FROM ElCursor INTO @ISBN
  WHILE (@@FETCH_STATUS = 0) 
    BEGIN
    SELECT
    @EXIS_INI_DEPOSITO=SUM(ARTICULOS_EXIS_INI_DEPOSITO),
    @EXIS_ACT_FIRME=SUM(ARTICULOS_EXIS_ACT_FIRME),
    @EXIS_ACT_DEPOSITO=SUM(ARTICULOS_EXIS_ACT_DEPOSITO),
    @UNIDAD_EXAMEN=SUM(ARTICULOS_UNIDAD_EXAMEN)
    FROM dbo.ALMACEN_STOCK
    WHERE ARTICULOS_CODIGO IN (SELECT ARTICULOS_CODIGO FROM dbo.ARTICULOS WHERE ARTICULOS_REFERENCIA_PROVEEDOR=@ISBN)
                    
    IF ((@EXIS_ACT_FIRME + @EXIS_ACT_DEPOSITO)- @UNIDAD_EXAMEN - @EXIS_INI_DEPOSITO) > 0
      BEGIN
      SET @PRETOTAL = @PRETOTAL+1
      END      
    FETCH NEXT FROM ElCursor INTO @ISBN
    END
CLOSE ElCursor
DEALLOCATE ElCursor

SET @TOTAL = @PRETOTAL
GO


Saludos y gracias.
Responder Con Cita
  #5  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Gracias por colocar la solución final.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 21-07-2010
galess galess is offline
Registrado
 
Registrado: jul 2010
Posts: 1
Poder: 0
galess Va por buen camino
Pregunta sobre servicio

hola SOFTWEB, como manipulste la forma con el servicio ?, saludos y grcias !!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
If dentro de un store procedure con DB2 María Belén DB2 1 26-05-2010 15:24:36
Recorrer Tabla, contar registro repetidos y escribir totales en otra Tabla Lucas_diaz1810 Conexión con bases de datos 1 25-12-2006 14:04:34
For dentro de un Stored Procedure en IB alapaco Firebird e Interbase 2 24-07-2006 19:10:19
commit dentro de un procedure de firebird cahosoft Firebird e Interbase 2 10-09-2005 05:02:03
asignacion dentro de un stored procedure febito Oracle 1 10-06-2004 16:33:55


La franja horaria es GMT +2. Ahora son las 00:21:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi