Ver Mensaje Individual
  #5  
Antiguo 18-11-2008
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Reputación: 20
Luis M. Va por buen camino
Hola Al.
Tienes razón en lo que comentas.
Pero curiosamente a mi me pasaba lo siguiente:
Declaro este SP:
Código Delphi [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE ULTIMO_RECIBO (
    anyo varchar(2))
returns (
    ultimo varchar(10))
as
begin
  /* Procedure Text */
  EXECUTE STATEMENT 'SELECT max(NUMERO) FROM RECIBOS where ANYO = '||:anyo
  INTO :ultimo;
  suspend;
end^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE ULTIMO_RECIBO TO SYSDBA;

Desde Delphi lo llamo así:
Código Delphi [-]
//--- Introduce último recibo ---
  SP.StoredProcName := 'ULTIMO_RECIBO';
  SP.Prepare;
  try
    SP.Params.ParamValues['ANYO'] := QuotedStr(RecibosANYO.AsString);
    SP.ExecProc;
    cText := IntToStr(SP.ParamByName('ULTIMO').AsInteger + 1);
    RecibosNUMERO.AsString := Copy('00000', 1, 5 - Length(cText)) + cText;
  finally
    SP.UnPrepare;
  end;
RecibosANYO es VarChar(2).
Al ejecutarlo me da el error que describes.
Si cambio en el SP
Código Delphi [-]
CREATE OR ALTER PROCEDURE ULTIMO_RECIBO (
    anyo varchar(2))
por:
Código Delphi [-]
CREATE OR ALTER PROCEDURE ULTIMO_RECIBO (
    anyo varchar(10))
Funciona bien.
A eso me refería.
Un saludo y encantado de leerte.
Responder Con Cita