存储过程知识点(大概)

存储过程

类似函数:批量处理

1、为什么使用

Mysql服务器在缓存机制做了改进,使用类似预处理的那种方式,由于没有编译器,

因此mysql存储过程不会像外部语言(c)编写的程序运行的那么快。提升速度最主要的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;

因为存储过程是在服务器端执行,所以使用存储过程就会减少客户与服务器之间的信息量。

改变主机语言也可以,存储过程只是数据库逻辑而不是应用程序,可移植性好,和操作系统、主机型号等无关;

2、要求:

Ø Proc表

Ø 具有Create routine(例程)的权限

Ø 返回标量值

Ø 隐含调用use 库名,删除数据库,存储过程也被删除

3、语法格式

Create procdure存储过程名(参数)

特征描述

SQL语句体

4、例如

1)use test;

2)create procedurep1()

begin

/*this is my first procedure*/

end;

注意:

Øbegin。。。end相当于{}的作用

Ø如果SQL语句体只有一句可以省略begin。。end

Ø名称不区分大小写,尽量避免与内建函数同名,假如同名则在名称和()之间加空格;

Ø名称长度限制64字符;

Ø()可以为空,不能省略

Ø通常select不会出现在存储过程体内

Ø大部分的DDL、DML都是合法语句

非法语句:

Createprocedure db.p() dropdatabase db;

含有use 库名等

3)调用存储过程

Call 存储过程名(…);

4)带有描述信息的存储过程

Create procedurep3()

Language sql ----声明用什么语言来实现存储过程

目前只支持sql语句,将来可能会使用php

来代替sql

Not deterministic---返回的结果不确定

Sql security definer----创建者

Comment ‘ a procedure’---给存储过程加注释

Select * 。。。------SQL 语句体;

4)当语句体内容两条以上,结束符号

Sql;

Create procedurep4()

Begin

Select * from tb1;--会给出错误提示,直接结束存储过程的声明

Select * from tb2;

End;

Delemiter---声明结束符

Delemiter //

Select * fromtb1//

参数:[in|out|inout] 参变量数据类型

Declare :声明存储过程的局部变量

1)第一种方法:分两步实现

Declare变量名 数据类型;声明

定义的变量不进行初始化,默认为null,该值进行的所有操作

结果都为空;

Set变量=值 (也可以是表达式); 赋值

2)第二种方法:

也可用同一条语句完成变量的声明和初始化

Declare变量名 数据类型 default 值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值