有一个存储过程
ALTER PROCEDURE prpTest
(
@SiteName nvarchar(50)
)
as set @SiteName='sohu'update tblSite set SiteName=@SiteName
-----------------------------------------------------------------
我想替换sohu为baidu,如果用Alter要把存储过程重写一次。
请问有没有简单的方法来实现存储过程中sohu为baidu。比如类似repalce函数 
谢谢!

解决方案 »

  1.   

    你既然可以alter存储过程那就可以set @SiteName='baidu'了嘛 
    获取带个参数呗  将baidu 作为一个输入参数就是你的存储过程多个参数
      

  2.   

    这个需求主要是想通过在asp.net页面上提交简短sql语句,实现存储过程的修改。
    谢谢。
      

  3.   

    ALTER PROCEDURE prpTest
    (
      @SiteName nvarchar(50)=NULL
    )
    as  
    update tblSite set SiteName=@SiteName
      

  4.   

    直接在存储过程中改不可以吗?set @SiteName='baidu'。页面中复杂了点
      

  5.   

    楼主想修改存储过程,只能通过修改存储过程的语法来实现,也就是你写的Alter的语句。你想要的类似字符串替换是不存在的。
      

  6.   

    那个存储过程有上千行,如果把整个语句提交过去,太麻烦。有没有办法,页面提交简单语句,实现存储过程修改,比如在某位置增加一条语句。有一个存储过程
    ALTER PROCEDURE prpTest
    (
    @SiteName nvarchar(50)
    )
    as  set @SiteName='sohu'
    --比如想在这里插入 一条语句,update tblLog set UserName='TestUser'
    update tblSite set SiteName=@SiteName
    其它1000多条语句谢谢
      

  7.   

    ALTER PROCEDURE prpTest
    (
    @SiteName nvarchar(50)
    )
    as  set @SiteName='baidu'update tblSite set SiteName=@SiteName这就能实现LZ所问的
      

  8.   

    Ps:如果是为了在页面上出现较少的代码,传输进入替换的字符串和被替换的字符串,在后台完成替换,但是最终执行的更改语句肯定只能是alter。
      

  9.   

    客户增加了需求,需要在N个存储过程中增加一条执行语句。
    而且这种需求还会有。
    所以用alter方式手工修改存储过程不方便,所以考虑用替换语句,或者插入语句的方法。谢谢。
      

  10.   

    说下个人的建议。
    需求发生变化,存储过程需要修改很正常。不清楚楼主未来发生的需求变化是否可控,也就是说,发生的改变是否可以预知,如果可以预知的话,建议对这个存储过程进行优化,使之能够满足未来的需要。或者考虑另外的一种实现方式,把存储过程中会发送变化的部分给独立出来,通过在存储过程中进行调用来将变化的部分模块话,这样再以后的修改中只需要修改会变化的模块即可。楼主说的实现类似字符串的操作的方法那是不可能的,如果可行的话,那就不需要Sql操作语句了。另外解决你的问题的重点,我觉得是让变化可控,这个可能需要你首先找到那些内容以后会发生变化,然后把该部分内容模块化。
      

  11.   

    replace('startsohuend','sohu','baidu')
      

  12.   


    LZ需考虑,若在asp.net页面上能够通过提交SQL语句的方法实现存储过程的修改的话,那与SQL注入有什么区别呢?那存储过程的存在本身功能之一就是为了防止SQL注入,若能实现修改存储过程那岂不是没有安全性可言。随便加一条修改权限的SQL语句不就能够得到网站信息了?!所以说若你没有数据库管理权的话,是无法修改的。