Skip site navigation (1) Skip section navigation (2)

syntax error

From: Roberto Castro <robertoc35br(at)yahoo(dot)com(dot)br>
To: pgsql-bugs(at)postgresql(dot)org
Subject: syntax error
Date: 2006-04-17 19:01:21
Message-ID: 20060417190121.14682.qmail@web32905.mail.mud.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-bugs
 
  
Boa Tarde !!
 
Numa aplicação, de acordo com o btnbotton clicado, a variável ‘opçao’ receberá um valor. No decorrer do processo, de acordo com a ‘opcao’ deverá executar um comando da function onde os valores a serem adicionados (input) serão supridos na aplicação.
Só que dá o seguinte erro:
ERROR:  syntax error at or near "$1" at character 36
QUERY:  insert into tb_conta_corrente (id, $1 , $2 , $3 , $4 , $5 , $6 , $7 , $8 , $9 , $10 , $11 , $12 , $13 , $14 , $15 , $16 , $17 , $18 , $19 , $20 , $21 ) values ( $22 , $23 , $24 , $25 , $26 , $27 , $28 , $29 , $30 , $31 , $32 , $33 , $34 , $35 , $36 , $37 , $38 , $39 , $40 , $41 , $42 )
CONTEXT:  SQL statement in PL/PgSQL function "iud_tb_conta_corrente" near line 27
 
=== xxx === 
Syntax:
 
CREATE OR REPLACE FUNCTION iud_tb_conta_corrente(
    codemp integer,
    titulo integer,
    tipolanc char,
    placa varchar,
    referencia varchar,
    codgene varchar,
    bordero integer,
    codfor integer,
    chave varchar,
    dt_leilao date,
    dt_cadastro date,
    dt_pgto date,
    dt_baixa date,
    dt_envio date,
    dt_recbto date,
    tipomov char(1),
    valor numeric(18,2),
    tipo char,
    observacao varchar,
    usuario varchar,
    data_hora timestamp,
   opcao char) RETURNS varchar
AS $$
DECLARE
   vcodemp ALIAS FOR $1;
    vtitulo ALIAS FOR $2;
    vtipolanc ALIAS FOR $3;
    vplaca ALIAS FOR $4;
    vreferencia ALIAS FOR $5;
    vcodgene ALIAS FOR $6;
    vbordero ALIAS FOR $7;
    vcodfor ALIAS FOR $8;
    vchave ALIAS FOR $9;
    vdt_leilao ALIAS FOR $10;
    vdt_cadastro ALIAS FOR $11;
    vdt_pgto ALIAS FOR $12;
    vdt_baixa ALIAS FOR $13;
    vdt_envio ALIAS FOR $14;
    vdt_recbto ALIAS FOR $15;
    vtipomov ALIAS FOR $16;
    vvalor ALIAS FOR $17;
    vtipo ALIAS FOR $18;
    vobservacao ALIAS FOR $19;
    vusuario ALIAS FOR $20;
    vdata_hora ALIAS FOR $21;
    vopcao ALIAS FOR $22;
begin  
if vopcao = 'I' then begin
     insert into tb_conta_corrente (id,codemp,titulo,tipolanc,placa,referencia,codgene,bordero,codfor,chave,dt_leilao,dt_cadastro,dt_pgto,dt_baixa,dt_envio,dt_recbto,tipomov,valor,tipo,observacao,usuario,data_hora)
     values (vcodemp,vtitulo,vtipolanc,vplaca,vreferencia,vcodgene,vbordero,vcodfor,vchave,vdt_leilao,vdt_cadastro,vdt_pgto,vdt_baixa,vdt_envio,vdt_recbto,vtipomov,vvalor,vtipo,vobservacao,vusuario,vdata_hora);
     RETURN 1;
  end if;
  if (opcao = 'U') then begin
     update tb_conta_corrente set codemp      = vcodemp,
                                  titulo      = vtitulo,
                                  tipolanc    = vtipolanc,
                                  placa       = vplaca,
                                  referencia  = vreferencia,
                                  codgene     = vcodgene,
                                  bordero     = vbordero,
                                  codfor      = vcodfor,
                                  chave       = vchave,
                                  dt_leilao   = vdt_leilao,
                                  dt_pgto     = vdt_pgto,
                                  dt_baixa    = vdt_baixa,
                                  dt_envio    = vdt_envio,
                                  dt_recbto   = vdt_recbto,
                                  tipomov     = vtipomov,
                                  valor       = vvalor,
                                  tipo        = vtipo,
                                  observacao  = vobservacao,
                                  usuario     = vusuario,
                                  data_hora   = vdata_hora
     where ( id = id and codemp       = vcodemp
                     and placa        = vplaca
                     and referencia   = vreferencia
                     and codgene      = vcodgene);
     RETURN 2;
  end if;
  if (opcao = 'A') then begin
     update tb_conta_corrente set codemp      = vcodemp,
                                  placa       = vplaca,
                                  referencia  = vreferencia,
                                  codgene     = vcodgene,
                                  bordero     = vbordero,
                                  codfor      = vcodfor,
                                  chave       = vchave,
                                  dt_pgto     = vdt_pgto,
                                  dt_baixa    = vdt_baixa,
                                  usuario     = vusuario,
                                  data_hora   = vdata_hora
     where ( id =id and codemp       = codemp
                     and placa       = placa
                     and referencia  = referencia
                     and codgene     = codgene
                     and dt_baixa is null);
     RETURN 3;
  end if;
  if (opcao = 'D') then begin
     delete from tb_conta_corrente
     where ( id = id and codemp        = codemp
                      and placa        = placa
                      and tipolanc     = tipolanc
                      and referencia   = referencia
                      and codgene      = codgene);
  RETURN 0;
  end if;
END $$
LANGUAGE 'plpgsql' VOLATILE ;
 
Se tiver uma idéia melhor... acatarei a sugestão..Uso Delphi 7. Estou migrando do Firebird p/ PostgreSql...... Apanhando muito !!!
 Posso add vc no meu msn??
Grato
 
Roberto Castro
Robertoc35br(at)yahoo(dot)com(dot)br
 
 


		
---------------------------------
 Abra sua conta no Yahoo! Mail - 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz. 

Responses

pgsql-bugs by date

Next:From: AlvaroDate: 2006-04-17 20:58:29
Subject: BUG #2399: Postgis DLL corrupted
Previous:From: LuckysDate: 2006-04-17 04:58:02
Subject: Re: connection problem in postgresql

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group