Procedure 語法:
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
begin
Valid SQL routine statement
end;
Function 語法:
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
begin
Valid SQL routine statement
end;
官網關於 procedure, function相關文檔:
FAQ:http://dev.mysql.com/doc/refman/5.6/en/faqs-stored-procs.html
語法說明:http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html
Cursor官方文檔:http://dev.mysql.com/doc/refman/5.6/en/cursors.html
在遍歷時,mysql中的3種循環方式(loop, while, repeat)都可以使用。官方文檔中給了 loop 方式的deamo。
在使用cursor時要注意:
1)declare cursor之前不能有任何的除了declare以外的操作,也就是之前只能有變量聲明。
2)declar cursor 之後不能有任何變量的聲明,可以聲明異常處理 handler。
3)cursor 只能在procedure, function中。
4)fetch into var1, var2。這裡的var名不能與 declare cursor時select 中的列名一樣。如果一樣會fetch 到NULL。例如下面deamon中的 metric ==> m 。

其它的deamon:http://www.mysqltutorial.org/mysql-cursor/
在什麼樣的條件下,做什麼樣的處理。例如當發生異常時,該怎麼做。
相關文檔:http://dev.mysql.com/doc/refman/5.6/en/declare-handler.html
在下面的deamon中就有declare continue handler NOT FOUND 、declare continue handler SQLSTATE 等。


http://mydebugger.com/quick_start.php

上面 的兩個procedure,在使用debugger調試時,只需要在main中寫直接調用 就可以了。
