Como fazer um INSERT com EXEC, é isso mesmo um insert com uma procedure.
Você utiliza a instrução “INSERT SELECT” para inserir os dados resultantes de uma determinada frase sql em uma tabela de destino.
A instução “INSERT EXEC” é semelhante a instrução citada acima, porém no lugar do “SELECT“, você utiliza o “EXEC“.
Vamos ao exemplo de como fazer:
Tabelas que serão utilizadas para nosso exemplo.
[sourcecode language=”sql”]
CREATE TABLE T_ESTADO
(
UF VARCHAR(2),
ESTADO VARCHAR(50)
);
CREATE TABLE T_UF
(
UF VARCHAR(2)
);
[/sourcecode]
Observação: Não me preocupei com índice e chave nas tabelas, pois apenas criei para o nosso exemplo.
Após criarmos as tabelas utilizadas em nosso exemplo, vamos popular a mesma.
[sourcecode language=”sql”]
INSERT INTO T_ESTADO (UF, ESTADO)
VALUES
(‘SP’,’SÃO PAULO’),
(‘AC’, ‘ACRE’),
(‘CE’, ‘CEARÁ’),
(‘GO’,’GOIÁS’);
[/sourcecode]
Agora vamos criar procedure que iremos utilizar no nosso exemplo de “INSERT EXEC“.
[sourcecode language=”sql”]
CREATE PROCEDURE P_ESTADO @ESTADO AS VARCHAR(50)
AS
SELECT UF FROM T_ESTADO
WHERE ESTADO = @ESTADO;
[/sourcecode]
Vamos fazer o nosso insert utilizando a instrução “INSERT EXEC“.
[sourcecode language=”sql”]
INSERT INTO T_UF (UF)
EXEC P_ESTADO ‘ACRE’;
[/sourcecode]
Resultado do nosso insert: