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
