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

Ajuda com FUNCTION Postgre / JAVA


paô

Pergunta

Criei uma FUNCTION no Postgre 9.3 para rodar 5 insert´s simultaneos onde cada insert corresponde a uma tabela diferente (generalização e especialização) quando eu executo a function no Execute Query do pgAdmin III retorna um campo (tipo select)

| |fisica_insert |

|_|void |

|1| |

Quando eu chamo essa function pelo Netbeans 8.0 retorna uma Exception:

ERRO SQL: Um resultado foi retornado quando nenhum era esperado.

Mas todos os dados são inseridos corretamente. A dúvida é:

Como tratar essa Exception?

FUNCTION:

CREATE OR REPLACE FUNCTION fisica_insert(nome varchar, vcpf varchar, vrg varchar, data_nascimento date, estado_civil varchar, nacionalidade varchar, tratamento varchar, profissao varchar, logradouro varchar, numero varchar, bairro varchar, complemento varchar, cep varchar, cidade varchar, uf varchar, tel_1 varchar, ramal_1 varchar, tel_2 varchar, ramal_2 varchar, tel_3 varchar, tel_4 varchar, ramal_4 varchar, email varchar, paginaweb varchar)

RETURNS VOID AS

$$
DECLARE
BEGIN
INSERT INTO pessoa(nome)
VALUES (nome);
INSERT INTO fisica(cpf, rg, pessoa_idPessoa, data_nascimento, estado_civil, nacionalidade)
VALUES (vcpf, vrg, (select max(idpessoa)from pessoa), data_nascimento, estado_civil, nacionalidade);
INSERT INTO cliente(pessoa_idPessoa, fisica_rg, fisica_cpf, tratamento, profissao)
VALUES ((select max(idpessoa)from pessoa), (select rg from fisica where pessoa_idPessoa=(select max(idpessoa)from pessoa)), (select cpf from fisica where pessoa_idPessoa=(select max(idpessoa)from pessoa)), tratamento, profissao);
INSERT INTO endereco(pessoa_idPessoa, logradouro, numero, bairro, complemento, cep, cidade, uf)
VALUES ((select max(idpessoa)from pessoa), logradouro, numero, bairro, complemento, cep, cidade, uf);
INSERT INTO contato(pessoa_idPessoa, tel_1, ramal_1, tel_2, ramal_2, tel_3, tel_4, ramal_4, email, paginaWeb)
VALUES ((select max(idpessoa)from pessoa), tel_1, ramal_1, tel_2, ramal_2, tel_3, tel_4, ramal_4, email, paginaWeb);
END;
$$
LANGUAGE plpgsql

Chamando a function:

SELECT fisica_insert('FISICA INSERT', '22222222222', '22222222-2', '22-02-2002', 'SOLTEIRO', 'BRASILEIRO', 'SR.', 'TESTER', 'RUA TESTE FUNCTION', '222', 'BAIRRO TESTE', 'APTO. 22', '22222-222', 'TESTE CIDADE', 'TS', '1192222-2222', 'VIVO', '1193333-3333', 'CLARO', '112222-2222', '113333-3333', '33', 'TESTE@FUNCTION.COM.BR', 'WWW.TESTEFUNCTION.COM.BR');

Código JAVA:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
final String url = "jdbc:postgresql://localhost:5432/nome_do_banco";
final String user = "usuário";
final String senha = "senha";
String tratamento = null;

if(jRadioButton_Sr.isSelected()){
tratamento = jRadioButton_Sr.getText();
}else if(jRadioButton_Sra.isSelected()){
tratamento = jRadioButton_Sra.getText();
}else if(jRadioButton_Dr.isSelected()){
tratamento = jRadioButton_Dr.getText();
}else if(jRadioButton_Dra.isSelected()){
tratamento = jRadioButton_Dra.getText();
}

try{
Connection conexao = DriverManager.getConnection(url, user, senha);

PreparedStatement cliente = conexao.prepareStatement("SELECT fisica_insert(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

cliente.setString(1, jTextField_Nome.getText());
cliente.setString(2, jTextField_CPF.getText());
cliente.setString(3, jTextField_RG.getText());
cliente.setDate(4, Date.valueOf(jTextField_Nascimento.getText()));
cliente.setString(5, jTextField_EstadoCivil.getText());
cliente.setString(6, jTextField_Nacionalidade.getText());
cliente.setString(7, (String)tratamento);
cliente.setString(8, jTextField_Profissao.getText());
cliente.setString(9, jTextField_Logradouro.getText());
cliente.setString(10, jTextField_Numero.getText());
cliente.setString(11, jTextField_Bairro.getText());
cliente.setString(12, jTextField_Complemento.getText());
cliente.setString(13, jTextField_CEP.getText());
cliente.setString(14, jTextField_Cidade.getText());
cliente.setString(15, (String)jComboBox_Estado.getSelectedItem());
cliente.setString(16, jTextField_Tel1.getText());
cliente.setString(17, (String)jComboBox_Tel1.getSelectedItem());
cliente.setString(18, jTextField_Tel2.getText());
cliente.setString(19, (String)jComboBox_Tel2.getSelectedItem());
cliente.setString(20, jTextField_Tel3.getText());
cliente.setString(21, jTextField_Tel4.getText());
cliente.setString(22, jTextField_Ramal4.getText());
cliente.setString(23, jTextField_Email.getText());
cliente.setString(24, jTextField_PaginaWeb.getText());

int result = cliente.executeUpdate();

JOptionPane.showMessageDialog(null, "Cadastro Efetuado! "+ result +" linhas afetadas");

}catch(SQLException e){
JOptionPane.showMessageDialog(null, "ERRO SQL: " + e.getMessage());
e.printStackTrace();
}
}

Se alguém puder ajudar eu agradeço.

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,4k
×
×
  • Criar Novo...