这篇文章主要为大家展示了“mysql如何创建存储过程及函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql如何创建存储过程及函数”这篇文章吧。
create procedure name ([params]) UNSIGNED [characteristics] routine_body
params : in|out|inout 指定参数列表 代表输入与输出
routine_body: SQL代码内容,以begin ........ end
characteristics: 指定存储过程特性,包含5种
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句
create DEFINER=`root`@`%` procedure name ([params]) UNSIGNED [characteristics] routine_body
DEFINER:指明谁有权力来执行。
”DELIMITER //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;',为了避免存储过程与mysql语句符号冲突,所以有时使用DELIMITER来改变结束语符号,要配合end //来使用;
示例:创建一个root账户执行的存储过程,输出给定字符串的长度
DELIMITER // CREATE definer=`root`@`%` PROCEDURE `avgFruitPrice`( in f_string VARCHAR(200) ) BEGIN select length(f_string); END//
函数的创建与存储过程相同
示例
DELIMITER // CREATE definer=`root`@`%` FUNCTION `my_length`( f_string VARCHAR(200) ) RETURNS INT(11) UNSIGNED NO SQL BEGIN return length(f_string); END//
注意: 创建函数需要注意3个地方,
1. RETURNS: 需指定返回类型
2. UNSIGNED NO SQL 需指定存储过程特性
3.return: 返回需要的数据
遇见的错误:
如报错如上信息就是没有指定存储过程特性。
存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select .... into
begin declare onename char(50) default‘0'; declare twoname char(50); select f_name, b_name into onename, twoname from t_user where id =1; ....... end//
说明:
declare: 存储过程及函数内部定义变量
default:默认值
以上是“mysql如何创建存储过程及函数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。