none
Capturar @@IDENTITY e armazenar em variável RRS feed

  • Pergunta

  • Em minha StoredProcedure estou executando um SQL assim:

    SELECT nome, descricao
    INTO Produtos
    FROM Produtos
    WHERE id = 1

    Ou seja, vou duplicar o registro de id = 1, porém deixando que ele receba um novo ID, pelo fato da coluna ID ser uma identity column. Daí, depois disto quero pegar o valor gerado e armazenar em uma variável @novo_id.

    Como posso fazer isto? Tentei colocando SELECT @@IDENTITY INTO @novo_id mas não funcionou.

    quarta-feira, 26 de julho de 2006 23:21

Todas as Respostas

  •  

     

     pode explicar com exemplos ?, vc. fazer um backup da tabela ?.

     

    Abs;

    quinta-feira, 27 de julho de 2006 10:04
  • Não Marcelo. Esta StoredProcedure irá selecionar alguns registros que estão de acordo com um critério que criei. Estes registros deverão ser duplicados (alterando alguns campos que eu omiti por não fazer diferença e obviamente o valor da chave primária, uma coluna identity), portanto quando eu capturar os valores de uma tabela e usar o INTO para jogar nela mesma (com os valores alterados), tenho que selecionar o valor do @@IDENTITY e jogar em uma variável para que ela armazene o novo valor.

    Aí é que estão minhas dúvidas.

    - Tem como eu especificar quais campos receberão os dados do SELECT no INTO?

    - Como eu pego o valor do @@IDENTITY e armazeno diretamente em uma variável?

    quinta-feira, 27 de julho de 2006 11:34
  •  

     

      Pergunta, essa proc recebe alteracao so de uma linha por vez ? se sim, vc. pode jogar o valor do @@identity em uma variavel e

     Exemplo

     

      Declare @Ident int

      Begin tran

        insert into tabela (campo1) values ('teste')

        Select @Ident = @@Identity

        -- aqui fica o codigo para inseir novamnete alterando o valor do @ident

      commit

     

    Abs;

     

    quinta-feira, 27 de julho de 2006 11:40