Hola.
En firebird deberias crear un procedimiento almacenado, puesto que sólo puedes definir variables en un procedimiento o en un disparador.
Código SQL
[-]
SET TERM !! ;
CREATE OR ALTER PROCEDURE PR_prueba (
PARCCLIE INTEGER,
PARSTATUS CHAR(1),
PARTIPOMOV INTEGER,
PARAMETRONF ,
PARNUM_REG,
PARCCLIE,
PARSTATUS,
PARTIPO_MOV,
PARNO_FACTURA,
PARDOCTO,
PARREFER,
PARIMPORTE,
PARFECHA_APLI,
PARFECHA_VENC,
PARCOB,
PARAFEC_COI,
PAROBS_CXCCXP,
PARBANK_COM,
PARSTRCVEVEND,
PARNUM_MONED,
PARTCAMBIO,
PARIMPMON_EXT,
PARCCONREFER,
PARFECHAELAB,
PARUSUARIO,
PARCTLPOL)
AS
DECLARE VARIABLE num_regs int;
BEGIN
select num_regs from CU0N01 INTO :num_regs;
num_regs = num_regs +1;
insert into cuen01 (NUM_REG, CCLIE, STATUS, TIPO_MOV, NO_FACTURA, DOCTO, REFER, IMPORTE, FECHA_APLI, FECHA_VENC, COB, AFEC_COI,
OBS _CXCCXP, BANK_COM, STRCVEVEND, NUM_MONED, TCAMBIO, IMPMON_EXT, CCONREFER, FECHAELAB, USUARIO, CTLPOL)
Values(:num_regs, :PARCCLIE, :PARSTATUS, :PARTIPOMOV,:PARAMETRONF,
:PARNUM_REG, :PARCCLIE, :PARSTATUS, :PARTIPO_MOV, :PARNO_FACTURA, :PARDOCTO, :PARREFER, :PARIMPORTE,
:PARFECHA_APLI, :PARFECHA_VENC, :PARCOB, :PARAFEC_COI, :PAROBS_CXCCXP,
:PARBANK_COM, :PARSTRCVEVEND, :PARNUM_MONED, :PARTCAMBIO, :PARIMPMON_EXT,
:PARCCONREFER, :PARFECHAELAB, :PARUSUARIO, :PARCTLPOL);
update CU0N01
set num_regs = :num_regs;
END