mysql存储函数的使⽤⽅法_mysql中存储过程和存储函数是什
么?
在mysql中,存储过程和存储函数都是数据库中定义的⼀些SQL语句的集合。其中,存储函数可以通过return语句返回函数值,主要⽤于计算并返回⼀个值;⽽存储过程没有直接返回值,主要⽤于执⾏操作。
mysql中的存储过程
编写存储过程并不是件简单的事情,但是使⽤存储过程可以简化操作,且减少冗余的操作步骤,同时,还可以减少操作过程中的失误,提⾼效率,因此应该尽可能的学会使⽤存储过程。
下⾯主要介绍如何创建存储过程。
思莱德和太平鸟哪个档次高可以使⽤ CREATE PROCEDURE 语句创建存储过程,语法格式如下:CREATE PROCEDURE ( [过程参数[,…] ] )
[过程参数[,…] ] 格式[ IN | OUT | INOUT ]
语法说明如下:
1) 过程名
存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前⾯加上数据库的名称,即
db_name.sp_name。
需要注意的是,名称应当尽量避免选取与 MySQL 内置函数相同的名称,否则会发⽣错误。
2) 过程参数
存储过程的参数列表。其中,为参数名,为参数的类型(可以是任何有效的 MySQL 数据类型)。当有多
c语言struct 结构体名 变量名个参数时,参数列表中彼此间⽤逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上⼀对括号),也可以有 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 权限。
linux教程电子书下载学习mysql中的存储函数
在 MySQL 中,使⽤ CREATE FUNCTION 语句来创建存储函数,其语法形式如下:CREATE FUNCTION sp_name
([func_parameter[...]])
RETURNS type
[characteristic ...] routine_body
其中:sp_name 参数:表⽰存储函数的名称;
func_parameter:表⽰存储函数的参数列表;
RETURNS type:指定返回值的类型;
characteristic 参数:指定存储函数的特性,该参数的取值与存储过程是⼀样的;
routine_body 参数:表⽰ SQL 代码的内容,可以⽤ END 来标⽰ SQL 代码的开始和结束。
注意:在具体创建函数时,函数名不能与已经存在的函数名重名。除了上述要求外,推荐函数名命名(标识符)为 function_xxx 或者
func_xxx。func_parameter 可以由多个参数组成,其中每个参数由参数名称和参数类型组成,其形式如下:
[IN | OUT | INOUT] param_name type;
其中:IN 表⽰输⼊参数,OUT 表⽰输出参数,INOUT 表⽰既可以输⼊也可以输出;
mysql查看所有存储过程param_name 参数是存储函数的参数名称;
type 参数指定存储函数的参数类型,该类型可以是 MySQL 数据库的任意数据类型。
例 1
使⽤ CREATE FUNCTION 创建查询 tb_student 表中某个学⽣姓名的函数,SQL 语句和执⾏过程如下:mysql> USE test;
Database changed
mysql> DELIMITER //
mysql> CREATE FUNCTION func_student(id INT(11))
-> RETURNS VARCHAR(20)
-> COMMENT '查询某个学⽣的姓名'
桔子影视android端下载-> BEGIN
-> RETURN(SELECT name FROM tb_student WHERE tb_student.id = id);
-> END //
Query OK, 0 rows affected (0.10 sec)
mysql> DELIMITER ;
上述代码中,创建了 func_student 函数,该函数拥有⼀个类型为 INT(11) 的参数 id,返回值为 VARCHAR(20) 类型。SELECT 语句从tb_student 表中查询 id 字段值等于所传⼊参数 id 值的记录,同时返回该条记录的 name 字段值。
创建函数与创建存储过程⼀样,需要通过命令 DELIMITER // 将 SQL 语句的结束符由“;”修改为“//”,最后通过命令 DELIMITER ; 将结束符号修改成 SQL 语句中默认的结束符号。
编程猫手机版app下载如果在存储函数中的 RETURN 语句返回⼀个类型不同于函数的 RETURNS ⼦句中指定类型的值,返回值将被强制为恰当的类型。⽐如,如果⼀个函数返回⼀个 ENUM 或 SET 值,但是 RETURN 语句返回⼀个整数,对于 SET 成员集的相应的 ENUM 成员,从函数返回的值是字符串。
拓展阅读
由于存储函数和存储过程的查看、修改、删除等操作⼏乎相同,所以我们不再详细讲解如何操作存储函数了。
查看存储函数的语法如下:SHOW FUNCTION STATUS LIKE 存储函数名;
SHOW CREATE FUNCTION 存储函数名;
SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME=存储函数名;
可以发现,操作存储函数和操作存储过程不同的是将 PROCEDURE 替换成了 FUNCTION。同样,修改存储函数的语法如下:ALTER FUNCTION 存储函数名 [ 特征 ... ]
存储函数的特征与存储过程的基本⼀样。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论