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

gerar tabela com chave composta


Adalberto Moraes

Pergunta

olá ,

Sou novato aqui precisando urtentissimo de uma ajuda,

Tenho que gerar uma tabela de apontamentos partindo de uma tabela de lancamentos da folha ( eventos ) onde

cada funcionario devera aparecer apenas uma vez, para isso tenho como chave o códiog da empresa, funcionario e competencia, mas ao executar não grava nada e nem da alguma mensagem.

alguém poderia me ajudar ? não sei onde estou errando .

Segue o código:

--================================================================

-- DELETANDO DELETANDO A TABELA--================================================================

DROP TABLE APONTAMENTOSFOLHA;

-----------------------------------------------------------------

--CRIANDO TABELA COM A CHAVE

--================================================================

CREATE TABLE apontamentosfolha (

ID_FUNC Serial NOT NULL,

EMPRESA varchar(06),

FUNCIONARIO varchar(06),

COMPETENCIA varchar(06),

COMISSOES INTEGER,

HORASEXTRAS INTEGER,

FALTASEMHORAS INTEGER,

FALTASEMDIAS INTEGER,

ADICIONALNOTURNO INTEGER,

AVISOPREVIO INTEGER,

CONTRASSISTENCIAL INTEGER,

CONTRCONFEDERATIVA INTEGER,

IRFERIASIMPOSTORETIDO INTEGER,

IRFERIASINSS INTEGER);

ALTER TABLE apontamentosfolha ADD CONSTRAINT pk_func PRIMARY KEY (EMPRESA,FUNCIONARIO,COMPETENCIA);

CREATE UNIQUE INDEX uniq_func ON apontamentosfolha USING btree (EMPRESA,FUNCIONARIO,COMPETENCIA);

--===============================================================================

-- Incluir na tabela apontamentosfolha que foi criada, as informações da tabela

-- lancamentosfolha apenas com os campos empresa, competencia, e funcionarios sem

-- repetição e as demais informações devem estar zeradas.

--===============================================================================

CREATE OR REPLACE FUNCTION set_apontamentosfolha( _empresa VARCHAR, _funcionario VARCHAR, _competencia VARCHAR )

RETURNS INTEGER AS

$$

DECLARE iId_func INTEGER;

BEGIN

BEGIN

INSERT INTO APONTAMENTOSFOLHA

(EMPRESA, FUNCIONARIO, COMPETENCIA, COMISSOES, HORASEXTRAS, FALTASEMHORAS, FALTASEMDIAS, ADICIONALNOTURNO,

AVISOPREVIO, CONTRASSISTENCIAL, CONTRCONFEDERATIVA, IRFERIASIMPOSTORETIDO, IRFERIASINSS )

VALUES (lancamentosfolha.empresa, lancamentosfolha.funcionario, lancamentosfolha.competencia, '0', '0', '0', '0',

'0', '0', '0', '0', '0', '0' )

RETURNING id_func INTO iId_func;

EXCEPTION WHEN UNIQUE_VIOLATION THEN

UPDATE apontamentosfolha SET apontamentosfolha.comissoes = lancamentosfolha.valorcalculado

WHERE apontamentosfolha.empresa = '000257' AND

apontamentosfolha.competencia = '122010'

RETURNING id_func INTO iIdfunc;

END;

RETURN iId_func;

END;

$$

LANGUAGE 'plpgsql' VOLATILE;

==================================================================================

-- LISTANDO PARA CONFERENCIA

==========================--

select * from apontamentosfolha

WHERE EMPRESA = '000257' AND

competencia = '122010';

--============================================================================================================--

select * from lancamentosfolha

WHERE EMPRESA = '000257' AND

competencia = '122010';

--============================================================================================================--

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...