Hola.
El código de error
SQLCODE -104, puede ser provocado por varios motivos:
SQLCODE and GDSCODE Error Codes and Descriptions.
Revisa cuál de las descripciones de los códigos
GDSCODE se aproxima mas al error que pueda estar generando tu código SQL; mas no te puedo decir sin haberlo visto.
Sin embargo, hice dos procedimientos muy elementales para poder probar la modificación del procedimiento cuando existe la declaración
EXECUTE PROCEDURE y desde
Delphi se modifica sin generar errores:
Código Delphi
[-]
...
begin
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE OR ALTER PROCEDURE FOO_MAIN( CANT INTEGER )');
IBSQL1.SQL.Add('RETURNS( RESULT INTEGER )');
IBSQL1.SQL.Add('AS');
IBSQL1.SQL.Add('BEGIN');
IBSQL1.SQL.Add(' WHILE ( CANT > 0 ) DO');
IBSQL1.SQL.Add(' BEGIN');
IBSQL1.SQL.Add(' RESULT = CANT;');
IBSQL1.SQL.Add(' CANT = CANT - 1;'); IBSQL1.SQL.Add(' EXECUTE PROCEDURE FOO( CANT );');
IBSQL1.SQL.Add(' SUSPEND;');
IBSQL1.SQL.Add(' END');
IBSQL1.SQL.Add('END');
IBSQL1.ExecQuery;
end;
Si tuviera que aventurar un motivo, revisaría el código en busca de alguna dependencia que lo pudiera provocar.
Saludos