mysql自定义函数的分号_mysql自定义函数语法

创建函数

DELIMITER $$

DROP FUNCTION IF EXISTS `test` $$

CREATE FUNCTION `test`(a int ,b int)

RETURNS int

BEGIN

IF (A>B) THEN

RETURN a+b;

ELSE

RETURN a-b;

END IF;

END

DELIMITER;

创建存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS myProc $$

CREATE PROCEDURE myProc()

BEGIN

DECLARE v_sex int;

SELECT sex into v_sex from user where id=3;      // 取出sex 给 v_sex 赋值,select sex into v_sex //  SET vv=a+b; //赋值

if(v_sex==0) THEN

SELECT '男生';

ELSE

SELECT '女生';

END IF;

END

DELIMTER;

调用存储过程 call myProc();

delimiter就是告诉mysql解释器,该段命令是否已经结束了,是否可以执行了。

默认情况下,delimiter是分号;,遇到分号就执行。

后面的双美元符号 就是告诉mysql,遇到双美元符号再执行

show function status; // 查看自定义函数

show procedure status; // 查看自定义存储过程

输入输出参数

DELIMITER $$

DROP PROCEDURE IF EXISTS myReslt $$

CREATE PROCEDURE myReslt (IN a INT , IN b INT, OUT c INT)  // in 输入参数,out输出参数

BEGIN

SET c=a+b;

SELECT * FROM user WHERE id BETWEEN 2 AND c;

END

DELIMTER;

call myReslt (2,3,@c);

select @c;

存储过程与自定义函数的区别:

存储过程实现的过程要复杂一些,而函数的针对性较强;

存储过程可以有多个返回值,而自定义函数只有一个返回值;

存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;

存储过程存在的必要性(好处):

存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.

提高了运行速度;

同时降低网络数据传输量(你觉得传一堆SQL代码快,还是传一个存储过程名字和几个参数快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值