mysql 的存儲過程在 mysql.proc表里。 只上傳frm,MYI,MYD不能上傳procedure。你可以mysqldump --table mysql proc proc.sql -uroot -p 之后再到你的虛擬機中 source 目錄\proc.sql
目前成都創(chuàng)新互聯已為近1000家的企業(yè)提供了網站建設、域名、雅安服務器托管、網站托管、企業(yè)網站設計、臨汾網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發(fā)展。
如果想查看存儲過程的話:
show procedure status;
想看存儲過程代碼:
show create procedure procedure_name;
存儲過程存放在infomation_schema.ROUTINES表內。
假設A表有3個字段,ID, DATA1,DATA2
簡單的話可以不使用存儲過程,比如:
select * form A where ID in (select ID from A where DATA1 between 0 and 100)
如果你的應用比較復雜,在嵌套中還有復雜的運算,存儲過程可以如下例子:
CREATE PROCEDURE test(in_start int,in_end int)
BEGIN
DECLARE ids TEXT;
select GROUP_CONCAT(ID) into ids from A where DATA1 between in_start and in_end;
select * from A where FIND_IN_SET(ID,ids) 0;
END
注: in_start, in_end是DATA1的篩選范圍。 后面一個select直接返回一個表
直接用SQL和使用存儲過程各有利弊,存儲過程在你使用大量查詢及SQL運算的時候效率很高,而且存儲過程一旦寫入數據庫會被自動編譯運行速度比較快,而SQL是每次執(zhí)行都需要被編譯一次的。但是存儲過程的調試比較麻煩,不像你使用編程語言和SQL的時候可以單步調試。而且如果沒有熟練掌握存儲過程的效率優(yōu)化情況下,使用存儲過程可能比使用SQL更慢。
delimiter $$
mysql
mysql CREATE PROCEDURE myProc() //創(chuàng)建while循環(huán)的存儲過程 if分支語句示例
- BEGIN
-
- DECLARE i int;
- SET i=1;
- loop1: WHILE i=10 DO
- IF MOD(i,2)0 THEN /*Even number - try again*/
- SELECT CONCAT(i," is an odd number");
- END IF;
- SET i=i+1;
- END WHILE loop1;
- END$$
Query OK, 0 rows affected (0.00 sec)
這種也可以