• Here's some code I did for a data-driven conversion in SQL 2005. It should work for SQL 2000, but you won't need the section for the varchar(max).

    First the stored proc:

    create proc up_add_field_to_NCEM43_Data

    @fld_name nvarchar(30), @fld_size int, @fld_type varchar(30)

    as

    begin

    declare @sqlbuff nvarchar(255)

    if (substring(@fld_name,1,1) = '$')

    select @fld_name = substring(@fld_name,2,datalength(@fld_name)-1)

    if (@fld_size > 8000)

    begin

    set @sqlbuff = 'Alter table NCEM43_Data '

    + 'add ['

    + @fld_name

    + '] '

    + @fld_type

    + '(max) NULL'

    end

    else

    begin

    set @sqlbuff = 'Alter table NCEM43_Data '

    + 'add ['

    + @fld_name

    + '] '

    + @fld_type

    + '('

    + convert(varchar(4),@fld_size)

    + ') NULL'

    end

    print @sqlbuff

    exec (@sqlbuff)

    if (@@error != 0)

    return -1

    else

    return 0

    end

    go

    Then some calling code:

    declare @error_countint

    DECLARE @retstatint

    declare @fld_namenvarchar(30)

    execute @retstat = up_add_field_to_NCEM43_Data @fld_name, 255, 'nvarchar'

    if (@retstat != 0)

    begin

    set @error_count = 1 + @error_count

    end

    Of course you still will have the challenge of updating a column. My solution was to also put the update statement into a stored procedure much like the first one.

    Good luck!

    Beth Richards
    Sybase, Oracle and MSSQL DBA