SQLserver使用臨時表代替遊標遍歷
使用遊標做遍歷操作
DECLARE @AssessThemeID INT
DECLARE @EntityID INT
DECLARE MyCursor CURSOR --定義遊標
FOR
SELECT ContactID,AssessThemes.ID AS AssessThemeID
FROM AssessWorkLoadAudit LEFT JOIN AssessThemes
ON AssessWorkLoadAudit.AssessThemeID=AssessThemes.ID
WHERE AssessThemes.ID IN
(
SELECT ID FROM AssessThemes WHERE YearNum=2016 OR YearNum=2015
)
OPEN MyCursor --開啟遊標
FETCH FROM MyCursor INTO @EntityID,@AssessThemeID --取遊標第一行,將欄位值賦予@EntityID和@AssessThemeID
WHILE(@@FETCH_STATUS=0)
BEGIN
IF(@EntityID IS NOT NULL AND @AssessThemeID IS NOT NULL)
BEGIN
--執行帶參的儲存過程 AnnualSummaryUpdateAssessTabletest
EXEC AnnualSummaryUpdateAssessTabletest @EntityID,@AssessThemeID
END
FETCH FROM MyCursor INTO @EntityID,@AssessThemeID --取遊標的下一行並將欄位值賦予@EntityID和@AssessThemeID
END
CLOSE MyCursor --關閉遊標
DEALLOCATE MyCursor --釋放遊標
使用臨時表做遍歷操作
臨時表:臨時表的名稱以“#”開頭,臨時表儲存在tempdb這個系統資料庫當中
臨時表如何實現遍歷操作?
在根據查詢結果建立臨時表時,在臨時表中加入一列標識列,標識列資料型別為整形,且取值為一個“從1開始以1遞增”的序列
標識列:IDENTITY(INT) AS NewID
指令碼如下:
--建立臨時表#AWLA
SELECT IDENTITY(INT) AS NewID,* INTO #AWLA
FROM (SELECT ContactID,AssessThemes.ID AS AssessThemeID
FROM AssessWorkLoadAudit LEFT JOIN AssessThemes
ON AssessWorkLoadAudit.AssessThemeID=AssessThemes.ID
WHERE AssessThemes.ID IN (SELECT ID FROM AssessThemes WHERE YearNum=2016 OR YearNum=2015)
) AS A
DECLARE @EntityID INT
DECLARE @AssessThemeID INT
DECLARE @NewID INT
DECLARE @RowCount INT
SELECT @NewID=1,@RowCount=MAX(NewID) FROM #AWLA
WHILE @NewID<[email protected]
BEGIN
SELECT @EntityID=ContactID,@AssessThemeID=AssessThemeID FROM #AWLA WHERE [email protected]
EXEC AnnualSummaryUpdateAssessTabletest @EntityID,@AssessThemeID
SET @[email protected]+1
END
--刪除臨時表
DROP TABLE #AWLA
相關推薦
SQLserver使用臨時表代替遊標遍歷
使用遊標做遍歷操作 DECLARE @AssessThemeID INT DECLARE @EntityID INT DECLARE MyCursor CURSOR --定義遊標 FOR
SQL SERVER 建臨時表、迴圈插入資料、遊標遍歷資料庫
create table #tmp (id int) --建立臨時資料表 declare @x int --迴圈插入資料 set @x=1 while @x<=10 begin insert into #tmp values(@x) set @[email&
mysql中利用遊標遍歷表中的資料時未正常獲取資料
問題描述: mysql中利用遊標遍歷表中的資料時未正常獲取資料 問題重現: 建立儲存過程(mysql) 遊標遍歷的表中對應的資料如下 執行儲存過程時卻並未正常獲取資料 問題分析: 儲存過程中變數的定義不要和我們表中的欄位名相同(不區分大小寫),比如上面問題中的表字段為START
Sql Server在儲存過程裡面使用遊標遍歷一個表
這裡關於SqlServer有兩個知識點:一個是使用遊標遍歷表,另一個是使用if not exists的sql語句進行插入。 一、使用遊標遍歷表 這個表可以是資料庫的表,也可以是外面DataTable型別的引數傳進去,使用遊標可以概括為以下步驟:宣告遊標、開啟遊標、讀取
sqlserver儲存過程中利用遊標遍歷結果集簡單示例及查詢資料庫時間
本例項用的是sqlserver2005 在儲存過程中遍歷結果,和查詢資料庫中所有 儲存過程名稱 加以處理以文字形式輸出 原始碼: drop procedure findName create procedure findName--建立一個名為findName的儲存過
「C語言」單鏈表/雙向鏈表的建立/遍歷/插入/刪除
ins lin mon 雙向鏈表 gte aix5 tag cbe ssp MVC%E6%9E%B6%E6%9E%84%E5%AD%A6%E4%B9%A0%E4%B9%8BEasyFirst%E2%80%94%E2%80%94%E5%BF%AB%E7%82%B9%E5%A4
關於checkbox對應一張表時如何遍歷
scrip 代碼 input script text sub val 獲取 type html代碼: <table> <tr> <td><input name=‘one‘ type=‘checkbox‘ valu
Depth First Search(給出臨接表輸出dfs遍歷的順系)
滴答滴答---題目連結 Depth-first search (DFS) follows the strategy to search ”deeper” in the graph whenever possible. In DFS, edges are recursively exp
Oracle 遊標遍歷 顯式遊標 靜態遊標 OPEN v_cur(); WHILE v_cur%FOUND LOOP; LOOP FETCH v_cur INTO v_row
-- Created on 2018/11/6 by YXQ --顯示遊標 & 靜態遊標的處理 declare --定義(遊標一個可以遍歷的結果集) --宣告cursor,建立和命名一個sql工作
js技巧用Map集合代替Array遍歷
很多時候我們在做頁面的時候會遇到這樣的一個情況,我們需要顯示一個下拉框,然後需要把選擇的值傳到後臺,而頁面需要顯示我們選擇的資料項的名稱,我們可能會這樣實現: <!DOCTYPE html>
mysql儲存過程遊標遍歷之while篇
最近業務需要翻閱了很多關於遊標遍歷使用的帖子 總結一下 直接上程式碼吧 IN `bindid_in` char(36) --輸入引數 BEGIN /** 淨值=固定資產原值-累計折舊 累計折舊=月折舊額*已計提月份 月折舊額=(固定資產原價-(固定資產原價*3%的殘值率))/預計使
迴圈單鏈表的建立,遍歷和銷燬
迴圈單鏈表的簡單操作 因為迴圈單鏈表和單鏈表的插入,刪除等操作大同小異 ,因此我只總結了迴圈連結串列的建立,遍歷以及銷燬操作 迴圈連結串列的定義 //定義一個單鏈表 typedef struct LNode { int data; struct LNode* next; }L
【資料結構】圖的基本操作——圖的構造(鄰接矩陣,鄰接表),遍歷(DFS,BFS)
鄰接矩陣實現如下: /* 主題:用鄰接矩陣實現 DFS(遞迴) 與 BFS(非遞迴) 作者:Laugh 語言:C++ ******************************************* 樣例輸出如下: 請選擇圖的型別(a - 無向圖, b - 有向圖):a 請輸入總頂點
單鏈表建立與遍歷
不連續的儲存結構 包含n個節點,每個節點包含資料域和指標域,指標域指向下一個節點 下述連結串列指單鏈表。。 頭結點只有指標域,是整個連結串列入口,相關的遍歷查詢都需要從頭指標開始,頭結點資料域沒有意義為一個隨機值 #include "stdafx.h"#include <stdio.h>
(七)雙鏈表演算法之遍歷
(七)雙鏈表演算法之遍歷 雙鏈表正向遍歷雙鏈表逆向遍歷 雙鏈表正向遍歷 正向遍歷和單鏈表相同,詳情見單鏈表。 1/* 2 *pH : 頭節點 3 *return 返回尾部節點地址 4 */ 5struct nod
查詢MDB中高程點的高程值有0值的圖幅(用遊標遍歷查詢某個欄位的值),並將查到的結果寫入到TXT中
1、 mdbs = arcpy.ListWorkspaces("*","Access") 2、 FeatureClasses = arcpy.ListFeatureClasses() 3、 Fields = arcpy.ListFields(FeatureClass) 4、 cursor =
查找MDB中高程點的高程值有0值的圖幅(用遊標遍歷查找某個字段的值),並將查到的結果寫入到TXT中
name addm open ces pat message back ext put 1、 mdbs = arcpy.ListWorkspaces("*","Access") 2、 FeatureClasses = arcpy.ListFeatureClasses()
圖的鄰接表表示及遍歷
圖也可以用鄰接表表示。各個結點中存放了結點的資訊,並且由一個指標變數,指向第一條邊,第一條變又指向第二條邊,以此類推。圖的鄰接表的程式碼如下: /********************************/ /******圖的鄰接表的建立及遍歷****/ #inclu
鄰接表深度優先遍歷和廣度遍歷
迴圈 佇列標頭檔案:Queue.h #ifndef QUEUE_H #define QUEUE_H #define MAXSIZE 20 typedef struct Node{ int data[MAXSIZE]; int front; int order; }Qu
SQLServer 臨時表的使用
臨時表在Sqlserver資料庫中,是非常重要的,下面就詳細介紹SQL資料庫中臨時表的特點及其使用,僅供參考。臨時表與永久表相似,但臨時表儲存在tempdb中,當不再使用時會自動刪除。臨時表有兩種型別:本地和全域性。它們在名稱、可見性以及可用性上有區別。對於臨時表有如下幾個特