Pergunta reformulada como que eu posso dar um UPDATE no campo da tabela e trazer eles como resultado.
-
segunda-feira, 20 de agosto de 2012 23:15EU PRESICo para o sql 2005 tenho um exemplo que o amigo mandou tambem ele da o update correto so nos 5 registros
porem nao exige eles para mim
USE
[dados]
GO
/****** Object: Table [dbo].[LISTAGEM] Script Date: 08/20/2012 20:15:24 ******/
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
SET
ANSI_PADDING ON
GO
CREATE
TABLE [dbo].[LISTAGEM](
[ID_LIST] [int]
IDENTITY(1,1) NOT NULL,
[DS_LIST] [varchar]
(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[IN_SEND] [varchar]
(1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[DT_CADS] [datetime]
NULL DEFAULT (getdate()),
CONSTRAINT [PK_ID_LIST] PRIMARY KEY CLUSTERED
(
[ID_LIST]
ASC
)
WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
)
ON [PRIMARY]
GO
SET
ANSI_PADDING OFF
CREATE
PROCEDURE TESTE
@VALOR
INT= 8
AS
UPDATE
L1
SET
IN_SEND='S'
FROM
(SELECTTOP 5*,ROW_NUMBER()OVER(ORDERBY ID_LISTDESC)AS ORDEM
FROM LISTAGEM
WHERE IN_SEND='N') L1
WHERE
ORDEM <= @VALOR
FICOU correto so nao me tras de volta nao mostra para mim as linhas mostra somente o total
ate agora nao consegui e o mais proximo para o sql 2005 que eu queria fazer foi esse exemplo.
- Tipo Alterado Gustavo Maia AguiarMVP, Moderator terça-feira, 21 de agosto de 2012 00:11 É uma dúvida e não uma discussão
Todas as Respostas
-
terça-feira, 21 de agosto de 2012 00:10Moderador
Boa Noite,
Segue um exemplo que talvez lhe ajude:
-- Cria uma tabela hipotética
CREATE TABLE #T (ID INT, VAL INT)
INSERT INTO #T VALUES (1,110)
INSERT INTO #T VALUES (2,120)
INSERT INTO #T VALUES (3,130)
INSERT INTO #T VALUES (4,140)
INSERT INTO #T VALUES (5,150)
INSERT INTO #T VALUES (6,160)
INSERT INTO #T VALUES (7,170)
INSERT INTO #T VALUES (8,180)-- Mostra que os valores antes da atualização
SELECT ID, VAL FROM #T
WHERE ID > 4-- Atualiza os valores e mostra o resultado após a atualização
UPDATE #T SET VAL = VAL * 2
OUTPUT INSERTED.ID, INSERTED.VAL
WHERE ID > 4-- Mostra que os valores após a atualização
SELECT ID, VAL FROM #T
WHERE ID > 4-- Elimina a tabela
DROP TABLE #T[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
- Sugerido como Resposta Gustavo Maia AguiarMVP, Moderator terça-feira, 21 de agosto de 2012 00:11
- Marcado como Resposta Harley AraujoOwner quarta-feira, 22 de agosto de 2012 21:25
-
terça-feira, 21 de agosto de 2012 00:48Moderador
Patrick,
veja que a solução do mestre Gustavo foi a mesma que eu tinha lhe dito na outra Thread (http://social.technet.microsoft.com/Forums/pt-BR/520/thread/6b299cb7-6bdd-427a-82f3-5c1563b3591f): utilização da cláusula Output.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Sugerido como Resposta Roberson Ferreira _Microsoft Community Contributor, Moderator terça-feira, 21 de agosto de 2012 00:49
- Marcado como Resposta Harley AraujoOwner quarta-feira, 22 de agosto de 2012 21:25
-
terça-feira, 21 de agosto de 2012 02:05
Ola Patrick,
como você quer um valor variável na atualização, adicione a cláusula o output a query que eu te passei, isso deve funcionar.
DECLARE @VALOR INT = 5 UPDATE L1 SET IN_SEND= 'S' FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY ID_LIST DESC) AS ORDEM FROM LISTAGEM WHERE IN_SEND = 'N') L1 OUTPUT DELETED.DSLIST WHERE ORDEM <= @VALOR
[ ]´s,
Lukas Baldan- Marcado como Resposta Harley AraujoOwner quarta-feira, 22 de agosto de 2012 21:25
-
quinta-feira, 23 de agosto de 2012 06:09
mais no sql 2005 nao aceita a clausula output? aceita esse e o meu prob.
-
quinta-feira, 23 de agosto de 2012 06:10meu prob ta na clausula output pq meu sql e o 2005

