Como criar uma função de inserção de dados no PostGres
Olá, tenho em firebirb a Stored Procedure abaixo, como podem ver ela faz o seguinte.
01 - recebe um parâmetro que a indica o que fazer com a tabela.
Se esse parametro for A - Ela faz um Update na Tabela
I - Ela insere dados na Tabela
D - Ela deleta os dados da tabela
Minha pergunta é a seguinte como eu faço uma como esta no PostGres pois eu ja consegui fazer Funções que Selecionam mas não consegui executar alterações na tabela como preciso.
Aluem pode me ajudar. Obrigado
===============================================
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE ´MABATIDAS_PONTO´
(
´ID1´ INTEGER,
´ID2´ DATE,
´ID3´ TIME,
´VI_CODIGO_FUNCIONARIO´ INTEGER,
´VD_DATA´ DATE,
´VD_HORARIO´ TIME,
´VS_ALTERADO´ CHAR(1) CHARACTER SET ISO8859_1,
´TIPO´ VARCHAR(1) CHARACTER SET ISO8859_1
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE ´MABATIDAS_PONTO´
(
´ID1´ INTEGER,
´ID2´ DATE,
´ID3´ TIME,
´VI_CODIGO_FUNCIONARIO´ INTEGER,
´VD_DATA´ DATE,
´VD_HORARIO´ TIME,
´VS_ALTERADO´ CHAR(1) CHARACTER SET ISO8859_1,
´TIPO´ VARCHAR(1) CHARACTER SET ISO8859_1
)
AS
begin
if (:tipo = ´I´) then
begin
Insert into ´Batidas_Ponto´ (´Codigo_Funcionario´,
´Data´,
´Horario´,
´Alterado´
)
values (:VI_CODIGO_FUNCIONARIO,
:VD_DATA,
:VD_HORARIO,
:VS_ALTERADO
);
End
if (:tipo = ´A´) then
begin
Update ´Batidas_Ponto´ set ´Codigo_Funcionario´=:VI_CODIGO_FUNCIONARIO,
´Data´ =:VD_DATA,
´Horario´ =:VD_HORARIO,
´Alterado´ =:VS_ALTERADO
where (´Codigo_Funcionario´=:ID1) And (´Data´=:ID2) And (´Horario´=:ID3);
end
if (:tipo = ´D´) then
begin
Delete from ´Batidas_Ponto´ where (´Codigo_Funcionario´=:ID1) And (´Data´=:ID2) And (´Horario´=:ID3);
end
end
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
01 - recebe um parâmetro que a indica o que fazer com a tabela.
Se esse parametro for A - Ela faz um Update na Tabela
I - Ela insere dados na Tabela
D - Ela deleta os dados da tabela
Minha pergunta é a seguinte como eu faço uma como esta no PostGres pois eu ja consegui fazer Funções que Selecionam mas não consegui executar alterações na tabela como preciso.
Aluem pode me ajudar. Obrigado
===============================================
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE ´MABATIDAS_PONTO´
(
´ID1´ INTEGER,
´ID2´ DATE,
´ID3´ TIME,
´VI_CODIGO_FUNCIONARIO´ INTEGER,
´VD_DATA´ DATE,
´VD_HORARIO´ TIME,
´VS_ALTERADO´ CHAR(1) CHARACTER SET ISO8859_1,
´TIPO´ VARCHAR(1) CHARACTER SET ISO8859_1
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE ´MABATIDAS_PONTO´
(
´ID1´ INTEGER,
´ID2´ DATE,
´ID3´ TIME,
´VI_CODIGO_FUNCIONARIO´ INTEGER,
´VD_DATA´ DATE,
´VD_HORARIO´ TIME,
´VS_ALTERADO´ CHAR(1) CHARACTER SET ISO8859_1,
´TIPO´ VARCHAR(1) CHARACTER SET ISO8859_1
)
AS
begin
if (:tipo = ´I´) then
begin
Insert into ´Batidas_Ponto´ (´Codigo_Funcionario´,
´Data´,
´Horario´,
´Alterado´
)
values (:VI_CODIGO_FUNCIONARIO,
:VD_DATA,
:VD_HORARIO,
:VS_ALTERADO
);
End
if (:tipo = ´A´) then
begin
Update ´Batidas_Ponto´ set ´Codigo_Funcionario´=:VI_CODIGO_FUNCIONARIO,
´Data´ =:VD_DATA,
´Horario´ =:VD_HORARIO,
´Alterado´ =:VS_ALTERADO
where (´Codigo_Funcionario´=:ID1) And (´Data´=:ID2) And (´Horario´=:ID3);
end
if (:tipo = ´D´) then
begin
Delete from ´Batidas_Ponto´ where (´Codigo_Funcionario´=:ID1) And (´Data´=:ID2) And (´Horario´=:ID3);
end
end
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
Amauridebarros
Curtidas 0