Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar valor da coluna de todas as linhas, exceto da última.


andersonrc

Pergunta

Olá a todos.

Tenho que fazer a seguinte procedure

b. Criar uma procedure que deve popular a tabela TabelasBanco da seguinte maneira:

i. A tabela deve ser populada com as informações vindas da consulta

SELECT id, name FROM sys.sysobjects WHERE xtype = 'U'

ii. A coluna DataCarga deve ser preenchida com a data do dia da carga.

iii. A coluna FlagCarga deve ser preenchida com o valor 'UC' equivalente a Última Carga;

iv. Antes de inserir os dados na tabela, a procedure deve verificar se já existem dados na tabela TabelasBanco, caso existam, deve ser dado o comando UPDATE para alterar o campo FlagCarga para o valor 'CA' Carga Antiga. De modo que apenas a última carga efetuada possua o flag 'UC' e as demais possuam o valor “CA”.

Estou tendo problema para fazer o item iv. Da forma que eu fiz todas as colunas da tabela estão sendo alteradas para 'CA'. Mas a forma correta é que a última linha da tabela, a coluna FlagCarga deve ficar com o valor 'UC'

O procedimento que eu fiz é o que está abaixo: alguém sabe como posso resolver isso?

CREATE PROCEDURE sp_popula_tabela
AS
IF EXISTS (SELECT * FROM TabelasBanco)
    UPDATE TabelasBanco SET FlagCarga = 'CA'
    
    INSERT INTO TabelasBanco (IDTabela, NomeTabela)
    SELECT id, name FROM sys.sysobjects WHERE xtype = 'U'
    INSERT INTO TabelasBanco (DataCarga, FlagCarga) VALUES (getDate(), 'UC')

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia Anderson,

Neste caso, creio que não vai precisar utilizar o IF.

você pode fazer o update utilizando a cláusula WHERE:

UPDATE TabelasBanco SET FlagCarga = 'CA' WHERE cod in (select .... from TabelasBanco where...)

Neste update, você fará um subselect para listar todos os registros que já estão inseridos na tabela. O resultado trará os dados já inseridos, e o update irá atualizá-los.

Depois fará o insert utilizando a mesma teoria, mas agora pegando os registros que NÃO estejam inseridos.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...