SQL Server遍歷表中記錄的2種方法(使用表變量和游
導讀:1建站知識遍歷表一般都要用到游標在SQL Server中可以很容易的用游標實現循環實現遍歷表中記錄,本文將介紹使用表變量和游標實網站seo優化診斷工具網站建設多少錢。
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 ( Sseo網站優化軟件ELECT [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 = [Nam如何seo優化推廣網站e] 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:----網站seo優化課程' + @tempName END CLOSE test_Cursor DEALLOCATE test_Cursor
相關網站seo優化診斷工具網站建設多少錢。聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章SQL Server遍歷表中記錄的2種方法(使用表變量和游主要講述游標,遍歷,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6100.html