共計 1581 個字符,預計需要花費 4 分鐘才能閱讀完成。
mysql 中怎么創建存儲過程,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
mysql 創建存儲過程和函數
一個存儲程序是可以被存儲在服務器中的一套 SQL 語句。可以通過客戶端用 CREATE PROCEDURE 和 CREATE FUNCTION 創建一個存儲過程或函數。在客戶端通過 CALL 語句 調用所創建的存數過程或函數。
語法:
創建存儲子程序:
01
CREATE PROCEDURE sp_name ([proc_parameter[,…]])
02
[characteristic …] routine_body
03
CREATE FUNCTION sp_name ([func_parameter[,…]])
04
RETURNS type
05
[characteristic …] routine_body
06
proc_parameter:
07
[IN | OUT | INOUT] param_name type
08
func_parameter:
09
param_name type
10 www.2cto.com
type:
11
Any valid MySQL data type
12
characteristic:
13
LANGUAGE SQL
14
| [NOT] DETERMINISTIC
15
| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
16
| SQL SECURITY {DEFINER | INVOKER}
17
| COMMENT string
18
routine_body:
19
Valid SQL procedure statement or statements
默認地,子程序與當前關聯。要明確地把子程序與一個給定數據庫關聯起來,可以在創建子程序的時候指定其名字為 db_name.sp_name。在 程序被定義的時候,用客戶端 delimiter 命令來把語句定界符從 ; 變為 //。這就允許用在 程序體中的; 定界符被傳遞到服務器而不是被 mysql 自己來解釋。例如:
01
mysql delimiter //
02
mysql CREATE PROCEDURE simpleproc (OUT param1 INT)
03
– BEGIN
04
– SELECT COUNT(*) INTO param1 FROM t;
05
– END www.2cto.com
06
– //
07
Query OK, 0 rows affected (0.00 sec)
08
mysql delimiter ;
09
mysql CALL simpleproc(@a);
10
Query OK, 0 rows affected (0.00 sec)
11
mysql SELECT @a;
12
+——+
13
| @a |
14
+——+
15
| 3 |
16
+——+
17
1 row in set (0.00 sec)
01
mysql delimiter //
02
mysql CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
03
– RETURN CONCAT(Hello, ,s, !
04
– //
05
Query OK, 0 rows affected (0.00 sec)
06
mysql delimiter ;
07 www.2cto.com
mysql SELECT hello(world
08
+—————-+
09
| hello(world) |
10
+—————-+
11
| Hello, world! |
12
+—————-+
13
1 row in set (0.00 sec)
看完上述內容,你們掌握 mysql 中怎么創建存儲過程的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!