我想写一个存储过程.用来update某个表,把里面的RecId这列的前缀都改变,表是作为参数传入存储过程.原前缀,新前缀都是作为参数传进来例如:
RecId
aa00001
aa00002
aa00003全部改为
bb00001
bb00002
bb00003ALTER PROCEDURE [dbo].[ModifySeq]
@ProTableName varchar(20),
@NewPrefix varchar(5),
@Prefix varchar(5),

ASbegin
exec ('UPDATE '+ @ProTableName + 'set RecId=REPLACE('+@ProTableName+'.RecId '+','+ @Prefix+','+@NewPrefix+')')

END

解决方案 »

  1.   

    exec ('UPDATE '+ @ProTableName + 'set RecId=REPLACE('+@ProTableName+'.RecId '+','''+ @Prefix+''','''+@NewPrefix+''')')
        
      

  2.   

    alter PROCEDURE [dbo].[ModifySeq]
        @ProTableName varchar(20),
        @NewPrefix varchar(5),
        @Prefix varchar(5)
        
    ASbegin        exec ('UPDATE '+ @ProTableName + ' set RecId=REPLACE('+@ProTableName+'.RecId '+','''+ @Prefix+''','''+@NewPrefix+''')')
        
    END
      

  3.   


    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'ModifySeq')
    BEGIN
    DROP PROC ModifySeq
    END
    GO
    CREATE PROCEDURE [dbo].[ModifySeq]
        @ProTableName varchar(20),
        @NewPrefix varchar(5),
        @Prefix varchar(5)
        
    ASbegin    
        EXEC ('UPDATE '+ @ProTableName + ' set RecId=REPLACE('+@ProTableName+'.RecId '+','+ '''' + @Prefix+ '''' + ','+ '''' + @NewPrefix + '''' +')')
        
    ENDGO
      

  4.   

    存储过程没有报错.但调用存储过程的时候报错
    消息 102,级别 15,状态 1,第 1 行
    'RecId' 附近有语法错误。
      

  5.   

    你的SET与'号之间应该有个空格。