Bom dia !!! Pessoal, tenho uma função onde é executado um copy tabela from 'arquivo'.
O problema é que o comando não roda porque é necessário ser executado por um super-user. Tentei até criar a função como SECURITY DEFINER, mas mesmo assim não funcionou. O banco é o 9.2.1, instalado em Freebsd. Tem como contornar isso sem precisar executar a função por um super-user ??? Segue a função abaixo !!! Att, André -- Function: doador.copynotebook(character varying, character varying) -- DROP FUNCTION doador.copynotebook(character varying, character varying); CREATE OR REPLACE FUNCTION doador.copynotebook(character varying, character varying) RETURNS character varying AS $BODY$ DECLARE arquivo ALIAS FOR $1; arquivo1 ALIAS FOR $2; cmd character varying(2000); BEGIN -- carregar notebook 1 SET datestyle = "ISO, DMY"; cmd:=' copy doador.notebook (Doador,Iniciais,Nome,Dt_Nascimento,Sexo,Raca,Estado_Civil,Pai,Mae,Tipo_Documento,No_Documento,Endereco_Residencia,Bairro_Residencia, '|| ' Cidade_Residencia,Cep_Residencia,Fone_Residencia,Local_Residencia,Cidade_Trabalho,Cep_Trabalho,Fone_Trabalho,Ramal_Trabalho,'|| ' Ocupacao,Apelido,Procedencia_Remota,Nacionalidade,Naturalidade,Grupo_Doador,Dt_Doacao,Tipo_Doacao,Procedimento_Especial,Equipe,Ano,Dia,'|| ' Digito,Nome_Paciente,Procedencia,Dsc_Cidade_Res,UF_Cidade_Res,DDD_Cidade_Res,Dsc_Cidade_Trb,UF_Cidade_Trb,DDD_Cidade_Trb,ORGAO_Note,EMAIL_Note,'|| ' Peso_Note,Altura_Note,PAMAX_Note,PAMIN_Note,Pulso,Temperatura,Mucosa,Hematocrito_Note,Hemoglobina,Doacao_Anterior,Numero_Doacao,Tabagismo,'|| ' Faixa_Salarial,Condicao_Doador,Conduta_Doacao,resp_tri,Total_GE,Total_TR,Total_TT,obs_note,notebook,Lido)'|| ' from ''/home/Coleta/'||arquivo||''' with delimiter ''|'' null '''';'; execute cmd; cmd:='copy doador.notebook1 (Equipe,Ano,Dia,Digito,Cod_Anamnese) '|| ' from ''/home/Coleta/'||arquivo1||''' with delimiter ''|'';'; execute cmd; return '0'; END; $BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER COST 100; ALTER FUNCTION doador.copynotebook(character varying, character varying) OWNER TO postgres; GRANT EXECUTE ON FUNCTION doador.copynotebook(character varying, character varying) TO postgres; GRANT EXECUTE ON FUNCTION doador.copynotebook(character varying, character varying) TO grp_doad_usuario; COMMENT ON FUNCTION doador.copynotebook(character varying, character varying) IS 'procedure executada no pgm doad555 (traz o notebook pra maquina do jboss e envia pra maquina do BD para dar a carga no banco - volta da coleta) - utiliza variavel tab_var.IP_BANCO';
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
