id não está definido na função.

--- Roberto Castro <[EMAIL PROTECTED]>
escreveu:

> 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
> [EMAIL PROTECTED]
> 
>               
> ---------------------------------
>  Abra sua conta no Yahoo! Mail - 1GB de espaço,
> alertas de e-mail no celular e anti-spam realmente
> eficaz. >
_______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br



                
_______________________________________________________ 
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. 
Registre seu aparelho agora! 
http://br.mobile.yahoo.com/mailalertas/ 
 

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br

Responder a