当一个数据库中有很多存储过程,然而你想快速的查看某个存储过程的内容,该怎么办呢,一段SQL就可以了,如下:
SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id = obj.ID
WHERE sc.TEXT LIKE '%存储过程的名字%'
判断数据表或临时表是否存在,如下:
--数据表是否存在:(把SQL中的[表名]替换成你要判断的表名)
IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[表名]') AND OBJECTPROPERTY(ID, 'IsTable') = 1)
PRINT '存在'
--临时表是否存在:(把SQL中的#TEMP_TBL替换成你要判断的临时表名)
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#TEMP_TBL') and type='U')
PRINT '存在'
向已存在或者不存在目标表插入数据结果,如下:
一:如果要插入目标表不存在:
select * into 目标表 from 表 where ...
--如果你只想到目标表的表结构不要数据,可以这样写:
select * into 目标表 from 表 where 1=2
二:如果要插入目标表已经存在:
insert into 目的表 select * from 表 where 条件
存储过程中快速获取一个select的行数,如下:
--之前我会这样写
SELECT * FROM 表
SET @count = COUNT(*) FROM 表
--现在用@@ROWCOUNT,数据库中自带的全局变量
SELECT * FROM 表
SET @count = @@ROWCOUNT
修改数据表列类型,如下:
alter table 表名 alter column 列名 类型;
例如:
alter table [User] alter column [UserName] Nvarchar(100);
添加一列,如下:
alter table 表名 add 列名 类型;
例如:
alter table [User] add [UserName] Nvarchar(100);
表里有自增列时,清空表数据让ID从1开始自增,如下:
truncate table 表名
就这几个还不算大全,哈哈哈,以后碰到会慢慢更新的!!!