--重新编译视图,sp_refreshview:刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。
exec sp_refreshview 'V_a'
go--重新编译存储过程,sp_recompile:使存储过程和触发器在下次运行时重新编译。
exec sp_recompile 'P_a'
go除了重新创建函数或手工修改函数外,如何用代码重新编译SQL Server中的用户自定义函数?

解决方案 »

  1.   

    如何用代码重新编译SQL Server中的用户自定义函数?
    需不需要重新编译呀?
      

  2.   

    --当然需要重新编译,执行如下代码就可以看出效果。create table a (f1 int)
    gocreate function fn_a ()  
    returns table
    as
    return (select * from  a)
    goselect * from aselect * from dbo.fn_a()--添加列f2
    alter table a add f2 int
    goselect * from a--这句显示的结果没有f2,需要重新编译
    select * from dbo.fn_a()
    drop table a
    drop function fn_aSQL Server 2000中没有提供这样的系统存储过程,不知道2005中是否有这样的系统功能。可以重新创建,或者手工修改函数。也可以自己写一个存储过程,从系统表中获取数据,重新生成自定义函数。
    但是需要考虑到,函数可能已加密,需要先解密,再处理。
      

  3.   

    函数可以看作特殊的存储过程,也可以用sp_recompile重新编译不过测试了下,不能解决 wangtiecheng(不知不为过,不学就是错!)  举例的问题