Inquiridor
Multiplos Insert com Stored Procedure

Pergunta
-
Bom dia!
Estou desenvolvendo um tcc, que tem a parte de cadastra um funcionario.
no banco de dados, tem 4 tabelas relacionadas com o funcionario, tb_Funcionario, tb_Endereco, tb_DadosPessoais e tb_Login.
todos os dados são salvos em suas respectivas tabelas, mais não estou conseguindo jogar os id(primary key) das tabelas de dados pessoais, endereço e login, dentro da tabela tb_Funcionario, cujas estao relacionadas.
estou usando Stored Procedure.
agradeço a colaboração :D
Todas as Respostas
-
-
Olá Daweel!
Segue exemplo abaixo de como você poderia fazer, não sei se foi bem isso que você pediu!
CREATE DEFINER=`meubanco`@`%%` PROCEDURE `proc_InserirEmpresa`(
_RAZAO varchar(50),
_FANTASIA varchar(50),
)
BEGIN
INSERT INTO meubanco.TB_EMPRESA
(
RAZAO,
FANTASIA,
)
VALUES
(
_RAZAO,
_FANTASIA,
);//nesse select vc esta pegando o ultimo ID inserior que no caso foi o cadastro feito agora!
SELECT LAST_INSERT_ID() INTO @ID;
//aqui vc esta utilizando o metodo call para chamar outra procedure já passando os parametros, inclusive o ID, utilizando o atributo mesmo @ID
call proc_InserirEmpreiteiraLog(@ID, _RAZAO, _FANTASIA);
OBS:
Todo o código faz parte da procedure que está sendo chamada!
- Editado Rafael Soarde Matias sexta-feira, 8 de novembro de 2013 11:37 correção
- Sugerido como Resposta Rafael Soarde Matias sexta-feira, 8 de novembro de 2013 18:48
-
ALTER PROCEDURE [dbo].[DadosPessoais] ( @nome varchar (50), @sexo varchar (50), @rg varchar (50), @cpf varchar (50), @telefone varchar (50), @email varchar (50), @nasc varchar (50), @foto image ) AS insert into tb_DadosPessoais(Nome,Sexo,RG,CPF,Telefone,Email, Nasc, Foto) values (@nome , @sexo , @rg , @cpf , @telefone , @email, @nasc, @foto ) select @@IDENTITY insert into tb_Funcionario(idDadosPessoais) values (@@IDENTITY) ================================================================================================================= ALTER PROCEDURE [dbo].[Endereco] ( @logradouro varchar (50), @numero varchar (50), @complemento varchar (50), @cep varchar (50), @cidade int, @bairro varchar (50) ) AS insert into tb_Endereco(Logradouro,Numero,Complemento,Cep,cidade,Bairro) values (@logradouro,@numero,@complemento,@cep,@cidade,@bairro ) select @@IDENTITY insert into tb_Funcionario(idEndereco) values (@@IDENTITY) ==================================================================================================================== ALTER PROCEDURE [dbo].[plogin] ( @nome VARCHAR (50) , @usuario VARCHAR(50), @senha VARCHAR(50), @nvpermissao int ) AS insert into login(Nome,usuario,senha,NvPermissao) values (@nome,@usuario,@senha,@nvpermissao) select @@IDENTITY; insert into tb_Funcionario(idLogin) values (@@IDENTITY)
// dados pessoais .................................................. sql = new SqlCommand("DadosPessoais", conexao); sql.CommandType = CommandType.StoredProcedure; sql.Parameters.AddWithValue("@nome", txnomeFu.Text.ToLower()); sql.Parameters.AddWithValue("@nasc", mknascFu.Text.ToLower()); sql.Parameters.AddWithValue("@rg", txrgFu.Text.ToLower()); if (rdFemFu.Checked == true) { sql.Parameters.AddWithValue("@sexo", rdFemFu.Text.ToLower()); } else if (rdmasFu.Checked == true) { sql.Parameters.AddWithValue("@sexo", rdmasFu.Text.ToLower()); } sql.Parameters.AddWithValue("@cpf", txcpfFu.Text); sql.Parameters.AddWithValue("@telefone", mktelFu.Text.ToLower()); sql.Parameters.AddWithValue("@email", txemailFu.Text.ToLower()); ConverterFoto(); conexao.Open(); int n = sql.ExecuteNonQuery(); conexao.Close(); // endereco ......................................................... sql = new SqlCommand("Endereco", conexao); sql.CommandType = CommandType.StoredProcedure; sql.Parameters.AddWithValue("@logradouro", txlograFu.Text.ToLower()); sql.Parameters.AddWithValue("@numero", txnumFu.Text.ToLower()); sql.Parameters.AddWithValue("@complemento", txcompleFu.Text.ToLower()); sql.Parameters.AddWithValue("@cep", mkcepFu.Text.ToLower()); sql.Parameters.AddWithValue("@cidade", cbcidadeFu.SelectedValue); sql.Parameters.AddWithValue("@bairro", txbairroFu.Text.ToLower()); conexao.Open(); int n2 = sql.ExecuteNonQuery(); conexao.Close(); // login ........................................................... sql = new SqlCommand("plogin", conexao); sql.CommandType = CommandType.StoredProcedure; sql.Parameters.AddWithValue("@nome", txnomeFu.Text.ToLower()); sql.Parameters.AddWithValue("@usuario", txusuarioFu.Text.ToLower()); sql.Parameters.AddWithValue("@senha", txsenhaFu.Text.ToLower()); if (nvl1.Checked == true) { nvl = 1; sql.Parameters.AddWithValue("@nvpermissao", nvl); } if (nvl2.Checked == true) { nvl = 2; sql.Parameters.AddWithValue("@nvpermissao", nvl); } conexao.Open(); int n3 = sql.ExecuteNonQuery(); conexao.Close(); if (n > 0 && n3>0) { MessageBox.Show("Cadastro Realizado com Sucesso!"); } else { MessageBox.Show("Erro no Cadastro!"); }