Ola pessoal, tenho uma stored procedure no postgreSQL para o Salvamento dos meus Usuarios, mais quando mando salvar esta duplicando, ou seja, salvando Duas Vezes, onde e que eu Errrrrreiiiiiiiii ?
CREATE OR REPLACE FUNCTION sp_usuarios(integer, integer, character varying, character varying, character varying, integer, date, character varying)
RETURNS void AS
$BODY$DECLARE
TIPO integer := $1;
param_cod_nivel integer;
param_dtcadastro date := current_date;
param_dtalteracao date := current_date;
BEGIN
-- Numerando os Parametros:
-- 1 = Tipo de Operacao 1 = Inclusao, 2 = Alteracao.
-- 2 = Codigo do Usuario, Utilizado para Alteracao dos Dados.
-- 3 = Nome do Usuario.
-- 4 = Login do Usuario.
-- 5 = Senha do Usuario.
-- 6 = Ativo/ Inativo 0 = Ativo, 1 = Inativo.
-- 7 = Data que Expira o Acesso.
-- 8 = Nivel de Usuario.
-- Pegando o Nivel de Usuarios.
SELECT * FROM us_niveis
WHERE(us_niveis.niv_descricao = $8) INTO param_cod_nivel;
-- Inserindo Novos Dados Cadastrais.
IF TIPO = 1 THEN
INSERT INTO us_usuarios(usu_nome, usu_login, usu_senha, usu_ativo, usu_dtexpira, usu_cod_nivel, usu_dtcadastro)
VALUES( $3, $4, $5, $6, $7, param_cod_nivel, param_dtcadastro );
RETURN;
END IF;
-- Alterando os Dados Cadastrais.
IF TIPO = 2 THEN
UPDATE us_usuarios SET usu_nome = $3, usu_login = $4, usu_senha = $5, usu_ativo = $6, usu_dtexpira = $7,
usu_cod_nivel = param_cod_nivel, usu_dtalteracao = param_dtalteracao
WHERE usu_codigo = $2;
RETURN;
END IF;
END;$BODY$
LANGUAGE plpgsql
Na hora de salvar salvo Assim :
public void SalvarUs(int Operacao, int Codigo, String nome, String login, String senha, int Ativo, Date Expira, String Nivel) throws SQLException{
try{
Connection c = getConnection();
CallableStatement stmt;
// Parametros :
// 1 = Tipo da Operacao: 1 - Incluir, 2 - Alterar.
// 2 = Codigo do Usuario
// 3 = Nome
// 4 = Login.
// 5 = Senha.
// 6 = Ativo / Inativo.
// 7 = Data Expira.
// 8 = Nivel de Usuario.
stmt = c.prepareCall("{call sp_usuarios(?,?,?,?,?,?,?,?)}");
stmt.setInt (1, Operacao);
stmt.setInt (2, Codigo);
stmt.setString (3, nome);
stmt.setString (4, login);
stmt.setString (5, senha);
stmt.setInt (6, Ativo);
stmt.setDate (7, Expira);
stmt.setString (8, Nivel);
stmt.execute();
stmt.getConnection().commit();
if(stmt.execute()){
JOptionPane.showMessageDialog(null, "Operacao de Inclusao Efetuada com Sucesso !");
stmt.close();
}
}catch (Exception Erro){
JOptionPane.showMessageDialog(null, "Houve Erro ao Salvar os Dados Cadastrais do(a) Usuario(a)" + Erro);
}