Esque la variable :codpresup siempre tiene valor NULL cuando haces el primer "select", debido a que no le estas pasando ningun valor, para mi que estas un poco "confundida" por el parecido del nombre de la variable :codpresup con el parametro de entrada :cod_presup, por lo que la cosa en teoria debería quedar de la siguiente manera:
Código SQL
[-]
CREATE PROCEDURE AGREGAR_PENDIENTE (
COD_PRESUP INTEGER)
AS
DECLARE VARIABLE CODCLIENTE INTEGER;
DECLARE VARIABLE FECHA DATE;
DECLARE VARIABLE CLIENTE VARCHAR(150);
DECLARE VARIABLE CODPRESUP INTEGER;
DECLARE VARIABLE CANTIDAD INTEGER;
begin
select count(pendientes.cod_presup) from pendientes where pendientes.cod_presup=:COD_PRESUP into :cantidad;
if (:cantidad=0) then
begin
for
select presupuestos.cod_presup, presupuestos.cod_cliente,clientes.nombre||' '||clientes.apellido AS CLIENTE,fecha
from presupuestos, CLIENTES
where presupuestos.cod_presup=:cod_presup AND PRESUPUESTOS.cod_cliente=CLIENTES.cod_cliente into :CODpresup, :codcliente, :cliente,:fecha
do
begin
insert into pendientes(cod_cliente,FECHA_AT,cliente,cod_presup) values(:codcliente,:fecha, :cliente,:codpresup);
end
end
end