Ir para conteúdo
Fórum Script Brasil
  • 0

function trigger


robinhocne

Pergunta

Pessoal, estou criando uma function trigger e só estou com um probleminha que não consigo resolver....

o trigger funcionara quando dar um insert na tabela de pagamentos...

dentro da função, tenho insert e update com um loop para gerar parcelas....e etc....

tem uma etapa dela que preciso retorna uma consulta de um select com vários campos que são para calcular os juros de parcelas, vencimentos, tipos de bandeiras e etc...

então eu não consigo fazer um select e colocando para cada coluna um into variavel, já tentei criar uma function records mas não deu para minha ideia....

tenho o seguinte select

SELECT ds_rede,tp_cartao, ds_emissor,ds_bandeira,tp_formula from tbl_adm_redescartao where ds_emissor = NEW.ds_emissor

quero armazenar em variavel as colunas do select porque vou usar posteriormente nos calculos.

Como posso ?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Ola Amigo...

eu tb to começando no postgre... eu tive essa dificuldade em criar uma trigger para gerar um sequencial em caracter de uma primary key...

-mas vai o a minha trigger...tem 2 trigger em q eu posso gerar/alterar o meu serial que tenho no minha table de controle(ctl) 

espero ter ajudado... eu vou criar um tópico de uma dificuldade que eu tenho espero q você me de tb uma dica...

--- primeira trigger

CREATE OR REPLACE FUNCTION cli_seq() RETURNS trigger AS $cli_seq$
  DECLARE
    c  ctl%ROWTYPE; -- aqui eu crio a variavel local que vai armazenar o registro todo da table ctl
  BEGIN
    IF (TG_OP = 'INSERT') THEN
      update ctl SET cl01 = geraseq(cl01);
      SELECT *  INTO c FROM ctl;
      NEW.cl01 := c.cl01;
    END IF;
    RETURN NEW;
  END;
$cli_seq$ LANGUAGE plpgsql;

--segunda trigger
CREATE OR REPLACE FUNCTION cli_seq() RETURNS trigger AS $cli_seq$
  DECLARE
--    c  ctl%ROWTYPE;
    ccl01 char(10); -- aqui eu crio uma  var local
  BEGIN
    IF (TG_OP = 'INSERT') THEN
      update ctl SET cl01 = geraseq(cl01);
      SELECT cl01  INTO ccl01 FROM ctl; -- aqui eu passo o conteudo do registro/coluna ctl.cl01 para a variavel local "ccl01"
      NEW.cl01 := ccl01; 
    END IF;
    RETURN NEW;
  END;
$cli_seq$ LANGUAGE plpgsql;

CREATE  TRIGGER cli_seq BEFORE INSERT ON cli  FOR EACH ROW  EXECUTE PROCEDURE cli_seq();

Editado por jc101b
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...