資料庫中儲存過程,以及專案中的例子

2021-08-16 11:41:05 字數 2859 閱讀 8587

1.獲取資料庫中漢字的首字母:(mysql 儲存過程)

drop function if exists `getpy`;

delimiter ;;

create function `getpy`(in_string varchar(65534)) returns mediumtext charset utf8

begin

declare tmp_str varchar(65534) charset gbk default '' ; #擷取字串,每次做擷取後的字串存放在該變數中,初始為函式引數in_string值

declare tmp_len smallint default 0;#tmp_str的長度

declare tmp_char varchar(2) charset gbk default '';#擷取字元,每次 left(tmp_str,1) 返回值存放在該變數中

declare tmp_rs varchar(65534) charset gbk default '';#結果字串

declare tmp_cc varchar(2) charset gbk default '';#拼音字元,存放單個漢字對應的拼音首字元

set tmp_str = in_string;#初始化,將in_string賦給tmp_str

set tmp_len = length(tmp_str);#初始化長度

while tmp_len > 0 do #如果被計算的tmp_str長度大於0則進入該while

set tmp_char = left(tmp_str,1);#獲取tmp_str最左端的首個字元,注意這裡是獲取首個字元,該字元可能是漢字,也可能不是。

set tmp_cc = tmp_char;#左端首個字元賦值給拼音字元

if length(tmp_char)>1 then#判斷左端首個字元是多位元組還是單位元組字元,要是多位元組則認為是漢字且作以下拼音獲取,要是單位元組則不處理。

select elt(interval(conv(hex(tmp_char),16,10),0xb0a1,0xb0c5,0xb2c1,0xb4ee,0xb6ea,0xb7a2,0xb8c1,0xb9fe,0xbbf7,0xbfa6,0xc0ac

,0xc2e8,0xc4c3,0xc5b6,0xc5be,0xc6da,0xc8bb,0xc8f6,0xcbfa,0xcdda ,0xcef4,0xd1b9,0xd4d1),

'a','b','c','d','e','f','g','h','j','k','l','m','n','o','p','q','r','s','t','w','x','y','z') into tmp_cc; #獲得漢字拼音首字元

end if;

set tmp_rs = concat(tmp_rs,tmp_cc);#將當前tmp_str左端首個字元拼音首字元與返回字串拼接

set tmp_str = substring(tmp_str,2);#將tmp_str左端首字元去除

set tmp_len = length(tmp_str);#計算當前字串長度

end while;

return tmp_rs;#返回結果字串

end;;

delimiter ;

2.開啟事務(mysql)

show variables like '%event_sche%';-- 檢視事物任務是否開啟

set global event_scheduler = 1; -- 開啟事物任務

3.定時事件(mysql)

事件:delimiter $$

alter definer=`fzjt_workflow`@`%` event `updatenocticetaskevent` on schedule every 30 second starts '2017-04-10 18:00:45' on completion preserve enable do call updatenocticestatustask()$$

delimiter ;

儲存過程:

delimiter $$

use `fzjt_workflow`$$

drop procedure if exists `updatenocticestatustask`$$

create definer=`fzjt_workflow`@`%` procedure `updatenocticestatustask`()

begin

update

mis_notice_info t -- 修改是否首頁展示

setshow_sign = (

case

when (

(begin_valid_date < now() -- 公告的有效期開始時間大於當前資料庫時間

and end_valid_date > now()-- 公告的有效期結束時間小於當前時間))

then "0"   -- 把公告設定為首頁展示

else "1"   -- 否則設定為首頁不展示

end)

where t.del_sign = '0'  -- 未被刪除的公告(軟刪除標記)

and t.notice_status = '0' ; -- 篩選出審核通告的公告

update

mis_notice_info t -- 修改公告失效狀態

setnotice_status = "3" -- 修改公告的狀態為已失效

where t.del_sign = '0' -- 未被刪除的公告(軟刪除標記)

and t.end_valid_date < now();  -- 公告的有效期結束時間小於當前時間

end$$

delimiter ;

資料庫中儲存過程意義

建立了是拿來用的,至於為什麼要用儲存過程,要先了解儲存過程存在的意義 儲存過程由 sql語句 和流程控制 語句組成。它的功能包括 接受引數 呼叫另一過程 返回乙個狀態值給呼叫過程或批處理,指示呼叫成功或失敗 返回若干個引數值給呼叫過程或批處理,為呼叫者提供動態結果 在遠端sql server中執行等...

mysql資料庫中儲存過程的寫法以及游標的用法

mysql中的function定義以及使用游標迴圈賦值。下面 主要功能 通過使用者id,獲取其關聯的角色id,迴圈獲取角色名稱 create definer root localhost function f op get role names pi userid int 傳入的引數 returns...

資料庫中儲存過程的除錯

一.除錯sql server 2000 1.設定帳戶。1 在windows服務中找到mssqlserver,雙擊彈出對話方塊。2 選擇 登陸 選項卡,選中 此帳戶 輸入乙個管理員帳戶和密碼。3 重啟服務。2.在查詢分析器執行單步除錯。1 在查詢分析器中,右鍵單擊儲存過程,選擇 除錯 二.vs2005...