mysql存储历程怎样写【MySQL教程】,mysql
语法花样:
能够运用 CREATE PROCEDURE 语句建立存储历程。
语法花样以下:
CREATE PROCEDURE <历程名> ( [历程参数[,…] ] ) <历程体> [历程参数[,…] ] 花样 [ IN | OUT | INOUT ] <参数名> <范例>
语法申明以下:
1) 历程名
存储历程的称号,默许在当前数据库中建立。若须要在特定数据库中建立存储历程,则要在称号前面加上数据库的称号,即 db_name.sp_name。须要注重的是,称号应当只管防止拔取与 MySQL 内置函数雷同的称号,不然会发作毛病。
2) 历程参数
存储历程的参数列表。个中,<参数名>为参数名,<范例>为参数的范例(能够是任何有用的 MySQL 数据范例)。当有多个参数时,参数列表中彼此间用逗号分开。存储历程能够没有参数(此时存储历程的称号后仍需加上一对括号),也能够有 1 个或多个参数。
MySQL 存储历程支撑三种范例的参数,即输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字标识。个中,输入参数能够传递给一个存储历程,输出参数用于存储历程须要返回一个操纵效果的情况,而输入/输出参数既能够充任输入参数也能够充任输出参数。须要注重的是,参数的取名不要与数据表的列名雷同,不然只管不会返回失足信息,然则存储历程的 SQL 语句会将参数名看做列名,从而激发不可预知的效果。
3) 历程体
存储历程的主体部份,也称为存储历程体,包括在历程挪用的时刻必需实行的 SQL 语句。这个部份以关键字 BEGIN 最先,以关键字 END 完毕。若存储历程体中只要一条 SQL 语句,则能够省略 BEGIN-END 标志。
在存储历程的建立中,常常会用到一个十分重要的 MySQL 敕令,即 DELIMITER 敕令,特别是关于经由过程敕令行的体式格局来操纵 MySQL 数据库的运用者,更是要学会运用该敕令。
在 MySQL 中,服务器处置惩罚 SQL 语句默许是以分号作为语句完毕标志的。但是,在建立存储历程时,存储历程体能够包括有多条 SQL 语句,这些 SQL 语句假如仍以分号作为语句完毕符,那末 MySQL 服务器在处置惩罚时会以碰到的第一条 SQL 语句结尾处的分号作为全部顺序的完毕符,而不再去处置惩罚存储历程体中背面的 SQL 语句,如许明显不可。为处理这个题目,一般可运用 DELIMITER 敕令将完毕敕令修改成其他字符。
语法花样以下:
DELIMITER $$
语法申明以下:$$ 是用户定义的完毕符,一般这个标记能够是一些特别的标记,如两个“?”或两个“¥”等。当运用 DELIMITER 敕令时,应当防止运用反斜杠“\”字符,由于它是 MySQL 的转义字符。
在 MySQL 敕令行客户端输入以下SQL语句。
mysql > DELIMITER ??
胜利实行这条 SQL 语句后,任何敕令、语句或顺序的完毕标志就换为两个问号“??”了。
若愿望换回默许的分号“;”作为完毕标志,则在 MySQL 敕令行客户端输入以下语句即可:
mysql > DELIMITER ;
注重:DELIMITER 和分号“;”之间肯定要有一个空格。在建立存储历程时,必需具有 CREATE ROUTINE 权限。能够运用 SHOW PROCEDURE STATUS 敕令检察数据库中存在哪些存储历程,若要检察某个存储历程的细致信息,则能够运用 SHOW CREATE PROCEDURE <存储历程名>。
建立不带参数的存储历程
存储历程的作用是从门生结果信息表中查询门生的结果信息,输入的 SQL 语句和实行历程以下所示。
mysql> DELIMITER // mysql> CREATE PROCEDURE ShowStuScore() -> BEGIN -> SELECT * FROM tb_students_score; -> END // Query OK, 0 rows affected (0.09 sec)
以上就是mysql存储历程怎样写的细致内容,更多请关注ki4网别的相干文章!