0
点赞
收藏
分享

微信扫一扫

mysql 创建函数

凶猛的小白兔 2022-01-20 阅读 45

mysql 函数和存储过程区别

  • 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。

  • 对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。

  • 存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。

  • 存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。

函数格式

-- 定义方法名 传入参数值
create function functionName([parm1 type],[parm2 type],...)
{
	-- 声明返回变量类型
	returns type;
	-- 开始
	begin
	/*执行业务处理逻辑*/
	-- 结束
	end
}

调用格式

select functionName(1);

mysql 变量赋值的三种方法

mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了

-- 第一种用法
	set @num=1;set @num:=1; -- 这里要使用变量来保存数据,直接使用@num变量
-- 第二种用法:
	select @num:=1;select @num:=字段名 from 表名 where ……
	-- 注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”
-- 第三种用法:
	select 字段名1,字段名2 into @变量1,@变量2 from 表名 where ......

在函数或存储过程或触发器中,在不能使用set的时候推荐第三种,因为第二种会在执行时返回查询结果,这在函数或触发器中会报 “Not allowed to return a result set from a function”错误。而第三种则不会报错。

举报

相关推荐

0 条评论