galera preciso criar uma stored procedure que leia valores de uma tabela A e de uma tabela B e dependendo da condição insira na tabela C
tipow… where ((tabelaA.data = tabelab.data) and (tabelaa.nome = tabelab.nome))
se for true insere na tabela c
ai que tah o problema nao sei como capturar os valores das tabela A e B e armazenar em uma variavel e fazer o insert na C
jah tenho o seguinte codigo
DELIMITER $$
DROP PROCEDURE IF EXISTS teste.carga_c $$
CREATE PROCEDURE carga_c()
begin
-- variaveis que serao utilizadas
  DECLARE existe_mais_linhas INT DEFAULT 0;
  DECLARE var_id int;
  DECLARE var_nome varchar(255);
  DECLARE var_sobrenome varchar(255);
  DECLARE var_dat varchar(255);
-- Definição do cursor
 DECLARE varreTabela CURSOR FOR SELECT dattaba FROM tabelaa;
-- Definição da variável de controle de looping do cursor
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1;
-- Abertura do cursor
  OPEN varreTabela;
  -- Looping de execução do cursor
  meuLoop: LOOP
  FETCH varreTabela INTO var_dat;
  -- Controle de existir mais registros na tabela
  IF existe_mais_linhas = 1 THEN
  LEAVE meuLoop;
  END IF;
insert into tabelac SET idc =var_id
                        ,nomea =var_nome
                        ,sobrenome = var_sobrenome
                        ,datc = var_dat;
  -- Retorna para a primeira linha do loop
  END LOOP meuLoop;
end $$
DELIMITER ;
alguem sabe como posso resolver isso?
vlws
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          consegui melhorias no codigo consegui criar a condição agora soh falta pegar os valores da tabelaA e B e jogar na c quando a condição for true
DELIMITER $$
DROP PROCEDURE IF EXISTS teste.carga_c $$
CREATE PROCEDURE carga_c()
begin
-- variaveis que serao utilizadas
  DECLARE existe_mais_linhas INT DEFAULT 0;
  DECLARE var_id int;
  DECLARE var_nome varchar(255);
  DECLARE var_sobrenome varchar(255);
  DECLARE var_dat varchar(255);
-- Definição do cursor
 DECLARE varreTabela CURSOR FOR SELECT dattaba FROM tabelaa
   inner JOIN tabelab ON tabelaa.dattaba=tabelab.dat
       where ((tabelaa.dattaba = tabelab.dat) and (tabelaa.nomea = tabelab.nomeb));
-- Definição da variável de controle de looping do cursor
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1;
-- Abertura do cursor
  OPEN varreTabela;
  -- Looping de execução do cursor
  meuLoop: LOOP
  FETCH varreTabela INTO var_dat;
  -- Controle de existir mais registros na tabela
  IF existe_mais_linhas = 1 THEN
  LEAVE meuLoop;
  END IF;
insert into tabelac SET idc =var_id
                        ,nomea =var_nome
                        ,sobrenome = var_sobrenome
                        ,datc = var_dat;
  -- Retorna para a primeira linha do loop
  END LOOP meuLoop;
end $$
DELIMITER ;
alguem ai sabe como resolve esse problema?
vlws
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Eu fazia bastante desses desafios no sybase, eu estou sem mysql pra testar isso ai, mas veja se é possivel fazer isso aqui
INSERT INTO tabelac
SELECT dattaba 
FROM tabelaa
inner JOIN tabelab ON tabelaa.dattaba=tabelab.dat
where ((tabelaa.dattaba = tabelab.dat) and (tabelaa.nomea = tabelab.nomeb));
Existia uma opção de incluir diretamente o resultado de uma query direto em outra tabela, se houver registros consequentemente serão inclusos, caso não existam não acontece nada.
Não se assuste com a solução, nós controlavamos a transação usando rowcount(linhas afetadas), para não explodir o segmento de log.
Abraço!
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          pois eh consegui fazer essa parte ai tipow… a condição
o problema agora é
tipow… preciso que uma variavel receba o valor do campo
exemplo
var_nome = campo tabela A
var_outro = campo tabela B
nao toh conseguindo fazer isso agora
sabe como poderia resolver??
se eu conseguir mato a charada
vlws pela forca amigo
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          A estrutura da tabela C é formada pela tabela A e B?  Eu entendi direito
no select dentro do insert vc não poderia fazer isso aqui?
insert into tabela_c
tabela_a.campo_1
tabela_b.campo_2
tabela_a.campo_3
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          nao eh possivel amigo mysql nao suporta, testei aki e nda tenho q passar para variaveis mesmo
sabe como posso fazer?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          olha amigo
jeito ate acredito que tenha
mas particularmente eu prefiro
utilizar PostgreSQL para esse tipo de aplicação
ele é excelente
você pode trabalhar com varias linguagens, como o próprio java
para criar funções e triggers
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          amigo o topico eh sobre mysql
fiko grato por suas recomendacoes
alguem ai sabe como posso resolver esse problem em mysql?
vlws
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Tem que ser MySQL 5 ou superior.
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          
sim a versao que estou utilizando eh a 5.0
ninguem?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          eh possivel fazer isso em mysql???
quero que a variavel A receba o valor do campo A da tabela A
e que a variavel B receba o valor do campo B da tabela B
eh possivel?
ou mysql tem mais essa limitação
vlws
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          bom amigos consegui resolver o problema, no meu caso utilizei dois cursores nao sei se foi a melhor forma mais no momento atende a demanda
o codigo ficou assim
DELIMITER $$
DROP PROCEDURE IF EXISTS `teste`.`carga_c` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `carga_c`()
begin
-- variaveis que serao utilizadas
  DECLARE existe_mais_linhas INT DEFAULT 0;
  DECLARE var_id int;
  DECLARE var_nome varchar(255);
  DECLARE var_sobrenome varchar(255);
  DECLARE var_dat varchar(255);
-- Definição do cursor
 DECLARE varreTabela CURSOR FOR SELECT dattaba, nomea FROM tabelaa
   inner JOIN tabelab ON tabelaa.dattaba=tabelab.dat
       where ((tabelaa.dattaba = tabelab.dat) and (tabelaa.nomea = tabelab.nomeb));
DECLARE cur2 CURSOR FOR SELECT sobreNome FROM tabelab
inner JOIN tabelaa ON tabelab.dat=tabelaa.dattaba
       where ((tabelab.dat = tabelaa.dattaba) and (tabelab.nomeb = tabelaa.nomea));
-- Definição da variável de controle de looping do cursor
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1;
-- Abertura do cursor
  OPEN varreTabela;
  open cur2;
  -- Looping de execução do cursor
  meuLoop: LOOP
  FETCH varreTabela INTO var_dat, var_nome;
  fetch cur2 into var_sobrenome;
  -- Controle de existir mais registros na tabela
  IF existe_mais_linhas = 1 THEN
  LEAVE meuLoop;
  END IF;
insert into tabelac SET idc =var_id
                        ,nomea =var_nome
                        ,sobrenome =var_sobrenome
                        ,datc = var_dat;
  -- Retorna para a primeira linha do loop
  END LOOP meuLoop;
end $$
DELIMITER ;
existe uma outra forma de passar o conteudo de um campo para a variavel, exemplo
SELECT column[,…] INTO variable[,…] table_expression
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
fonte: http://xoopscube.com.br/xcDocs/mysql/ch11.php#variables-in-stored-procedures
espero q ajude os proximos
vlws