数据库游标结合临时表的使用

原创 2008年09月28日 11:35:00

一、创建临时表定义相关的变量:
        CREATE TABLE #tempTable      --创建临时表
        (
            MainTradeCode int,
            SubTradeCode int,
             SubTradeName varchar(50)
        )
         DECLARE @keyword varchar(200)
         DECLARE @SearchCount int
二、创建游标:
         DECLARE keywordCur CURSOR local FOR
         SELECT TOP 8 count(*) AS SearchCount,keyword
         FROM KeywordBySearch
         WHERE InfoType='sell'
         GROUP BY KeywordBySearch.keyword
        ORDER BY SearchCount DESC
三、打开游标获得数据并往临时表中插入数据:
         OPEN keywordCur
         FETCH NEXT FROM keywordCur INTO @SearchCount,@keyword
 
  WHILE @@FETCH_STATUS=0
     BEGIN
      INSERT INTO #tempTable
      SELECT TOP 1 sd.TradeCode AS MainTradeCode,SubTrade AS SubTradeCode,
      (SELECT SubTrades.TradeName FROM SubTrades WHERE SubTrades.TradeCode=sd.SubTrade) AS SubTradeName
      FROM SupplyDemand sd
      WHERE Keywords LIKE '%'+ @keyword +'%'
      ORDER BY sd.SdId desc
      FETCH NEXT FROM keywordCur INTO @SearchCount,@keyword
     END
四、删除游标、返回临时表数据和删除临时表:
        CLOSE keywordCur
        DEALLOCATE keywordCur
        SELECT * FROM #tempTable
        DROP TABLE #tempTable

由于游标比较耗性能,在大量数据的场合不太适合使用游标.
可用同样的方法操作游标和用户表

mysql 存储过程临时表代替游标

BEGIN DECLARE maxCnt INT DEFAULT 0; DECLARE i INT DEFAULT 0; DECLARE tId BIGINT DEFAULT 0; DECLARE...
  • Heng_Ji
  • Heng_Ji
  • 2014年07月22日 18:40
  • 1343

SQL之游标和临时表

今天使用了游标来进行两个表之间的数据比较,并用临时表记录。做个记录以便使用。。 DECLARE @id int, @name varchar(50), @sex varchar(50), ...
  • u014369410
  • u014369410
  • 2015年04月30日 16:46
  • 265

sql server 使用循环和临时表处理数据 而不用游标

declare @thismonth datetime;--本月第一秒 SELECT @thismonth=Convert(datetime, CONVERT(nvarchar(10),dateadd...
  • hejisan
  • hejisan
  • 2017年06月28日 21:40
  • 287

临时表和游标的使用小总结

最近使用Db的机会比较多,现做了一些小总结: 临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 临时表有局部和全局两种类型   2者比较: 局部临时表的名称以符号 (#)...
  • CQP
  • CQP
  • 2006年09月01日 00:00
  • 1601

游标的结果集放入临时表

/**** 将游标遍历的结果集放入临时表中,最后读取临时表 ****/ CREATE  PROCEDURE [dbo].[cc] AS DECLARE @sql VARCHAR(40...
  • zzqw199012
  • zzqw199012
  • 2014年05月04日 15:46
  • 1745

SQL SERVER 建临时表、循环插入数据、游标遍历数据库

SQL SERVER 建临时表、循环插入数据、游标遍历数据库
  • jyh_jack
  • jyh_jack
  • 2015年09月18日 18:28
  • 2563

sqlserver临时表或表变量代替游标

为什么要用游标呢?数据量超过1万,游标就很慢了。 在很多场合,用临时表或表变量也可以替代游标 临时表用在表没有标识列(int)的情况下. 在表有标识列(int)的情况下可以用表变量,当然也可...
  • liangweiwei130
  • liangweiwei130
  • 2011年08月18日 14:14
  • 5088

Mysql存储过程优化——使用临时表代替游标

Mysql游标在操作小数据量时比较方便,效率可观,但操作大数据量,速度比较慢,甚至直接产生系统错误。   一般说来,当操作的数据超过1万条时,就避免用游标吧。   为了测试游标...
  • Heng_Ji
  • Heng_Ji
  • 2014年07月22日 17:35
  • 5915

临时表和游标区别

i。临时表 临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 临时表有局部和全局两种类型 2者比较: 局部临时表的名称以符号 (#) 打头 仅对当前的用户连接是可见的 当...
  • tochenjie
  • tochenjie
  • 2005年05月26日 16:53
  • 613

临时表和游标,选择哪个?

在写存储过程时,最常用到的就是临时表和游标了 把自己的心得写下来,mark一下:1. 如果这个存储过程,会被大量并发调用,那么尽量不要使用游标2. 如果非要使用,游标声明和被释放之间,不要太复杂,也就...
  • vilawei
  • vilawei
  • 2009年03月27日 15:22
  • 106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库游标结合临时表的使用
举报原因:
原因补充:

(最多只允许输入30个字)