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
[-] 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.