1. 程式人生 > >資料庫 SQL Server遊標

資料庫 SQL Server遊標

先建立一個table


程式碼:

<strong>declare cursor1 cursor for         --定義遊標cursor1
select * from dbo.MyTable
open cursor1                             --開啟遊標

fetch next from cursor1             --將遊標向下移動一條

--迴圈,當@@fetch_status不是0時,停止讀取。
while @@fetch_status=0           --判斷是否成功獲取資料
begin
    fetch next from cursor1      --將遊標向下移動一條
end

close cursor1                      --關閉遊標
deallocate cursor1              --釋放資源</strong>


執行結果:


每條資料都有列名等,比較耗費資源。但是當你要一條條的對資料進行操作時,就要用到它了。

比如下面兩個表,mytable.id=mycard.pid時,mytable表中的pay要等於pay加上mycard中的paycard



程式碼如下,執行

declare cursor1 cursor for         --定義遊標cursor1
select pid,paycard from dbo.MyCard  --從MyCard 表中讀取資料

declare @cid int 
declare @cmoney int

open cursor1                       --開啟遊標
fetch next from cursor1 into @cid,@cmoney      

while @@fetch_status=0           --判斷是否成功獲取資料
begin
   update dbo.MyTable set 
[email protected]
where [email protected] fetch next from cursor1 into @cid,@cmoney end close cursor1 --關閉遊標 deallocate cursor1 --釋放資源



查詢mytable中結果如下:


我們可以看到id為1和3 的pay已經變為原先pay加上Mycard中paycard的值了。

下面這個就是迴圈從Yt_Store_StockInTemp 中讀取資料,然後和Yt_Store_Inventory 
中主鍵相同的uCount進行比較,在Yt_Store_Inventory 中不存在的或者數量不足的,設定當前行的isvalid=3


declare cursor1 cursor for         --定義遊標cursor1			
select attachmentCode,objectState,DID ,userId ,uCount, isvalid  from dbo.Yt_Store_StockInTemp 
  where isvalid is null and type=2 and [email protected] 
open cursor1                             --開啟遊標			
		
fetch next from cursor1  into @attachmentCode, @objectState, @DID ,@User ,@uCount,@isvalid        --將遊標向下移動一條			
			
--迴圈,當@@fetch_status不是0時,停止讀取。			
while @@fetch_status=0           --判斷是否成功獲取資料			
begin			
	declare @CountFlg int		
	select @CountFlg=(isnull(uCount,0)[email protected]) from dbo.Yt_Store_Inventory where [email protected] and [email protected] and [email protected] and [email protected] 		
	
	if @CountFlg<0 or (@CountFlg IS NULL)--庫存不足	
	begin	
		update dbo.Yt_Store_StockInTemp set isvalid=3 where current of cursor1
	end	

    fetch next from cursor1 into @attachmentCode, @objectState, @DID ,@User ,@uCount,@isvalid       --將遊標向下移動一條
end			
			
close cursor1                      --關閉遊標			
deallocate cursor1              --釋放資源		


相關推薦

資料庫 SQL Server遊標

先建立一個table 程式碼: <strong>declare cursor1 cursor for --定義遊標cursor1 select * from dbo.M

SQL Server 遊標使用

pri 再次 sta order ext ast lar etime archive 1.聲明遊標 DECLARE 遊標名 CURSOR SELECT語句(註:此處一定是SELECT語句) 2.打開遊標

Sql Server遊標的使用

改變 定位 tsql 變量 主鍵 sde enable 三種 cover Sql Server遊標的使用 一、TSQL和SQL的區別 SQL是Structrued Query Language的縮寫,即結構化查詢語言。1987年,“國際標準化組織(ISO)”把ANSI SQ

sql server 遊標的簡單用法

next bsp eal 用法 while begin varchar var 簡單用法 sql server遊標: --定義遊標 declare cursor1 cursor for select ID,Name from A --打開遊標 open cursor1

SQL Server遊標

數據 關閉 last 所有 dbm server ima str 變量 SQL遊標概念 SQL的遊標是一種臨時的數據庫對象,既可以存放儲存在數據庫表中數據行的副本,也指向數據行的指針。 SQL遊標作用 1.遍歷數據行; 2.保存查詢結果,方便下文調用。概念中提到使用

SQL SERVER 遊標的使用

首先,關於什麼是遊標大家可以看看這篇文章,介紹得非常詳細!! SQL Server基礎之遊標 下面是我自己的應用場景…… 有個需求,需要把資料庫表裡面某一個欄位的值設為隨機不重複的值。 表是這樣的: 這是一個爬蟲抓取網址表。其中 CatchOrder 這一列

SQL Server 遊標的使用示例

Ø  簡介 本文主要記錄 MSSQL 中的遊標使用示例,在有必要時方便借鑑查閱。遊標一般定義在某段功能性的 SQL 語句中,或者儲存過程中。之所以選擇用它,是因為有時候無法使用簡單的 SQL 語句滿足我們需求,比如需要對結果集中的每一條資料,根據不同條件進行不同操作(CRUD),這時我們就可以使用

sql server 遊標循環插入數據

數據 ror emp rom end 打開 lar mes fetch begin   declare @temp varchar(50)   declare @error int   set @error = 0   declare @sysObjectId int  

sql server遊標建立與使用

建立一個遊標,然後遍歷userinfo表的所有資料,列印使用者id和使用者名稱--定義遊標,讓遊標指向sql查詢結果declare demoCursor Cursor for select userName,userId,userAge from userInfo --開啟遊標open demoCursor

資料庫——SQL Server的儲存過程

上一篇部落格總結了許多資料庫常用的SQL語句,今天我們就來看一下SQL的儲存過程。 簡單來說,儲存過程就是一條或者多條sql語句的集合,可視為批處理檔案,但是其作用不僅限於批處理。 本篇主要介紹變數的使用,儲存過程和儲存函式的建立,呼叫,檢視,修改以及刪除操作。上一篇部落格對這一部分內容也有

Hibernate 環境 配置 對映資料庫 SQL server ,Mysql 資料庫 ,測試無誤

最近要消化的知識有點多,多以特地將筆記寫道 部落格中,方便檢視 需要到的hibernate jar 包 ,大家可以自行到官網下載 Hibernate 中 配置 Sqlserver 資料庫 <?xml version="1.0" encoding=

JDBC操作資料庫(SQL server)——建立資料庫程式碼

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Test { static

JDBC操作資料庫(SQL server)——連線資料庫程式碼

import java.sql.*; public class SqlLink { public static void main(String []args) { String userName = "TangHao"; String user

SQL Server遊標語句使用方法

SQL Server遊標語句使用方法 –宣告一個遊標 DECLARE MyCursor CURSOR FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo//定義一個叫MyCursor的遊標,存放for select 後的資料 –開啟

使用JDBC連線資料庫SQL Server 2012

安裝SQL Server 2012之後需要進行的設定 開啟SQL Server配置管理器,點選“SQL Server網路配置”,啟用右側的協議,如下圖所示。 雙擊 TCP/IP,點選“IP地址”,將 IP1 和 IP10 的 IP 地址設定為 127.0.0

SQL Server 遊標運用:滑鼠軌跡字串分割

--滑鼠軌跡字串分割 DECLARE @ID int,@PosSet VARCHAR(2000) DECLARE @splitlen INT DECLARE @split NVARCHAR(10) DECLARE @temp VARCHAR(100) DECLARE @PosSet_x INT

資料庫SQL Server 2014 設定自動備份(維護計劃和作業)

前言     1、SQL Server資料庫自動備份可以有兩種操作          第一種是在SQL控制檯下的伺服器名稱展開,展開“管理”--選擇“維護計劃”,右鍵“新建維護計劃”即可。    

SQL SERVER 遊標迴圈讀取表資料

【cursor】遊標:用於迴圈錶行資料,類似指標 格式如下: declare tempIndex cursor for (select * from table) --定義遊標 open tempIndex --開啟遊標 fetch next from tempIndex into @x --抓

WinForm連線資料庫(SQL Server 2008)

http://www.it165.net/pro/html/201309/7182.html 做窗體就是為了跟資料連線起來,我們做的一切都是在為資料服務!而資料庫就是用來存數資料的。做好了窗體不能只擺在那看看就完事兒了,必須得用起來,必須用資料來測試一下,將指定的資料傳

sql server遊標寫法

--宣告遊標cur_delete_table --Forward_Only:遊標智慧從第一行滾到最後一行 --Read_Only:不能通過遊標對資料進行刪改 declare cursor_1 curso