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

Alterar tabelas usando variáveis... possível? (cursor)


Guest Ripper

Pergunta

Olá!

Estou com um probleminha... possuo 2 tabelas (que deveriam ser idênticas, para armazenar dados de backup, porém nem sempre estão), preciso que antes que a tabela2 seja atualizada, seja verificado se tabela1 e tabela2 possuem as mesmas colunas. Desenvolvi o código abaixo, porém, ao executar o comando ALTER TABLE utilizando as variáveis (tanto caso 1 como 2) recebo erro de syntax incorreta após o ADD :wacko: ... Ajudas serão muito bem vindas!

/* Inicio do código... */

DECLARE @TableName VARCHAR(100), @ColumnName VARCHAR(100), @Tipo VARCHAR(50)

DECLARE @Tamanho Float

DECLARE @Script VARCHAR(100)

DECLARE CursorTesteD1 CURSOR FOR

SELECT SO.Name, SC.Name, SC.Length, ST.Name

FROM SysObjects SO (NoLock)

INNER JOIN SysColumns SC (NoLock) on SC.ID = SO.ID

INNER JOIN SysTypes ST (NoLock) on ST.XType = SC.XType

WHERE SO.Name = 'TesteD1'

AND ST.Name <> 'sysname'

ORDER BY SC.Name ASC

OPEN CursorTesteD1

FETCH CursorTesteD1 INTO @TableName, @ColumnName, @Tamanho, @Tipo

WHILE (@@fetch_status = 0)

BEGIN

IF NOT EXISTS(SELECT TOP 1 SO.Name, SO.ID, SC.Name, SC.Xtype, SC.Length, ST.Name

FROM SysObjects SO (NoLock)

INNER JOIN SysColumns SC (NoLock) on SC.ID = SO.ID

INNER JOIN SysTypes ST (NoLock) on ST.XType = SC.XType

WHERE SO.Name = 'TesteD2'

AND ST.Name <> 'sysname'

AND SC.Name = @ColumnName

ORDER BY SC.Name ASC)

BEGIN

SET @Script = NULL

PRINT 'Criando coluna: ' + @ColumnName

PRINT 'Tamanho: ' + CAST(@Tamanho as VARCHAR)

PRINT 'Tipo: ' + @Tipo

SET @Script = @ColumnName + ' ' + @Tipo + '('+ CAST(@Tamanho AS VARCHAR) + ') NULL'

PRINT @Script

-- Caso 1 => ALTER TABLE TesteD2 ADD @ColumnName @Tipo(@Tamanho) NULL

-- Caso 2 => ALTER TABLE TesteD2 ADD @Script

END

FETCH CursorTesteD1 INTO @TableName, @ColumnName, @Tamanho, @Tipo

END

CLOSE CursorTesteD1

DEALLOCATE CursorTesteD1

/* Fim do código */

Valeu!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...