MySQL自定义函数和存储过程

自定义函数

使用步骤

1.第一步修改结束符号

基本语法格式 :修改结束符号来写一个自定义函数

DELIMITER 新的结束符号比如$$
    自定义函数
新的结束符号 
DELIMITER;

修改结束符号用的就是 delimiter

2.第二步,写自定义函数

基本语法格式

REATE FUNCTION 函数名([参数名 参数类型...]) RETURNS 返回值的类型
BEGIN
    函数体
    RETURN 返回值
END

现在我们来一个完整的例子

DELIMITER $$
CREATE FUNCTION sayhello(name varchar(30)) RETURNS varchar(50)
BEGIN
    RETURN 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;

参数

其中的三个参数

in

输入参数

out

输出参数

inout

输入输出参数

注意

当形参被定义为OUT 或者 INOUT 时 参数必须是一个变量

用于接收返回给调用者的数据

例子

delimiter $$
CREATE PROCEDURE proc(in sid int)
BEGIN
    select id,name from student where id>sid;
END
$$
DELIMITER;

调用存储过程

CALL 数据库名.存储过程名([实参列表])
CALL proc(14); #查看id大于14的学生的id和姓名

查看存储过程

show create procedure 过程名;

存储过程的修改

ALTER procedure 存储过程名 [特征];
#特征在创建或修改时都可以使用

特征

选项

描述

comment"注释内容"

注释

LANGUAGE SQL

用sql语句来执行 以后可能扩展其他类型

contains sql

包含除读或写的sql语句

no sql

子程序中不含sql语句

reads sql data

子程序中包含读取数据的语句

modifies sql data

子程序中包含写数据的语句

ql security definer

只有定义者才有权限执行存储过程

sql security invoker

调用者有权执行存储过程

简单用一下alter procedure proc sql security invoker;

之后只有调用者有权执行存储过程

删除存储过程

DROP PROCEDURE [IF exists] 存储过程名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值