Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    MSSQL - cambiare nullable di tutti i campi di una tabella

    Ho clonato una tabella con millemila campi, ora però ho bisogno di poter inserire dei valori null nei campi suddetti.
    Vorrei fare una query che cicla su tutte le colonne della mia tabella ed esegue l'alter column.... ma la triste verità è che non son capace
    Qualche ninjaSQL mi aiuta?
    Grazie
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Quote Originariamente inviata da supermac Visualizza il messaggio
    Ho clonato una tabella con millemila campi, ora però ho bisogno di poter inserire dei valori null nei campi suddetti.
    Vorrei fare una query che cicla su tutte le colonne della mia tabella ed esegue l'alter column....
    ciao,
    vado a memoria per cui non prendere tutto per oro colato


    codice:
    select 
       'alter table TUATAB alter column '  + column_name +
        '  ' + data_type + 
    case data_type 
      when  'int'  then ''
      when  'varchar'  then ' ( ' + ' non mi ricordo il nome del campo ' + ' ) '
      etc...
    end 
      + ' null ;' 
    from information_schema.columns
    where table_name='TUATAB'
    esegui e copi/incolli in ssms

    HTH
    Ultima modifica di sspintux; 20-02-2016 a 13:54 Motivo: mancava il tipo del dato

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Scusami sono stato intrippato con mille cose.
    Grazie mille, è ok funziona, così mi creo un recordset con le stringhe di 'alter table...'
    Ho modificato lo script in modo da escludere le chiavi sennò mmi avrebbe generato errore, è diventato così:
    codice:
    select 
       'alter table miatabella alter column '  + column_name +
        '  ' + data_type + 
                case data_type 
                 when 'datetime' then ''
                 when 'float' then ''
                 when 'int'  then ''
                 when 'money' then ''
                 when 'smallint' then ''
                 when 'timestamp' then ''
                 when 'varchar'  then '(' + convert(varchar,(CHARACTER_MAXIMUM_LENGTH)) + ' ) '
                end 
      + ' NULL' 
    from information_schema.columns
    where table_name='miatabella' 
    and column_name not in (select column_name 
                            from information_schema.KEY_COLUMN_USAGE
                            where  table_name='miatabella')
    Ora ancora più difficile:
    c'è modo di dire a sql di ciclare su questi record e di eseguire le stringhe che vi trova dentro?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  4. #4
    Quote Originariamente inviata da supermac Visualizza il messaggio
    ...
    c'è modo di dire a sql di ciclare su questi record e di eseguire le stringhe che vi trova dentro?
    Si, con un cursore (OPEN CURSOR FETCH) ed EXEC oppure SP_EXECUTESQL
    (cerca le parole in maiuscolo e troverai esempi).

    Per curiosità
    ... ma devi fare una procedura ripetibile o il copia incolla
    del risultato della query ti sembra troppo facile

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.