Inquiridor
Store de Procedure "Select com insert"

Pergunta
-
Boa Tarde,
Tenho uma SP onde executo um select para filtrar alguns dados de uma determinada tabela, no entanto preciso incluir os dados selecionados em uma segunda tabela, gostaria de ter algumas dicas de como posso estar fazendo isso, lembrando que, atraves do "insert into" nao é possivel pois as tabelas tem estruturas diferentes, e o que me interessa do resultado da pesquisas sao apenas alguns campos, segue abaixo o codigo da SP que executo, grato:
declare @Mes nvarchar(2),
@Ano nvarchar(4),
@Sistema as nvarchar(4),
@Campo nvarchar(1000),
@CodParametro as nvarchar(4),
@Comando_SQL nvarchar(4000),
@Clausula_Where nvarchar(4000),
@Clausula_Or nvarchar(4000),
@Parametros nvarchar(4000),
@Tabela nvarchar(4000),
@Nome_Tabela nvarchar(1000),
@Tipo as nvarchar(2),
@Tipo1 as nvarchar(2),
@Registros money,
@Registros1 int,
@Reg moneyset @Sistema='0001'
set @Ano='2007'
set @mes='01'
set @Tipo = 'RE'
set @Tipo1 = 'RS'
Set @Tabela = N'dbo.TBResultado_Analises'
Set @Parametros = N'@Reg money Output'
set @CodParametro='0175'
set @Campo= '[Turbidez]'set @Clausula_Where = N' Where ' + @Campo + '>5 ' + 'and codigodosistema = '+ ''''+@Sistema+''''+' and tipoagua = ' + ''''+@Tipo+'''' + ' and month(datacoleta)= ' + @Mes + ' and year(datacoleta)= ' + @Ano + 'and codigoponto < ' + '141'
''''+@Sistema+''''+' and tipoagua = ' + ''''+@Tipo1+'''' + ' and month(datacoleta)= ' + @Mes + ' and year(datacoleta)= ' + @Ano
set @Clausula_Or= N' or ' + @Campo + '>5 ' + ' and codigodosistema = '+Set @Comando_SQL = N'SELECT ' + @Campo + ',codigocomunidade,tipoagua,codigoponto,datacoleta,horacoleta from ' + @Tabela + @Clausula_Where + @Clausula_Or
EXECUTE SP_ExecuteSql @Comando_Sql
If @@RowCount > 0
preciso inserir o resultado dos campos retornados em @Comando_SQL em uma segunda tabela.
Todas as Respostas
-
-
-
-
Marcelo segui a sua sugestão de criar uma tabela temporaria com o resultado e posteriormente fazer um insert into no entanto quando tento executar o insert into da tabela temporaria para a tabela de destino esta dando o seguinte erro:
Column name or number of supplied values does not match table definition.
Ja verifiquei as colunas das duas tabelas e os campos sao do mesmo tipo, no entanto estaou tendo o erro, o estranho de tudo isso é que estou tentando fazer um insert into bem simples utilizando apenas uma coluna, segue abaixo um exemplo do que fiz:
declare @Mes nvarchar(2),
@Ano nvarchar(4),
@Sistema as nvarchar(4),
@Campo nvarchar(1000),
@CodParametro as nvarchar(4),
@Comando_SQL nvarchar(4000),
@Clausula_Where nvarchar(4000),
@Clausula_Or nvarchar(4000),
@Parametros nvarchar(4000),
@Tabela nvarchar(4000),
@Nome_Tabela nvarchar(1000),
@Tipo as nvarchar(2),
@Tipo1 as nvarchar(2),
@Registros money,
@Registros1 int,
@Registros2 int,
@Registros3 int,
@Registros4 int,
@Retorno int,
@Reg moneyset @Sistema='0001'
set @Ano='2007'
set @mes='01'
set @Tipo = 'RE'
set @Tipo1 = 'RS'
Set @Tabela = N'dbo.TBResultado_Analises'
Set @Parametros = N'@Reg money Output'
set @CodParametro='0175'
set @Campo= '[Turbidez]'set @Clausula_Where = N' Where ' + @Campo + '>5 ' + 'and codigodosistema = '+ ''''+@Sistema+''''+' and tipoagua = ' + ''''+@Tipo+'''' + ' and month(datacoleta)= ' + @Mes + ' and year(datacoleta)= ' + @Ano + 'and codigoponto < ' + '141'
set @Clausula_Or= N' or ' + @Campo + '>5 ' + ' and codigodosistema = '+ ''''+@Sistema+''''+' and tipoagua = ' + ''''+@Tipo1+'''' + ' and month(datacoleta)= ' + @Mes + ' and year(datacoleta)= ' + @AnoSet @Comando_SQL = N'SELECT CodigoDoSistema,CodigoComunidade,TipoAgua,CodigoPonto,DataColeta,HoraColeta,' + @Campo + ' as resultado into tabela from ' + @Tabela + @Clausula_Where + @Clausula_Or
EXECUTE SP_ExecuteSql @Comando_Sql até aqui funciona corretamente
insert into tbAnalisesForaPadrao_SecretariaSaude aqui da o erro mencionado acima
select CodigoDoSistema
from tabela -
-
Junior,
Ja dei um jeito no erro, seguindo a sintaxe abaixo:
INSERT INTO tbAnalisesForaPadrao_SecretariaSaude
(CodigoDoSistema,codigocomunidade,tipoagua,codigoponto,datacoleta,horacoleta,resultado,codigodoparametro)
SELECT CodigoDoSistema,codigocomunidade,tipoagua,codigoponto,datacoleta,horacoleta,resultado,'A'
FROM tabelaGrato
-
-
-