Usuário com melhor resposta
Procedure com Select e Insert

Pergunta
-
Prezados,
Boa tarde!Estou precisando criar uma Stored que faça um select em uma tabela e ao mesmo tempo faça um insert em outra contendo todos os campos do select anterior. Vejam como estou tentando fazer:.
CREATE PROCEDURE INSERRIR_CONSULTA AS
DECLARE @eqp VARCHAR(255)
DECLARE @res VARCHAR(8000)BEGIN
SET @res=(SELECT DISTINCT DEVICE_ID FROM RAWJAPRINTJOB WHERE MONTH=01 AND YEAR=2011)
INSERT INTO equipamento (device) values (@res)END
MENSAGEM RETORNADA
Mensagem 512, Nivel 16, Estado 1, Linha 3Subquery returned more than 1 value. This is not permitted when the subquery fallows =, !=, <,<=,>,>= or when is used as an experession.
So preciso pegar todos os resultados do SQL e Inserir em outra tabela.
Respostas
-
O problema é que
SELECT DISTINCT DEVICE_ID FROM RAWJAPRINTJOB WHERE MONTH=01 AND YEAR=2011
Deve estar retornando mais de um registro e @res nao é um amatriz (ou uma tabela) para aceitar varios registros.
Eu creio que a melhor forma é
CREATE PROCEDURE INSERRIR_CONSULTA AS
BEGIN
INSERT INTO equipamento (device) SELECT DISTINCT DEVICE_ID FROM RAWJAPRINTJOB WHERE MONTH=01 AND YEAR=2011
END
isso vai inserir na tabela equipamento todos os registros de RAWJAPRINTJOB onde MONTH=01 e YEAR=2011.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com)- Sugerido como Resposta William John Adam Trindade quinta-feira, 10 de fevereiro de 2011 16:28
- Marcado como Resposta Eder Costa segunda-feira, 14 de fevereiro de 2011 18:04
-
No caso de update fica um pouco mais complicado... porque eu nao vejo na sua estrutura um elo de ligaçao entre equipamento e rawjaprintjob (exceto que device=deveice_id), mas nesse caso eu nao vejo o que voce gostaria de atualizar.
Mas seria algo do tipo (atençao a query abaixo nao vai funcionar... só um exemplo)
UPDATE equipamento SET device=device_id FROM equipamento INNER JOIN rawjaprintjob on equipamento.key=rawjaprintjob .key where rawjaprintjob.MONTH=01 AND rawjaprintjob.YEAR=2011
Nos envie mais informaçoes sobre o que deseja fazer, porque nao esta claro o uso de um UPDATE.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com)- Sugerido como Resposta William John Adam Trindade sexta-feira, 11 de fevereiro de 2011 14:29
- Marcado como Resposta Eder Costa segunda-feira, 14 de fevereiro de 2011 18:04
Todas as Respostas
-
O problema é que
SELECT DISTINCT DEVICE_ID FROM RAWJAPRINTJOB WHERE MONTH=01 AND YEAR=2011
Deve estar retornando mais de um registro e @res nao é um amatriz (ou uma tabela) para aceitar varios registros.
Eu creio que a melhor forma é
CREATE PROCEDURE INSERRIR_CONSULTA AS
BEGIN
INSERT INTO equipamento (device) SELECT DISTINCT DEVICE_ID FROM RAWJAPRINTJOB WHERE MONTH=01 AND YEAR=2011
END
isso vai inserir na tabela equipamento todos os registros de RAWJAPRINTJOB onde MONTH=01 e YEAR=2011.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com)- Sugerido como Resposta William John Adam Trindade quinta-feira, 10 de fevereiro de 2011 16:28
- Marcado como Resposta Eder Costa segunda-feira, 14 de fevereiro de 2011 18:04
-
-
No caso de update fica um pouco mais complicado... porque eu nao vejo na sua estrutura um elo de ligaçao entre equipamento e rawjaprintjob (exceto que device=deveice_id), mas nesse caso eu nao vejo o que voce gostaria de atualizar.
Mas seria algo do tipo (atençao a query abaixo nao vai funcionar... só um exemplo)
UPDATE equipamento SET device=device_id FROM equipamento INNER JOIN rawjaprintjob on equipamento.key=rawjaprintjob .key where rawjaprintjob.MONTH=01 AND rawjaprintjob.YEAR=2011
Nos envie mais informaçoes sobre o que deseja fazer, porque nao esta claro o uso de um UPDATE.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
SOGI INFORMATIQUE LTÉE (http://www.sogi.com)- Sugerido como Resposta William John Adam Trindade sexta-feira, 11 de fevereiro de 2011 14:29
- Marcado como Resposta Eder Costa segunda-feira, 14 de fevereiro de 2011 18:04
-