isilver
(usa CentOS)
Enviado em 04/06/2013 - 15:12h
Pessoal valeu pela atenção.
Tentei usar como o quipsp disse, no meu caso ficou assim:
DELIMITER $$
DROP PROCEDURE IF EXISTS pTeste $$
CREATE PROCEDURE pTeste(
IN OLDCHAVE INT,
IN NEWCHAVE INT)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE vTabela_A VARCHAR(100) DEFAULT '';
DECLARE vCampo_A VARCHAR(100) DEFAULT '';
DECLARE cTabela CURSOR FOR SELECT TABELA_A, CAMPO_A FROM VIEW_RELACIONAMENTOS WHERE TABELA_B = 'LISTAS';
OPEN cTabela;
read_loop: LOOP
#aqui você pega os valores do "select", para mais campos vocÇe pode fazer assim:
#cTabela INTO c1, c2, c3, ..., cn
FETCH cTabela INTO vTabela_A, vCampo_A;
IF done THEN
LEAVE read_loop;
END IF;
SET @SQL_T = CONCAT('UPDATE ', vTabela_A, ' SET ', vCampo_A, ' = ', NEWCHAVE);
PREPARE ACAO FROM @SQL_T;
EXECUTE ACAO;
END LOOP;
CLOSE cTabela;
END $$
DELIMITER ;
Porém dá erro quando chamo a procedure CALL pTeste(2, 12)
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect. 0.000 sec
E também em uma conversa com um parceiro, ele me convenceu a fazer estes procedimentos pelo PHP, por questões de migração de servidor de banco de dados.
Mas, desde já obrigado pela atenção.