Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal criei uma funcao no postgres para fazer processamento de saldo bancario, mas eu preciso mandar como parametro o nome da tabela para poder fazer os calculos na tabela segue abaixo a funçao desenvolvida.CREATE OR REPLACE FUNCTION medsal(SaldoInicial FLOAT, varchar(45) ) returns varchar(35) AS 'DECLARE lancamento RECORD ; LSALDO_A FLOAT ; LSALDO_A1 FLOAT ; AuxSaldo FLOAT ; AuxSaldoB FLOAT ; NomeTabela text ;BEGIN NomeTabela := $2 ; LSALDO_A := SaldoInicial; LSALDO_A1 := SaldoInicial; FOR lancamento IN SELECT saldo_a AS saldo_a, pk AS pk, saldo AS saldo, valor AS valor, baixa AS baixa, dc AS dc FROM NomeTabela ORDER BY DATA loop if lancamento.dc = ''D'' THEN AuxSaldo := LSALDO_A - lancamento.valor ; elseif lancamento.dc = ''C'' THEN AuxSaldo := LSALDO_A + lancamento.valor ; END if ; if (lancamento.dc = ''D'') AND (lancamento.baixa = ''S'') THEN AuxSaldoB := LSALDO_A1 - lancamento.valor ; LSALDO_A1 := AuxSaldoB; elseif (lancamento.dc = ''C'') AND (lancamento.baixa = ''S'') THEN AuxSaldoB := LSALDO_A1 + lancamento.valor ; LSALDO_A1 := AuxSaldoB; ELSE AuxSaldoB := LSALDO_A1 ; END if ; UPDATE NomeTabela SET saldo = AuxSaldo, saldob = AuxSaldoB, saldo_a = LSALDO_A WHERE pk = lancamento.pk ; LSALDO_A := lancamento.saldo ; END loop ; return NomeTabela ; END 'LANGUAGE 'plpgsql'; Quando executo o sequinte comando select medsal(100.00, 'lan00023' ); Dá o seguinte erro :ERROR: syntax error at or near "$1" at character 102QUERY: SELECT saldo_a AS saldo_a, pk AS pk, saldo AS saldo, valor AS valor, baixa AS baixa, dc AS dc FROM $1 ORDER BY DATACONTEXT: PL/pgSQL function "medsal" line 12 at for over select rowsAlguem sabe como eu resolvo esse problema ?tentei usar os comando EXUCUTE e PERFORM e tambem não funcionou. Alguem tem alguma dica ????Desde já agradeço a atenção.Rafael Bizio AlvesCarregando comentários...