您的位置:首页 > 博客中心 > 数据库 >

数据库编程

时间:2022-03-15 13:00

一,存储过程

存储过程:是一组为了完成某项特定功能的SQL语句集,其实质上就是一段存储在数据库中的代码

由声明式SQL语句(如create,update,和select等)和过程式语句(如 if...then...else 控制结构语句)组成

存储过程具有以下好处

1).可增强SQL语言的功能和灵活性

2).良好的封装性

3).高性能:存储过程执行一次后,其执行规划就驻留在高速缓冲存储器中,以后的操作中,只需从高速缓冲器中调用已编译好的代码

4).可减少网络流量:由于存储过程是在服务端运行,且执行速度快,当客户计算机上调用该存储过程时,网络中传输的只是该调用语句,从而降低网络负载。

5).存储过程可作为一种安全机制来确保数据库的安全性和数据的完整性

二,创建存储过程

在MySQL中服务器处理SQL语句默认是以分号作为语句结束标志,然后在创建存储过程时,存储过程体中可能包含有多条SQL语句,这些SQL语句

如果任以分号作为语句结束符,那么服务器在处理第一条 SQL时遇到分号就不在处理后面的语句。为解决这个问题通常可使用 delimiter 命令将MySQL语句的结束标志临时修改为其他符号,

在最后通过 delimiter 命令 再将MySQL语句的结束标志改回 分号(;)

格式:

delimiter  $$

其中 $$  是自定义的结束符,应该避免使用 反斜杠(\)字符,因为他是MySQL的转义字符

如果希望换回默认的分号 (;)作为结束标志,可以输入

delimiter ;

创建存储过程语句

 

create procedure 存储过程名称 ([in|out|inout] 参数名 参数类型)

存储过程主体

 

in:表示输入参数,输入参数是使数据可以传递给一个存储过程

out:输出参数,输出参数用于存储过程需要返回一个操作结果的情形

inout:输入/输出参数既可以充当输入参数,也可以充当输出参数

存储过程主体:包含了SQL语句。以关键字 “begin”开始,以关键字  “end” 结束。如果只有一条语句时可以省略 “begin...end”

技术分享图片

 

 三,存储过程体

1.局部变量

存储过程体中可以声明局部变量,用来存储 存储过程体中的临时结果。

使用 declare语句来声明局部变量同时还可以赋予变量一个初始值

语法格式

declare 局部变量名称[...] type [default value]

 

type:声明局部变量的数据类型

default:为局部变量指定默认值,若没有则默认为 null

例子

declare cid int(10)

注意

局部变量只能在存储过程体的 begin ...end 语句块中声明

必须在开头处声明

作用范围仅限于 begin ...end 语句块

 

2.set语句

可以使用 set 语句为局部变量赋值、

语法格式

set 变量名=值

 

例子

set cid=910

3.select ... into 语句

可以使用 select ... into 语句把选定列的值 直接存储到局部变量中

语法格式

select 指定列名  [,...] into 要赋值的变量名 [......]table_expr

table_expr:表示 select语句中的 from 子句及后面的语法部分

4.流程控制语句

 

热门排行

今日推荐

热门手游