Mysql 学习笔记4 之 函数和存储过程

1 首先查看创建函数的功能是否开启

>show variables like '%func%';

默认为log_bin_trust_function_creators=off,可开启

>set global log_bin_trust_function_creators=1;

2 创建函数

当然,你要在需要的数据库下创建

这里,先了解并 推荐使用 'delimiter $$',表示设置 $$ (可以自行定义)为命令终止符号,代替分号(我们经常在begin..end中用到分号);用完之后你还可以通过 'delimiter ;' 恢复为原来的命令终止符号

create function FX(param1 数据类型, param2 数据类型, ...)
returns 数据类型
begin
  return 1;
end

3 使用

>select FX('m','n',...);

4 删除

>drop function FX;

5 查看

>show function status;   //显示所有
>show create function function;  //查看某个具体的 ?

6 相关详解

1)变量定义和赋值

>declare variable_name1 数据类型 [default value],variable_name2 数据类型, ...
>set 变量名=表达式值 [variable_name=expression ...]

2)用户变量定义和赋值

>select 'xxxx' into @param;  //用户变量以@开头。请合理使用用户名。
>select @param='xxxx';
>select @param;          //显示变量值

3)函数变量赋值

>select 某字段1,某字段2 into 某参数1,某参数2 from 某表 [其他sql子句];
 

存储过程 stored procedure (5.0之后支持的新功能)

1 为什么用它?

首先,要知道我们执行SQL语句时是需要先编译,再执行的;而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中;用户通过指定存储过程的名字(若需要,给定参数)来调用执行。——至少一个优点就是提高了执行速度。

2 创建

>create procedure 过程名(参数类型 参数名 数据类型)  
  >过程体    //begin...end (同样推荐 delimiter 分隔符 以区分 程序中需要用到的 ';')

参数类型:

in—输入参数,表示该参数的值必须在调用过程时指定,在存储过程中可修改该参数的值,但不能被返回,参数为默认值

out—输出参数,该参数值可在存储过程中改变,并可返回

inout—输入输出参数,调用时指定,可被改变和返回

3 查看

>show procedure status where db='数据库名';
>show create procedure 数据库.存储过程名;
 

4 修改/删除(具体使用参考手册)

alter/drop procedure

 

 

posted @ 2013-04-17 10:07  bubu_步步  阅读(172)  评论(0编辑  收藏  举报