亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql存儲過程舉例分析

發布時間:2021-11-18 16:34:13 來源:億速云 閱讀:201 作者:iii 欄目:MySQL數據庫

這篇文章主要講解了“mysql存儲過程舉例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql存儲過程舉例分析”吧!

(1).格式

MySQL存儲過程創建的格式:CREATE PROCEDURE過程名([過程參數[,...]])

[特性...]過程體

這里先舉個例子:
mysql> DELIMITER //  

mysql> CREATE PROCEDURE proc1(OUT s int)  
  -> BEGIN 

    -> SELECT COUNT(*) INTO s FROM user;  

    -> END 

    -> //  

mysql> DELIMITER ; 

 注:

(1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那么編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之后要把分隔符還原。

(2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

(3)過程體的開始與結束使用BEGIN與END進行標識。

這樣,我們的一個MySQL存儲過程就完成了,是不是很容易呢?看不懂也沒關系,接下來,我們詳細的講解。

  (2).聲明分割符

其實,關于聲明分割符,上面的注解已經寫得很清楚,不需要多說,只是稍微要注意一點的是:如果是用MySQL的Administrator管理工具時,可以直接創建,不再需要聲明。
(3).參數

MySQL存儲過程的參數用在存儲過程的定義,共有三種參數類型,IN,OUT,INOUT,形式如:

CREATE PROCEDURE([[IN |OUT |INOUT ]參數名數據類形...])

IN輸入參數:表示該參數的值必須在調用存儲過程時指定,在存儲過程中修改該參數的值不能被返回,為默認值

OUT輸出參數:該值可在存儲過程內部被改變,并可返回

INOUT輸入輸出參數:調用時指定,并且可被改變和返回

DELIMITER $$

DROP PROCEDURE IF EXISTS getUserInfo $$

CREATE PROCEDURE getUserInfo(in date_day datetime)

--

-- 實例

-- MYSQL存儲過程名為:getUserInfo

-- 參數為:date_day日期格式:2008-03-08

--

    BEGIN

declare _userName varchar(12); -- 用戶名

declare _chinese int ; -- 語文

declare _math int ;    -- 數學

declare done int;  

-- 定義游標

DECLARE rs_cursor CURSOR FOR SELECT username,chinese,math from userInfo where datediff(createDate, date_day)=0;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;    --結束語法

-- 獲取昨天的日期

if date_day is null then

   set date_day = date_add(now(),interval -1 day);

end if;

open rs_cursor;

cursor_loop:loop     ###固定語法,cusor_loop 是自己隨便起的名字

   FETCH rs_cursor into _userName, _chinese, _math; -- 取數據

  if done=1 then

    leave cursor_loop;

   end if;

-- 更新表

update infoSum set total=_chinese+_math where UserName=_userName;

end loop cursor_loop;

close rs_cursor;

    END$$

DELIMITER ;

我寫的案例:

1.取出每條數據的總訪問量

DELIMITER $$

CREATE PROCEDURE test.get_data_lunzheng()

BEGIN

DECLARE loop_id INT;

DECLARE done INT DEFAULT 0;

DECLARE id_cursor CURSOR FOR SELECT id FROM test2.lunzheng;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

OPEN id_cursor;

select_loop: LOOP

FETCH id_cursor INTO loop_id;

IF done=1 THEN

LEAVE select_loop;

END IF;

SELECT info_id,COUNT(*) FROM (SELECT a.info_id,a.id FROM liuhe.`pvlogs_back_05_bak` a 

WHERE a.info_id=loop_id UNION ALL SELECT b.info_id,b.id FROM liuwenhe.`pvlogs_back_08_bak` b  WHERE b.info_id=loop_id) c  GROUP BY info_id  into outfile  'C:\Users\manet\Desktop\loop_id.txt'   ;

END LOOP ;

CLOSE id_cursor;

END $$

DELIMITER ;

mysql存儲過程舉例分析

感謝各位的閱讀,以上就是“mysql存儲過程舉例分析”的內容了,經過本文的學習后,相信大家對mysql存儲過程舉例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南京市| 土默特左旗| 台北市| 兰西县| 利辛县| 眉山市| 永修县| 友谊县| 永登县| 普格县| 武陟县| 乌什县| 城口县| 山东| 卫辉市| 和静县| 手游| 满城县| 阿巴嘎旗| 平江县| 商丘市| 浦县| 巴中市| 子长县| 开远市| 大竹县| 海口市| 兴国县| 福鼎市| 积石山| 南木林县| 蒙自县| 永嘉县| 梨树县| 博湖县| 中江县| 庆元县| 锦屏县| 鄂托克前旗| 福泉市| 辽宁省|