存储过程

类似函数,批量处理

1、为什么使用存储过程

Mysql服务器在缓存机制做了改进,使用类似预处理的哪种方式,由于没有编译器,因此mysql存储过程不会向外部语言(c)编写的运行的那么快。提升mysql服务器速度最主要的方法有两种:降低网络的信息的流量,减少用户与服务器之间的交互

 

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

 

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

 

2、要求:

Proc表

 具有 Creat  routine(历程)的权限

  返回标量值

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

3、语法格式 p130

   Createprocedure  存储过程名(参数)

  特征描述

  SQL语句体

4、例如

1)use test;

2)Create  procedure p1()

    Begin

       /*this is a firstprocedure*/

    End;

 注意:

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

      如果SQL 预计只有一句可以省略begin。。。end

      名称不区分大小写,尽量避免与内建函数重名,假如重名在存储过程名与()之间加空格

      名称的长度限制在64字符

      ()不能省略,可以为空

      通常情况下select不会出现在存储过程体内

      大部分DDL. DML都是合法语句

Create procedure  db.p()  drop   database   db;

含有 use 库名等;

 

3)调用存储过程

Call 存储过程名(。。。);

 

 

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

Create procedure p3()

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

目前只支持mysql,将来可能会使用php来代替mysql

 Not  deterministic返回的结果不确定

Sql security definer –创建者调 invoret用者

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

Select *。。。。sql  语句体

 

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

Sql;

Create procedure p4()

Begin

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

  Select* from tb2;

End;

 

 

Delimiter—声明结束符

Delimiter//

Select * from tb1//

 

        输入 输出

参数 :【in |ont| inout】参变量 数据类型

 

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

1)第一种方法:分两步

   Declare变量名 数据类型;

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

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

 

mysql> delimiter //

mysql> create procedure p8(in para1 int)

   -> begin

   -> declare var1 int;

   -> set var1=para1+var1;

   -> insert into t1 values(var1);

   -> end;//

Query OK, 0 rows affected (0.00 sec)

 

2)第二种方法

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

   Declare变量名 数据类型 default 值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值