CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

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

楼主qiubolecn(来自差生市)2003-07-04 19:33:40 在 MS-SQL Server / 基础类 提问

不知道大家平时都用不用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

相关问题

  • 如何调出隐藏菜单快捷键
  • 快捷键!
  • 快捷键
  • 菜单快捷键
  • 快捷键问题
  • 有关快捷键
  • 快捷键问题??
  • 设置快捷键!
  • 定义快捷键???????????????????????
  • 快捷键问题!

关键词

  • 存储过程
  • 分析器
  • 字段
  • 查询
  • 内容
  • sqlstr
  • 快捷键
  • 表
  • tmpcursor
  • 参数

得分解答快速导航

  • 帖主:qiubolecn

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo