none
Atualizar todos os campos do tipo texto de uma só vez! RRS feed

  • Pergunta

  • Prezados, já uso o banco de dados há muito tempo, porém, no meu software de desenvolvimento, só hoje fui aplicar nos formulários a opção de deixar maiúsculas.

    Porém, no banco de dados já foram cadastrados muitos dados.

    E eu queria, vamos supor, um código fácil que já atualizasse os campos de uma só vez.

    Vamos supor, na de Cliente:

    UPDATE Cliente

    SET CLINOME=Upper(CLINOME)

    Ok, atualiza. Porém, nessa tabela tenho mais 189273827 campos de texto, e no banco tenho mais de 100 tabelas e preciso atualizar em todas.

    Não há um script que atualize TODOS OS campos de texto do meu bd para "UPPER"?

    Obrigado.

    quinta-feira, 16 de maio de 2013 17:54

Respostas

  • Voce pode fazer dessa forma:

    DECLARE @SCRIPT VARCHAR(4000)
    
    DECLARE CURSOR_SCRIPT CURSOR FOR
    SELECT 
    	'UPDATE ' + SYSOBJECTS.NAME + ' SET ' + SYSCOLUMNS.NAME + ' = UCASE(' + SYSCOLUMNS.NAME + ')'
    FROM 
    	SYSCOLUMNS 
    	JOIN SYSOBJECTS ON (SYSCOLUMNS.ID = SYSOBJECTS.ID)
    WHERE 
    	SYSOBJECTS.TYPE = 'U' AND 
    	NOT SYSOBJECTS.NAME LIKE 'SYS%' AND
    	SYSCOLUMNS.xtype = 231
    	
    OPEN CURSOR_SCRIPT
    
    FETCH NEXT FROM CURSOR_SCRIPT INTO @SCRIPT
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	EXEC @SCRIPT
    	FETCH NEXT FROM CURSOR_SCRIPT INTO @SCRIPT
    END
    
    CLOSE CURSOR_SCRIPT
    DEALLOCATE CURSOR_SCRIPT

    quinta-feira, 16 de maio de 2013 18:13
    Moderador