mysql 创建存储过程问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 创建存储过程问题相关的知识,希望对你有一定的参考价值。

无语

没人会吗?

一、mysql 创建存储过程
“pr_add” 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和。

drop procedure if exists pr_add;

-- 计算两个数之和

create procedure pr_add
(
a int,
b int
)
begin
declare c int;

if a is null then
set a = 0;
end if;

if b is null then
set b = 0;
end if;

set c = a + b;

select c as sum;

/*
return c; -- 不能在 MySQL 存储过程中使用。return 只能出现在函数中。
*/
end;
参考技术A 具体一点 参考技术B 目前只有5.0以上版本才能用存储过程与计划任务

为啥mysql创建存储函数,会是这样报错

create procedure proprice() is
begin
select avg(price) as average from products;
end;

以上就是规范的格式,请不要添加额外的东西,执行之后调用即可。
如果有其他问题,你可以先百度一下存储过程的规范应用
参考技术A 一 创建自定义函数
在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题:
mysql表结构如下
复制代码 代码如下:
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pic` varchar(50) NOT NULL,
`hashcode` varchar(16) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', '2012120910403250c3fa209bf48.jpg', 'bf8f83818080c0f1');
INSERT INTO `test` VALUES ('2', '2012120620430750c092db26557.JPG', 'ff9880f0f680ceff');
INSERT INTO `test` VALUES ('3', '2012120619582550c08861eb062.jpg', '7f7f004f7f7f7c7f');
INSERT INTO `test` VALUES ('4', '2012112911072650b6d16e7f21f.jpg', '7f7f004f7f7f007f');

以上是关于mysql 创建存储过程问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥mysql创建存储函数,会是这样报错

错误创建存储过程 MySQL

mysql创建存储过程中的问题

mysql中怎么创建存储过程?

MySQL 创建存储过程

MySQL之存储过程创建和调用