Saludos Juan, no se si sea yo el indicado para decirlo pero Bienvenido al Club, respecto a tu ejemplo creo que seria mejor que en lugar de asignar cero a la clave, asignes el valor del SP, o mejor aun crea un trigger BeforeInsert y ahi dale directamente el valor del Generador algo asi:
Código SQL
[-]
SET SQL DIALECT 3;
SET NAMES NONE;
SET TERM ^ ;
CREATE OR ALTER TRIGGER X_INS FOR X
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CLAVE = GEN_ID(GEN_CVE,1);
END
^
SET TERM ; ^
con eso te ahorras el uso del componente SP y el problema que trae el asignar cero al principio, la otra forma es que asignes el valor del SP en lugar del cero, recomendado (personalmente) solo si quieres saber el valor del Generador de lo contrario te recomiendo el trigger.
Espero esto te sea de ayuda, estamos para ayudarte y nuevamente bienvenido.