--重新编译视图,sp_refreshview:刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。
exec sp_refreshview 'V_a'
go--重新编译存储过程,sp_recompile:使存储过程和触发器在下次运行时重新编译。
exec sp_recompile 'P_a'
go除了重新创建函数或手工修改函数外,如何用代码重新编译SQL Server中的用户自定义函数?
exec sp_refreshview 'V_a'
go--重新编译存储过程,sp_recompile:使存储过程和触发器在下次运行时重新编译。
exec sp_recompile 'P_a'
go除了重新创建函数或手工修改函数外,如何用代码重新编译SQL Server中的用户自定义函数?
需不需要重新编译呀?
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中是否有这样的系统功能。可以重新创建,或者手工修改函数。也可以自己写一个存储过程,从系统表中获取数据,重新生成自定义函数。
但是需要考虑到,函数可能已加密,需要先解密,再处理。