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 é:
Pergunta
paô
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
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.