不藏私之二,要用快捷键。
不知道大家平时都用不用sql server的快捷键。
但对我来说这太重要了。
当我们在编写存储过程或程序的时候,要想看一个表的内容怎么办。
当我们在编写插入,选择语句的时候,想要得到一个表的字段列表怎么办。
这些最好的办法都是用sql server的快捷键来进行操作。
我介绍一下我常用的这么几个。
1、ctrl + 0 键,我一般都用来查看一个表的内容。
我们在master里建一个存储过程,大致如下。
create procedure sp_select
@tmpstr varchar(200)
as
exec('select * from ' + @tmpstr)
然后在查询分析器里进入自定义中,将ctrl + 0处增加一个sp_select,
加好了之后,我们在查询分析器随便打开一个存储过程,选中一个表名,然后按下
ctrl+0键,看到了吧,会将该表的内容全部显示。
2、ctrl + 9 键,我一般都用来查看一个表的结构。
我们现在已经摆脱了select * 不用*的习惯,但随之而来的将所有的字段列出来会让大家
非常的苦恼。因此,需要将字段全部列出来的东西
用这个
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER procedure sp_getfields
@tablename varchar(20)
as
declare tmpCursor cursor for
select name from syscolumns where id = Object_ID(@tablename)
open tmpCursor
declare @fieldname varchar(50)
declare @sqlstr1 varchar(250)
declare @sqlstr2 varchar(250)
set @fieldname = ''
set @sqlstr1 = ''
set @sqlstr2 = ''
fetch next from tmpCursor into @fieldname
while @@fetch_status = 0
begin
if len(@sqlstr1) < 250 - len(@fieldname)
set @sqlstr1 = @sqlstr1 + @fieldname + ','
else
set @sqlstr2 = @sqlstr2 + @fieldname + ','
fetch next from tmpCursor into @fieldname
end
close tmpCursor
Deallocate tmpCursor
if @sqlstr2 = ''
set @sqlstr1 = left(@sqlstr1, len(@sqlstr1) -1)
else
set @sqlstr2 = left(@sqlstr2, len(@sqlstr2) -1)
select @sqlstr1
if @sqlstr2 <> ''
select @sqlstr2
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
3、ctrl + 8键,搜索哪个存储过程或触发器用了某个表,最简单的就是这了
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
ALTER procedure sp_search
@string varchar(200)
as
select object_name(id) as 名称, text as 内容 from syscomments
where text like '%'+@string+'%'
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
问题点数:0、回复次数:17Top
1 楼icevi(按钮工厂)回复于 2003-07-04 19:51:04 得分 0
嗯,不错。Top
2 楼zosky(刚毕业)回复于 2003-07-04 19:51:24 得分 0
haoTop
3 楼caiyunxia(夏才云)回复于 2003-07-04 19:52:32 得分 0
upTop
4 楼a1n1(阿贵)回复于 2003-07-04 19:57:07 得分 0
好Top
5 楼love4myxsg(不要用怪怪的眼神看我,我是newbie)回复于 2003-07-09 08:19:14 得分 0
“我们在查询分析器随便打开一个存储过程,选中一个表名”
请问这个是什么动作啊?快捷的参数从哪里的到的?
我选中一个表,按下快捷还是会报“务器: 消息 201,级别 16,状态 4,过程 sp_select,行 0
过程 'sp_select' 需要参数 '@tmpstr',但未提供该参数。”Top
6 楼Varchar(可变长字符串)回复于 2003-07-09 08:30:55 得分 0
果然不藏私,谢谢
顺便改一下你的存储过程,用于sql server 2000
ALTER procedure sp_getfields
@tablename varchar(20)
as
declare @sqlstr varchar(3000)
set @sqlstr=''
select @sqlstr=@sqlstr+name+',' from syscolumns where id = Object_ID(@tablename)
if @sqlstr <> ''
set @sqlstr = left(@sqlstr, len(@sqlstr) -1)
print @sqlstr --print可以显示更长的数据
GO
Top
7 楼pengdali()回复于 2003-07-09 09:02:37 得分 0
8cTop
8 楼CoolAbu(阿卜-Never Stop(★★★★))回复于 2003-07-09 09:35:31 得分 0
呵呵,的确不错 ;)Top
9 楼samuelpan(欧乐)回复于 2003-07-09 09:44:22 得分 0
同意,我也常用。Top
10 楼cxz7531(大花猫)回复于 2003-07-09 10:02:12 得分 0
upTop
11 楼fsmei(梅)回复于 2003-07-09 10:14:20 得分 0
收藏Top
12 楼19191919(小楼别筑)回复于 2003-07-09 10:36:57 得分 0
goodTop
13 楼19191919(小楼别筑)回复于 2003-07-09 10:39:51 得分 0
之一在哪?Top
14 楼I_wanttoknow(什么都不懂)回复于 2003-07-09 10:50:02 得分 0
学习,谢楼主Top
15 楼cyliao(.NET)回复于 2003-07-09 11:59:21 得分 0
ctrl+9,出现
服务器: 消息 201,级别 16,状态 4,过程 sp_getfields,行 0
过程 'sp_getfields' 需要参数 '@tablename',但未提供该参数。Top
16 楼tms320c3xx(刀锋)回复于 2003-07-09 14:40:02 得分 0
markTop
17 楼luiss(take it easy)回复于 2003-07-09 15:06:30 得分 0
studyTop



