CREATE PROCEDURE [dbo].[AssessList] 
@fn varchar(20),@fnNew varchar(20)
set @sql='if exists(select * from syscolumns where id=object_id(N''Assess'') and name=N'''+@fn+''')
  sp_rename ''Assess.['+@fn+'']','''+@fnNew +''',''column''' 
exec (@sql)

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[AssessList] 
    @fn varchar(20),@fnNew varchar(20)
    as
    declare @sql nvarchar(4000)
    set @sql='if exists(select * from syscolumns where id=object_id(N''Assess'') and name=N'''+@fn+''')
      exec sp_rename ''Assess.'+@fn+''','''+@fnNew +''',''column'''
    exec (@sql)
      

  2.   

    exec sp_rename ''Assess.'+@fn+''','''+@fnNew +''',''column'''
      

  3.   

    CREATE PROCEDURE [dbo].[AssessList] 
    @fn varchar(20),@fnNew varchar(20)
    set @sql='if exists(select * from syscolumns where id=object_id(N''Assess'') and name=N'''+@fn+''')
      sp_rename ''Assess.['+@fn+']'','''+@fnNew +''',''column''' 
    exec (@sql)
      

  4.   


    set @sql='if exists(select * from syscolumns where id=object_id(N''Assess'') and name=N'''+@fn+''')
      sp_rename ''Assess.'+@fn+''','''+@fnNew +''',''column'''
      

  5.   

    Server: Msg 170, Level 15, State 1, Line 2
    Line 2: Incorrect syntax near 'sp_rename'.
      

  6.   

    这么写,我测试过的,OK。CREATE PROCEDURE [dbo].[AssessList] 
    @fn varchar(20),@fnNew varchar(20)
    AS
    Declare @sql Varchar(8000)
    set @sql='if exists(select * from syscolumns where id=object_id(N''Assess'') and name=N'''+@fn+''')
      exec sp_rename ''Assess.'+@fn+''','''+@fnNew +''',''column''' 
    exec (@sql)
    GO
      

  7.   

    exec ,sp_rename 使用字符串,两者缺1不可.