Ver Mensaje Individual
  #4  
Antiguo 22-09-2008
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Reputación: 17
JosepGA Va por buen camino
Hola, este es el código SQL:

Código SQL [-]
CREATE PROCEDURE INC_CONTADOR ( AUXNUMAPLIC INTEGER, AUXNUMMAX INTEGER ) RETURNS (AUXCORRECTO VARCHAR(1)) AS
DECLARE VARIABLE AUXOPCION VARCHAR(1);
DECLARE VARIABLE AUXCONTADOR INTEGER;
BEGIN 
  SELECT OPCION FROM PU0000 WHERE ( APLICACION = :AUXNUMAPLIC ) AND ( OPCION = '0' ) INTO :AUXOPCION;

  if ( auxopcion IS NULL ) then
    INSERT INTO PU0000 ( APLICACION, OPCION, CONTADOR ) VALUES ( :AUXNUMAPLIC, '0', 0 );

  UPDATE PU0000 SET CONTADOR = CONTADOR + 1 WHERE ( APLICACION = :AUXNUMAPLIC ) AND ( OPCION = '0' );

  SELECT CONTADOR FROM PU0000 WHERE ( APLICACION = :AUXNUMAPLIC ) AND ( OPCION = '0' ) INTO :AUXCONTADOR;

  if ( AUXCONTADOR > AUXNUMMAX ) then
    BEGIN
      AUXCORRECTO = 'N';
      UPDATE PU0000 SET CONTADOR = CONTADOR - 1 WHERE (        APLICACION = :AUXNUMAPLIC ) AND ( OPCION = '0' );
    END
  ELSE
    BEGIN
      AUXCORRECTO = 'S';
    END
END

Y esta es la llamada desde Delphi:

Código Delphi [-]
  With tSQLIncrementarBase Do
    Try
      Params.ParamByName( 'AUXNUMAPLIC' ).AsInteger := 1;  
    Params.ParamByName( 'AUXNUMMAX' ).AsInteger := 100;

      ExecProc;

      Result := ( Params.ParamByName( 'AUXCORRECTO' ).AsString = 'S' );
    Except
      Result := FALSE;
    End;
Responder Con Cita