前陣子看到 MySQL 5 已經正式推出了,支援 Stored Procedures 、 Functions 、 Views 、 Triggers 等。
目前 phpMyAdmin 2.6.4 好像還不支援這些新特色 (View 可以看得到,但是沒有建立的介面?) ,不過 MySQL 官方自己推了一個 MySQL Query Browser ,還不錯用, 缺點是中文的支援性不佳 (輸入中文時會怪怪的) 。
小試了一下用 MySQL Query Browser 寫一個 Stored Procedure :
1 2 3 4 5 6 7 8 9 | |
其中 DELIMITER 是用來決定 SQL 分隔符號的,在寫 Stored Procedure 前,要先把預設的分號換掉,不然按下 MySQL Query Browser 的 Execute 按鈕時,會真的去跑裡面的 INSERT 指令。寫完 Stored Procedure 的 routine_body 後,再回復成預設的分號。
另外我在寫這個 Stored Procedurce 時,發現一定要加上 characteristic 才行,也就是上面的 DETERMINISTIC 。可是官方手冊明明寫可略過,這我就沒時間研究為什麼了。
另外就是參數的名稱, MySQL 5 不像 MSSQL 是用 @param 來表示 Stored Procedure 的參數?這樣有點難以分辨參數及資料表欄位,不過也不是不能解決。
執行這個 Stored Procedure 的方法是用 CALL:
1
| |
當然語法不同,就會造成寫 PHP 程式的不方便,改天來找找看有沒有比較好的抽象層資料庫存取介面 (就是像 PEAR::DB 或 ADOdb 之類的物件類別庫) ,可以支援不同類型資料庫的 Stored Procedure 。
Stored Procedure 的寫法可參考:http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html
Trigger 的寫法可參考:http://dev.mysql.com/doc/refman/5.0/en/triggers.html
View 的寫法可參考:http://dev.mysql.com/doc/refman/5.0/en/views.html