好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表

Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表

熱門標(biāo)簽:地圖標(biāo)注被騙三百怎么辦 北京人工外呼系統(tǒng)價錢 常州電銷外呼系統(tǒng)一般多少錢 福州呼叫中心外呼系統(tǒng)哪家好 沃克斯電梯外呼線路圖 天智外呼系統(tǒng) 房產(chǎn)智能外呼系統(tǒng)品牌 云南語音外呼系統(tǒng)平臺 400電話鄭州申請

游標(biāo)

游標(biāo)(Cursor)是用于查看或者處理結(jié)果集中的數(shù)據(jù)的一種方法。游標(biāo)提供了在結(jié)果集中一次一行或者多行前進(jìn)或向后瀏覽數(shù)據(jù)的能力。

游標(biāo)的使用方式

定義游標(biāo):Declare 游標(biāo)名稱 CURSOR for table;(table也可以是select出來的結(jié)果集)
打開游標(biāo):Open 游標(biāo)名稱;
從結(jié)果集獲取數(shù)據(jù)到變量:fetch 游標(biāo)名稱 into field1,field2;
執(zhí)行語句:執(zhí)行需要處理數(shù)據(jù)的語句
關(guān)閉游標(biāo):Close 游標(biāo)名稱;

BEGIN
  # 聲明自定義變量
  declare c_stgId int;
  declare c_stgName varchar(50);
  # 聲明游標(biāo)結(jié)束變量
  declare done INT DEFAULT 0;

  # 聲明游標(biāo) cr 以及游標(biāo)讀取到結(jié)果集最后的處理方式
  declare cr cursor for select Name,StgId from StgSummary limit 3;
  declare continue handler for not found set done = 1;

  # 打開游標(biāo)
  open cr;

  # 循環(huán)
  readLoop:LOOP
    # 獲取游標(biāo)中值并賦值給變量
    fetch cr into c_stgName,c_stgId;
    # 判斷游標(biāo)是否到底,若到底則退出游標(biāo)
    # 需要注意這個判斷
    IF done = 1 THEN
      LEAVE readLoop; 
    END IF; 
    
      SELECT c_stgName,c_stgId;
    
  END LOOP readLoop;
  -- 關(guān)閉游標(biāo)
  close cr;
END

聲明變量Declare語句注意點:

  • Declare語句通常用來聲明本地變量、游標(biāo)、條件或者h(yuǎn)andler
  • Declare語句只允許出現(xiàn)在BEGIN...END語句中而且必須出現(xiàn)在第一行
  • Declare的順序也有要求,通常是先聲明本地變量,再是游標(biāo),然后是條件和handler

自定義變量命名注意點:

自定義變量的名稱不要和游標(biāo)的結(jié)果集字段名一樣。若相同會出現(xiàn)游標(biāo)給變量賦值無效的情況。

臨時表

臨時表只在當(dāng)前連接可見,當(dāng)關(guān)閉連接時,Mysql會自動刪除表并釋放所有空間。因此在不同的連接中可以創(chuàng)建同名的臨時表,并且操作屬于本連接的臨時表。
與普通創(chuàng)建語句的區(qū)別就是使用 TEMPORARY 關(guān)鍵字

CREATE TEMPORARY TABLE StgSummary(
 Name VARCHAR(50) NOT NULL,
 StgId INT NOT NULL DEFAULT 0
);

臨時表使用限制

  1. 在同一個query語句中,只能查找一次臨時表。同樣在一個存儲過程中也不能多次查詢臨時表。但是不同的臨時表可以在一個query中使用。
  2. 不能用RENAME來重命名一個臨時表,但是可以用ALTER TABLE代替
ALTER TABLE orig_name RENAME new_name;
  • 臨時表使用完以后需要主動Drop掉
DROP TEMPORARY TABLE IF EXISTS StgTempTable;

存儲過程中使用游標(biāo)循環(huán)讀取臨時表數(shù)據(jù)

BEGIN
## 創(chuàng)建臨時表
CREATE TEMPORARY TABLE if not exists StgSummary(
 Name VARCHAR(50) NOT NULL,
 StgId INT NOT NULL DEFAULT 0
);
TRUNCATE TABLE StgSummary;

## 新增臨時表數(shù)據(jù)
INSERT INTO StgSummary(Name,StgId)
select '臨時數(shù)據(jù)',1

BEGIN

# 自定義變量
declare c_stgId int;
declare c_stgName varchar(50);
declare done INT DEFAULT 0;

declare cr cursor for select Name,StgId from StgSummary ORDER BY StgId desc LIMIT 3;
declare continue handler for not found set done = 1;

-- 打開游標(biāo)
open cr;
testLoop:LOOP
	-- 獲取結(jié)果
	fetch cr into c_stgName,c_stgId;
	IF done = 1 THEN
		LEAVE testLoop; 
	END IF; 
	
  
  SELECT c_stgName,c_stgId;
	
END LOOP testLoop;
-- 關(guān)閉游標(biāo)
close cr;

End;
DROP TEMPORARY TABLE IF EXISTS StgSummary;
End;

最開始的時候,先創(chuàng)建臨時表,再定義游標(biāo)。但是存儲過程無論如何都保存不了。直接報錯You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE ...根本原因就是上面提到的注意點(Declare語句只允許出現(xiàn)在BEGIN...END語句中而且必須出現(xiàn)在第一行)。所以最后只能多個加一對BEGIN...END進(jìn)行隔開。

總結(jié)

以前寫SQL Server的存儲過程,沒有仔細(xì)注意過這個問題,定義變量一般都在程序中部,MySQL就想當(dāng)然的隨便寫,最后終于踩坑了。這兩個語法上差別不大,但是真遇到差別還是挺突然的。不過也好久沒有寫SQL語句,有點生疏了啊。還是趕緊把坑給記下來,加深下印象吧。

以上就是Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表的詳細(xì)內(nèi)容,更多關(guān)于MySQL 游標(biāo)循環(huán)讀取臨時表的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解
  • MySQL存儲過程的查詢命令介紹
  • MySQL存儲過程in、out和inout參數(shù)示例和總結(jié)
  • MySQL修改存儲過程的詳細(xì)步驟
  • Mysql修改存儲過程相關(guān)權(quán)限問題
  • MySQL存儲過程的深入講解(in、out、inout)
  • MySQL之存儲過程按月創(chuàng)建表的方法步驟
  • 淺談MySql 視圖、觸發(fā)器以及存儲過程
  • mysql存儲過程之if語句用法實例詳解
  • MySQL 存儲過程的優(yōu)缺點分析

標(biāo)簽:沈陽 珠海 移動 黔東 沈陽 拉薩 徐州 鹽城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表》,本文關(guān)鍵詞  Mysql,存儲,過程中,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 边舌吻吃奶边摸边做的视频| JUL一色桃子人妻秘书流汗| 欧美午夜寂寞影院安卓列表| 91噜噜Av88Av66Av| 国产做爰又粗又大免费看真人视频| 宅男女神电影完整版| 狠狠cao日日穞夜夜穞| 动漫叼嘿视频| 四影虎院院k4hu| 波多野结衣中文字幕久久| 成年女人毛片免费播放人| 被强迫露出两个奶头给男生吃| 91精品久久久久久久久无码变态| aaa一级片| 美女视频黄的免费的| 午夜看看高潮影院-百度-百度| 69影院少妇在线观看| 舔女人逼逼| 污软件app| 欧美精品孕妇无码一区二区色视频| 从替身到白月光| 双性少爷H奶大器粗H漫画| 亚洲AV伊人久久青青草原视色| 日本精品一区二区三本中文| 一级毛片视频在线观看| 久久精品午夜91无码色老头网站| www.色在线| 亚洲AV福利天堂一区二区三| 一边脱一边摸一边亲视频| 色花堂AV欧美一区二区| 性激烈的欧美三级高清电影 | 欧洲女性生殖图片大全| 巜少妇4激情婬乱| 香港激情大尺度电影| 《色戒》汤唯无删减镜头分析 | 亚洲91无码精品一区在线播放| 99热这里精品| 国产精品成人久久久久久久| 强肉乱公妇| 久久久久精品无码观看不卡乐影视 | 亚洲AV一区二区在线紧身裙教师|