9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

使用表变量和游标【9159金沙游艺场】

日期:2020-03-13编辑作者:办公软件

SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录。本文将介绍利用使用表变量和游标实现数据库中表的遍历。 表变量来实现表的遍历 以下代码中,代码块之间的差异已经用灰色的背景标记。 复制代码 代码如下: DECLARE @temp TABLE ( [id] INT IDENTITY(1, 1) , [Name] VARCHAR(10) ) DECLARE @tempId INT , @tempName VARCHAR(10) INSERT INTO @temp VALUES ( 'a' ) INSERT INTO @temp VALUES ( 'b' ) INSERT INTO @temp VALUES ( 'c' ) INSERT INTO @temp VALUES ( 'd' ) INSERT INTO @temp VALUES ( 'e' ) WHILE EXISTS ( SELECT [id] FROM @temp ) BEGIN SET ROWCOUNT 1 SELECT @tempId = [id] , @tempName = [Name] FROM @temp SET ROWCOUNT 0 --delete from @temp where [id] = @tempId PRINT 'Name:----' + @tempName END 但是这种方法,必须借助ROWCOUNT。但是使用 SET ROWCOUNT 将可能会影响 DELETE、INSERT 和 UPDATE 语句。 所以修改上面WHILE循环,改用TOP来选出首条记录。 复制代码 代码如下: WHILE EXISTS ( SELECT [id] FROM @temp ) BEGIN SELECT TOP 1 @tempId = [id] , @tempName = [Name] FROM @temp DELETE FROM @temp WHERE [id] = @tempId SELECT * FROM @temp EXEC('drop table '+) PRINT 'Name:----' + @tempName END 这种方法也存在一个问题,需要将遍历过的行删除,事实上,我们在实际应用中可能并不想要遍历完一行就删除一行。 利用游标来遍历表 游标是非常邪恶的一种存在,使用游标经常会比使用面向集合的方法慢2-3倍,当游标定义在大数据量时,这个比例还会增加。如果可能,尽量使用while,子查询,临时表,函数,表变量等来替代游标,记住,游标永远只是你最后无奈之下的选择,而不是首选。 复制代码 代码如下: --定义表变量 DECLARE @temp TABLE ( [id] INT IDENTITY(1, 1) , [Name] VARCHAR(10) ) DECLARE @tempId INT , @tempName VARCHAR(10) DECLARE test_Cursor CURSOR LOCAL FOR SELECT [id],[name] FROM @temp --插入数据值 INSERT INTO @temp VALUES ( 'a' ) INSERT INTO @temp VALUES ( 'b' ) INSERT INTO @temp VALUES ( 'c' ) INSERT INTO @temp VALUES ( 'd' ) INSERT INTO @temp VALUES ( 'e' ) --打开游标 OPEN test_Cursor WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM test_Cursor INTO @tempId,@tempname PRINT 'Name:----' + @tempName END CLOSE test_Cursor DEALLOCATE test_Cursor

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于办公软件,转载请注明出处:使用表变量和游标【9159金沙游艺场】

关键词:

一条select语句引起的瓶颈问题思考

情境还原:公司一品种新上线,刚上线的第2天,在后台开采数据库服务器与IIS服务器的网络IO现身瓶颈,1GB的互连网...

详细>>

server创建复合主键的2种方法

创建复合主键: 方法一:创建表之后,alter table table_name add primarykey(字段1,字段2) 方法二:CREATE TABLE 表名 (字段名...

详细>>

Server备份与还原到云工作原理及操作方法【9159金

除了硬盘和磁带,今后你能够运用 SQL Server 的本机备份功效来备份您的 SQLServer Database到 Windows AzureBlob 存款和储蓄服务...

详细>>

入门语句总结

对于数据库来说多多少少要掌握一点,首先基本的SQL语句要了解。下面来总结一些入门级别的SQL语句。 create相关 sh...

详细>>