最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

mysql存储过程和函数

来源:动视网 责编:小OO 时间:2025-09-29 19:36:35
文档

mysql存储过程和函数

存储过程(storedprocedure,sp)是mysql5.0版本中的最大创新。为什么要使用存储过程和触发器1.存储过程更快的速度。避免代码冗余。提高数据库的安全性。2.触发器在程序被定义的时候,用mysql客户端delimiter命令来把语句界面从;变为//。Delimiter//3.命令的封装由一条以上的sql命令构成的函数或过程必须以关键字begin开头、以关键字end结束。4.全局变量和局部变量全局性的普通sql变量:这类变量的名字前面都有一个“@”字符作为前缀。存储过程的局部变量
推荐度:
导读存储过程(storedprocedure,sp)是mysql5.0版本中的最大创新。为什么要使用存储过程和触发器1.存储过程更快的速度。避免代码冗余。提高数据库的安全性。2.触发器在程序被定义的时候,用mysql客户端delimiter命令来把语句界面从;变为//。Delimiter//3.命令的封装由一条以上的sql命令构成的函数或过程必须以关键字begin开头、以关键字end结束。4.全局变量和局部变量全局性的普通sql变量:这类变量的名字前面都有一个“@”字符作为前缀。存储过程的局部变量
存储过程(stored procedure,sp)是mysql 5.0 版本中的最大创新。

为什么要使用存储过程和触发器

1.存储过程

更快的速度。

避免代码冗余。

提高数据库的安全性。

2.触发器

在程序被定义的时候,用mysql客户端delimiter命令来把语句界面从

; 变为 //。

Delimiter //

3.命令的封装

由一条以上的sql 命令构成的函数或过程必须以关键字begin 开头、以关键字end结束。

4.全局变量和局部变量

全局性的普通sql变量:这类变量的名字前面都有一个“@”字符作为前缀。

存储过程的局部变量:这些变量的名字前面没有“@”字符,必须在使用它们之前用declare命令对它们做出声明。

5.声明(declare)

变量的声明必须发生在begin – end 语句块里。

Declare  varname  datatype  [ default value ]

6.对变量赋值

sql语言不允许以x=x+1 的形式对变量赋值,必须使用set 或 select into 命令来做这件事。

Create procedure 存储过程名()

Begin

   Declare aa int;

   Set aa=1;

   Select aa;

End

7.分支

 If  --  then  --  else  --  end  if分支

8.循环

 Repeat  --  until 循环

 While 循环

   [ Loopname :] while  condition  do

     Commands;

   End while [ loopname ]

loop 循环

loopname :loop

  commands;

end loop loopname;

  在这种循环结构里,关键字loop和end loop 之间的语句将一直循环执行到遇见一条leave loopname 命令并因此而退出整个循环为止。

Create procedure aa()

Begin

   Declare I int default 0; 

   Myloop:loop 

     Set I = i+1;

     Select I;

If I >=10 then leave myloop;

     End if;

   End loop myloop;

End

9.出错处理

存储过程里的sql命令在执行过程中可能会出错,所以sql也像其它一些程序设计语言那样向程序员提供了一种利用出错处理句柄(error handler ,也有人称为“出错处理器”来响应和处理这类错误的机制。

语法:

Declare type handler for condition1,condition2,condition3 command

注:

Type(类型):可供选择的类型目前只有continue 和 exit 两种。Continue的含义是:如果当前命令在执行时发生错误,从下一条命令继续执行。

Exit 的含义是:如果有执行出错,则退出当前begin – end 语句块并从该语句块之后的第一条命令继续执行。

Condition(条件):出错处理条件可以用以下几种方式给出:

Sqlstate ‘errorcode’:单个sql出错代码,它的编号是errorcode。

Sqlwarning:涵盖了sqlstate编号为01nnn的所有错误。

Not found :涵盖了所有其他的(即sqlstate 编号不以01或02开头的)错误。

Command(命令):执行出错时将要执行的命令。因为这里只允许放上一条命令,所以它通常是一个变量赋值命令,该变量将在后续的出错处理代码中使用。

一.创建、编辑和删除sp

1.创建存储过程

Create procedure p_name[参数名称  数据类型及精度]

Begin

 Select  *  Into 参数名称  from 表名;

End

//

调用call 存储过程名( )

查看Select 

2.编辑存储过程

Alter procedure/function name

3.删除存储过程

Drop function f_name

Drop procedure p_name

4.查看存储过程

Show procedure status 

Show function status

5.查看存储过程代码

Show create procedure 

二.光标

声明光标

Declare 光标名 cursor for select 语句

打开光标

Open 光标名

提取

Fetch  光标名 into 变量

关闭光标

Close 光标名

实例:

Create procedure aa(out a int)

Begin

   Declare c_jiang cursor for select * from jiang;

Open c_jiang;

   Myloop:loop 

      Fetch c_jiang into a;

      Select a;

   End loop myloop;

   Close c_jiang;

End

文档

mysql存储过程和函数

存储过程(storedprocedure,sp)是mysql5.0版本中的最大创新。为什么要使用存储过程和触发器1.存储过程更快的速度。避免代码冗余。提高数据库的安全性。2.触发器在程序被定义的时候,用mysql客户端delimiter命令来把语句界面从;变为//。Delimiter//3.命令的封装由一条以上的sql命令构成的函数或过程必须以关键字begin开头、以关键字end结束。4.全局变量和局部变量全局性的普通sql变量:这类变量的名字前面都有一个“@”字符作为前缀。存储过程的局部变量
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top