存储过程(学习笔记1)

create procedure sp_name ([proc_parameter]) [characteristics] routine_body

CREATE PROCEDURE为用来创建存储函数的关键字;sp_name为存储过程的名称;proc_parameter为指定存储过程的参数列表,列表形式如下:[ IN | OUT | INOUT ] param_name type

其中,IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型,该类型可以是MySQL数据库中的任意类型。

先来创建一个简单的存储过程:

我的mysql数据库里面有一个名为class_a的表:

运用这张表的数据来写一个最简单的存储过程:

use test;

delimiter //

create procedure scan_class_a()

BEGIN

SELECT * FROM CLASS_A;

END//

delimiter ;

这里的delimiter //是在定义存储过程之前将//作为存储过程的结束符,避免跟sql语句中的结束符冲突,因为sql语句中结束符默认为";",存储过程结束之后将结束符重置为";"。

调用存储过程可以带括号也可以不带括号,两种写法都可以跑出结果:

call scan_class_a();

call scan_class_a;

创建存储函数:

create function function_name ([func_parameter])

returns type

routine_body

CREATE FUNCTION为用来创建存储函数的关键字;func_name表示存储函数的名称;func_parameter为存储过程的参数列表,参数列表形式如下:[ IN | OUT | INOUT ] param_name type

指定参数为IN、OUT或INOUT只对PROCEDURE是合法的。(FUNCTION中总是默认为IN参数)。RETURNS子句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。

drop function if exists `func1`;

delimiter //

create function func1(para1 int)

returns varchar(100)

deterministic

return (select name from class_a where id=para1);

//

delimiter ;

定义变量:

  DECLARE var_name[,varname]… date_type [DEFAULT value];

var_name为局部变量的名称。DEFAULT value子句给变量提供一个默认值。值除了可以被声明为一个常数之外,还可以被指定为一个表达式。如果没有DEFAULT子句,初始值为NULL。

  DECLARE myparam INT DEFAULT 100;

为变量赋值:

  SET var_name = expr [, var_name = expr] ...;

  DECLARE var1, var2, var3 INT;  

SET var1 = 10, var2 = 20;  

SET var3 = var1+var2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值