To :csdn3ks(3ks)  
 
 大哥我有3030个表,太累了。我开局时曾改过一天一晚哪!!!
给个SQL SERVER 7.0的语句吧!!!

解决方案 »

  1.   

    real类型的数据,如:23.03463435怎样变成numeric类型的23.03呢???
      

  2.   

    按文本方式导入数据是,BCP不工作???
      

  3.   

    还是要用ALTER TABLE 
    你可以先update 一下你的数据:update qww
    set Fee1=cast(Fee1 as numeric(18,2)
    goALTER TABLE ALTER COLUMN Fee1 nymeric(18,2) 
    go
      

  4.   

    早一段時間,我帖過一張帖子,講的是用MS一個未公開的Stored procedure來殺掉一個Database中的所有table,我想你可以借用一下,稍稍修改一下語句,就可以把所有的table結構一次性的做掉。
      

  5.   

    1、生成你的数据库脚本,并用它创建一个新数据库用替换功能
    2、将real替换成Numeric(12,2)
    3、用数据import/export功能将原来的数据导入到新的数据库中,仅导入数据
    新的数据库就是完成修改的功能后的数据库。
    试试吧。
      

  6.   

    TO:: 一劍飄香
     “
    SP_MsForEachTable ”
    的具体语句怎么样写?
    您是高手请指教!!
     
     
      

  7.   

    Numeric(18,2)是浪费,一般Numeric(12,2足够了)
      

  8.   

    to 513qww() ,
       唉~~~年事已高,年代久遠,忘記怎麼用了,呵呵:D語法挺複雜的,我先查查看那張帖子在不在了再說。
      

  9.   

    寫一句先熱熱身:)
    Exec sp_msforeachtable "Select * From ? " ,"?"整個SP的內容如下,俺沒時間去研究Text                                                                                                                                                                                                                                                            
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- create proc sp_MSforeachtable
    @command1 nvarchar(2000), @replacechar nchar(1) = N'?', @command2 nvarchar(2000) = null,
       @command3 nvarchar(2000) = null, @whereand nvarchar(2000) = null,
    @precommand nvarchar(2000) = null, @postcommand nvarchar(2000) = null
    as
    /* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to its own result set */
    /* @precommand and @postcommand may be used to force a single result set via a temp table. */ /* Preprocessor won't replace within quotes so have to use str(). */
    declare @mscat nvarchar(12)
    select @mscat = ltrim(str(convert(int, 0x0002))) if (@precommand is not null)
    exec(@precommand) /* Create the select */
       exec(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' + REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '
             + N' where OBJECTPROPERTY(o.id, N''IsUserTable'') = 1 ' + N' and o.category & ' + @mscat + N' = 0 '
             + @whereand)
    declare @retval int
    select @retval = @@error
    if (@retval = 0)
    exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3 if (@retval = 0 and @postcommand is not null)
    exec(@postcommand) return @retval
      

  10.   

    经过验证:
    ***扬帆破浪***大侠的语句十分好使!!!应该写成:
    update qww
    set Fee1=cast(Fee1 as numeric(18,2))
    goALTER TABLE ALTER COLUMN Fee1 numeric(18,2) 
    go一劍飄香兄的sp_msforeachtable 语法验证通过,但没什么作用?
    请一劍飄香兄再指点指点!!!
    谢谢各位大侠了!!!
      

  11.   

    附加问题:可否同时在数据库中修改多个表中的REAL字段呢?!!一劍飄香兄,扬帆破浪兄真乃高手中的高手!!!!我会向你们学习的!!!