自定义函数
使用步骤
1.第一步修改结束符号
基本语法格式 :修改结束符号来写一个自定义函数
DELIMITER 新的结束符号比如$$自定义函数新的结束符号 DELIMITER;
修改结束符号用的就是 delimiter
2.第二步,写自定义函数
基本语法格式
REATE FUNCTION 函数名([参数名 参数类型...]) RETURNS 返回值的类型BEGIN函数体RETURN 返回值END
现在我们来一个完整的例子
DELIMITER $$CREATE FUNCTION sayhello(name varchar(30)) RETURNS varchar(50)BEGINRETURN CONCAT("HELLO",name,"!");END$$***DELIMITER;
我们在这里写了一个名为sayhello的函数,并修改了语句结束符号为$$
通过语句SELECT sayhello("JOJO") 就可以调用
删除函数
drop function [if exists] 函数名;
存储过程
这东西和自定义函数类似
相同点
1.可重复执行语句集合
2.只需一次编译即可直接执行
不同点
1.存储过程使用 PROCEDURE(procedure) 自定义函数使用 FUNCTION
2.存储过程没有返回值 函数必须有
3.函数可以设置返回值的类型
4.存储过程使用 CALL调用 函数可以使用SELECT调用
存储过程基本语法
delimiter 新的结束符号CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名称 参数类型])BEGIN过程体END新的结束符号DELIMITER;
参数
其中的三个参数
注意
当形参被定义为OUT 或者 INOUT 时 参数必须是一个变量
用于接收返回给调用者的数据
例子
delimiter $$CREATE PROCEDURE proc(in sid int)BEGINselect id,name from student where id>sid;END$$DELIMITER;
调用存储过程
CALL 数据库名.存储过程名([实参列表])CALL proc(14); #查看id大于14的学生的id和姓名
查看存储过程
show create procedure 过程名;
存储过程的修改
ALTER procedure 存储过程名 [特征];#特征在创建或修改时都可以使用
特征
简单用一下alter procedure proc sql security invoker;
之后只有调用者有权执行存储过程
删除存储过程
DROP PROCEDURE [IF exists] 存储过程名;