mysql创建存储过程

来源:互联网 发布:电厂仿真软件 编辑:程序博客网 时间:2024/06/08 18:39

今天是2017年9月8日,距离国庆还有1,2,3,4,...还有还些天呢,进入工作之后有的时候感觉对学习有了一个全新的认识,以前认为学习就是记住,现在才知道学习其实仅仅是知道就可以,知道有这一块就行了,大概会用就可以了。好了不谈这些无用的东西了,我们来一起看看存储过程。

存储过程是一些sql语句的集合,比如有的时候我们可能需要一大串的sql语句,或者说在编写SQL语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。

那么如何创建一个存储过程:

drop procedure if EXISTS pr_sub;create PROCEDURE pr_sub(  x int,  y int)begin declare s int; if x is null THEN    set x=10;end if;if y is null THEN   set y=20;end if;  set s=y-x;  SELECT s as subofyx;ENDset @a=10;set @b=20;call pr_sub(@b,@a);
上面是一个存储过程活生生的例子,虽然说有点简单,但是也不妨碍我们对存储过程语法的研究。

create procedure procedure_name

(

   [in|out] param1 param_type,

   [in|out] param2 param_type

)

begin

     sql statements;

end;

从上面的活生生的例子我们就看出了一个简单那的存储过程一般的格式,[in|out]是表示in和out是可以选择的,in表示是输入参数,out表示是输出参数,我们在声明参数的参数的时候可以指定一个参数是输入参数或者是输出参数。当然也可以不写,比如说我们在上面活生生的例子中我们就是讲这两个采参数省略掉了,省略了不代表是没有,而是使用默认的in,输入参数。

接下来我们来看看另外的一个活生生的例子,这个我们来看一下带有输出参数的out,,,,来来来大家快来看啊:

drop procedure if exists pr_multi;create PROCEDURE pr_multi(  out c int,  a int,  b int)beginif a is null THEN    set a=10;end if;if b IS null THEN    set b=20;end if;set c=a*b;ENDcall pr_multi(@name,5,3);select @name
我们看调用存储使用的关键字是call procedure_name(param,..)猜猜最后输出是多少:

@name

15

猜中没有,没有的话就给自己一个耳光吧。。。。。开玩笑,别当真微笑

原创粉丝点击