Mysql那些事兒之(十二)存儲過程
相關鏈接:
Mysql那些事兒之(一)mysql的安裝
http://www.BkJia.com/database/201210/162314.html;
Mysql那些事兒之(二)有關數據庫的操作
http://www.BkJia.com/database/201210/162315.html;
Mysql那些事兒之(三)有關數據表的操作
http://www.BkJia.com/database/201210/162316.html;
Mysql那些事兒之(四)數據表數據查詢操作
http://www.BkJia.com/database/201210/162317.html;
Mysql那些事兒之(五)操作時間
http://www.BkJia.com/database/201210/162318.html;
Mysql那些事兒之(六)字符串模式匹配
http://www.BkJia.com/database/201210/163969.html;
Mysql那些事兒之(七)深入select查詢
http://www.BkJia.com/database/201210/163970.html;
Mysql那些事兒之(八)索引
http://www.BkJia.com/database/201210/163971.html;
Mysql那些事兒之(九)常用的函數
http://www.BkJia.com/database/201210/164229.html;
Mysql那些事兒之(十)觸發器一
http://www.BkJia.com/database/201210/164516.html
Mysql那些事兒之(十一)觸發器二
http://www.BkJia.com/database/201210/164766.html
存儲過程是經過編譯之後存放在數據庫中的sql語句集合。
存儲過程怎麼寫
看例子:
存儲過程的語法
www.2cto.com
Sql代碼
create procedure proc_name (proc_peremeter1,.....) --存儲過程名稱和參數
[characteristic ....]
routine_body --存儲過程
調用存儲過程的語法
Sql代碼
call proc_name --調用存儲過程
示例 創建存儲過程
當然創建存儲過程之前先建立相關的表,為了學習只建立一個簡單的表結構;
Sql代碼
CREATE TABLE filmall (
id smallint(5) NOT NULL,
film_id smallint(6) NOT NULL,
name varchar(40) DEFAULT NULL,
store_id smallint(6) NOT NULL,
txt text,
PRIMARY KEY (`id`)
) ; www.2cto.com
在數據表裡插入數據。
寫一個簡單的存儲過程:
Sql代碼
--存儲過程的名稱為proc_film_store,參數為3個:前面兩個為輸入,後面一個為輸出
Sql代碼
delimiter $$
Sql代碼
create procedure proc_film_store (IN p_film_id INT,IN p_store_id INT,OUT p_film_count INT)
BEGIN
SELECT txt FROM filmall WHERE film_id = p_film_id AND store_id = p_store_id;
SELECT FOUND_ROWS() INTO p_film_count; --將條數放入變量中
END $$
Sql代碼
delimiter ;
現在就可以調用存儲過程了。
Sql代碼
call proc_film_store(1,1,@a);---輸入參數
--執行完之後會輸出查詢出來的數據
www.2cto.com
--輸出查詢到的條數
select @a;
存儲過程就OK了。
Sql代碼
--還有一點要說明的是,書寫存儲過程時,一般會用到如下命令
--書寫存儲過程之前,改變結束符
delimiter $$ --這個語句的意思是將結尾符;替換為$$
--寫完存儲過程之後,再將結束符改回來
delimiter ;