处理的数据 CREATE TABLE tb(col1 varchar(10),col2 int) INSERT tb SELECT 'a',1 union ALL SELECT 'a',2 union ALL SELECT 'b',1 union ALL SELECT 'b',2 union ALL SELECT 'b',3 合并处理 SELECT col1,col2=CAST(col2 as varchar(100)) INTO #t FROM tb ORDER BY col1,col2 DE…
-- 创建临时表 IF OBJECT_ID('tempdb.dbo.#temprecord','U') IS NOT NULL DROP TABLE dbo.#temprecord; GO SELECT Id INTO dbo.#temprecord FROM dbo.t_BaiduIncludedRecord DECLARE @Id Int WHILE EXISTS(SELECT Id FROM dbo.#temprecord) BEGIN -- 也可以使用top 1 --逻辑处理 SELEC…
前阵子遇到一个案例:一个同事说以前一个运行很正常的包,突然间比以前慢了很多,执行时间非常长,晚上的作业调用这个包跑了几个小时也没有跑出数据.于是我在跟踪.优化过程中定位到包中一个存储过程的一段SQL,我将原SQL简化了一下(对应的表名.函数全都随机取名替换掉),大体如下所示,在一个游标中,循环更新表TMP_JO_ORDERS, 其中需要通过函数获取一些值,这些值用来更新目标表的字段值 FOR CUR_JO IN (SELECT JOB_ORDER_NO FROM TMP_JO_ORDERS WH…
在SQL SERVER 2005/2008中,如果将有序的记录插入临时表,则从临时表查询出来的记录是有序的(不依赖ORDER BY也是有序状态),但是从SQL SERVER 2012开始,即使插入的记录集有序,查询出来的结果变成无序了.需要依赖ORDER BY来或得到一个有序结果.例如下面例子: SELECT * INTO #tables FROM sys.tables ORDER BY name; SELECT * FROM #tables; 如上所示,SQL SERVER 2014则是无…
今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言一样,提供了While.For等循环,我们建几个例子来说明演示下. 首先是While循环: --while循环 procedure loop_while ( start_value in number, end_value in number ) is current_value number := star…
本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor ; --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE dbo.MemberAccount SE…
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/表分区 概述 在很多业务场景下我们需要对一些记录量比较大的表进行分区,同时为了保证性能需要将一些旧的数据进行归档.在分区表很多的情况下如果每一次归档都需要人工干预的话工程量是比较大的而且也容易发生纰漏.接下来分享一个自己编写的自动归档分区数据的脚本,原理是分区表和归档表使用相同的分区方案,循环利用当前的文件组. 一.创建测试数据 ----01创建文件组 USE [master] GO ALTER DATABASE [chenm…
[cursor]游标:用于循环表行数据,类似指针 格式如下: declare tempIndex cursor for (select * from table) --定义游标 open tempIndex --打开游标 fetch next from tempIndex into @x --抓取下一行数据给变量 --0表示抓取成功,1表示抓取失败,2表示不存在抓取行 begin --sql 语句 end close tempIndex --关闭游标 deallocate tempIndex -…