sql编译与重编译
sql编译与重编译
1.sp_recompile
使存储过程和触发器在下次运行时重新编译。
2.sp_refreshview
如果视图所依赖的基础对象发生更改(如:表增加了一个字段),则视图不会自动更新,这时需要调用该存储过程来对视图进行刷新。有人说,重新打开一下视图就可以更新视图,但我试了没有成功。
例1:刷新指定名称的视图
sp_refreshview 'v_tblItem'
例2:刷新整个数据库中的所有视图
CREATE PROCEDURE [dbo].[_Proc_CheckView](
@IsDelete bit=0 --是否要删除无效的视图
)
AS
BEGIN
DECLARE @vName sysname ;
DECLARE @ErrorMessage nvarchar(200);
DECLARE @count int;
SET @count=0;
DECLARE @ErrorCount int;
SET @ErrorCount=0;
CREATE TABLE #temp(
ViewName nvarchar(776)
)
DECLARE refresh_cursor CURSOR FOR
SELECT Name from sysobjects
WHERE xtype = 'V'
AND category=0
order by crdate
FOR READ ONLY
OPEN refresh_cursor
FETCH NEXT from refresh_cursor
INTO @vName
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN try
exec sys.sp_refreshview @vName
END try
BEGIN catch
insert into #temp(ViewName)
&n
相关文档:
create table #a
(
a int identity(1,1) primary key,
b int default(0) not null,
c nvarchar(20)
)
insert into #a(c)
select 'a' union all
select 'b' union all
select 'c' union all
select 'd' union all
select 'e'
select * from #a
alter table #a drop constraint DF__#a_____________b__12 ......
SQLServer和Oracle是大家经常用到的数据库,在此感谢作者总结出这些常用函数以供大家参考。
数学函数:
1.绝对值
S:SELECT abs(-1) value
O:SELECT abs(-1) value from dual
2.取整(大)
S:SELECT ceiling(-1.001) value
O:SELECT ceil(-1.001) value from dual
3.取整(小) ......
ORDER BY 排序
ASC 升序(默认)
DESC 降序
select * from s_emp order by dept_id , salary desc
部门号升序,工资降序
关键字distinct也会触发排序操作。
select * from employee order by 1; //按第一字段排序
NULL被认为无穷大。order by 可以跟别名。
select table_name ......
在某些场合下,存储过程或触发器里的SQL语句需要动态生成。Oracle的DBMS_SQL包可以用来执行动态SQL语句。本文通过一个简单的例子来展示如何利用DBMS_SQL包执行动态SQL语句:
DECLARE
v_cursor NUMBER;
v_stat NUMBER;
& ......