Boa tarde galera :)

Preciso de ajuda ... Segue trecho do script: 

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='tblCombinados' and column_name='NomeAgrupamento')
BEGIN

  UPDATE tblCombinados
  SET NomeAgrupamento = 1
  WHERE NomeAgrupamento LIKE '%BACALHAU%'

END

GO

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='tblCombinados' and column_name='NomeAgrupamento')
BEGIN
ALTER TABLE tblCombinados ALTER COLUMN NomeAgrupamento INT
EXEC sp_rename 'tblCombinados.NomeAgrupamento', 'IDAgrupamento'
END
GO

Eu precisei alterar uma coluna em minha tabela, ela deixará de ser uma coluna de descricao para ser uma coluna de ID (FK). Para isso eu substituo o conteudo da coluna, o tipo de dado e por ultimo o nome.

Na primeira execução funciona perfeitamente, mas se for executado novamente da erro, porque a coluna NomeAgrupamento não existe mais. Preciso garantir que se for executado outras vezes, quando a coluna não existir mais, não de erro ... que simplesmente ignore o UPDATE ... COMO FAÇO ISSO? 

Exibições: 182

Respostas a este tópico

Faz seu exists por tipo de dado também. Acho que pode ajudar.

** SOLUÇÃO:

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='tblCombinados' and column_name='NomeAgrupamento')
BEGIN

  

DECLARE @SQLString nvarchar(1000)

SET @SQLString = ' UPDATE tblCombinados

                           SET NomeAgrupamento = 1'

EXECUTE sp_executesql @SQLString

END

GO

NESTE CASO O SGBD NÃO VERIFICA SE A COLUNA EXISTE ANTES DE CONSIDERAR O IF.

RSS

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço