不藏私之二,要用快捷键。

qiubolecn 2003-07-04 07:33:40
不知道大家平时都用不用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


...全文
48 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyliao 2003-07-09
  • 打赏
  • 举报
回复
ctrl+9,出现
服务器: 消息 201,级别 16,状态 4,过程 sp_getfields,行 0
过程 'sp_getfields' 需要参数 '@tablename',但未提供该参数。
I_wanttoknow 2003-07-09
  • 打赏
  • 举报
回复
学习,谢楼主
19191919 2003-07-09
  • 打赏
  • 举报
回复
之一在哪?
19191919 2003-07-09
  • 打赏
  • 举报
回复
good
fsmei 2003-07-09
  • 打赏
  • 举报
回复
收藏
cxz7531 2003-07-09
  • 打赏
  • 举报
回复
up
samuelpan 2003-07-09
  • 打赏
  • 举报
回复
同意,我也常用。
CoolAbu 2003-07-09
  • 打赏
  • 举报
回复
呵呵,的确不错 ;)
pengdali 2003-07-09
  • 打赏
  • 举报
回复
8c
Varchar 2003-07-09
  • 打赏
  • 举报
回复
果然不藏私,谢谢
顺便改一下你的存储过程,用于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
love4myxsg 2003-07-09
  • 打赏
  • 举报
回复
“我们在查询分析器随便打开一个存储过程,选中一个表名”

请问这个是什么动作啊?快捷的参数从哪里的到的?
我选中一个表,按下快捷还是会报“务器: 消息 201,级别 16,状态 4,过程 sp_select,行 0
过程 'sp_select' 需要参数 '@tmpstr',但未提供该参数。”
luiss 2003-07-09
  • 打赏
  • 举报
回复
study
tms320c3xx 2003-07-09
  • 打赏
  • 举报
回复
mark
a1n1 2003-07-04
  • 打赏
  • 举报
回复
caiyunxia 2003-07-04
  • 打赏
  • 举报
回复
up
zosky 2003-07-04
  • 打赏
  • 举报
回复
hao
icevi 2003-07-04
  • 打赏
  • 举报
回复
嗯,不错。

34,577

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧