execute block returns (CRRESULT VARCHAR(32000)) as declare variable v_id int; declare variable v_id_bill int; declare variable v_fid int; declare variable v_id_table int; declare variable v_prior int; declare variable v_id_emp int; declare variable v_id_ds int; declare variable v_dt_open timestamp; declare variable v_dt_close timestamp; begin crresult = ''; v_fid = 2; for select fc.id, fc.id_table, fc.dt_open, fc.dt_close, fc.prior, fc.id_emp from food_checks fc into :v_id, :v_id_table, :v_dt_open, :v_dt_close, :v_prior, :v_id_emp do begin select first 1 ds.id from desk_shift ds join desks d on d.id = ds.id_desk where d.types = 5 order by ds.dt_close desc into :v_id_ds; insert into bills (fid, dt_pay, dt_close, id_emp, id_ds, fid_ds, id_table, prior) values (:v_fid, :v_dt_open, :v_dt_close, :v_id_emp, :v_id_ds, :v_fid, :v_id_table, :v_prior) returning id into :v_id_bill; update food_check_dish cd set cd.id_check = null, cd.id_bill = :v_id_bill, cd.fid_bill = :v_fid where cd.id_check = :v_id; delete from food_checks fc where fc.id = :v_id; end end