Bom dia....

    Se executar esses sql's verás a diferença....
    select '/tmp/list_atev001_call_123_20070202.txt'
    select '/tmp/list_atev001_call_123_' || to_date(current_date, 'YYYYMMDD') 
|| '.txt';
    select '/tmp/list_atev001_call_123_' || to_char(current_date, 'YYYYMMDD') 
|| '.txt';


    Esse que está em negrito, retorna uma string mais parecida com aquela que 
você colocou como a que funciona...


    Teste e veja, mas acho que você precisa usar to_char nesse caso.

    Um Abraço
    Sidnei
  ----- Original Message ----- 
  From: demetriusbizin 
  To: brasil-usuarios 
  Sent: Thursday, February 22, 2007 6:21 AM
  Subject: [PostgreSQL-Brasil] Duvidas sobre importação de arquivo.


  Senhores, bom dia.

  Gostaria de tirar umas duvidas sobre importação de arquivo no postgreSQL.

  Preciso concaternar o nome de um arquivo (TXT) com a uma data (variavel), 
pois a data não pode ser fixa, e não estou conseguindo.

  Segue abaixo a Function que eu estou criando, utilizando Variavel (em 
Negrito), e o erro que está dando :

  CREATE OR REPLACE FUNCTION import_list_tuvision_call()
   RETURNS boolean AS
  $BODY$

  declare
   spath varchar(255);

  begin
   spath := '/tmp/list_atev001_call_123' || to_date(current_date, 'yyyymmdd') 
|| '.txt';
   COPY list_tuvision_call FROM spath
   with DELIMITER AS '|' NULL AS '';
   RETURN 0;
  end;

  $BODY$

  LANGUAGE 'plpgsql' VOLATILE;

  Segue o Erro:

  ERROR:  syntax error at or near "$1" at character 31
  QUERY:  COPY list_tuvision_call FROM  $1  with DELIMITER AS '|' NULL AS ''
  CONTEXT:  SQL statement in PL/PgSQL function "import_list_tuvision_call" near 
line 8

  Segue abaixo a Function, utilizando PIPE ( || ), e o erro que está dando :

  CREATE OR REPLACE FUNCTION import_list_tuvision_call()
   RETURNS boolean AS
  $BODY$

  begin
   COPY list_tuvision_call FROM '/tmp/list_atev001_call_123' || 
to_date(current_date, 'yyyymmdd') || '.txt'
   with DELIMITER AS '|' NULL AS '';
   RETURN 0;
  end;

  $BODY$

  LANGUAGE 'plpgsql' VOLATILE;

  Segue o Erro : 

  ERROR:  syntax error at or near "||" at character 65
  QUERY:  COPY list_tuvision_call FROM '/tmp/list_atev001_call_123' || 
to_date(current_date, 'yyyymmdd') || '.txt'
  CONTEXT:  SQL statement in PL/PgSQL function "import_list_tuvision_call" near 
line 7

  Quando eu coloco o nome do arquivo sem PIPE (serve para Concatenar) ele cria 
e executa normalmente. Segue abaixo um exemplo :

  CREATE OR REPLACE FUNCTION import_list_tuvision_call()
      RETURNS boolean AS
  $BODY$

  begin
      COPY list_tuvision_call FROM '/tmp/list_atev001_call_123_20070202.txt'
      with DELIMITER AS '|' NULL AS '';
      RETURN 0;
  end;

  $BODY$
  LANGUAGE 'plpgsql' VOLATILE;


  Já tentei colocar to_char antes do to_date (to_char (to_date(current_date, 
'yyyymmdd'))) e tambem não deu certo.

  Procurei na internet e nada.

  Gostaria de saber como eu faço para arrumar esse problema ?

  Obrigado,
  Jimmy


------------------------------------------------------------------------------


  _______________________________________________
  Grupo de Usuários do PostgreSQL no Brasil
  Antes de perguntar consulte o manual
  http://pgdocptbr.sourceforge.net/

  Para editar suas opções ou sair da lista acesse a página da lista em:
  http://pgfoundry.org/mailman/listinfo/brasil-usuarios
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a