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 statementSim, 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 
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a