Olá Pessoal, 
 
	Esse é meu primeiro post.
 
	Não tenho muito experiencia com PostgreSQL.
 
	Estou fazendo a seguinte consulta para em seguida fazer alguns DELETES, porem esta dando erro.
 
DO $$DECLARE reserva_veiculo INTEGER[]; movimento_veiculo INTEGER[]; i INTEGER;
BEGIN
	  i:=0;
      reserva_veiculo :=  ARRAY (select r.id_reserva_veiculo
            from transporte.movimento_veiculo m 
            inner join transporte.reserva_veiculo r on (r.id_movimento_veiculo = m.id_movimento_veiculo)
            left  join requisicoes.requisicao_reserva_veiculo req on (req.id_reserva_veiculo = r.id_reserva_veiculo)
            inner join transporte.veiculo v on (v.id_veiculo = r.id_veiculo)
            where 
            --req.numero=21937
            v.placa = 'JKO-4601')::integer[];
      movimento_veiculo :=  ARRAY (select m.id_movimento_veiculo
            from transporte.movimento_veiculo m 
            inner join transporte.reserva_veiculo r on (r.id_movimento_veiculo = m.id_movimento_veiculo)
            left  join requisicoes.requisicao_reserva_veiculo req on (req.id_reserva_veiculo = r.id_reserva_veiculo)
            inner join transporte.veiculo v on (v.id_veiculo = r.id_veiculo)
            where 
            --req.numero=21937
            v.placa = 'JKO-4601')::integer[];
	FOR i in 1..array_length(reserva_veiculo,1) loop   		
        raise notice 'reserva_veiculo: %', reserva_veiculo[i];
		        
             delete from transporte.motorista_reserva  where motorista_reserva.id_reserva_veiculo= reserva_veiculo[i];
             delete from requisicoes.requisicao_reserva_veiculo r where r.id_reserva_veiculo= reserva_veiculo[i];
             delete from transporte.reserva_veiculo rv where rv.id_reserva_veiculo= reserva_veiculo[i];        
	end loop;
    
    i :=0;
    
    FOR i in 1..array_length(movimento_veiculo,1) loop
   		raise notice 'movimento_veiculo: %', movimento_veiculo[i];
              	 
             delete from transporte.movimento_veiculo_passageiro mv where mv.id_movimento_veiculo= movimento_veiculo[i];
             delete from transporte.trecho_percorrido mv1 where mv1.id_movimento_veiculo= movimento_veiculo[i];
             delete from transporte.movimento_veiculo mv2 where mv2.id_movimento_veiculo= movimento_veiculo[i];	    	 
	end loop;
END$$;
	Porem está dando o seguinte erro:
 
ERROR:  permission denied for schema transporte
LINE 1: SELECT 1 FROM ONLY "transporte"."anexo_movimento_veiculo" x ...
                           ^
QUERY:  SELECT 1 FROM ONLY "transporte"."anexo_movimento_veiculo" x WHERE $1 OPERATOR(pg_catalog.=) "id_movimento_veiculo" FOR KEY SHARE OF x
CONTEXT:  SQL statement "delete from transporte.movimento_veiculo mv2 where mv2.id_movimento_veiculo= movimento_veiculo[i]"
PL/pgSQL function inline_code_block line 38 at SQL statement
	Sim, tenho permissão para excluir. 
 
	Se eu rodar somente as linhas dos deletes, substituindo as variáveis. A exclusão acontece sem erros.
 
	 
 
	Obrigado pela atenção