1. 程式人生 > >mysql儲存過程 遊標使用

mysql儲存過程 遊標使用

1.什麼是遊標

需求:編寫儲存過程,使用遊標,把uid為偶數的記錄逐一更新使用者名稱。

delimiter $$
create procedure testf(IN my_userId varchar(32))
begin
  declare stopflag int default 0;
  declare my_uname varchar(32) default '';
  declare uname_cur CURSOR for select uname from temp_user where uid%2=0;
  #1 遊標是儲存查詢結果的臨時記憶體區域
  #2 遊標變數uname_cur儲存了查詢的臨時結果,實際上就是查詢結果集
  declare continue handler for not found set stopflag=1;
  #3 宣告控制代碼,當遊標變數中儲存的結果都查詢一遍(遍歷),到達結尾,就把變數stopflag設定為1 用於迴圈中判斷是否遍歷結束
  open uname_cur; # 開啟遊標
  fetch uname_cur into my_uname; # 遊標向前走一步,取出一條記錄放到變數my_uname中。
  while(stopflag=0) DO # 如果遊標還沒到結尾,就繼續迴圈
  begin
    update temp_user set uname=CONCAT(my_uname,'_cur') where uname=my_uname;
    fetch uname_cur into my_uname;
  end;
  end while;
  close uname_cur;
end;
$$
delimiter ;

相關推薦

mysql儲存過程遊標檢視select結果集

mysql中使用select(或者使用print未嘗試)檢視引數 DELIMITER $ create PROCEDURE myPro() BEGIN    DECLARE  id varchar(64);   -- id     DE

Mysql儲存過程遊標使用

--在windows系統中寫儲存過程時,如果需要使用declare宣告變數,需要新增這個關鍵字,否則會報錯。 delimiter // drop procedure if exists StatisticStore; CREATE PROCEDURE StatisticSto

mysql儲存過程遊標遍歷之while篇

最近業務需要翻閱了很多關於遊標遍歷使用的帖子 總結一下 直接上程式碼吧 IN `bindid_in` char(36) --輸入引數 BEGIN /** 淨值=固定資產原值-累計折舊 累計折舊=月折舊額*已計提月份 月折舊額=(固定資產原價-(固定資產原價*3%的殘值率))/預計使

mysql儲存過程 遊標使用

1.什麼是遊標需求:編寫儲存過程,使用遊標,把uid為偶數的記錄逐一更新使用者名稱。delimiter $$ create procedure testf(IN my_userId varchar(32)) begin declare stopflag int defau

mysql儲存過程 --遊標的使用 取每行記錄 (多欄位)

delimiter $ create PROCEDURE phoneDeal() BEGIN DECLARE id varchar(64); -- id DECLARE phone1 varchar(16); -- phone DECLARE password1

mysql儲存過程+遊標迴圈遍歷 判斷 賦值 等例項一

CREATE DEFINER=`admin`@`%` PROCEDURE `updateRecommended`() BEGIN DECLARE my_recommended INT; DECLARE my_id INT; DECLARE inviteRelationStr VARCHAR(10000)

MySQL儲存過程遊標(cursor)示例

Mysql建立儲存過程,使用遊標Cursor迴圈更新 使用遊標(cursor) 1.宣告遊標 DECLARE cursor_name CURSOR FOR select_statement 這個語句

mysql動態遊標學習(mysql儲存過程遊標)

-- 建立測試表和資料 create table webuser (username varchar(10)); insert into webuser values ('a1'),('a2'),('a3'),('b1'),('b2'),('b3'); commit; -- 建立儲存過程 drop pro

MySQL 儲存過程遊標巢狀,觸發器呼叫儲存過程

#儲存過程 drop procedure if exists update_pointer; CREATE PROCEDURE update_pointer(IN ckindId int) BEGIN #定義變數 DECLARE id int DEFAULT 0;

mysql儲存過程 遊標 迴圈使用 含SQLSTATE mysql異常程式碼彙總大全

錯誤:1201 SQLSTATE: HY000 (ER_MASTER_INFO) 訊息:無法初始化主伺服器資訊結構,在MySQL錯誤日誌中可找到更多錯誤訊息。·     錯誤:1202 SQLSTATE: HY000 (ER_SLAVE_THREAD) 訊息:無法建立從執行緒,請檢查系統資源。·     錯

Mysql儲存過程遊標加迴圈

Mysql的儲存過程是從版本5才開始支援的,所以目前一般使用的都可以用到儲存過程。今天分享下自己對於Mysql儲存過程的認識與瞭解。 一些簡單的呼叫以及語法規則這裡就不在贅述,網上有許多例子。這裡主要說說大家常用的遊標加迴圈的巢狀使用。 首先先介紹迴圈的分類: (1)WHI

mysql 儲存過程使用遊標多執行一條記錄

今天在寫資料遷移的儲存過程發現總會多執行一條記錄修改後記錄如下: DECLARE notfoundroute INT DEFAULT 0; declare route_cursor CURSOR FOR select uid, uteamid, iday, ctitle, ctrip, ct

MYSQL儲存過程遊標(2)

儲存過程和遊標! 之前修改了表結構,現在要填充內容了, 需求:將已有的資料表內容進行擴充,比如A表現在增加了欄位,內容在B表,將他轉移過來 這裡經過掙扎,最後達成! /*填充batch_course_p

MYSQL儲存過程遊標學習

自己隨便寫了一個統計使用者許可權數量插入對應表的案例 CREATE TABLE IF NOT EXISTS u_user_role_count ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT "表ID", `uid` BIGINT NOT NULL

mysql儲存過程查詢結果迴圈遍歷 判斷 賦值 遊標等基本操作

一、首先說下本篇部落格所實現功能的背景和功能是怎樣的:       背景:因為公司專案開始遷移新平臺專案,所以以前的平臺老資料以及訂單資訊需要拆分表,而且需要業務邏輯來分析以前的訂單表,來拆分成另外的幾個新表,包括增加新的流水分析,以及更新其他使用者或者商家的餘額以及對賬

mysql 儲存過程遊標及逐行處理的配合使用

1. 資料準備 +----+------+--------+ | id | name | price1 | +----+------+--------+ | 1 | 大米 | 5 | | 2 | 雞蛋 | 4.5 | | 3 | 蘋果 | 6

MySql 自定義函式,儲存過程,遊標的使用

首先整理一下mysql內建的一些函式 MySQL內建函式 一、字元函式 (1)CONCAT()//字元連線 (2)CONCAT_WS()//使用指定的分隔符進行字元連線 (3)FORMAT()//數字格式化 (4)LOWER()//轉化小寫 (

mysql儲存過程利用遊標查詢每個資料庫的所有表

DELIMITER $ DROP PROCEDURE listAllDB; CREATE PROCEDURE listAllDB() BEGIN DECLARE no_mor

mysql 儲存過程中使用多遊標

mysql的儲存過程可以很方便使用遊標來實現一些功能,儲存過程的寫法大致如下: 先建立一張表,插入一些測試資料: DROP TABLE IF EXISTS netingcn_proc_test; CREATE TABLE `netingcn_proc_test`

mysql儲存函式,遊標的使用過程中異常捕捉機制

drop procedure if exists p2; delimiter $$ create procedure p2() --建立一個函式 begindeclare row_player_gui