Pergunta reformulada como que eu posso dar um UPDATE no campo da tabela e trazer eles como resultado.

תשובה 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:15
     
     
    EU 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.

Todas as Respostas

  • terça-feira, 21 de agosto de 2012 00:10
    Moderador
     
     Respondido

    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/gmasql


    Classifique as respostas. O seu feedback é imprescindível

  • terça-feira, 21 de agosto de 2012 00:48
    Moderador
     
     Respondido

    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.br

    Se 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.

  • terça-feira, 21 de agosto de 2012 02:05
     
     Respondido Contém Código

    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

  • 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:10
     
     
    meu prob ta na clausula output pq meu sql e o 2005