nc (s CHAR(20)) RETURNS CHAR(50) RETURN CONCAT(''''Hello '''',s,''''.Lan'''','''' !''''); Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> select MyFunc(''''Dennis''''); +--------------------+ | MyFunc(''''Dennis'''') | +--------------------+ | Hello Dennis.Lan ! | +--------------------+ 1 row in set (0.01 sec)
mysql>
========================================================== 5. Drop Function
========================================================== mysql> drop function MyFunc; Query OK, 0 rows affected (0.00 sec)
mysql>
==========================================================
6. Create 一個 Procedure 試試吧!
CREATE PROCEDURE MyProc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM sys_forms; END;
千萬記住,下面這樣子不行喲, 我試了 n 次, 每次都是錯誤, 我還以為 Mysql 有問題呢,原來不是
==========================================================
mysql> use test; Database changed mysql> CREATE PROCEDURE MyProc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param 1 FROM sys_forms; END;
ERROR 1064 (42000): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''''SELE CT COUNT(*) INTO param1 FROM sys_forms'''' at line 1
==========================================================
正確的做法是: ========================================================== mysql> delimiter | # 因為你的 Procedure 或 Function中難免會用到 ";" 作為 sql statement 的結束符, 所以還是請你把這個結束符號改一下吧,不然就會出現上面的 error 1064(42000)
mysql> CREATE PROCEDURE MyProc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM mysql.user; END; -> | Query OK, 0 rows affected (0.00 sec)
==========================================================
OK, 你的成功了嗎?
強烈建議你先看看這個 http://www.mysql.com/doc/en/CREATE_PROCEDURE.html
Procedure Create 成功了,測試一下吧! Step 1: ==========================================================
mysql> CALL MyProc(@a)| Query OK, 0 rows affected (0.01 sec) ==========================================================
Step 2: ==========================================================
mysql> select @a; -> | +------+ | @a | +------+ | 0 | +------+ 1 row in set (0.00 sec)
mysql>
==========================================================
來個完整的:
==========================================================
mysql> CREATE PROCEDURE MyProc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param 1 FROM mysql.user; END; -> | Query OK, 0 rows affected (0.00 sec)
mysql> call MyProc(@a)| Query OK, 0 rows affected (0.03 sec)
mysql> select @a | +------+ | @a | +------+ | 4 | +------+ 1 row in set (0.00 sec)
==========================================================
7. Drop Procedures: 這樣子做怎麼又不對呀?
==========================================================
mysql> drop procedure myproc; -> | ERROR 1289 (42000): PROCEDURE myproc does not exist
==========================================================
原來 Windows 下的 MySQL 在 Procedure 的問題上又區分起輩份的大小了,下面這樣才對啊!
==========================================================
mysql> drop procedure MyProc| Query OK, 0 rows affected (0.00 sec)
==========================================================
注: 如果你在和應用程式連結的時候出現
Client does not support authentication protocol requested by server; consider upgrading MySQL client
請參考 http://www.mysql.com/doc/en/Old_client.html 這里提供了詳細的解決方案.
Enjoy it yourself! Good Luck!
上一页 [1] [2] |