- A variável "colunaNome" recebe/armazena o "nome do campo" da tabela "CampoEmpresa".
- O comando SQL DDL é executado: ALTER TABLE CampoEmpresaColuna ADD COLUMN "colunaNome" VARCHAR(50);
- Problema: O comando ADD COLUMN não está criando a coluna com o nome que está armazenado na variável colunaNome. A coluna criada após a execução tem o mesmo nome da variável.
DELIMITER //
CREATE PROCEDURE Sp_CampoAdicional()
BEGIN
-- Variável
DECLARE contador1, contador2 INT DEFAULT 0;
DECLARE colunaNome varchar(50);
-- Tabela CampoEmpresa
CREATE TABLE CampoEmpresa
( cod int auto_increment,
id_campo_adicional int,
estabelecimento_id int,
campo varchar(50),
primary key(cod));
-- Tabela CampoEmpresaColuna
CREATE TABLE CampoEmpresaColuna
( cod int auto_increment,
primary key(cod));
-- Select Into CampoEmpresa
INSERT INTO CampoEmpresa (id_campo_adicional,estabelecimento_id,campo)
SELECT id_campo_adicional,estabelecimento_id,campo
FROM Pivot;
-- Limite CampoEmpresa
SET contador1 = (SELECT MIN(cod) FROM CampoEmpresa);
SET contador2 = (SELECT MAX(cod) FROM CampoEmpresa);
-- While p/caminhar nas linhas
WHILE contador1 < contador2 DO
-- Nome da Coluna
SET colunaNome = (SELECT campo FROM CampoEmpresa WHERE cod = contador1);
-- Adição de Coluna
ALTER TABLE CampoEmpresaColuna
ADD COLUMN colunaNome VARCHAR(50);
-- Contador
SET contador1 = contador1 + 1;
END WHILE;
END;