Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2004
Sudamericano Sudamericano is offline
Miembro
 
Registrado: feb 2004
Posts: 41
Poder: 0
Sudamericano Va por buen camino
Ayuda con Stored Procedure

Consulta:

Tengo la siguientes tablas

Tabla : producto

codigo_producto
nombre_producto
Stock_fisico

Tabla : Serie_productos ( )

Codigo_producto
codigo_serie

El stock_fisico(tabla producto) debe coincidir con el numero de series (tabla serie_productos)

ejemplo si tengo 5 monitores samgung debo tener 5 series

Tengo un procedimiento almacenado de esta manera


CREATE PROCEDURE STOCK_VS_SERIE
RETURNS (
CODiGO_ PRODUCTO VARCHAR(25) CHARACTER SET NONE,
NOMBRE_PRODUCTO VARCHAR(150) CHARACTER SET NONE,
STOCk_FISICO DOUBLE PRECISION,
NRO_SERIES INTEGER,
DIFERENCIA INTEGER)
AS
DECLARE VARIABLE CNT INTEGER;
DECLARE VARIABLE CODPROD VARCHAR(50);
BEGIN
FOR SELECT
CODIGO_PRODUCTO,
NOMBRE_PRODUCTO,
STOCK_FISICO,
FROM PRODUCTO
INTO :CODIGO_PRODUCTO,
:NOMBRE_PRODUCTO,
:STOCK_FISICO,
DO
BEGIN
/* Por cada registro yo verifico cuantas series existen, deberian ser iguales */
SELECT COUNT (*) FROM SERIE_PRODUCTOS
WHERE CODIGO_PRODUCTO = :CODPROD
INTO :CNT;
NRO_SERIES = :CNT;
DIFERENCIA = STOCK_FISICO - :CNT;
CODIGO_PRODUCTO = :CODPROD;
SUSPEND;
END
END


// Este SP me devuelve todos los productos con la cantidad de Nro_series

lo que deseo es que me devuelva solo los que la variable diferencia sea distinta de cero

haber si alguien me da una mano con esto es la primera vez que escribo asi que disculpen si estoy cometiendo alguna falta grave, desde ya gracias por la ayuda

Última edición por Sudamericano fecha: 05-06-2004 a las 00:01:44.
Responder Con Cita
  #2  
Antiguo 05-06-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Empezado por Sudamericano
// Este SP me devuelve todos los productos con la cantidad de Nro_series

lo que deseo es que me devuelva solo los que la variable diferencia sea distinta de cero
Código SQL [-]
select * 
  from STOCK_VS_SERIE 
  where DIFERENCIA > 0

Como parece que eres nuevo por estos foros, te aconsejo la lectura de la Guía de estilo

Además, si introduces código en tus mensajes, también te aconsejo la lectura de este hilo (http://www.clubdelphi.com/foros/showthread.php?t=9991) que trata sobre el uso de las etiquetas vB para el formateo de mensajes.

Saludos y bienvenido.
Responder Con Cita
  #3  
Antiguo 07-06-2004
Sudamericano Sudamericano is offline
Miembro
 
Registrado: feb 2004
Posts: 41
Poder: 0
Sudamericano Va por buen camino
Gracias kinobi por tu respuesta, pero la verdad es algo que yo ya habia intentado y obviamente funciona, pero muy lento por eso mi pregunta era como modificar el stored procedure original para obtener los diferentes de cero
Responder Con Cita
  #4  
Antiguo 07-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

¿ Ya has creado un índice para el campo CODIGO_PRODUCTO en la tabla SERIE_PRODUCTOS ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 07-06-2004
Sudamericano Sudamericano is offline
Miembro
 
Registrado: feb 2004
Posts: 41
Poder: 0
Sudamericano Va por buen camino
Gracias por tu respuesta tan rapida, pero si he creado el indice

creo que lo ideal es modificar ese sp, y en eso necesito la ayuda de ustedes

Última edición por Sudamericano fecha: 07-06-2004 a las 19:50:33.
Responder Con Cita
  #6  
Antiguo 08-06-2004
cahp cahp is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 90
Poder: 22
cahp Va por buen camino
para que te devuelva solo los que difieren las cantidades, pon el suspend dentro de un if:

Código SQL [-]
DIFERENCIA = STOCK_FISICO - :CNT;

IF (DIFERENCIA > 0) THEN
    SUSPEND;


Saludos.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 11:42:48.


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