yam 蕃薯藤
天空部落
  • 網誌
  • 相簿
  • 影音
  • 夯集
  • PK吧!
  • 揪便宜
  • i鬥圖
  • la zorza
  • 買房子
新聞
  • 即時新聞
  • 影音新聞
  • 新聞專輯
  • 政治新聞
  • 財經新聞
  • 娛樂新聞
  • 運動新聞
  • 兩岸新聞
  • 科技新聞
註冊 登入
夯集
隨便逛
  • 正妹
  • 熱門
  • 網誌
  • 旅遊/攝影
  • 愛情/交友
  • 親子/教育
  • 美食/休閒
  • 設計/創作
  • 家族/同好
  • 影視/音樂
  • 社會/人文
  • 時尚/美容
  • 寵物/生活
  • 工作/職場
  • 科技/金融
  • 運動/健康
  • 交通/運輸
  • 相簿
  • COSPLAY
  • 布袋戲迷
  • 電玩漫畫
  • 女生照片
  • 藝術寫真
  • 攝影作品
  • 男生照片
  • 影視娛樂
  • 大眼小布
  • 情侶拍拍
  • 旅遊紀錄
  • 朋友團體
  • 人文藝術
  • more...
推薦這個部落格: 73

逆思考

換個方向思考反而能更真切的看出事物的真實與本質

網誌 |
[JAVA][JSP] File Read/Write 中文亂碼 | 主頁 | 你...尾牙了嗎?
January 12, 2009
[MySQL] 用Stored Procedures寫個小程式以文找文
eviles 在天空部落發表於21:45:47 | 程式
 
最近要來做統計的程式,類似要算出使用者點擊使用情況的,然後另存成一張Table,使用的資料庫是MySQL,本來我是想要用JAVA程式寫的,但後來我覺得很還是麻煩,不知是否有沒有辦法全在SQL指令裡完成呢?

所以就花了點時間大概查了一下,喔!有找到唷!有Stored Procedures(這裡)可以寫程式,Cursor(這裡)可以把Select出來的資料用Loop迴圈(這裡)處理,看來我想要做的事似乎是可行呢!真是另我相當的雀躍!不過好像是在MySQL 5.0之後才支援的樣子,下面就簡單記一下用法,備忘一下。

這裡用Stored Procedures來寫,所以一開始要先轉換Delimiter從原先的分號[;]到兩個斜線[//],其實要換成別的也行,像是錢符號[$$]也蠻不錯的,高興就好!

DELIMITER //

好了然後就可以開始編寫程式了,如下:

CREATE PROCEDURE test(y CHAR(4))
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE i INT;
  DECLARE c INT;
  DECLARE x CHAR(20);
  DECLARE cur CURSOR FOR SELECT dbid FROM dblist;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
 
  OPEN cur;
  
  REPEAT
    FETCH cur INTO x;
    SET i = 0;
    REPEAT
      SET i = i + 1;
      IF (i < 10) THEN
        SELECT COUNT(*) INTO c FROM log WHERE dbid = x AND cretime LIKE CONCAT(y, '-0', i, '%');
      ELSE
        SELECT COUNT(*) INTO c FROM log WHERE dbid = x AND cretime LIKE CONCAT(y, '-', i, '%');
      END IF;
        REPLACE INTO totaluse(dbid, year, month, click) VALUES (x, y, i, c);
    UNTIL (i >= 12) END REPEAT;
  UNTIL done END REPEAT;
 
  CLOSE cur;
END//

** 在totaluse表內dbid, year, month是組合唯一鍵,用REPLACE若存在就會覆蓋過去,不存在就是插入。

以上比較要注意的有CURSOR要用FETCH把資料存到變數裡,HANDLER是處理當資料跑完時的情況,所以當CURSOR的資料跑完後就會做相對應的動作,SELECT INTO語句是將查出來的值存到變數裡,CONCAT是做字串連接用的,然後最後要用的時候就只要下一道指令即可,像是算去年的統計:CALL test('2008')

大概就醬吧!
留言 (0) | 引用 (0) | 人氣 () | 轉寄 | 檢舉
此分類上一篇:[JAVA][JSP] File Read/Write 中文亂碼 | 主頁 | 此分類下一篇:[AJAX][ZK] TypeConverter
引用 (你可以針對此文寫一篇屬於自己的blog/想法,並給作者一個通告)
引用
留言 (0筆)
發表你的留言 (字數限制 最多 2000 個中文字)
私密留言: 是 否
Name:



是 否
內容:
檢視行動版網頁  |  檢視正常版網頁
系統公告
熱情贊助
網站訂閱
個人檔案
個人圖檔
ID:eviles
暱稱:茶
地區:新竹市
  • 好友 |
    • 好友功能
    • 觀看好友列表
    • 觀看人緣列表
  • 人氣 |
  • 簡介 

文章分類
  • 一般記事 (3)
    • 日常生活 (45)
    • 職場生涯 (12)
    • 研究點滴 (20)
  • 軍旅生活 (3)
    • 新訓專訓 (22)
    • 海外日子 (61)
    • 當地風情 (20)
  • 創作短文 (5)
    • 雅緻情 (14)
    • 隨手寫 (18)
    • 逆思考 (24)
    • 新思緒 (3)
    • 小故事 (2)
  • 過往雲煙 (3)
    • 天空藍 (20)
    • 自由情 (42)
    • 藍海洋 (50)
  • 有的沒的 (4)
    • 程式 (29)
    • 心得 (9)
    • 剪貼 (7)
    • 軟體 (4)
yam今日我最殺
eviles的最近文章發表
  • 2012新的一年
  • 冬
  • 壞了
  • [JAVA][CSV]...
  • 盼
Flickr相簿
www.flickr.com
eviles的最新的回應
  • acesphpgu:
    客戶關係管理 ...
  • swtrcsny:
    柯佳嬿 ...
  • kwnbjmsnqdhd:
    金榜之路 ...
  • fxbdslt:
    女子校生 ...
  • hdtgxpdvyib:
    一騎當千 ...
最新的引用
  • 目前沒有引用
我的書櫃
誰推薦我
誰來我家
搜尋欄位
搜尋:
人氣指數
當日人次:
累積人次:
贊助廣告

RSS 訂閱
RSS2
ATOM
CC授權
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空部落 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入│免費註冊