儲存過程 批量修改記錄筆記

2021-10-08 16:54:08 字數 1435 閱讀 2765

僅學習使用,不建議使用這種方法批量更新資料。原因請小夥伴們搜尋一下儲存過程和游標的優缺點。

drop

procedure

ifexists fix_receipt_time;

-- 將結束符換為//,為了避免語法錯誤

delimiter

//-- 建立儲存過程

create

procedure fix_receipt_time(

)begin

-- 定義變數

declare s int

default0;

declare target_credit_record_id int(11

);declare target_receipt_time timestamp

;-- 定義游標,並將sql結果集賦值到游標中

declare credit_record_cursor cursor

forselect cr.id,sr.receipt_time from tb_credit_record cr join tb_service_record sr on sr.id = cr.service_record_id where cr.receipt_time is

null

;-- 宣告當游標遍歷完後將標誌變數置成某個值

declare

continue

handler

fornot found set s=1;

-- 開啟游標

open credit_record_cursor;

-- 將游標中的值賦值給變數,注意:變數名不要和返回的列名同名,變數順序要和sql結果列的順序一致

fetch credit_record_cursor into target_credit_record_id,target_receipt_time;

-- 當s不等於1,也就是未遍歷完時,會一直迴圈

while s<>1do

-- 執行業務邏輯

update tb_credit_record set receipt_time = target_receipt_time where id = target_credit_record_id;

-- 將游標中的值再賦值給變數,供下次迴圈使用

fetch credit_record_cursor into target_credit_record_id,target_receipt_time;

-- 當s等於1時表明遍歷以完成,退出迴圈

endwhile

;-- 關閉游標

close credit_record_cursor;

end;

//-- 將結束符換回;

delimiter

;-- 執行儲存過程

call fix_receipt_time(

)

生成修改記錄

生成修改記錄 使用方法 將source insight搜尋結果儲存為0829.txt 將該檔案儲存為 pl和0829.txt放在同一目錄下,雙擊執行 結果在生成的result.txt中 use strict my eachfile,line,output,prev,count,ret,prev pa...

DDOM修改記錄

1 完整多個類的clone方法,實現為clone deep false 形式 2 完整各個元素的clear 和destory 方法,但是還是存在一些隱患 第一,clear的行為不統一,存在只釋放列表還是子元素也釋放的不統一行為,為保整與舊 的相容性只能小心地改。3 提公升一些移除 所有 子元素操作的...

git檢視修改記錄

檢視檔案中每行 的最近一次修改人 git blame file name git blame git blame l 100,100 git blame l 100,10檢視最近兩次變動及其變動點 git log p 2顯示增改行統計 git log statgit log pretty 選項,可以...