Lo tengo puesto así, con el RETURNS.
Código SQL
[-]Query->SQL->Text = "CREATE PROCEDURE Insert_Ficha";
Query->SQL->Add("RETURNS (cTitulo VARCHAR(60), nRegistro INTEGER, cGenero VARCHAR(25), cProductor VARCHAR(50), cUbica VARCHAR(13), cInterpretes VARCHAR(50))");
Query->SQL->Add("AS");
Query->SQL->Add("DECLARE VARIABLE cSql VARCHAR(100);");
Query->SQL->Add("BEGIN");
Query->SQL->Add(" cSql = 'SELECT Album, Registro, Genero, Discografica, Situacion, Interprete FROM Discos';");
Query->SQL->Add(" FOR EXECUTE STATEMENT cSql");
Query->SQL->Add(" ON EXTERNAL 'C:\Ocio_ant\Tablas\Ocio.gdb'");
Query->SQL->Add(" AS USER 'SYSDBA' PASSWORD 'masterkey'");
Query->SQL->Add(" INTO :cTitulo, :nRegistro, :cGenero, :cProductor, :cUbica, :cInterpretes");
Query->SQL->Add(" DO");
Query->SQL->Add(" BEGIN");
Query->SQL->Add(" SUSPEND;");
Query->SQL->Add(" END");
Query->SQL->Add("END;");
Query->ExecSQL();
Query->Transaction->Commit();
No obstante lo que me llama la atención es que usando el mismo código con SQL Manager si funciona y desde el programa no.