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

Responder a