存储过程和函数

自闭症网瘾萝莉.ら 提交于 2020-03-06 01:31:19

创建存储过程:使用 CREATE PROCEDURE语句。
格式:

CREATE PROCEDURE p_name(p_parameter[])
	[characteristics...] routin_body

说明:CREATE PROCEDURE是用来创建存储函数的关键字;p_name 存储过程的名字。
p_parameter是参数列表,形式如下
[IN | OUT | INOUT] p_parameter TYPE
IN表示输入参数,OUT表示输出参数,INOUT既表示输入也表示输出 ,type 参数类型
例子:

CREATE PROCEDURE p_name()
BEGIN
	SELECT *FROM fruits;
END;

此存储过程没有参数,BEGIN,END 限定存储过程体。
创建存储函数:使用

CREATE FUNCTION func_name([func_param])
	RETURNS type
[characteristics...] routin_body

例子:

CREATE FUNCTION func_name()
	RETURNS VARCHAR(50)
	RETURN (SELECT f_name FROM fruits);

变量: 变量可以在子程序中声明并使用,这些变量的作用范围在BEGIN—END程序中
格式
DECLARE var1, var2, var3… INT DEFAULT 100;
SET var1 = 10, var2 = 20;
SET var3 = var1 + var2;
使用

#调用存储过程
CREATE PROCEDURE p1(IN id INT, OUT total INT)
BEGIN
	SELECT COUNT(*) INTO total FROM fruits WHERE s_id = id;
END;
CALL p1(101, @total); #调用的时候,@符号必须有,参数名称随便
SELECT @total; 
# 存储函数
CREATE FUNCTION func1(id INT)
RETURNS INT
BEGIN
	RETURN (SELECT COUNT(*) FROM fruits WHERE s_id = id);
END;
SELECT func1(101)  # 调用函数

查看存储过程和函数

SHOW {PROCEDURE | FUNCTION } STATUS LIKE '';
SELECT *FROM information_schema.ROUTINES;  # mysql存储过程和函数的信息存储在information_schema数据库下的ROUTINES表中。

删除

DROP {PROCEDURE | FUNCTION} [IF EXISTS] pf_name;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!