CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

关于sql server临时表的应用

楼主wswuyi(wswuyi)2005-12-28 14:18:56 在 MS-SQL Server / 疑难问题 提问

大家看我下面的存储过程,有兴趣一起讨论一下:  
   
  CREATE   PROCEDURE   dbo.Pub_GetPageData  
          @tblName       varchar(255),               --   表名  
          @strGetFields   varchar(1000)         --   需要返回的列    
  as    
    declare   @strSQL       nvarchar(4000)               --   主语句  
   
  declare   @strTmp       varchar(110)                 --   临时变量  
   
    Set   @strSQL   =   'select   IDENTITY(int,   1,1)   AS   ID_Num,*     into   #MyTempTable   from     emp_vBasicinfobrowse   order   by     nid   asc'  
   
    exec   @strSql  
   
      select   *   from   #MyTempTable  
  GO  
   
  如果写成上面的那样,调用是提示   找不到   #MyTempTable  
   
  CREATE   PROCEDURE   dbo.qq  
          @tblName       varchar(255),               --   表名  
          @strGetFields   varchar(1000)         --   需要返回的列    
  as    
    declare   @strSQL       nvarchar(4000)               --   主语句  
   
  declare   @strTmp       varchar(110)                 --   临时变量  
   
    --Set   @strSQL   =   'select   IDENTITY(int,   1,1)   AS   ID_Num,*     into   #MyTempTable   from     emp_vBasicinfobrowse   order   by     nid   asc'  
   
    --exec   @strSql  
  select   IDENTITY(int,   1,1)   AS   ID_Num,*     into   #MyTempTable   from     emp_vBasicinfobrowse   order   by     nid   asc  
      select   *   from   #MyTempTable  
  GO  
   
  写成上面这样就ok,请问各位碰到这样的情况没,是怎么做的,希望能得到你的帮助,在线等。。。。 问题点数:50、回复次数:7Top

1 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-28 14:26:53 得分 50

要么使用你第二种方法,要么像下面改一下第一种  
   
  CREATE   PROCEDURE   dbo.Pub_GetPageData  
          @tblName       varchar(255),               --   表名  
          @strGetFields   varchar(1000)         --   需要返回的列    
  as    
    declare   @strSQL       nvarchar(4000)               --   主语句  
   
  declare   @strTmp       varchar(110)                 --   临时变量  
   
    Set   @strSQL   =   'select   IDENTITY(int,   1,1)   AS   ID_Num,*     into   #MyTempTable   from     emp_vBasicinfobrowse   order   by     nid   asc'  
   
    exec   @strSql   +   '   select   *   from   #MyTempTable'  
       
  GOTop

2 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-28 14:29:34 得分 0

最后一句应该带()  
   
  exec   (@strSql   +   '   select   *   from   #MyTempTable')Top

3 楼lsqkeke(可可)回复于 2005-12-28 14:30:34 得分 0

我试了下楼主说的情况,在执行动态SQL语句中有领时表时,提示找不到该对象!  
   
  Top

4 楼lsqkeke(可可)回复于 2005-12-28 14:33:09 得分 0

我也想知道原因,楼上说的是可以执行成功的!  
  退出来怎么就不可了呢?Top

5 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-28 14:38:58 得分 0

动态语句创建的临时表,在执行完后系统就自动清除了,  
  可以在exec语句中创建,并selectTop

6 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-28 14:43:34 得分 0

declare   @num   int,   @sql   nvarchar(4000),   @tbName   varchar(100)  
  set   @tbName='tb'  
   
  set   @sql='select   @a=count(*)   from   dbo.sysobjects   where   id   =   object_id(N''[dbo].['   +   @tbName   +   ']'')   and   OBJECTPROPERTY(id,   N''IsUserTable'')   =   1'    
  exec   sp_executesql   @sql,N'@a   int   output',@num   output    
   
  if     @num=1  
  print   '存在表'  
  else    
  print   '不存在'  
   
  Top

7 楼rouqu(石林#黄果树)回复于 2005-12-28 15:03:26 得分 0

CREATE   PROCEDURE   dbo.Pub_GetPageData  
          @tblName       varchar(255),               --   表名  
          @strGetFields   varchar(1000)         --   需要返回的列    
  as    
    declare   @strSQL       nvarchar(4000)               --   主语句  
   
  declare   @strTmp       varchar(110)                 --   临时变量  
   
    Set   @strSQL   =   'select   IDENTITY(int,   1,1)   AS   ID_Num,*     into   #MyTempTable   from     emp_vBasicinfobrowse   order   by     nid   asc'  
   
    Set   @strSql   =   @strSql   +   '   select   *   from   #MyTempTable'    
  exec   @strSql  
   
  GO  
   
  Top

相关问题

  • Sql Server中怎么利用临时表
  • 在SQL SERVER 里怎样建临时表?
  • 如何删除临时表(SQL Server)
  • sql server临时表的问题
  • 请问SQL Server 中临时表是什么是消失的?
  • 关于临时表的问题,请各位帮忙。(SQL SERVER 7.0)
  • 关于临时表的问题,请各位帮忙(SQL SERVER 7.0)。
  • 如何在sql server 7 中 declare一个临时表?
  • 怎样在SQL Server存储过程中使用临时表?
  • 同时读取多个SQL SERVER临时表的问题

关键词

  • 语句
  • 执行
  • vbasicinfobrowse
  • strsql
  • mytemptable
  • 临时变量
  • varchar
  • getpagedata
  • strgetfields
  • tblname

得分解答快速导航

  • 帖主:wswuyi
  • wangtiecheng

相关链接

  • SQL Server类图书

广告也精彩

反馈

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